![]() |
Unterschied in Klassenaufbau?
Guten Abend!
Ich habe mir eine Klasse bisher folgendermaßen erstellt:
Delphi-Quellcode:
Somit konnte ich auf aVar und aVar2 zugreifen und sie verändern. Nun bin ich aber auf folgendes gestoßen:
TTest = class(TObject)
Port: Integer; Max: Integer; end;
Delphi-Quellcode:
Das ganze sieht zwar etwas professioneller aus, doch habe ich bisher noch keinen Unterscheid in der Verwendung feststellen können. Deswegen meine Frage: Wo genau liegt der Untescheid in der Verwendung?
TTest = class(TObject)
private FPort: Integer; Fmax: Integer; public property Port: Integer read FPort write FPort; property Max: Integer read FMax write FMax; end; Wäre sehr dankbar für etwas Hilfe. :) Vielen Dank, Lennard |
Re: Unterschied in Klassenaufbau?
Hi,
wie du sagst, erst mal keiner. Der Unterschied kommt erst, wenn du etwas mehr machst. Ein Beispiel ist das hier:
Delphi-Quellcode:
eine öffentliche Klasseneigenschaft, die man nur lesen kann.
TTest = class(TObject)
private FPort: Integer; Fmax: Integer; public property Port: Integer read FPort; property Max: Integer read FMax; end; Oder so:
Delphi-Quellcode:
Und dann ist es noch ein guter Stil.
TTest = class(TObject)
private FPort: Integer; Fmax: Integer; procedure SetPort(Value : Integer); public property Port: Integer read FPort write SetPort; property Max: Integer read FMax; end; ..... procedure TTest.SetPort(Value : Integer); begin IF Value < 1 then FPort := 1 else FPort := Value; end; Gruß oki |
Re: Unterschied in Klassenaufbau?
Bei deinem Beispiel sieht man den Unterschied nicht direkt, wenn man aber eine kleine Erweiterung durchfüht schon:
Delphi-Quellcode:
TTest = class(TObject)
private FPort: Integer; Fmax: Integer; public procedure setPort( Value: Integer); published property Port: Integer read FPort write setPort; property Max: Integer read FMax write FMax; end; procedure TTest.setPort( Value: Integer); begin if Value > 0 then FPort := Value; end; |
Re: Unterschied in Klassenaufbau?
Ach so, nun ist mir die Sache klar geworden. :wink: Danke für die schnelle Hilfe!!
Lennard |
Re: Unterschied in Klassenaufbau?
An sich gehört es zum guten Stil nie direkt auf Varibeln zuzugreifen.
In Delphi wird das meißtens über "propertys" gelöst. Allerdings kann man es auch anders machen (so wird es in Java z.B. umgesetzt...):
Delphi-Quellcode:
private
myVar : Integer; myBool : Boolean; public procedure setMyVar(Value : Integer); function getMyVar : Integer; procedure setMyBool(Value : Boolean); // Diese Schreibweise ist mir nur aus Java bekannt und auch nur für Booleans function isMyBool : Boolean; end; |
Re: Unterschied in Klassenaufbau?
Für Integer welche jeden Wert annehmen können mag der Property überzogen sein, aber sobald es um Member-Klassen ober Bereichstypen oder Eigenschaften geht welche andere Aktionen erfordern brauchst Du Properties mit Get/Set-Methoden.
Ach ja: Und ohne Published-Properties wäres mit der graphischen Konfiguration von Formularen auch nicht sehr weit her. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:36 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