Mało znaczące, związane z programowaniem obiektowym

Odpowiedz Nowy wątek
2011-07-28 21:58
Testownik
0

Witam

Jakie macie sposoby na takiego rodzaju mankamenty ?

Przykładowo jest klasa Monster, do klasy Monster powinien należeć jako pole klasy obiekt o nazwie Body, ciało należy do potwora

istnieje powiedzmy w danym projekcie z 50 klas
klasa Body powinna tylko należeć do klasy Monster

Jednak nazwa Body jest trochę myląca bo to może być cokolwiek, trochę niefajne jakby się tak nazywała globalnie jeśli tylko powinna należeć jako obiekt do Monster

Rozwiązaniem mogłaby być nazwa MonsterBody, wtedy MonsterBody należało by do Monster
Jednak taka nazwa wydaje mi się "brzydka"

może użyć przestrzeni nazw? Jednak jak to miałoby wyglądać ...

namespace Monster
{
class Monster;
class Body;
};

Monster::Monster i Monster::Body

Trochę niefajnie

Chciałbym, żeby na ten temat wypowiedział się ktoś z dobrym doświadczeniem w projektowaniu klas i ich nazw

Pozdrawiam

Pozostało 580 znaków

2011-07-28 22:16
1

Zakładając,że owo Body ma sens jako oddzielna klasa,to jeśli ma być używana wyłącznie w klasie Monster (i poza nią nie ma sensu za bardzo) to należy zdefiniować ją jako klasę zagnieżdżoną:

class Monster
{
   class Body
   {
   }
 
   Body body;
}

"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]

Pozostało 580 znaków

2011-07-28 22:24
1

Jeżeli ten przykład jest dość konkretny(rzeczywisty) to imho hierarchia klas powinna wyglądać inaczej:

class Model
{
    class Body
    {
         ...
    }
 
    Body body;
    ...
    Head head; //czy co tam jeszcze będzie używane (np. do obliczania hitbox'ów)
}
 
class Monster
{
    ...
    Model *model;
    ...
}

Nie jestem wyrocznią i nie jestem pro, ale widzę to tak: może być wiele potworów wyglądających tak samo -> ładowanie do pamięci modelu dla każdego jednego potwora = olbrzymia strata pamięci. Dlatego właśnie potwór powinien mieć tylko wskaźnik, albo ID modelu, który definiuje jego wygląd. Sam model powinien być tylko raz załadowany do pamięci i trzymany w jakiejś kolekcji wykorzystywanych modeli.

Piszę to z własnego doświadczenia, bo kiedyś pisałem silnik 3D (rendering + fizyka) -> wynik był tragiczny, ale jednak pewne spostrzeżenia poczyniłem ;)


To wszystko jest prawdą tak długo,jak Body dla każdego potwora ma być identyczne i co najistotniejsze-niezmienne - MasterBLB 2011-07-28 23:26
nie do końca, to, że potwór ma wskaźnik na model, nie oznacza, że zawsze to będzie taki sam model. Oczywiście tutaj odpada coś jak model zniszczeń. Ale to nie temat na takie dywagacje. Samo w sobie to jest dość mocno skomplikowane ;) - byku_guzio 2011-07-29 00:17
Prawdaż.Poza tym,takie projektowanie mocno zależy od kontekstu użycia,a tutaj autor wątku dał nam bardzo mało informacji na ten temat.Cóż,mając na uwadze dane wejściowe od autora to co napisaliśmy powinno spisać się najlepiej - MasterBLB 2011-07-29 00:19
Nom, ja w sumie założyłem silnik renderujący + ewentualna fizyka 3D (bo coś takiego kiedyś pisałem... zaliczając spektakularną porażkę jeżeli chodzi o kod - nawet dysk odmówił posłuszeństwa jak to ujrzał i wyzionął ducha :D) - byku_guzio 2011-07-29 00:23
Też próbowałem swych sił w tym temacie,acz nie tyle pisałem własny silnik,co obczajałem istniejące takie jak Orge,Irrlicht,C4,Esenthiel,UDK czy Unity w celu wskrzeszenia UFO:Enemy Unknown.Niestety,kumpel z którym tworzyłem strzelił focha spod napleta,i projekt szlag trafił :/ - MasterBLB 2011-07-29 01:06
to ja pisałem dużo prostszą rzecz niż wymienione przez Ciebie. W końcu miała to być docelowo strzelanka FPP z akcją osadzoną w moim LO. Miałem już tekstury, modele przeciwników, nawet modele nauczycieli z ich twarzami, podstawowe elementy otoczenia, wykrywanie kolizji i fizyke postaci. Bronie i modele z quake'a I, jakieś pociski z UT'99 - ale wydajność tego była taka, że klękajcie narody :D - byku_guzio 2011-07-29 01:42

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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