Avatar billede c-skau Nybegynder
11. maj 2005 - 23:38 Der er 10 kommentarer og
1 løsning

Multi class struktur

Hey,

Jeg er for øjeblikket ved at lave en spilmotor til et stort 3D spil.
Spilmotoren er opbygget af mange små classes som jeg gerne skulle kunne bruge over alt i motoren. Altså det hele oprinder fra min Core  som kalder ud til forskellige funktioner som så igen kalder nogle andre funktioner.
Mit problem ligger i hvordan jeg smartest "linker" alle disse classes sammen. Jeg har prøvet mig lidt frem med forskellige metoder, men er ikke rigtig tilfreds med resultatet endnu..
Hvis i har nogle gode råd eller måske bare et genialt link vil jeg sætte stor pris på disse :)
Avatar billede bertelbrander Novice
11. maj 2005 - 23:47 #1
Det kommer lidt an på hvad du mener med "linker", og hvordan de enkelte class'er (eller rettere instanser af disse) skal "se" hinanden.

En metode er at lade alle class'er arve fra den samme base class, og lade denne "registrere" sig selv i en global liste i constructoren, og "deregistrere" sig i destructoren.
Avatar billede c-skau Nybegynder
12. maj 2005 - 00:04 #2
Det jeg er ude efter er ganske simpelt at f.eks. min cDraw class skal kunne kunne bruge min cXML class til f.eks. at hente noget data til sig. Men sådan det ser ud lige nu kan de ikke se hinanden og derfor ikke kalde hinanden.

Det skal lige siges jeg er forholdsvis ny til C++, men har prøvet at nedarve dog uden held.. kunne være jeg bare skulle læse noget mere om emnet ;)
Men har jeg forstået det rigtigt når jeg antager at ved at lade mine class'er nedarve fra f.eks. min Core class registrere de sig selv helt automatisk og derved alle kan se hinanden?
Avatar billede bertelbrander Novice
12. maj 2005 - 00:09 #3
At lave en global liste er én metode.
Hvis man altid kun har én XML og én Draw class kan man også bruge en singleton.
Hvis man kar mere end én, er Draw nødt til at vide hvilken XML instans den skal bruge.
Avatar billede arne_v Ekspert
12. maj 2005 - 07:46 #4
Hvis dine metoder er static så kan du kalde med:

DinKlasse::DinMetode(123, "abc");

Hvis dine metoder ikke er static så skal du have et objekt at kalde på:

DinKlasse *ditobjekt;
...
ditobjekt->DinMetode(123, "abc");

Hvis du altid kun har en instans af hvert klasse, så kan du overveje at kigge på singleton pattern.

http://www.eksperten.dk/artikler/36
Avatar billede c-skau Nybegynder
12. maj 2005 - 22:52 #5
Tror jeg har fundet frem til en kombination af de forskellige metoder der virker, så TAK!

Det var rart lige og hører hvilke muligheder der er.
Tror lige jeg finder min C++ bog frem igen og læser lidt mere for at komme helt ind i stoffet.

Hvis i begge lige smider et svar så synes jeg i må dele pointene :)
Avatar billede arne_v Ekspert
12. maj 2005 - 23:04 #6
svar
Avatar billede bertelbrander Novice
12. maj 2005 - 23:16 #7
Jeg samler ikke på point.
Avatar billede c-skau Nybegynder
13. maj 2005 - 00:06 #8
Så får arne_v bare dem alle, men så må du tilgengæld få et ekstra tak!
Avatar billede krismort Nybegynder
15. maj 2005 - 09:45 #9
hej c-skau:
Hvis jeg var dig så ville jeg købe en bog om UML og en bog kaldet GOF den kan fortælle dig hvordan Objekt orienteret. Du burde desunden gå til www.ogre3d.org og studerer designet i denne engine som er ganske overtruffent.
- Kristian
Avatar billede c-skau Nybegynder
16. maj 2005 - 19:15 #10
Hmm.. ved ikke lige hvorfor jeg ikke havde tænkt på case study.. tak! :)
Jeg har forresten kigget lidt på UML, men kunne ikke lige se den store fordel i det. Men det kan jo være en bog kan hjælpe på det.
Desværre er jeg bare en fattig studerede og under 18 så det er lidt begrænset hvor stor mit bogbudget er, tror evt. jeg vil da lige kigge forbi biblioteket.
Tak for hjælpen.

/C-Skau
Avatar billede arne_v Ekspert
16. maj 2005 - 19:37 #11
UML er særdeles nyttigt når man skal beskrive større systemer - det er måske ikke lige
umiddelbart relevant for den her problem stilling

GOF bogen som hedder:

Design Patterns / Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

er en fremragende bog som jeg er sikker på at du vil kunne få nytte af.

Vær dog opmærksom på at det ikke er en bog som man læser på 3 timer og så kan man
det. Det er mere en bog som man læser mange gange og lærer lidt hver gang.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester