[uml] w ktorych klasach powinny byc realizowane funkcje ?

0

Robię diagram klas dla szkoły. BARDZO upraszczając mam trzy klasy: pracownik, rodzic, dziecko. W klasie 'dziecko' mam pola takie jak: imie, nazwisko, GRUPA itd.

I zastanawiam się w jakiej klasie powinna byc funkcja 'dodaj_dziecko_do_grupy()', bo dodać dziecko do grupy może tylko pracownik więc niby powinna być w klasie 'pracownik', ale jednocześnie przy dodawaniu dziecka do grupy następuje modyfikacja pola 'grupa', a pole to jest w klasie 'dziecko więc niby też mogłaby być w klasie 'dziecko' więc już sam nie wiem, w której klasie ta funkcja powinna być ?

0

mhm, na moje oko moglbys zrobic cos tak jak robi sie przy np: mvc
masz klasy Pracownik, Rodzic, Dziecko i to tego masz klasy managery (tabele), np: PracownikManager, RodzicManager, DzieckoManager, roznica jest taka ze klasy pracownik, rodzic i dziecko maja operacje tylko odnoszace sie do samych siebie, a managery operuja na calych zbiorach.

wiec dodaj_dziecko do grupy umiescilbym w managerze od dzieckow i ewentualnie dodal binding do klasy grupa jezeli masz takie cos.

0

hehe :-P To musi być taki zwykły UML ze zwykłymi tabelami, bez tych Managerów i innych dziwnych rzeczy :) Więc moje pytanie jest nadal aktualne :)

0

Prawa dostępu tu raczej nie mają nic do rzeczy, ich sprawdzanie powinno odbywać się w innym miejscu.

Zastanów się nad propozycją cepa... ja bym jeszcze dodał klasę Szkoła i Grupa...

0

Mam klasy szkola, grupa i wiele innych. Funkcja 'dodaj_dziecko_do_grupy()' to tylko przykład, bo mam też inne funkcje, nad którymi myślę gdzie je umieścić. Dopiero zaczynam naukę UML i na razie nic nie było o menagerach więc pytam się do której klasy ta funkcja by bardziej pasowała ? :)

0

No skoro dodajemy dziecko do grupy, czyli grupa jest agregacją dzieci, to chyba najlepiej, jeśli funkcja dodaj_dziecko_do_grupy() będzie w klasie grupa. A klasa pracownik po prostu delegowałaby operację dodawania dziecka do tej metody w klasie grupa.
Tak na mój rozum...

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