Najlepszy Java Developer – Zadanie 9: Budowniczy

Zadanie

Wielbłądy już za nami, a koniec pierwszej edycji Najlepszego Java Developera zbliża się wielkimi krokami. Już niedługo nadejdzie czas na podsumowanie i małe niespodzianki dla najwytrwalszych. 😉

Na koniec proste zadanie – na pewno prostsze niż te poprzednie. Nie będzie ono z żadnej kategorii co poprzednie – tym razem skupimy się wzorcu projektowym tzn. Builderze czy jak kto woli budowniczym.

Do waszego zadania należy zaimplementowanie wzorca projektowego budowniczy dla dwóch modeli:

  1. Wielbłąd:
    • id (wymagane)
    • imię (wymagane)
    • wiek (wymagane)
    • płeć (wymagane)
    • waga
    • wzrost
    • kolor sierści
  2. Artykuł
    • id (wymagane)
    • tytuł (wymagane)
    • treść (wymagane)
    • data publikacji (wymagane)
    • lista tagów (tag może być pustą klasą)
    • kategoria (kolejny pusty obiekt)
    • autor (obiekt lub string)

Do konstrukcji obiektów skorzystaj z typów jakie Ci odpowiadają – jeśli nie chcesz tworzyć nowych pustych wykorzystaj np. Stringa. Najważniejszym celem jest to, aby zaimplementować wzorzec builder – w odpowiedni sposób, czyli taki, aby wymusić podanie wymaganych parametrów. Bez nich obiekt nie może zostać utworzony.

Punktacja

Za przygotowany poprawnie jeden builder można otrzymać 800pkt, łącznie za zadanie można otrzymać 1600 punktów.

Przydatne linki

  1. https://bulldogjob.pl/news/348-idiotoodporne-api-klasy-czyli-jakie
  2. https://1024kb.pl/programowanie/wzorce-projektowe/wzorzec-projektowy-builder/

Czas

Zadanie zostało opublikowane 25 lutego, a jego rozwiązania można przesyłać do 28 lutego do godziny 23.59. Zadania wysłane później będą automatycznie usuwane.

Format

Zadanie należy wysłać na email: njd@1024kb.pl z tematem: TWÓJ-NICK_BUILDER.

Zadanie przesyłamy jako repozytorium Git – może być hostowany na GitHub, GitLab, Bitbucket – gdzie tylko chcesz. W wiadomości podajemy tylko link do repozytorium projektu. 😉

Pamiętajcie, aby do pliku .gitignore dodać:

  • /target
  • /out
  • /.idea
  • *.iml

I inne pliki/katalogi, które nie powinny być na zdalnym repozytorium.

W razie jakichkolwiek wątpliwości pytajcie jak ma wyglądać finalna aplikacja. 😉

Rozwiązanie

Rozwiązanie zadania można znaleźć w tym repozytorium.