Область видимости и модификаторы доступа
Модуль компиляции
Модуль компиляции (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, стандарты регулярных выражений.
· Системные интерфейсы — список системных вызовов языка Си.
· Обоснование — объяснение принципов, используемых в стандарте.
Типы данных