- •Н. В. Зорина Объектно-ориентированное программирование на Java
- •Зорина н.В.
- •Введение в разработку программ на языке программирования java
- •Установка по
- •Начало работы с программой
- •Классы, как новые типы данных. Поля данных и методы
- •Определениекласса.
- •Конвенция кода для класса (Class Naming Convention).
- •Создание экземпляровкласса
- •Операция получения доступа к компонентамкласса.
- •Переменные - поля данныхкласса
- •Методыкласса
- •Теперь соберем все вместе: ПримерОоп
- •Конструкторы
- •Перегрузкаметодов
- •Модификаторы контроля доступа- public илиprivate.
- •Информация по сокрытию реализации иинкапсуляции.
- •Код программы:
- •Практическая работа №2. Использование uml диаграмм в объектно- ориентированном программировании
- •Теоретические сведения:
- •Упражнение 1.
- •Упражнение 2.
- •Пример выполнения задания.
- •Практическая работа №3. Наследование. Абстрактные суперклассы и их подклассы в java.
- •Теоретические сведения
- •Задания.
- •Упражнение 2.
- •Упражнение 3.
- •Упражнение 4.
- •Упражнение 5.
- •Пример решения задания 1.
- •Практическая работа №4. Создание gui. Событийное программирование в java.
- •Теоретические сведения
- •Важная замечание
- •Замечание.
- •Менеджеры компоновки компонентов или Layout Менеджеры. Менеджер BorderLayout:
- •Менеджер GridLayout.
- •Менеджер Null Layout Manager.
- •Слушатель событий мыши MouseListener.
- •Создание меню.
- •Упражнение1.
- •Практическая работа №5. Программирование рекурсии в java
- •Теоретические сведения
- •Задания.
- •Пример решения задачи.
- •Практическая работа №6. Техники сортировки в java
- •Теоретические сведения
- •Алгоритм сортировки вставками.
- •Алгоритм быстрой сортировки (Quick Sort).
- •Алгоритм сортировка слиянием (Merge Sort).
- •Использование полиморфизма в сортировке.
- •Упражнение 1.
- •Упражнение 2.
- •Упражнение 3.
- •Практическая работа №7. Использование стандартных контейнерных классов при программировании на java
- •Теоретические сведения
- •Задания.
- •Приложение Горячие клавиши Intellij idea (hot keys)
- •Редактирование
- •Поиск /замена
- •Поиск Использованиякода
- •Компиляция ивыполнение
- •Отладка
- •Навигация
- •Рефакторинг
- •Интерактивныешаблоны
- •Объектно-ориентированное программирование на Java
Конструкторы
Конструктор – это специальный метод класса, который имеет то же имя, что используется в качестве имени класса. В приведенном выше класса Circle, мы определим три перегруженных версии конструктора Circle(...). Конструктор используется для создания и инициализации всех переменных-полей данных класса. Чтобы создать новый экземпляр класса, вы должны использовать специальныйоператор"new"споследующимвызовомодногоизконструкторов.
Например,
Circle c1 =newCircle();
Circle c2 =newCircle(2.0);
Circle c3 =newCircle(3.0,"red");
Конструктор отличается от обычного метода следующим:
название метода-конструктора совпадает с именем класса, а имя классапо конвенции, начинается с заглавнойбуквы;
конструктор не имеет возвращаемого значения типа (или неявно не возвращает),такимобразом,нетобъявлениятипавозвращаемогозначения приобъявлении;
конструктор может быть вызван только через оператор «new», он может быть использован только один раз, чтобы инициализировать построенный экземпляр.
вы не можете впоследствии вызвать конструктор в теле программы подобно обычным методам(функциям);
конструкторы не наследуется (будет объясненопозже).
Конструктор без параметров называется конструктором по умолчанию, который инициализирует переменные-поля данных через их значения по
умолчанию. Например, конструктор Circle() в рассмотренном выше примере.
Перегрузкаметодов
Перегрузка методов означает, что несколько методов могут иметь то же самое имя метод, но сами методы могут иметь различные реализации (версии). Тем не менее, различные реализации должны быть различимы по списку их аргументов(либоколичествоаргументов,илитипааргументов,илиихпорядок).
Пример: метод average() имеет три версии с различными списками аргументов. При вызове может использоваться соответствующий выбору вариант, в соответствии с аргументами.
1public classTestMethodOverloading{
2 public staticintaverage(intn1,intn2) { //A3 return(n1+n2)/2;
4 }
5
6 public staticdoubleaverage(doublen1,doublen2) {//B7 return(n1+n2)/2;
8 }
9
10 public staticintaverage(intn1,intn2,intn3) { //C11 return(n1+n2+n3)/3;
12 }
13
public staticvoidmain(String[] args){
System.out.println(average(1,2)); // UseA
System.out.println(average(1.0,2.0));// UseB
System.out.println(average(1,2,3)); // UseC
System.out.println(average(1.0,2)); //UseB-int2implicitlycasted
to double2.0
20
21 }
22}
// average(1, 2, 3, 4); // Compilation Error - No matching method
Рассмотрим перегрузка конструктора класса Circle.
Приведенный выше класс Circle имеет три версии конструктора, которые отличаются списком их параметров, следовательно:
Circle()
Circle(doubler)
Circle(doubler, Stringc)
В зависимости от фактического списка аргументов, используемых при вызове метода, будет вызван соответствующий конструктор. Если ваш список аргументов не соответствует ни одному из определенных методов, вы получите ошибку компиляции.