Einzelnen Beitrag anzeigen

MarioM.

Registriert seit: 29. Mai 2006
52 Beiträge
 
#4

AW: Klassenstruktur / Basisklasse -> Kindklassen => gleiche Datenbasis

  Alt 26. Jul 2012, 07:49
Hallo, und danke für Eure ausführlichen Beispiele.

Ich habe das Ganze nun so implementiert; und es funktioniert

Delphi-Quellcode:
Unit Unit1;

Interface

Uses
   SysUtils;

Type

   TTestArray = Array Of String;

   TDatenklasse = Class
   private
      FWert1: String;
      FWert2: String;
      FWert3: Integer;
      FWert4: TTestArray;
   End;

   TAufgabeBasis = Class
   private
      FDatenklasse: TDatenklasse;

      Function GetWert1: String;
      Function GetWert2: String;
      Function GetWert3: Integer;
      Procedure SetWert1(Const Value: String);
      Procedure SetWert2(Const Value: String);
      Procedure SetWert3(Const Value: Integer);
      Function GertWert4: TTestArray;
   protected
      Property Wert1: String read GetWert1 write SetWert1;
      Property Wert2: String read GetWert2 write SetWert2;
      Property Wert3: Integer read GetWert3 write SetWert3;
      Property Wert4: TTestArray read GertWert4;

      Procedure AddToWert4(Value: String); virtual;
   public
      Constructor Create;
   End;

   TAufgabe1 = Class(TAufgabeBasis)
   public
      Property Wert1;
      Property Wert2;

      Procedure AddToWert4(Value: String); override;
   End;

   TAufgabe2 = Class(TAufgabeBasis)
   public
      Property Wert2;
      Property Wert3;

      Procedure AddToWert4(Value: String); override;
   End;

Var
   GDatenklasse: TDatenklasse;

Implementation

{ TAufgabeBasis }

// ********************************************************************

Procedure TAufgabeBasis.AddToWert4(Value: String);
Begin
   SetLength(FDatenklasse.FWert4, Length(FDatenklasse.FWert4) + 1);
   FDatenklasse.FWert4[Length(FDatenklasse.FWert4) - 1] := Value;
End;

// ********************************************************************

Constructor TAufgabeBasis.Create;
Begin
   FDatenklasse := GDatenklasse;
End;

// ********************************************************************

Function TAufgabeBasis.GertWert4: TTestArray;
Begin
   Result := FDatenklasse.FWert4;
End;

// ********************************************************************

Function TAufgabeBasis.GetWert1: String;
Begin
   Result := FDatenklasse.FWert1;
End;

// ********************************************************************

Function TAufgabeBasis.GetWert2: String;
Begin
   Result := FDatenklasse.FWert2;
End;

// ********************************************************************

Function TAufgabeBasis.GetWert3: Integer;
Begin
   Result := FDatenklasse.FWert3;
End;

// ********************************************************************

Procedure TAufgabeBasis.SetWert1(Const Value: String);
Begin
   FDatenklasse.FWert1 := Value;
End;

// ********************************************************************

Procedure TAufgabeBasis.SetWert2(Const Value: String);
Begin
   FDatenklasse.FWert2 := Value;
End;

// ********************************************************************

Procedure TAufgabeBasis.SetWert3(Const Value: Integer);
Begin
   FDatenklasse.FWert3 := Value;
End;

// ********************************************************************

{ TAufgabe2 }

Procedure TAufgabe2.AddToWert4(Value: String);
Begin
   Inherited;
End;

// ********************************************************************

{ TAufgabe1 }

Procedure TAufgabe1.AddToWert4(Value: String);
Begin
   Inherited;
End;

// ********************************************************************

Initialization
   GDatenklasse := TDatenklasse.Create;

Finalization
   FreeAndNil(GDatenklasse);

End.
Delphi-Quellcode:
Unit Unit2;

Interface

Uses
   Windows,
   Messages,
   SysUtils,
   Variants,
   Classes,
   Graphics,
   Controls,
   Forms,
   Dialogs,
   Unit1;

Type
   TForm2 = Class(TForm)
      Procedure FormCreate(Sender: TObject);
   private
      FAufgabe1: TAufgabe1;
      FAufgabe2: TAufgabe2;
   End;

Var
   Form2: TForm2;

Implementation

{$R *.dfm}

Procedure TForm2.FormCreate(Sender: TObject);
Begin
   FAufgabe1 := TAufgabe1.Create;
   FAufgabe2 := TAufgabe2.Create;

   FAufgabe1.Wert1 := 'Wert1 aus Aufgabe 1';
   FAufgabe1.Wert2 := 'Wert2 aus Aufgabe 1';
   FAufgabe1.AddToWert4('Wert 4 aus Aufgabe 1');

   FAufgabe2.Wert2 := 'Wert2 aus Aufgabe 2';
   FAufgabe2.Wert3 := 3;
   FAufgabe2.AddToWert4('Wert 4 aus Aufgabe 2');
End;

// ********************************************************************

End.
  Mit Zitat antworten Zitat