Область видимости и модификаторы доступа

Модуль компиляции

Модуль компиляции (compilation unit) хранится в текстовом .java-файле и является единичной порцией входных данных для компилятора. Он состоит из трех частей:

· объявление пакета;

· import-выражения;

· объявления верхнего уровня.

Объявление пакета одновременно указывает, какому пакету будут принадлежать все объявляемые ниже типы. Если данное выражение отсутствует, значит, эти классы располагаются в безымянном пакете (другое название – пакет по умолчанию).

Import-выражения позволяют обращаться к типам из других пакетов по их простым именам, "импортировать" их. Эти выражения также необязательны.

Наконец, объявления верхнего уровня содержат объявления одного или нескольких типов.

 

Jar-архив

JAR файл — это Java-архив (сокращение от англ. Java ARchive). Представляет собой обычный ZIP-архив, в котором содержится часть программы на языке Java.

Чтобы JAR файл был исполняемым, он должен содержать файл MANIFEST.MF в каталоге META-INF, в котором должен быть указан главный класс программы (такой класс должен содержать метод main и задаётся параметром Main-Class). Номер версии JAR задаётся параметром Manifest-Version и является обязательным. В SDK 1.2 значение этого параметра должно быть равно 1.0.

java -jar имя_файла

 

Класс

Классы в Java, равно как и в других объектно-ориентированных языках программирования, - это шаблоны (прототипы), которые используются для создания объектов.

Основной элемент любой программы на Java - класс. Класс состоит из описаний структур данных и процедур работы с этими структурами, которые в терминологии Java называют методами. Программист, пишущий на Java, создает классы. Исполнение программы, написанной на Java, это выполнение последовательности методов различных классов.

 

Интерфейс

Интерфейс — конструкция в коде программы, используемая для специфицирования услуг, предоставляемых классом или компонентом.

Java не позволяет наследовать больше одного класса. В качестве альтернативы множественному наследованию, существуют интерфейсы. Каждый класс в Java может реализовать любой набор интерфейсов. Порождать объекты от интерфейсов в Java нельзя.

Интерфейс — это что-то вроде абстрактного класса, который никогда не может быть использован для создания объектов, но может быть использован только для создания подклассов. Функции интерфейса — это абстрактные методы, которые должны быть имплементированы в каждом конкретном классе, имплементирующем интерфейс.

 

Пакет

Java package (пакет Java) — механизм, позволяющий организовать Java классы в пространства имен.

Объявление пакета одновременно указывает, какому пакету будут принадлежать все объявляемые ниже типы. Если данное выражение отсутствует, значит, эти классы располагаются в безымянном пакете (другое название – пакет по умолчанию).

Основные пакеты в J2SE 6.0:

java.util — collection data structure classes

java.io — file operations

java.math — multiprecision arithmetics

java.nio — the New I/O framework for Java

java.net — networking operations, sockets, DNS lookups, …

java.security — key generation, encryption and decryption

java.sql — Java Database Connectivity (JDBC) to access databases

java.awt — basic hierarchy of packages for native GUI components

javax.swing — hierarchy of packages for platform-independent rich GUI components

 

Область видимости и модификаторы доступа

В Java существуют следующие модификаторы доступа:

· private: члены класса доступны только внутри класса;

· default (package-private) (модификатор, по-умолчанию): члены класса видны внутри пакета (если класс будет так объявлен он будет доступен только внутри пакета);

· protected: члены класса доступны внутри пакета и в наследниках;

· public: члены класс доступны всем;

Последовательность модификаторов по убыванию уровня закрытости: private, default, protected, public).

Во время наследования возможно изменения модификаторов доступа в сторону большей видимости.

 

Имена. Лексемы Java

Лексемы (tokens) – это элементарные законченные слова языка. Компилятор разбивает поток исходного текста на лексемы и предпринимает попытку выяснить, из каких идентификаторов, операторов, выражений и Т.д. состоит код. Символы пробела (собственно пробелы, знаки табуляции, перевода строки и возврата каретки) не являются значимыми, за исключением тех, которые разделяют лексемы или расположены внутри символьных или строковых литералов.

