РуЛиб - онлайн библиотека > Гуськова Ольга > Объектно-ориентированное программирование > Объектно-ориентированное программирование в Java : учебное пособие

Читаем онлайн «Объектно-ориентированное программирование в Java : учебное пособие»

Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«Московский педагогический государственный университет»
О. И. Гуськова
ОБЪЕКТНО ОРИЕНТИРОВАННОЕ
ПРОГРАММИРОВАНИЕ В JAVA
Учебное пособие
Ещё больше книг по Java в нашем телеграм канале:
https://t.me/javalib
МПГУ
Москва • 2018
УДК 004.424(075.8)
ББК 32.973-018я73
Г968
Рецензенты:
О. В. Муравьева, кандидат физико-математических наук,
доцент, зам. зав. кафедрой теоретической информатики
и дискретной математики математического факультета МПГУ
В. П. Моисеев, доцент, кандидат технических наук,
доцент кафедры информатики и прикладной математики
Института математики, информатики и естественных наук МГПУ
Г968
Гуськова, Ольга Ивановна.
Объектно ориентированное программирование в Java :
учебное пособие / О. И. Гуськова. – Москва : МПГУ, 2018. – 240 с.
ISBN 978-5-4263-0648-6
Учебное пособие посвящено объектно ориентированному программированию на языке Java. Рассматриваются основные принципы объектно ориентированного программирования, средства работы со структурами данных – коллекции
и дженерики, принципы объектно ориентированного дизайна.
УДК 004.424(075.8)
ББК 32.973-018я73
ISBN 978-5-4263-0648-6
© МПГУ, 2018
© Гуськова О. И., текст, 2018
СОДЕРЖАНИЕ
ВВЕДЕНИЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1. ОСНОВЫ ОБЪЕКТНО ОРИЕНТИРОВАННОГО
ПРОГРАММИРОВАНИЯ
1.1. Введение в объектно ориентированное
программирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2. Краткая история развития объектно ориентированного
программирования. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3. Основные принципы объектно ориентированного
программирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4. Класс и объект . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5. Определение класса в Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6. Создание экземпляров класса . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.7. Оператор «Точка» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.8. Переменные-члены и методы-члены класса . . . . . . . . . . . . 17
1.9. Пример объектно ориентированного
программирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.10. Конструкторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.11. Модификаторы управления доступом
и области видимости . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.12. Сокрытие информации и инкапсуляция . . . . . . . . . . . . . . . 26
1.13. Геттеры и сеттеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.14. Ключевое слово “this” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.15. Метод toString() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.16. Константы (final) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.17. Резюме по изменению класса Circle . . . . . . . . . . . . . . . . . . . 32
1.18. Примеры классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2. КОМПОЗИЦИЯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.1. Пример классов «Автор» и «Книга» . . . . . . . . . . . . . . . . . . . . 48
2.2. Пример классов «Точка» и «Отрезок» . . . . . . . . . . . . . . . . . . 55
2.3. Пример классов «Точка» и «Круг» . . . . . . . . . . . . . . . . . . . . . . 63
3. НАСЛЕДОВАНИЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
3.1. Области видимости . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.2. Переопределение методов и сокрытие полей . . . . . . . . . . . 74
3.3. Аннотация @Override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.4. Ключевое слово “super” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3
О. И. ГУСЬКОВА. ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В JAVA
3.5. Дополнение о конструкторах . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.6. Конструктор без параметров по умолчанию . . . . . . . . . . . . 78
3.7. Одиночное наследование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.8. Общий корневой класс java.lang.Object . . . . . . . . . . . . . . . . . 79
4. ПОЛИМОРФИЗМ, АБСТРАКТНЫЕ КЛАССЫ
И ИНТЕРФЕЙСЫ
4.1. Подстановка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.2. Апкастинг и даункастинг . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
4.3. Оператор “instanceof” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
4.4. Резюме по полиморфизму . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.5. Пример полиморфизма . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5. АБСТРАКТНЫЕ КЛАССЫ И ИНТЕРФЕЙСЫ
5.1. Абстрактный метод . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.2. Абстрактный класс . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.3. Интерфейс . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.4. Реализация множественных интерфейсов . . . . . . . . . . . . . . 99
5.5. Интерфейс и абстрактный суперкласс . . . . . . . . . . . . . . . . . 102
5.6. Динамическое (позднее) связывание. . . . . . . . . . . . . . . . . . 102
5.7. Инкапсуляция, связывание и связность. . . . . . . . . . . . . . . . 103
6. ДЖЕНЕРИКИ И ВВЕДЕНИЕ
ВО ФРЕЙМВОРК «КОЛЛЕКЦИИ»
6.1. Введение во фреймворк «Коллекции» . . . . . . . . . . . . . . . . . 112
6.2. Коллекции и небезопасность типов . . . . . . . . . . . . . . . . . . . 118
6.3. Введение в дженерики . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
6.4. Дженерик-классы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
6.5. Дженерик-методы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
6.6. Wildcards – подстановочные символы . . . . . . . . . . . . . . . . . 134
6.7.