Задачи 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 принципи. Изпълнете задачата, така че калкулатора да може да се използва от конзола и файл (като вход и изход)