AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Vererbung und Polymorphie

Ein Thema von StepByStep · begonnen am 18. Dez 2014 · letzter Beitrag vom 19. Dez 2014
 
StepByStep

Registriert seit: 12. Nov 2014
Ort: Schleswig-Holstein
61 Beiträge
 
Delphi 7 Professional
 
#7

AW: Vererbung und Polymorphie

  Alt 18. Dez 2014, 12:25
Mahlzeit ,

danke für die Antworten. Die Lösung für mein erstes Problem, was DeddyH geschrieben hat, wende ich jetzt auch an, nur habe ich kleine Schwierigkeiten.
Ich habe das ganze mal an einem Beispiel ausprobiert.

Delphi-Quellcode:
unit Schach;

interface

uses
  system.generics.collections,
  Dialogs,
  system.sysutils;

type
  TSchachfigur = class
    Reichweite: integer;
    procedure setreichweite();
    function InString(): string; virtual;
  end;

type
  TSchachBauer = class(TSchachfigur)
    Form: string;
    procedure setform();
    function InString(): string; override;
  end;

type
  TSchachSpringer = class(TSchachfigur)
    Position: integer;
    procedure setposition();
    function InString(): string; override;
  end;

type
  Tschachspiel = class
    fschachfiguren: Tobjectlist<TSchachfigur>;
    constructor create;
  end;

implementation

function TSchachbauer.InString: string;
begin
  result := Form;
end;

procedure TSchachBauer.setform;
begin
  Form := 'kantig';
end;

constructor Tschachspiel.create;
var
  I: integer;
  temp: TSchachfigur;
begin
  fschachfiguren := Tobjectlist<TSchachfigur>.create;

  temp := TSchachBauer.create;
  fschachfiguren.add(temp);

  temp := TSchachSpringer.create;
  fschachfiguren.add(temp);

  for I := 0 to fschachfiguren.Count - 1 do
  begin
    showmessage(fschachfiguren[I].InString);
  end;

end;

function TSchachSpringer.InString: string;
begin
  result := IntToStr(Position);
end;

procedure TSchachSpringer.setposition;
begin
  Position := 1;
end;

function TSchachfigur.InString: string;
begin
  result := IntToStr(Reichweite);
end;

procedure TSchachfigur.setreichweite;
begin
  Reichweite := 7;
end;

end.
Ich habe versucht das ganze anhand eines Schachspieles zu probieren, bevor ich mir mein eigentliches Programm ganz zerlege.
Aber ich bekomme in der Messagebox einmal nichts und dann einmal "0". Woran liegt das?
So wie das Programm aufgebaut ist, ist auch mein eigentliches Programm.

Gruß
Jan

Edit: Ich konnte das Problem gerade eben selber lösen, indem ich nicht den Umweg über die Set-Procedure gemacht habe. Aber wie geht das mit dieser?
UND bei der Ausgabe wird nicht der Wert von Schachfigur ausgegeben. Wie bekomme ich es hin, dass dieser dann auch ausgegeben wird?
Jan

Geändert von StepByStep (18. Dez 2014 um 12:39 Uhr)
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz