Задачи LSP

Задача 1

Създайте, програма за рафтове във хранителен магазин. Рафта съдържа списък с продукти, всеки продукт има температура на съхранение. Магазина съдържа списък с два рафта на който се добавят продуктите.

Задача 2

Продължение на задача 1. След известно време в магазина разбират, че стоките с температура под 15 градуса се развалят по бързо. Затова решават да добавят витрини за студени продукти. Ако продукта е под

Създайте, програма за рафтове във хранителен магазин.

Рафта съдържа списък с продукти, всеки продукт има температура на съхранение.

Магазина съдържа списък с два рафта на който се добавят продуктите.

Задачи ISP

Задача 1

Дефинирайте следния интерфейс:

public interface Vehicle {    
    public void drive();    
    public void stop();
    public void refuel();
    public void openDoors();
}

Имплементиракте го в класа Bike.

Всички методи ли имплементирахте?

Приложете принципа ISP и имплементирахте класовете Car, Truck

Задача 2

За примера от лагбораторно упражнение 2 може ли да бъде приложен принципа на ISP. Направете имплементация.

Задача 3

Дефинирайте следния интерфейс:

public interface Payments {
    
    public bool payMoney(double amount);
    
    public ScratchCard getScratchCard();
    
    public double getCashBackAsCreditBalance();
}

Имплементирайте клас GooglePay, който предоставя, възможност за:

  • Плащане на сметки, проверява наличноста и заплаща сумата, като я намаля.
  • Предосатавя скреч карта с награда, ако последната за плащане:
    • е над 100лв има 10% шанс за печеливша карта
    • е над 1000лв има 20% шанс за печеливша карта
    • е над 3 000лв има 30% шанс за печеливша картарта
    • е над 5 000лв има 50% шанс за печеливша карта
    • е над 10 000лв има 100% шанс за печеливша карта
  • Връщане на 10% от платената сума при 50% шанс за връщане, увеличава наличноста и връща CashBack сумата.

Имплементирайте клас Paytm, който предоставя, възможност за:

  • Плащане на сметки, проверява наличноста и заплаща сумата, като я освобождава 5 дни след плащането.
  • Връщане на 5% от платената сума при 70% шанс за връщане, увеличава наличноста и връща CashBack сумата.

В тази задача може ли да използвате ISP, как ще го направите?

Задачи DI

Задача 1

Създайте програа която да записва информацията за книга с помоща на интерфейса PrintInfo с метод printText. Направете две имплементации на интерфейса PrintInfoТоConsole и PrintInfoТоFile. Изпълнете плограмата един път с имплементацията за извеждане в конзолата и един път с извеждането във файл.

Реализацията по поставеното условие отговаря ли на DIP?

Какви затруднения виждате в тази имплементация?

Задача 2

Приложете DIP в задача 1. Направете две имплементации на интерфейса PrintInfoТоMedia, като едната имплементация е в конзола а другата във файл. Изпълнете плограмата един път с имплементацията за извеждане в конзолата и един път с извеждането във файл. Направете така, че двете имплементации да се сменят само с промяна на пакета.

Реализацията по поставеното условие отговаря ли на DIP?

Каква е разликата между Задача 1 и Задача 2?

Кой вариант ще доведе до по-лесна реализация на проектите?

Задача 3

Създайте калколатор със изпълнението на аритметичните операции и основните математически функции, като използвате SOLID принципи. Изпълнете задачата, така че калкулатора да може да се използва от конзола и файл (като вход и изход)