Skip to content

forafox/Java-Tutoring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Уроки программирования на Java

Адаптирован под курс ИТМО "Программирование на Java"

  1. За теоретическую основу взята книга "Философия Java" Брюс Эккель
  2. Некоторые задания, теоретические вопросы взяты с лабораторных работ ИТМО по программированию на Java

План занятий

  1. Введение
    • Введение в объекты
    • Все является объектом
    • Операторы
    • Управляющие конструкции

    Домашняя работа - лабораторная №1

  2. Занятие 2
    • Знакомство с Git.
      • Основы работы с удаленным репозиторием
    • Инициализация и завершение
      • Конструкторы
      • Перезагрузка методов
        • Конструкторы по умолчанию
        • Ключевое слово this
        • Ключевое слово static
      • Очистка: финализация и уборка мусора

    Домашняя работа - домашнее задание №2

  3. Занятие 3
    • Инициализация членов класса
      • Явная инициализация
    • Инициализация конструктором
      • Порядок инициализации
      • Инициализация статических данных
      • Явная инициализация статических данных
        • Инициализация нестатических данных экземпляра
    • Инициализация массивов
      • Списки аргументов переменной длины
    • Перечисления (Введение)

    Домашняя работа - домашнее задание №3

  4. Занятие 4. Глава 6 Управление доступом
    • Пакет как библиотечный модуль
    • Спецификаторы доступа Java
      • Доступ в пределах пакета
      • public
      • private
      • protected
    • Синтаксис композиции. Глава 7. Повторное использование классов
    • Синтаксис наследования
    • Сочетание композиции и наследования

    Домашняя работа - домашнее задание №4

  5. Занятие 5.
    • Восходящее преобразование
    • Ключевое слово final
      • Потеря типа объекта
    • Связывание "метод-вызов" (late binding) Позднее связывание
    • Конструкторы и полиморфизм
      • Порядок вызова конструктора
      • Наследование и завершающие действия
      • Поведение полиморфных методов при вызове из конструктора
    • Наследование при проектировании
      • Нисходящее преобразование и динамическое определение типов

    Домашняя работа - домашнее задание №5

  6. Занятие 6. Глава 9. Интерфейсы
    • Абстрактные классы и методы
    • Интерфейсы
    • "Множественное наследование" в Java
    • Расширение интерфейса через наследование
      • Конфликты имен при совмещении интерфейсов
  7. Занятие 7. Глава 10. Внутренние классы
    • Создание внутренних классов
      • Ссылка на внешний класс
    • Внутренние классы в методах и областях действия
    • Анонимные внутренние классы
    • Вложенные классы
  8. Занятие 8. Глава 12. Обработка ошибок и исключения.
    • Основные концепции
    • Основные исключения
    • Перехват исключений
      • Блок try
      • Обработчики исключений
    • Создание собственных исключений
    • Вывод информации об исключениях
    • Спецификация исключений
    • Перехват любого типа исключения
    • Стандартные исключения Java
      • Особый случай: RuntimeException
    • Завершение с помощью finally
      • Ловушка: Потерянное исключение

Домашние задания

  1. Лабораторная работа №1
  2. Домашнее задание №2
  3. Домашнее задание №3
  4. Домашнее задание №4
  5. Домашнее задание №5
  6. Домашнее задание №6
  7. Домашнее задание №7
  8. Домашнее задание №8

Описание домашних заданий

Домашнее задание №1

Первая лабораторная работа

Домашнее задание №2

Задание 1: Конструктор

Создайте класс "Книга" (Book), у которого есть следующие поля:

  • Название книги (title)
  • Автор книги (author)
  • Год выпуска (year)
  • Количество страниц (pages)

Напишите конструктор класса, который будет принимать значения для всех полей при создании экземпляра класса. Создайте несколько объектов этого класса и выведите информацию о каждой книге.

Задание 2: Ключевое слово this

Модифицируйте класс "Книга" так, чтобы при создании экземпляра класса значения полей передавались через параметры конструктора, а затем присваивались полям с использованием ключевого слова this.

Задание 3: Повторное использование this() в конструкторе вызывает другой конструктор.

Добавьте в класс "Книга" второй конструктор, который принимает только название книги и автора, а год выпуска и количество страниц устанавливаются в значения по умолчанию. Используйте ключевое слово this для вызова первого конструктора, чтобы избежать дублирования кода. Создайте объекты, используя оба конструктора, и выведите информацию о книгах.

Задание 4: Перезагрузка методов

Добавьте в класс "Книга" метод getSummary(), который будет возвращать краткое описание книги. Затем создайте еще один метод getSummary(), но с другой сигнатурой (например, принимающий параметр), который будет возвращать более подробное описание книги. Перезагрузите метод getSummary() с использованием разных типов параметров. Выведите результат вызова каждого из методов для нескольких книг.

Домашнее задание №3

