Transcript
Page 1: 02 - Классы и Объекты

Классы и Объекты в JavaОсновы ООП

Page 2: 02 - Классы и Объекты

Объекты – ключевое понятие объектно-ориентированных технологий

оглядитесь: мы живём в мире взаимодействующих объектов!

Page 3: 02 - Классы и Объекты

Каждый объект характеризуется состоянием и поведением

Page 4: 02 - Классы и Объекты

Программные объекты

• Объекты в программных системах – аналоги объектов в реальном мире

• Состояние хранится в полях• Поведение доступно через методы

Page 5: 02 - Классы и Объекты

Программные объекты

• Методы изменяют состояние объекта

Сокрытие внутреннего состояния объекта от посторонних глаз называется инкапсуляцией. Единственный способ изменить это состояние – вызвать метод объекта.

Page 6: 02 - Классы и Объекты

Программные объекты

Состояние:• Скорость движения• Скорость вращения колёс• Конфигурация шестерней

Поведение:• Переключить передачи• Затормозить• Изменить темп

Page 7: 02 - Классы и Объекты

Программные объекты

Основные преимущества:• Модульность• Повторное использование кода• Сокрытие внутреннего представления• Расширяемость и простота отладки

Page 8: 02 - Классы и Объекты

Класс – множество объектов, имеющихсхожее поведение и свойства

Класс – велосипед, объекты – мой вел, вел Хемуля, …

Page 9: 02 - Классы и Объекты

Классы и объекты в Java

(пример: Bike.java)

Page 10: 02 - Классы и Объекты

Классы и объекты в Java

• Каждому классу – свой файл• Поля и методы могут чередоваться• Реализация метода не отделяется от объявления метода

Page 11: 02 - Классы и Объекты

Классы и объекты в Java

Квалификаторы доступа в Java:• public – доступ имеют все• private – доступ имеют только объекты данного класса• protected – доступ имеют объекты данного класса и все

объекты классов-потомков

По умолчанию – package private, то есть все классы из данного пакета имеют доступ

Page 12: 02 - Классы и Объекты

Классы и объекты в Java

• Модификатор доступа помещается перед каждым членом класса (не перед группой)

• Все поля класса стоит помечать как private или protected• Хотя бы некоторые методы стоит помечать как public

Вообще, рекомендуется скрывать данные, и предоставлять методы для изменения состояния (как и в реальном мире)

Page 13: 02 - Классы и Объекты

Static Members

• Class Members vs. Instance Members

Page 14: 02 - Классы и Объекты

Как именовать классы, поля, методы?

Page 15: 02 - Классы и Объекты

Венгерская Нотация

• Использовалась в BCPL• Префикс указывает на тип данных• Была действительно нужна, поскольку в языке был только один

тип данных• Сегодня осталось только как рудимент в WinAPI (всякие

szClassName).• В языках программирования с динамической типизацией

(Python, JavaScript, PHP) практически не используется

Page 16: 02 - Классы и Объекты

Правила именования

• Классы: CamelCase• Поля класса, методы: camelCase• Константы: ALL_CAPITALS_WITH_UNDERSCORES• Локальные переменные: camelCase

Код должен соответствовать Code Conventions for the Java Programming Language

Page 17: 02 - Классы и Объекты

Организация пространств имён

• Аналог пространства имён в Java – пакет (package).• Пакеты имеют иерархическую структуру• Обычно именуются маленькими буквами• Одному пакету соответствует одна директория в файловой

системе

Page 18: 02 - Классы и Объекты

Организация пространств имён

(пример)

Page 19: 02 - Классы и Объекты

Упаковка приложений

• Форма распространения java-приложений – JAR-архив• Идеологически – набор кода и данных, которые нужны

приложению для работы• Технологически – zip-архив с байт-кодом, ресурсами и

метаданными (манифестом)

Запуск приложения:

$ java -jar my-app.jar


Recommended