2. • Java Programming Language
– переменные примитивных типов
int , char, double
– переменные объектных типов (ссылки!)
Integer, System, MyClass
– нет адресов, Сборщик Мусора
– JavaDoc
• Java Platform
– Java Virtual Machine
– Java SE, Java EE
– JRE, JDK
3. Объекты – ключевое понятие
объектно-ориентированных технологий
оглядитесь: мы живём в мире взаимодействующих объектов!
Каждый объект характеризуется состоянием и
поведением
4. Программные объекты
• Объекты в программных системах – аналоги объектов в
реальном мире
• Состояние хранится в полях
• Поведение доступно через методы
• Методы изменяют состояние объекта
Сокрытие внутреннего состояния объекта от посторонних глаз
называется инкапсуляцией. Единственный способ изменить
это состояние – вызвать метод объекта.
5. Программные объекты
Состояние:
• Скорость движения
• Скорость вращения колёс
• Конфигурация шестерней
Поведение:
• Переключить передачи
• Затормозить
• Изменить темп
9. Классы и объекты в Java
• Каждому public классу – свой файл
• Поля и методы могут чередоваться
• Реализация метода не отделяется от объявления метода
10. Классы и объекты в Java
Квалификаторы доступа в Java:
• public – доступ имеют все
• private – доступ имеют только объекты данного класса
• protected – доступ имеют объекты данного класса, все
объекты классов-потомков и все классы из данного пакета
По умолчанию – package protected, то есть все классы из данного
пакета имеют доступ
11. Классы и объекты в Java
• Модификатор доступа помещается перед каждым членом
класса (не перед группой)
• Все поля класса стоит помечать как private или protected
• Хотя бы некоторые методы стоит помечать как public
Вообще, рекомендуется скрывать данные, и предоставлять
методы для изменения состояния (как и в реальном мире)
12. Static Members
• Члены объекта (Instance Members)
– Принадлежат экземпляру класса (поля и методы в обычном
понимании)
• Члены класса (Class Members)
– Принадлежат классу (могут быть использованы и без экземпляра
класса)
– Внутри статических методов нельзя обращаться к нестатическим
членам
14. Венгерская Нотация
• Использовалась в BCPL
• Префикс указывает на тип данных
• Была действительно нужна, поскольку в языке был только один
тип данных
• Сегодня осталось только как рудимент в WinAPI (всякие
szClassName).
• В языках программирования с динамической типизацией
(Python, JavaScript, PHP) практически не используется
15. Правила именования
• Классы: CamelCase
• Поля класса, методы: camelCase
• Константы: ALL_CAPITALS_WITH_UNDERSCORES
• Локальные переменные: camelCase
Код должен соответствовать Code Conventions for the Java
Programming Language
16. Организация пространств имён
• Аналог пространства имён в Java – пакет (package)
• Пакеты имеют иерархическую структуру
• Обычно именуются маленькими буквами
• Одному пакету соответствует одна директория в файловой
системе
18. Упаковка приложений
• Форма распространения java-приложений – JAR-архив
• Идеологически – набор кода и данных, которые нужны
приложению для работы
• Технически – zip-архив с байт-кодом, ресурсами и метаданными
(манифестом)
Запуск приложения:
$ java -jar my-app.jar