Skip to content

Mad-Beavers/solid2021

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

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

  • Java 100.0%