- За теоретическую основу взята книга "Философия Java" Брюс Эккель
- Некоторые задания, теоретические вопросы взяты с лабораторных работ ИТМО по программированию на Java
- Введение
- Введение в объекты
- Все является объектом
- Операторы
- Управляющие конструкции
Домашняя работа - лабораторная №1
- Занятие 2
- Знакомство с Git.
- Основы работы с удаленным репозиторием
- Инициализация и завершение
- Конструкторы
- Перезагрузка методов
- Конструкторы по умолчанию
- Ключевое слово this
- Ключевое слово static
- Очистка: финализация и уборка мусора
Домашняя работа - домашнее задание №2
- Знакомство с Git.
- Занятие 3
- Инициализация членов класса
- Явная инициализация
- Инициализация конструктором
- Порядок инициализации
- Инициализация статических данных
- Явная инициализация статических данных
- Инициализация нестатических данных экземпляра
- Инициализация массивов
- Списки аргументов переменной длины
- Перечисления (Введение)
Домашняя работа - домашнее задание №3
- Инициализация членов класса
- Занятие 4. Глава 6 Управление доступом
- Пакет как библиотечный модуль
- Спецификаторы доступа Java
- Доступ в пределах пакета
- public
- private
- protected
- Синтаксис композиции. Глава 7. Повторное использование классов
- Синтаксис наследования
- Сочетание композиции и наследования
Домашняя работа - домашнее задание №4
- Занятие 5.
- Восходящее преобразование
- Ключевое слово final
- Потеря типа объекта
- Связывание "метод-вызов" (late binding) Позднее связывание
- Конструкторы и полиморфизм
- Порядок вызова конструктора
- Наследование и завершающие действия
- Поведение полиморфных методов при вызове из конструктора
- Наследование при проектировании
- Нисходящее преобразование и динамическое определение типов
Домашняя работа - домашнее задание №5
- Занятие 6. Глава 9. Интерфейсы
- Абстрактные классы и методы
- Интерфейсы
- "Множественное наследование" в Java
- Расширение интерфейса через наследование
- Конфликты имен при совмещении интерфейсов
- Занятие 7. Глава 10. Внутренние классы
- Создание внутренних классов
- Ссылка на внешний класс
- Внутренние классы в методах и областях действия
- Анонимные внутренние классы
- Вложенные классы
- Создание внутренних классов
- Занятие 8. Глава 12. Обработка ошибок и исключения.
- Основные концепции
- Основные исключения
- Перехват исключений
- Блок try
- Обработчики исключений
- Создание собственных исключений
- Вывод информации об исключениях
- Спецификация исключений
- Перехват любого типа исключения
- Стандартные исключения Java
- Особый случай: RuntimeException
- Завершение с помощью finally
- Ловушка: Потерянное исключение
- Лабораторная работа №1
- Домашнее задание №2
- Домашнее задание №3
- Домашнее задание №4
- Домашнее задание №5
- Домашнее задание №6
- Домашнее задание №7
- Домашнее задание №8
Первая лабораторная работа
Создайте класс "Книга" (Book), у которого есть следующие поля:
- Название книги (
title) - Автор книги (
author) - Год выпуска (
year) - Количество страниц (
pages)
Напишите конструктор класса, который будет принимать значения для всех полей при создании экземпляра класса. Создайте несколько объектов этого класса и выведите информацию о каждой книге.
Модифицируйте класс "Книга" так, чтобы при создании экземпляра класса значения полей передавались через параметры
конструктора, а затем присваивались полям с использованием ключевого слова this.
Добавьте в класс "Книга" второй конструктор, который принимает только название книги и автора, а год выпуска и
количество страниц устанавливаются в значения по умолчанию. Используйте ключевое слово this для вызова первого
конструктора, чтобы избежать дублирования кода. Создайте объекты, используя оба конструктора, и выведите информацию о
книгах.
Добавьте в класс "Книга" метод getSummary(), который будет возвращать краткое описание книги. Затем создайте еще один
метод getSummary(), но с другой сигнатурой (например, принимающий параметр), который будет возвращать более подробное
описание книги. Перезагрузите метод getSummary() с использованием разных типов параметров. Выведите результат вызова
каждого из методов для нескольких книг.
-
Создайте класс под названием "Car", представляющий автомобиль. У класса должны быть следующие поля:
- модель автомобиля (не статическое поле)
- год выпуска (не статическое поле)
- количество колес (статическое поле)
-
Добавьте конструктор для инициализации модели и года выпуска.
-
Создайте блок инициализации static{}, который устанавливает значение статического поля "количество колес" равным 4.
-
Напишите метод "printInfo()", который выводит информацию о модели, годе выпуска и количестве колес на экран.
-
В методе main() создайте несколько объектов класса Car с разными характеристиками и вызовите метод "printInfo()" для каждого объекта
- Создайте перечисление (Enum) под названием "Season", представляющее собой времена года: Зима, Весна, Лето, Осень.
- По аналогии с реализацией метода
describeклассаBurritoреализуйте метод, предоставляющий описание времен года.
Разработайте иерархию классов для управления автомобилями с использованием следующих концепций:
- Модификаторы доступа:
- Примените различные модификаторы доступа к полям и методам в классах.
- Наследование:
- Создайте базовый абстрактный класс Car с общими характеристиками (марка, год выпуска, текущая скорость). Унаследуйте от него классы ElectricCar и GasolineCar, добавив соответствующие поля и методы.
- Композиция:
- Создайте класс Engine с методами для управления скоростью автомобиля. Используйте композицию, чтобы включить объект класса Engine в классы ElectricCar и GasolineCar.
- Восходящее преобразование:
- Реализуйте пример, демонстрирующий восходящее преобразование(Ex. Класс гонка, который как-то манипулирует с машинами)
- Ключевое слово final:
- Создайте класс RacingCar, который расширяет класс GasolineCar и имеет поле для хранения максимальной скорости, объявленное с ключевым словом final.
Создайте иерархию классов для представления животных.
- Абстрактные классы
- Реализуйте абстрактный класс "Животное" (Animal), который будет содержать общие характеристики, такие как имя, возраст и тип звуков (Например, мяуканье).
- Добавьте абстрактные методы для получения информации о животном и для выполнения действия, характерного для этого животного (например, движение или кормление).
- Наследование от абстрактного класса.
- Создайте два подкласса этого абстрактного класса: "Собака" (Dog) и "Кошка" (Cat).
- Интерфейсы
- Реализуйте интерфейс "Домашнее Животное" (Pet), который будет содержать методы для взаимодействия с домашними животными, такие как кормление и игра.
- Создание объектов
- Создайте несколько объектов каждого класса, предоставив им различные характеристики. Используйте методы абстрактного класса для вывода информации о каждом животном, а также методы интерфейса для выполнения действий, связанных с домашними животными.
- Создайте класс "Университет" (University), представляющий учебное заведение.
- Реализуйте внутренний класс "Студент" (Student), который будет представлять информацию о студенте, такую как имя, возраст и курс. Каждый объект класса "Университет" должен содержать список студентов.
- Добавьте в класс "Университет" методы для добавления студента, удаления студента по имени, и вывода списка всех студентов. Реализуйте также метод внутреннего класса "Студент" для отображения информации о студенте.
- Создайте несколько объектов класса "Университет" и добавьте в них различные студенты. Проведите тестирование методов, включая добавление, удаление и вывод информации о студентах.
- Создайте базовый класс Pet, представляющий домашнее животное. Добавьте основные атрибуты, такие как имя, возраст и порода. Реализуйте конструктор для инициализации этих атрибутов.
- Обработка ошибок ввода данных: Добавьте проверки в конструктор класса Pet для обработки ошибок ввода данных. Например, возраст не может быть отрицательным числом, а имя и порода не могут быть пустыми строками. В случае обнаружения ошибки, выбрасывайте исключение.
- Создайте подкласс Dog, который расширяет класс Pet. Добавьте дополнительные атрибуты, характерные для собак, например, размер или уровень активности, и обрабатывайте возможные ошибки.
- В классе Pet добавьте методы, которые могут вызывать ошибки. Например, метод feed(), который может выбросить исключение, если животное не голодно.
- Обработка ошибок в методах: Добавьте обработку исключений в методах, где это необходимо. Например, метод play(), который может выбросить исключение, если животное не в настроении для игры.
Для эффективной обработки ошибок и исключений в программе, необходимо создать собственные классы исключений!