Programowanie obiektowe - rozłożenie elementów

Programowanie obiektowe - rozłożenie elementów
AN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 78
0

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?

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
0

zalezy co bedziesz dalej robil w projekcie.

Oba rozwiazania maja swoje plusy i minusy

  • Rejestracja: dni
  • Ostatnio: dni
1

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

AN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 78
0

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 ?

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1683
0

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?

niezdecydowany
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Bieszczady
0

Jedno miasto może mieć wielu mieszkańców, zwykłe jeden do wielu. Może jakaś mapka

Kopiuj
<PESEL['jakiś identyfikator'], Miasto>

, Samo miasto może w tedy mieć u siebie subset'a tej mapy, np:

Kopiuj
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.