[Delphi] Array in abstrakter Klasse

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von zYco, 4. Februar 2008 .

Schlagworte:
  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.
     
  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
     
  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.
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.