
- •Ооп в Java. Наследование
- •Ооп в Java. Классы и объекты. Синтаксис. Понятие членов класса.
- •Ооп в Java. Интерфейсы. Синтаксис, допустимые операции.
- •3. Отказ от перегрузки операторов в Java
- •Коллекция LinkedList и подобные
- •Gui Swing. Работа с компоновщиком GridBagLayout
- •Gui Swing. Рисование двумерной графики
- •Gui Swing. Компоненты jFrame и Jpanel. Свойства, методы. Привязка и обработка событий.
- •Gui Swing. Компоненты jTextField и jButton. Свойства, методы. Привязка и обработка событий.
- •Gui Swing. Компоненты jCheckBox, jComboBox. Привязка и обработка событий.
- •Gui Swing. Меню.
- •Gui Swing. События.
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. Благодаря операции статического импорта мы можем использовать эти методы без названия класса.