Задание 1: Инициализация статических и нестатических членов класса
  1. Создайте класс под названием "Car", представляющий автомобиль. У класса должны быть следующие поля:

    • модель автомобиля (не статическое поле)
    • год выпуска (не статическое поле)
    • количество колес (статическое поле)
  2. Добавьте конструктор для инициализации модели и года выпуска.

  3. Создайте блок инициализации static{}, который устанавливает значение статического поля "количество колес" равным 4.

  4. Напишите метод "printInfo()", который выводит информацию о модели, годе выпуска и количестве колес на экран.

  5. В методе main() создайте несколько объектов класса Car с разными характеристиками и вызовите метод "printInfo()" для каждого объекта

Задание 2: Использование Enum
  1. Создайте перечисление (Enum) под названием "Season", представляющее собой времена года: Зима, Весна, Лето, Осень.
  2. По аналогии с реализацией метода describe класса Burrito реализуйте метод, предоставляющий описание времен года.

Домашнее задание 4: Повторение теории. Ответ на теоретические вопросы.

Домашнее задание 5: Модификаторы доступа. Наследование и Композиция

Разработайте иерархию классов для управления автомобилями с использованием следующих концепций:

  1. Модификаторы доступа:
    • Примените различные модификаторы доступа к полям и методам в классах.
  2. Наследование:
    • Создайте базовый абстрактный класс Car с общими характеристиками (марка, год выпуска, текущая скорость). Унаследуйте от него классы ElectricCar и GasolineCar, добавив соответствующие поля и методы.
  3. Композиция:
    • Создайте класс Engine с методами для управления скоростью автомобиля. Используйте композицию, чтобы включить объект класса Engine в классы ElectricCar и GasolineCar.
  4. Восходящее преобразование:
    • Реализуйте пример, демонстрирующий восходящее преобразование(Ex. Класс гонка, который как-то манипулирует с машинами)
  5. Ключевое слово final:
    • Создайте класс RacingCar, который расширяет класс GasolineCar и имеет поле для хранения максимальной скорости, объявленное с ключевым словом final.

Домашнее задание 6: Интерфейсы и Абстрактные классы

Создайте иерархию классов для представления животных.

  1. Абстрактные классы
    • Реализуйте абстрактный класс "Животное" (Animal), который будет содержать общие характеристики, такие как имя, возраст и тип звуков (Например, мяуканье).
    • Добавьте абстрактные методы для получения информации о животном и для выполнения действия, характерного для этого животного (например, движение или кормление).
  2. Наследование от абстрактного класса.
    • Создайте два подкласса этого абстрактного класса: "Собака" (Dog) и "Кошка" (Cat).
  3. Интерфейсы
    • Реализуйте интерфейс "Домашнее Животное" (Pet), который будет содержать методы для взаимодействия с домашними животными, такие как кормление и игра.
  4. Создание объектов
    • Создайте несколько объектов каждого класса, предоставив им различные характеристики. Используйте методы абстрактного класса для вывода информации о каждом животном, а также методы интерфейса для выполнения действий, связанных с домашними животными.

Домашнее задание 7: Внутренние классы

  1. Создайте класс "Университет" (University), представляющий учебное заведение.
  2. Реализуйте внутренний класс "Студент" (Student), который будет представлять информацию о студенте, такую как имя, возраст и курс. Каждый объект класса "Университет" должен содержать список студентов.
  3. Добавьте в класс "Университет" методы для добавления студента, удаления студента по имени, и вывода списка всех студентов. Реализуйте также метод внутреннего класса "Студент" для отображения информации о студенте.
  4. Создайте несколько объектов класса "Университет" и добавьте в них различные студенты. Проведите тестирование методов, включая добавление, удаление и вывод информации о студентах.

Домашнее задание 8: Обработка ошибок и исключения

  1. Создайте базовый класс Pet, представляющий домашнее животное. Добавьте основные атрибуты, такие как имя, возраст и порода. Реализуйте конструктор для инициализации этих атрибутов.
  2. Обработка ошибок ввода данных: Добавьте проверки в конструктор класса Pet для обработки ошибок ввода данных. Например, возраст не может быть отрицательным числом, а имя и порода не могут быть пустыми строками. В случае обнаружения ошибки, выбрасывайте исключение.
  3. Создайте подкласс Dog, который расширяет класс Pet. Добавьте дополнительные атрибуты, характерные для собак, например, размер или уровень активности, и обрабатывайте возможные ошибки.
  4. В классе Pet добавьте методы, которые могут вызывать ошибки. Например, метод feed(), который может выбросить исключение, если животное не голодно.
  5. Обработка ошибок в методах: Добавьте обработку исключений в методах, где это необходимо. Например, метод play(), который может выбросить исключение, если животное не в настроении для игры.

Для эффективной обработки ошибок и исключений в программе, необходимо создать собственные классы исключений!

About

Repository for Java programming lessons

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages