AGB  ·  Datenschutz  ·  Impressum  







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

Unterschied in Klassenaufbau?

Ein Thema von Gentleman · begonnen am 25. Okt 2006 · letzter Beitrag vom 25. Okt 2006
Antwort Antwort
Gentleman

Registriert seit: 29. Sep 2004
302 Beiträge
 
Turbo Delphi für Win32
 
#1

Unterschied in Klassenaufbau?

  Alt 25. Okt 2006, 18:40
Guten Abend!

Ich habe mir eine Klasse bisher folgendermaßen erstellt:
Delphi-Quellcode:
TTest = class(TObject)
  Port: Integer;
  Max: Integer;
end;
Somit konnte ich auf aVar und aVar2 zugreifen und sie verändern. Nun bin ich aber auf folgendes gestoßen:
Delphi-Quellcode:
TTest = class(TObject)
private
  FPort: Integer;
  Fmax: Integer;
public
  property Port: Integer read FPort write FPort;
  property Max: Integer read FMax write FMax;
end;
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?


Wäre sehr dankbar für etwas Hilfe.

Vielen Dank,
Lennard
Lennard
Der Vorteil der Klugheit besteht darin, dass man sich dumm stellen kann. Das Gegenteil ist schon schwieriger. (Kurt Tucholsky)
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Unterschied in Klassenaufbau?

  Alt 25. Okt 2006, 18:49
Hi,

wie du sagst, erst mal keiner. Der Unterschied kommt erst, wenn du etwas mehr machst.
Ein Beispiel ist das hier:
Delphi-Quellcode:
TTest = class(TObject)
private
  FPort: Integer;
  Fmax: Integer;
public
  property Port: Integer read FPort;
  property Max: Integer read FMax;
end;
eine öffentliche Klasseneigenschaft, die man nur lesen kann.
Oder so:
Delphi-Quellcode:
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;
Und dann ist es noch ein guter Stil.

Gruß oki
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Unterschied in Klassenaufbau?

  Alt 25. Okt 2006, 18:51
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;
Markus Kinzler
  Mit Zitat antworten Zitat
Gentleman

Registriert seit: 29. Sep 2004
302 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Unterschied in Klassenaufbau?

  Alt 25. Okt 2006, 18:56
Ach so, nun ist mir die Sache klar geworden. Danke für die schnelle Hilfe!!

Lennard
Lennard
Der Vorteil der Klugheit besteht darin, dass man sich dumm stellen kann. Das Gegenteil ist schon schwieriger. (Kurt Tucholsky)
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Unterschied in Klassenaufbau?

  Alt 25. Okt 2006, 20:42
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;
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Unterschied in Klassenaufbau?

  Alt 25. Okt 2006, 21:38
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:38 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