Witam! Mam pytanie odnośnie programowania obiektowego. Na uczelni mam do zrealizowania projekt- grę. Przy okazji mam zamiar trochę się nauczyć jak dobrze to wszystko rozumieć. Otóż mam klasę "Miasto" i "Cywil" i teraz mam zamiar w mieście utworzyć listę cywili. I oczywiście rozumiem, że wtedy muszę tworzyć funkcje dodawania cywilów w klasie Miasto, bo tam mam listę. Teraz pytanie, czy nie lepiej jest zrobić klasę pośrednią miedzy Cywil a Miasto, posiadającą listę cywili i tam wszystkie funkcje obsługujące tę listę? I potem utworzyć obiekt w klasie Miasto typu zawierającego listę? Proszę o odpowiedź dlaczego tak? I dlaczego tak najlepiej?
Programowanie obiektowe - rozłożenie elementów
- Rejestracja: dni
- Ostatnio: dni
- Postów: 78
- Rejestracja: dni
- Ostatnio: dni
- Postów: 4883
zalezy co bedziesz dalej robil w projekcie.
Oba rozwiazania maja swoje plusy i minusy
- Rejestracja: dni
- Ostatnio: dni
w realnym świecie "miasto" nie wie kto w nim mieszka, nie ma żadnej listy aktualnie przebywających tam osób
jest jedynie lista zameldowanych osób którą ma jakiś tam urząd
za to gdybyś spytał cywila w jakim mieście żyje to nie miałby problemu z udzieleniem odpowiedzi
i'm just saying
próbuj jak najlepiej odzwierciedlić rzeczywistość, jednak rób to tak żeby program nie był zbyt skomplikowany
- Rejestracja: dni
- Ostatnio: dni
- Postów: 78
tzn, w miesicie oprócz cywili będą jeszcze źródła mocy, superbohatorowie, i wszystko będzie na listach...więc nie wiem czy upychać wszystko razem czy to porozdzielać, bo to znaczy, że do dodawania źródeł mocy będę musiał mieć funkcje i superbohaterów, a także funkcje usuwania, update'u....
jakieś dalsze sugestie ?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 1683
miasto mogłoby spokojnie przechowywać coś, ale Set<Dweller> dwellers; lecz z drugiej strony musiałbyś więcej napisać. jak to coś bardziej skomplikowanego to może sobie zrób do teog jakąś klase opakowanie albo InMemoryDao?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Bieszczady
Jedno miasto może mieć wielu mieszkańców, zwykłe jeden do wielu. Może jakaś mapka
<PESEL['jakiś identyfikator'], Miasto>
, Samo miasto może w tedy mieć u siebie subset'a tej mapy, np:
Map<String, List<String>> jakies_wioska_pod_oławą=
Maps.filterEntries(GłównaMapaZLudźmi, [i tu jakiś tam warunek, np: p->p.equals("jakas_wioska_pod_oławą")]);
Masz w tedy "closed for modification open for extension", bo możesz robić kolejne miasta.