Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Заочники 2020-2021 / Билеты.docx
Скачиваний:
71
Добавлен:
15.06.2021
Размер:
1.2 Mб
Скачать

3. Отказ от перегрузки операторов в Java

Java исторически появилась позже C++, когда был накоплен значительный опыт в использовании концепции ООП и было доказано, что перегрузка операторов затрудняет читаемость кода и провоцирует большее число ошибок. Т.е. c точки зрения проектирования здесь оказалось не так много пользы, как на это рассчитывали. Например, с помощью переопределения операторов можно складывать объекты перегруженным арифметическим оператором «+», но по внешнему виду выражения совершенно нельзя догадаться какой будет результат.

Код Java исполняется интерпретатором JVM, и обработка перегруженных операторов работающих с объектами (а для другого они не нужны) замедлило бы исполнение программы и затруднило рефакторинг.

В Java существует только один переопределенный на уровне языка оператор «+», применяющийся для конкатенации строк.

4. Включение пакетов

Принцип Java один класс=один файл приводит к созданию большого количества файлов. Пакеты позволяют организовать автоматическую структуризацию классов программы.

5. Включение переменного числа аргументов

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

Пример определения метода с обязательными аргументами и аргументом переменной длины определенном как массив элементов типа String с именем value:

void testMethod(String login, String password, String … value )

6. Включение интерфейсов

Интерфейсы применяются, как основное средство реализации полиморфизма в Java. Задача интерфейсов — описание того, «что должно быть реализовано». Таким образом, интерфейсы жестко определяют какие методы должны реализовывать классы, реализующие (наследующие) этот интерфейс. Как известно, в С++ для реализации полиморфизма используются абстрактные классы. Это также возможно и в Java. Но интерфейсы в Java подходят для этого лучше т. к. специально для этого разработаны с учетом накопившегося к появлению Java опыта использования ООП.

7. Включение модулей (с Java 9)

Модули позволяют разбить программу на еще большие изолированные блоки над пакетами и упорядочить зависимости, исключив случаи повторного импорта пакетов. Позволяют «вытаскивать» конкретные пакеты из других программ (модулей) с помощью описанных в файле описания модулей (module-info.java) зависимостей, без создания библиотек и любого другого прямого импорта пакетов. Это означает, что изменение в пакетах зависимых модулей автоматически становится доступным в целевом модуле.

Коллекция ArrayList и подобные

В Java явного выделения памяти для динамических массивов, подобных calloc, malloc и realloc в С/С++ не определено. В Java динамически расширяемые массивы основываются на специальных параметризованных классах: java.utils.ArrayList, java.utils.Vector и т. д.

Как видно из примера массив ArrayList допускает хранение данных разных типов.

В том числе могут храниться пользовательские классы.

Билет 9.

ООП в Java. Пакеты.

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

Если нам надо использовать классы из других пакетов, то нам надо подключить эти пакеты и классы. Директива import указывается в самом начале кода, после чего идет имя подключаемого класса. В java есть также особая форма импорта - статический импорт. Для этого вместе с директивой import используется модификатор static. Благодаря операции статического импорта мы можем использовать эти методы без названия класса.

Соседние файлы в папке Заочники 2020-2021