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

      Комментарии к записи Область видимости и модификаторы доступа отключены

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

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

Типы данных

Статьи к прочтению:

Урок 03. PHP — ООП. Область видимости свойств и методов класса (private, public, protected)


Похожие статьи: