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.
- BLACK(“#000000”),
- WHITE(“#FFFFFF”),
- RED(“#FF0000”),
- GREEN(“#008000”),
- BLUE(“#0000FF”),
- 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:
- LEATHER,
- FUR,
- COTTON,
- WOOL,
- 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ć:
- NATURAL,
- 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:
- PRODUCT_SEPARATOR(“#”),
- PRODUCT_ID(“P”),
- ClOTH_ID(“C”),
- 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:
- ColorParser
- MaterialParser
- 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! 😉