Jak bardzo OOP jest to?

0

Mam klasę Świat oraz Opakowanie.
W klasie Świat mam kontener ( std::list oparty na memory pool) i w nim trzymam wszystkie np. żelki, z wszystkich opakowań. (Poza tym klasa Świat trzyma też same opakowania w zwykłym std::vector)
pojedyncze opakowanie dostaje dwa iteratory begin, end na kontener w klasie Świat, który wskazuje na początek i koniec swoich żelków.
Chce mieć żelki wszystkie razem bo robie kazdej żelce update w każdej pętli głównej programu. A opakowanie raz na dłuższy czas. Teraz opakowanie czasami chce
dodać lub ukraść jedną żelkę z siebie samego. (Tak wiem, genialny, praktyczny przykład) i klasa Świat nie za bardzo wie kiedy to nastąpi. I teraz pytanie czy to OK dać Opakowaniu wskaźnik na świat lub sam kontener żeby mogło sobie go zmieniać?

3

No dobra, ale po co? Tzn czemu nie możesz iterować po wszystkich żelkach poprzez iterowanie po opakowaniach?

0

Nie wiem. Starałem się trzymać tego ze jedna klasa to jedno zadanie. świat utrzymuje basen, allokuje, tworzy nowe zelki etc a opakowanie decyduje kiedy jakie żelki usunąć, co dodać i świat się tym zajmuje. Nie mam doświadczenia.

0

A czy ja mówie że masz to upychać w jednej klasie? o_O Czym innym jest zasada jednej odpowiedzialności a czym innym duplikowanie danych ;]

0

Dobra, to jak to zrobić porządnie? Świat trzyma opakowania, opakowanie trzyma swoje żelki i znowu pojawia się problem jeśli opakowanie chce dodać nowe żelki bo muszę mieć wskaźnik na basen żeby zapytać o miejsce w pamięci jako że żelki są alokowane dynamicznie.

1

Wydziel to alokowanie pamięci do osobnej klasy a nie trzymaj tego w klasie Świat.

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