Классы и Объекты в JavaОсновы ООП
Объекты – ключевое понятие объектно-ориентированных технологий
оглядитесь: мы живём в мире взаимодействующих объектов!
Каждый объект характеризуется состоянием и поведением
Программные объекты
• Объекты в программных системах – аналоги объектов в реальном мире
• Состояние хранится в полях• Поведение доступно через методы
Программные объекты
• Методы изменяют состояние объекта
Сокрытие внутреннего состояния объекта от посторонних глаз называется инкапсуляцией. Единственный способ изменить это состояние – вызвать метод объекта.
Программные объекты
Состояние:• Скорость движения• Скорость вращения колёс• Конфигурация шестерней
Поведение:• Переключить передачи• Затормозить• Изменить темп
Программные объекты
Основные преимущества:• Модульность• Повторное использование кода• Сокрытие внутреннего представления• Расширяемость и простота отладки
Класс – множество объектов, имеющихсхожее поведение и свойства
Класс – велосипед, объекты – мой вел, вел Хемуля, …
Классы и объекты в Java
(пример: Bike.java)
Классы и объекты в Java
• Каждому классу – свой файл• Поля и методы могут чередоваться• Реализация метода не отделяется от объявления метода
Классы и объекты в Java
Квалификаторы доступа в Java:• public – доступ имеют все• private – доступ имеют только объекты данного класса• protected – доступ имеют объекты данного класса и все
объекты классов-потомков
По умолчанию – package private, то есть все классы из данного пакета имеют доступ
Классы и объекты в Java
• Модификатор доступа помещается перед каждым членом класса (не перед группой)
• Все поля класса стоит помечать как private или protected• Хотя бы некоторые методы стоит помечать как public
Вообще, рекомендуется скрывать данные, и предоставлять методы для изменения состояния (как и в реальном мире)
Static Members
• Class Members vs. Instance Members
Как именовать классы, поля, методы?
Венгерская Нотация
• Использовалась в BCPL• Префикс указывает на тип данных• Была действительно нужна, поскольку в языке был только один
тип данных• Сегодня осталось только как рудимент в WinAPI (всякие
szClassName).• В языках программирования с динамической типизацией
(Python, JavaScript, PHP) практически не используется
Правила именования
• Классы: CamelCase• Поля класса, методы: camelCase• Константы: ALL_CAPITALS_WITH_UNDERSCORES• Локальные переменные: camelCase
Код должен соответствовать Code Conventions for the Java Programming Language
Организация пространств имён
• Аналог пространства имён в Java – пакет (package).• Пакеты имеют иерархическую структуру• Обычно именуются маленькими буквами• Одному пакету соответствует одна директория в файловой
системе
Организация пространств имён
(пример)
Упаковка приложений
• Форма распространения java-приложений – JAR-архив• Идеологически – набор кода и данных, которые нужны
приложению для работы• Технологически – zip-архив с байт-кодом, ресурсами и
метаданными (манифестом)
Запуск приложения:
$ java -jar my-app.jar