Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Abstract (https://www.delphipraxis.net/59562-abstract.html)

simonko 24. Dez 2005 12:45


Abstract
 
Ich muss eine Klasse TGeomFigur erstellen die dann als nachfolger Tquadrat und Tdreieck haben wird.
Ich hab folgendes programmiert.

Delphi-Quellcode:
TGeomFigur = class(TObject)
  protected
    function GetUmfang : real; virtual; abstract;
    function GetFlaeche : real; virtual; abstract;
  public
    property Umfang : real read GetUmfang;
    property Flaeche : real read GetFlaeche;
  end;
nun zu meiner frage. soll ich die propertys auch unter protected geben? weil sonst könnte ja jemand zugreifen und da gibts nen fehler. oder?

Dax 24. Dez 2005 12:49

Re: Abstract
 
Regel 1: Nie Objekte mit abstrakten Methoden instanziieren! :mrgreen:

Da du TGeomFigur als Basisklasse nutzt (mit abstrakten Methoden), kannst du die Properties gerne unter public lassen. Aber nur unter einer Bedingung: nie TGeomFigur direkt instanziieren, sondern nur Nachfahren.

simonko 24. Dez 2005 12:51

Re: Abstract
 
dann kann ich ja alles unter public geben wenn ich es sowieso nie instanziere?

Dax 24. Dez 2005 12:52

Re: Abstract
 
Das zu tun steht dir natürlich frei, aber wenn du bereits eine ReadOnly-Property hast, warum willst du dann noch den Getter zeigen?

simonko 24. Dez 2005 12:59

Re: Abstract
 
ich bin ein bisschen verwirrt. wenn ich es jetzt als protected hab kommt es dann in der abgeleiteten klasse als private oder public?

Dax 24. Dez 2005 13:13

Re: Abstract
 
In einer abgeleiteten Klasse kommt das dann auch unter protected, du kannst es aber nach Public schieben. Nach private geht auf keinen Fall, die Sichtbarkeit von etwas zu verringern wäre Unsinn...

simonko 24. Dez 2005 13:16

Re: Abstract
 
wie kann ich das nach public schieben?

BlackJack 24. Dez 2005 13:18

Re: Abstract
 
indem du die entsprechende funktion überschreibst und das ganze im public-teil machst.

jim_raynor 24. Dez 2005 15:05

Re: Abstract
 
Delphi-Quellcode:
TGeomFigur = class(TObject)
  protected
    function GetUmfang : real; virtual; abstract;
    function GetFlaeche : real; virtual; abstract;
    property Umfang : real read GetUmfang;
    property Flaeche : real read GetFlaeche;
  end;

TRechteck = class(TGeomFigur)
protected
    function GetUmfang : real; override;
    function GetFlaeche : real; override;
public
  property Umfang: real;
end;
müsste klappen zum verschieben der Sichtbarkeit ;)

Jelly 24. Dez 2005 16:24

Re: Abstract
 
Zitat:

Zitat von jim_raynor
müsste klappen zum verschieben der Sichtbarkeit ;)

Oder noch schneller, da Umfang ja schon in der Basisklasse bekannt ist:

Delphi-Quellcode:
TRechteck = class(TGeomFigur)
protected
    function GetUmfang : real; override;
    function GetFlaeche : real; override;
public
  property Umfang;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr.
Seite 1 von 2  1 2      

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