Ниже перечислены все виды лексем в Java:

· идентификаторы - имена, которые даются различным элементам языка для упрощения доступа к ним (чувствительны к регистру);

· ключевые слова - это зарезервированные слова, состоящие из ASCII -символов и выполняющие различные задачи языка (Boolean, else, interface, break, extends, long);

· литералы - позволяют задать в программе значения для числовых, символьных и строковых выражений, а также null- литералов;

· разделители – это специальные символы, которые используются в служебных целях языка()[],.;

· операторы - используются в различных операциях – арифметических, логических, битовых, операциях сравнения и присваивания.

 

Модели жизненного цикла ПО (водопад, спиральная)

Модель жизненного цикла ПО — структура, определяющая последовательность выполнения и взаимосвязи процессов, действий и задач на протяжении жизненного цикла. Модель жизненного цикла зависит от специфики, масштаба и сложности проекта и специфики условий, в которых система создается и функционирует.

Водопадная (каскадная, последовательная) модель

Она предусматривает последовательное выполнение всех этапов проекта в строго фиксированном порядке. Переход на следующий этап означает полное завершение работ на предыдущем этапе. Требования, определенные на стадии формирования требований, строго документируются в виде технического задания и фиксируются на все время разработки проекта. Каждая стадия завершается выпуском полного комплекта документации, достаточной для того, чтобы разработка могла быть продолжена другой командой разработчиков.

Этапы проекта в соответствии с каскадной моделью:

· Формирование требований;

· Проектирование;

· Реализация;

· Тестирование;

· Внедрение;

· Эксплуатация и сопровождение.

Преимущества:

· Полная и согласованная документация на каждом этапе;

· Легко определить сроки и затраты на проект.

Недостатки:

· Существенное запаздывание с получением результатов;

· Пользователи могут внести свои замечания только после того, как работа над системой будет полностью завершена

· Модели (как функциональные, так и информационные) автоматизируемого объекта могут устареть одновременно с их утверждением.

Спиральная модель

Она основана на классическом цикле Деминга PDCA (plan-do-check-act). При использовании этой модели ПО создается в несколько итераций (витков спирали) методом прототипирования.

Каждая итерация соответствует созданию фрагмента или версии ПО, на ней уточняются цели и характеристики проекта, оценивается качество полученных результатов и планируются работы следующей итерации.

На каждой итерации оцениваются:

· риск превышения сроков и стоимости проекта;

· необходимость выполнения ещё одной итерации;

· степень полноты и точности понимания требований к системе;

· целесообразность прекращения проекта.

Отличительной особенностью спиральной модели является специальное внимание, уделяемое рискам, влияющим на организацию жизненного цикла, и контрольным точкам. Боэм формулирует 10 наиболее распространённых (по приоритетам) рисков:

· Дефицит специалистов.

· Нереалистичные сроки и бюджет.

· Реализация несоответствующей функциональности.

· Разработка неправильного пользовательского интерфейса.

· Перфекционизм, ненужная оптимизация и оттачивание деталей.

· Непрекращающийся поток изменений.

· Нехватка информации о внешних компонентах, определяющих окружение системы или вовлеченных в интеграцию.

· Недостатки в работах, выполняемых внешними (по отношению к проекту) ресурсами.

· Недостаточная производительность получаемой системы.

· Разрыв в квалификации специалистов разных областей.

 

Принципы ООП

· Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя.

· Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником или производным классом.

· Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

Что такое POSIX

POSIX® (англ. Portable Operating System Interface for Unix — Переносимый интерфейс операционных систем Unix) — набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой. ISO совместно c МЭК приняли данный стандарт (POSIX) под названием ISO/IEC 9945.

Стандарт состоит из четырёх основных разделов:

· Основные определения — список основных определений и соглашений, используемых в спецификациях, и список заголовочных файлов языка Си, которые должны быть предоставлены соответствующей стандарту системой.

· Оболочка и утилиты — описание утилит и командной оболочки sh, стандарты регулярных выражений.

· Системные интерфейсы — список системных вызовов языка Си.

· Обоснование — объяснение принципов, используемых в стандарте.

Типы данных