#1 4. Februar 2008 Array in abstrakter Klasse Hey hey, also ich habe folgendes Problem, ich soll / will für die Schule ein ganz kleines 3D-Programm erstellen, vorrangig um den mathematischen Hintergrund anschaulicher zu gestalten. Jetzt habe ich aber auch schon das erstere kleinere Problem: Also ich hab mir das so gedacht, dass ich eine Elternklasse (TGeo) habe und aus der dann verschiedene geometrische Körper ableite. In TGeo will ich dann schon die Methoden Rotate Scale Translate implementieren, da die ja bei allen Körpern gleich sind. Dabei greif ich allerdings auf die Punkte des Körpers zu. Da aber jeder Körper aus unterschiedlich vielen Punkten bestehen kann, muss ich die in TGeo variabel gestalten. In den später abgeleiteten Klassen werde ich die Menge der Punkte dann statisch festlegen. Meine Frage ist also nun, wie muss der Platzhalter für die Punkte in der Elternklasse aussehen? Reicht es da einfach Code: Points: Array of TCord zu schreiben und in den abgeleiteten dann irgendwie Code: Points: Array [0..5] of TCord oder so ähnlich? Ich weiß Anfängerfrage... Und bitte keine Flames in Richtung "Das ist zu schwer für dich" o.ä. Ich MUSS es machen. [= Vielen Dank im Vorraus. + Multi-Zitat Zitieren
#2 4. Februar 2008 AW: Array in abstrakter Klasse Man kann eine Variable nicht neudefinieren/überschrieben bzw diese Werden in der Vorgängerklasse nicht erkannt; jedenfalls weiß ich nichts davon und hab auch im I-Net nichts dazu gefunden. Man kann nur functionen/procedure überschreiben bzw. überladen... Zu deinem Problem: Du kannst doch einfach im constructor der Kinderklasse einfach dynamisch der in der Elternklasse definiertem Array eine dynamische Länge festlegen. Ein Beispiel: Code: TGeo = [B]class [/B][COLOR="SeaGreen"]//Elternklasse[/COLOR] [B]private[/B] fPoints: [B]array of[/B] DWORD; [B]public[/B] [B]function [/B]GetLength:DWORD; [B]end[/B]; TWurfel = [B]class[/B](TGeo) [COLOR="SeaGreen"]//Kinderklasse[/COLOR] [B]public[/B] [B]constructor [/B]Create; [B]end[/B]; [...] [B]function [/B]TGeo.GetLength:DWORD; [B]begin[/B] Result := Length(fPoints); [B]end[/B]; [B]constructor [/B]TWurfel.Create; [B]begin[/B] SetLength(fPoints, 8); [COLOR="SeaGreen"]// Dynamisch die Länge des Arrays festleggen // Bei weiteren ableitungen einfach den construcot überschreiben // Eventuel die Punkte noch mit Werten initialisieren[/COLOR] [B]end[/B]; Mfg Rushh0ur + Multi-Zitat Zitieren
#3 4. Februar 2008 AW: Array in abstrakter Klasse Ahhh ja klar, hät ich auch selbst drauf kommen können. x] Vielen Dank, ich lass erst mal noch offen, vielleicht kommt noch irgend eine andere Idee. + Multi-Zitat Zitieren