AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Sinn, Nutzen und Einsatzmöglichkeit von abstrakten Klassen
Thema durchsuchen
Ansicht
Themen-Optionen

Sinn, Nutzen und Einsatzmöglichkeit von abstrakten Klassen

Ein Thema von Luckie · begonnen am 1. Okt 2008 · letzter Beitrag vom 2. Okt 2008
 
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#21

Re: Sinn, Nutzen und Einsatzmöglichkeit von abstrakten Klass

  Alt 1. Okt 2008, 16:57
Zitat von Luckie:
Zitat von p80286:
Ich denke man könnte die abstrakte Klasse als Prototypen bezeichnen.
Ich galube, das ist eine gute Zusammenfassung.
Du kannst eine abstrakte Funtkion aber auch als "forward"-Definition ansehen.

Du hast eine Klasse TKörper, in dieser Klasse kannst Du das Gewicht berechnen in dem Du das Volumen mit dem spezifischem Gewicht des Körpers multipizierst. (Vorausgesetzt alle Körper bestehen nur aus einem Material). Der Körper weiß aber nicht wie sein Volumen berechnet wird. Ein TWürfel und eine TKugel unterscheiden sich in der Volumenberechnung.

Ich hoffe es wird Dir in folgendem Beispiel klar.

Ein anderes gutes Beispiel findest du auf Deiner Festplatte im Delphi Demos Ordner (ThreadDemo).

[edit]
Nachtrag:
Beim Kompilieren gibt es "nur" eine Warnung wenn Du abstrakte Methoden nicht implementierst.
Du kannst eine TKoerper erzeugen aber wenn Du berechneGewicht aufrufst, bekommst du beim berechneVolumen Aufruf eine EAbstractError-Exception.
[/edit]

Beispiel:
Delphi-Quellcode:
unit Unit2;

interface

type
  TKoerper = class
  private
    FspezifischesGewicht: Integer;
  public
    function berechneVolumen: Integer; virtual; abstract;
    function berechneGewicht: Integer;
    property spezifischesGewicht: Integer read FspezifischesGewicht write FspezifischesGewicht;
  end;

  TWuerfel = class(TKoerper)
  private
    FLaenge: Integer;
  public
    property Laenge: Integer read FLaenge write FLaenge;
    function berechneVolumen: Integer; override;
  end;

implementation

{ TKoerper }

function TKoerper.berechneGewicht: Integer;
begin
  Result := berechneVolumen * FspezifischesGewicht;
end;


{ TWuerfel }

function TWuerfel.berechneVolumen: Integer;
begin
  Result := FLaenge * FLaenge * FLaenge;
end;

end.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  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 14:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz