Typy proste/złożone jako pole klasy.

0

Tworzę klasę bazową ```
Person

public class Person {
private String name;
private String surname;
private String nationality;
}

Po pewnym czasie chciałbym, mieć więcej informacji na temat narodowości, być może ktoś ma dwie narodowości. Klasa jest wykorzystywana w wielu miejscach, więc jej modyfikacja spowoduję dużą liczbę poprawek. Powinienem, więc zatem od początku stworzyć klasę ```
Natonality```, dzięki czemu mógłbym później modyfikować, nawet jeśli na początku miałaby tylko jedną zmienną ```
String
``` definiującą narodowość ?
0

Jeśli przewidujesz posiadanie kilku narodowości, to od razu powinieneś przewidzieć kolekcję do ich przechowywania.

    private ArrayList<String> nationalities; //jeśli wystarczy Ci nazwa narodowości, lub
    private ArrayList<Nationality> nationalities;
0

Czemu klasa Nationality miałaby mieć pole typu String, a nie jakiegoś enuma? Narodowość - czy w zasadzie, jak rozumiem, obywatelstwo - nie jest przecież całkowicie dowolną wartością.

Jeżeli nie przewidujemy dojścia dodatkowych danych (np. data nadania obywatelstwa), można użyć takiego enuma bezpośrednio, czyli jako pole klasy Person, niekoniecznie opakowując go osobną klasą. Są to decyzje projektowe czasami trudne do podjęcia nawet gdy zna się kontekst projektu, a co dopiero całkiem w ciemno.

1 użytkowników online, w tym zalogowanych: 0, gości: 1