Skip to content
This repository has been archived by the owner on Jun 23, 2021. It is now read-only.

arturn-dev/solid2021

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Team

Artur Nowicki
Kacper Włodarczyk
Dawid Morka
Kamil Dębowski

Clean Code 2021

Zadanie 1: Clean Code

Klasa pl.zzpj2021.cleancode.doIt nie przestrzega zasad Clean Code. Przerefaktoruj kod zgodnie z zasadami poznanymi podczas wykładu.

Pytania uzupełniające:

  • Jaka jest rola tej klasy?
  • Jaką funkcjonalność realizuje?
  • Jaki jest najlepszy sposób na sprawdzenie poprawności implementacji kolejnych metod tej klasy? Upewnij się czy wszystkie metody są zaimplementowane poprawnie.

Zadanie 2: Single Responsibility Principle

Reprezentacja modelu ksiązki oraz możliwość jej drukowania (czytania) powinna być odseparowana. Dostarcz oddzielne implementacje modelu książki oraz jej drukowania zgodnie z Single Responsibility Principle.

Pakiet, w którym należy umieścić rozwiązanie: pl.zzpj2021.solid.srp.book.solution


Zadanie 3: Open-closed principle

Limity prędkości i kary za jej przekroczenie są różne dla każdego z 50 stanów USA. Należy dostarczyć łatwo rozszerzalną implementację, w której każdy stan będzie mógł zdefiniować swoje kary. Na chwilę obecną załóżmy, że będą to 3 stany USA, które skorzystają z naszego API, ale niewykluczone, że w przyszłości inne stany również decydują się je wykorzystać.

Pakiet, w którym należy umieścić rozwiązanie: pl.zzpj2021.solid.ocp.usa.solution


Zadanie 4: Liscov Substitution Principle

Podstawowym przykładem obrazującym zasadę Barbary Liskov jest zbudowanie aplikacji, która będzie korzystała z własności podstawowych figur geometrycznych: kwadrat, prostokąt, koło... wraz z obliczaniem ich obwodu oraz pola powierzchni. Czy z punktu widzenia programisty i programowania obiektowego kwadrat jest prostokątem?

Pakiet w którym należy dostarczyć rozwiązanie: pl.zzpj2021.solid.lsp.shape


Zadanie 5: Interface Separation Principle

Klasa Contact ma dwie własności, jedna z nich przedstawia możliwość kontaktowania się przez wiadomość email, a druga to kontakt telefoniczny. Zaleca się wyróżnienie tych własności za pomocą interfejsów. Interfejsy powinny deklarować metody charakterystyczne dla danej własności.

Pakiet, w którym należy dostarczyć rozwiązanie: pl.zzpj2021.solid.isp.contactbook.solution


Zadanie 6: Dependency Inversion Principle

Mamy serwis informujący o zmianach pogodowych. Informacje o zmianach wysyłane są na różne urządzenia: telefony lub skrzynki poczty elektronicznej. Oba te urządzenia łączy jedna wspólna cecha jaką jest odbiór wiadomości i jej wyświetlenie. Telefon i skrzynka są modułami niskopoziomowymi, natomiast "Tracker" jest modułem wysokopoziomowym, który nie powinien zależeć od modułów niskopoziomowych.

Pakiet, w którym należy dostarczyć rozwiązanie: pl.zzpj2021.solid.dip.weathertracker.solution

About

Zadania w ramach zzpj2021

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages