Aplikacja domowa – zadanie

Kolejny tydzień nauki za nami – czas na podsumowanie całego tygodnia. Najlepszym podsumowaniem oczywiście jest wykonanie zadań, które posunie nasz projekt aplikacji do przodu. 😉

Nie ma co zwlekać – czas brać się do roboty! O to aktualne Twoje zadania na ten tydzień.

Color enum

Póki co kolor produktu trzymaliśmy w Stringu – ty już wiesz, że jest to złe rozwiązanie. Dlatego stwórz enum z kolorami, które będą posiadały w sobie wartość HEX.

  1. BLACK(“#000000”),
  2. WHITE(“#FFFFFF”),
  3. RED(“#FF0000”),
  4. GREEN(“#008000”),
  5. BLUE(“#0000FF”),
  6. YELLOW(“#FFFF00”);

Dodaj metodę zwracającą wartość HEX.

Material enum

Typ materiału również był trzymany w Stringu, analogicznie stwórz dla niego osobny enum z wartościami:

  1. LEATHER,
  2. FUR,
  3. COTTON,
  4. WOOL,
  5. POLYESTERS.

SkinType enum

Typ skóry był przechowywany w Boolean – albo była naturalna albo nie, choć są to i tak dwa stany to warto stworzyć również enum – gdyby przypadkiem w przyszłości został dodany kolejny rodzaj. 😉

Enum ma przechowywać:

  1. NATURAL,
  2. ARTIFICIAL.

ProductSeparators enum

Stwórz osobny enum dla wszystkich separatorów, którymi się posługujesz podczas zapisu produktu do pliku oraz odczytu z niego. Enum ma, więc posiadać takie wartości:

  1. PRODUCT_SEPARATOR(“#”),
  2. PRODUCT_ID(“P”),
  3. ClOTH_ID(“C”),
  4. BOOTS_ID(“B”).

Enum – klasy Product, Boots i Cloth

W klasach Product, Boots i Cloth zrefaktoryzuj kod tak, aby korzystał z wszystkich wcześniej wymienionych typów wyliczeniowych!

Refaktoryzacja ProductParser

ProductParser również będzie musiał być edytowany – w końcu dodaliśmy do klas typy wyliczeniowe zamiast Stringów – najlepiej stwórz osobne trzy dodatkowe parsery:

  1. ColorParser
  2. MaterialParser
  3. SkinParser

W każdym z nich stwórz statyczną metode, gdzie będzie przekazywał Stringa i na podstawie jego wartości zwracał odpowiednią wartość danego typu wyliczeniowego.

Np.:

if (str.equals("RED")) {
  return Color.RED;
}

Refaktoryzacja Main

Skoro wcześniej korzystaliśmy ze Stringa to musimy zmienić typ wprowadzania danych przez użytkownika – podczas podawania materiału, rodzaju skóry lub koloru wykorzystaj wczesniej utworzone Parsery do stworzenia odpowiedniego typu wyliczeniowego.

U mnie wystarczyło lekko zmodyfikować takie metody jak: createBootsProduct, createClothProduct oraz createOtherProduct.

Możesz użytkownikowi wyświetlić listę dostępnych możliwości np.:

System.out.println("Choose one of colors: RED, BLUE, GREEN, WHITE, BLACK, YELLOW");

I na podstawie wczytanego Stringa przeparsuj do typu wyliczeniowego.

Testy

Wracamy do napisania kilku testów – przetestuj swoje parsery: Color, SkinType oraz Material. Postaraj się przetestować wszystkie przypadki parserów – również wtedy, gdy zostanie podana zła wartość.

W przypadku złej wartości ja zwracam konkretną wartość, a nie null np. kolor czarny. Biorę go za domyślny.

Podsumowanie

I to tyle zadań na ten tydzień, mam nadzieję, że wszystko jest zrozumiałe – jeśli nie to pisz w komentarzu lub na grupie Facebookowej.

Oczywiście możesz zajrzeć do mojego przykładowego rozwiązania – najlepiej jednak, gdybyś najpierw samemu spróbował swoich sił. 😉

W takim razie widzimy się w następnym tygodniu – tygodniu baz danych! 😉

 

Kamil Klimek

Od 2016 jestem programistą Java. Przez pierwsze 4 lata pracowałem jako Full Stack Java Developer. Później postanowiłem postawić nacisk na Javę, żeby jeszcze lepiej ją poznać.

Subscribe
Powiadom o
guest
0 komentarzy
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x