klassen visualisieren
-
nein eigentlich möchte ich die klassen darstellen (sprich zeichnen mit TPaintBox->Canvas->Pen etc.) mein frage ist wie soll ich das sinnvoll machen damit die daten und visualisierung getrennt ist. muss ich die methoden welche auf das gui zeichnen ins form nehmen und dann von den datenklassen (sprich kugel, balken etc) diese methoden vom form aufrufen, welche sich dann via getMethoden von kugel,balken usw. daten besorgen?
mir ist nicht klar wie man eine gute trennung von design und daten hinbekommt
THX and bye
-
Wenn ich dirch jetzt richtig verstanden habe dann solltest du dich wohl mal zum MVC-Prinzip (Model View Controller) belesen oder ggf. auch zu Document/View.
-
hat jemand ein beispiel zu MVC im C++ Builder? ich konnte leider nichts finden. danke schon im voraus.
gruss
-
MVC ist quasi ein Superset von Document View (Siehe Jansens link)... Ausserdem würde ich dir mal raten, Google mittels den Stichworten "MVC Modell" zu befragen...
-junix
-
im google habe ich schon gesucht, konnte aber wie gesagt kein beispiel zu mvc mit builder finden. leider ist es für mich schwierig das document/view modell auf mvc umzuschreiben, da die sache neu für mich ist. was das MVC ist, habe ich auf diversen websites gelesen.aber ich möchte, sofern es das gibt,ein lauffähiges beispielprogramm für den builder sehen.damit ich die ganze sache an einem beispiel nachvollziehen kann. hoffe ich gehe niemandem auf die nerven mit meiner fragerei.
danke
-
Fragen deutet doch schonmal darauf hin, das man sich gedanken macht (o; Der Umbau von Doc/View nach MVC sollte eigentlich nciht wirklich schwierig sein. Hast dud ich denn schon in Doc/View eingearbeitet?
Beim Doc/View ist der controller mehr oder weniger im View eingebettet... Möchtest du den aus dem View entfernen, erscheint mir ein eigener Thread als adäquat, denn der Controller muss ja zu einem gewissen Grad selbstständig sein...-junix
-
vielen dank für deine hilfsbereitschaft junix. ja im Doc/View habe ich mich schon eingearbeitet und dein tutorial studiert.es hat mich einiges weitergebracht. nun wie beschrieben, habe ich nun das problem das ich ein spiel programmieren muss, das mehrere verschiedene objekte hat (verschieden models nehme ich an). diese klassen haben alle eigenschaften wie position und so weiter. wenn sich nun diese daten ändern muss das ja ein update aller registrierten views und controller zur folge haben. hat quasi jedes dieser objekt eine eigene view um sich darzustellen? bei deinem beispiel doc/view gab es ja eine view pro formular. bei mir müsste ja jedes dieser spielobjekte eine view haben. ist das richtig oder bin ich total auf dem holzweg?
-
Du bist so auf dem Holzweg, dass man meinen könnte du seist Schreiner (o;
Eigentlich ist - gemäss deiner Beschreibung - genau das Doc/View was du brauchst. Den Controller würdest du höchstens brauchen, wenn die einzelnen Elemente keine "Think"-Funktion haben die zyklisch aufgerufen wird sondern vollkommen selbstständig reagieren muss. (Zumindest gemäss meinen verständnis des MVC)... Das View wäre in deinem Fall das Spielfeld welches in der Update-Funktion jeweils alle im Document verankerten Spielfiguren zeichnet...
-junix
-
jetzt habe ich überhaupt keine ahnung mehr.du hast gesagt,
Das View wäre in deinem Fall das Spielfeld
ist denn das spielfeld nicht auch ein document? schliesslich hat doch das spielfeld auch daten wie höhe,breite usw. hast du das so gemeint?
[b]spielfeld[/b] : public TView { __published: // IDE-managed Components TMemo *Content_TMp; TMainMenu *Menu_TMMp; TMenuItem *Datei1; TMenuItem *ffnen1; TMenuItem *Speichernunter1; TMenuItem *N1; TMenuItem *Beenden1; TMenuItem *N2; TMenuItem *About1; TOpenDialog *Open_TODp; TSaveDialog *Save_TSDp; TMenuItem *Ansicht1; TMenuItem *DokumentEigenschaften1; void __fastcall Beenden1Click(TObject *Sender); void __fastcall About1Click(TObject *Sender); void __fastcall ffnen1Click(TObject *Sender); void __fastcall Speichernunter1Click(TObject *Sender); void __fastcall Content_TMpChange(TObject *Sender); void __fastcall DokumentEigenschaften1Click(TObject *Sender); void __fastcall FormShow(TObject *Sender); void __fastcall FormHide(TObject *Sender); private: // User declarations public: // User declarations __fastcall TMain_TFp(TComponent* Owner); virtual __fastcall ~TMain_TFp(); virtual void __fastcall UpdateData(TDocument *Sender_TDp); };bitte hilf mir auf die sprünge, ich verstehe das einfach nicht
-
Das View ist das visualisierte Spielfeld. Das Document enthält die Daten im Spielfeld. Das sind aber nur - für menschen nichtssagende - Vektoren, Koordinaten, Bilddaten, etc...
-junix