ФИО - Чуриков Сергей, Группа - 5452
Homework_01
Принципы ООП: Инкапсуляция, наследование, полиморфизм
Домашнее задание на закрепление:
1)Создать класс Товар, имеющий переменные имя, цена, рейтинг. 2)Создать класс Категория, имеющий переменные имя и массив товаров. Создать несколько объектов класса Категория. 3)Создать класс Basket, содержащий массив купленных товаров. 4)Создать класс User, содержащий логин, пароль и объект класса Basket. Создать несколько объектов класса User. 5)Вывести на консоль каталог продуктов. (все продукты магазина) 6)Вывести на консоль покупки посетителей магазина. (После покупки у пользователя добавляется товар, а из магазина - удаляется)
Всё вышеуказанное создать согласно принципам ООП, пройденным на семинаре
Homework_02
Принципы ООП Абстракция и интерфейсы. Пример проектирования
Домашнее задание на закрепление :
- Создайте три класса: Человек, Кот, Робот, которые не наследуются от одного класса но есть общий класс родитель. Эти классы должны уметь бегать и прыгать, все также с выводом информации о действии в консоль.
- Создайте два класса: беговая дорожка и стена, при прохождении через которые, участники должны выполнять соответствующие действия (бежать или прыгать), результат выполнения печатаем в консоль (успешно пробежал, не смог пробежать и т.д.). У препятствий есть длина (для дорожки) или высота (для стены), а участников ограничения на бег и прыжки.
- Создайте два массива: с участниками и препятствиями, и заставьте всех участников пройти этот набор препятствий. Если участник не смог пройти одно из препятствий, то дальше по списку он препятствий не идет.
Homework_03
Некоторые стандартные интерфейсы Java и примеры их использования
Дз: Дописать игру быки-коровы
- на русском и английском алфавите
- сделать логирование действий и по запросу пользователя посмотреть всю историю игры
-
- реализовать перезапуск игры
Homework_04
От простого к практике
— Создать класс УчебнаяГруппа, содержащий в себе поля Преподаватель и список Студентов; — Создать класс УчебнаяГруппаСервис, в котором реализована функция (входные параметры - (Teacher, List)) формирования из Студентов и Преподавателя УчебнойГруппы и возвращения его; — Создать метод в Контроллере, в котором агрегируются функции получения списка студентов (их id) и преподавателя (его id) и формирования учебной группы, путём вызова метода из сервиса; — Всё вышеуказанное создать согласно принципам ООП, пройдённым на семинаре.
Формат сдачи: ссылка на гитхаб проект
Homework_05
От простого к практике
— Создать класс УчебнаяГруппа, содержащий в себе поля Преподаватель и список Студентов; — Создать класс УчебнаяГруппаСервис, в котором реализована функция (входные параметры - (Teacher, List)) формирования из Студентов и Преподавателя УчебнойГруппы и возвращения его; — Создать метод в Контроллере, в котором агрегируются функции получения списка студентов (их id) и преподавателя (его id) и формирования учебной группы, путём вызова метода из сервиса; — Всё вышеуказанное создать согласно принципам ООП, пройдённым на семинаре.
Формат сдачи: ссылка на гитхаб проект
Homework_06
ООП Дизайн и Solid
Дз на закрепление: Взять реализованный код в рамках последних семинаров (4-5) и продемонстрировать применение принципов,
SOLID: S - Single Responsibility Principle - принцип единственной ответственности. Каждый класс имеет только одну зону ответственности. O - Open closed Principle - принцип открытости-закрытости. Классы должны быть открыты для расширения, но закрыты для изменения. Этот принцип выполняется частично. В моей работе Учителю и Ученику изначально присваивается пустое значение Id и в другом классе изменяется его значение.
L - Liskov substitution Principle - принцип подстановки Барбары Лисков. Должна быть возможность вместо базового (родительского) типа (класса) подставить любой его подтип (класс-наследник), при этом работа программы не должна измениться. Родительский класс User, его наследники Teacher и Student.
I - Interface Segregation Principle - принцип разделения интерфейсов. Данный принцип обозначает, что не нужно заставлять клиента (класс) реализовывать интерфейс, который не имеет к нему отношения. Класс Main к которому имеет доступ клиент содержит всего одну команду, поэтому внутренние процессы клиентом не задействуются никак.
D - Dependency Inversion Principle - принцип инверсии зависимостей. Модули верхнего уровня не должны зависеть от модулей нижнего уровня. И те, и другие должны зависеть от абстракции. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций. User абстрактный класс от него зависят модули нижнего уровня.
Homework_07
ООП Дизайн и Solid ч.2
Создать проект калькулятора комплексных чисел (достаточно сделать сложение, умножение и деление). Применить при создании программы архитектурные паттерны, добавить логирование калькулятора. Соблюдать принципы SOLID, паттерны проектирования. Можно выбрать другой язык программирования, например C# или Python, если выбран язык, отличный от JAVA, то необходимо написать документ, каким образом можно запустить приложение (что необходимо установить, каким образом запускать и т.п.).