![]() |
Class -->Error
Hallo!
Ich probiere mich gerade an Klassen aus und bin auf ein von mir unlößbares Problem gestoßen. Hier erstmal mein bisheriger Code:
Delphi-Quellcode:
jestz bekomme ich wenn ich auf Button1 Klicke eine meldung:
unit Unit1;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 =class; TTier = class private pArt:string; pAlter:integer; pGeschlecht:string; pKrankheit:string; public constructor Create(Krankheit:string; Geschlecht:string; Art:string); published property getTierart:string read pArt; property getAlter:integer read pAlter; property getGechlecht: string read pGeschlecht; property getKrankheit:string read pKrankheit; end; TForm1 = class(TForm) Button1: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { private declarations } public { public declarations } Tier:TTier; end; var Form1: TForm1; implementation { TForm1 } constructor TTier.Create(Krankheit:string; Geschlecht:string; Art:string); begin pAlter:=0; pGeschlecht:=Geschlecht; pArt:=Art; pKrankheit:=Krankheit; end; procedure TForm1.FormCreate(Sender: TObject); begin Tier.Create('Gesund','Weiblich','Katze'); end; procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption:=Tier.pKrankheit; Label2.Caption:=Tier.pArt; Label3.Caption:=Tier.pGeschlecht; Label4.Caption:=inttostr(Tier.pAlter); end; initialization {$I unit1.lrs} end. Zitat:
gruß Teekeks |
Re: Class -->Error
Zitat:
|
Re: Class -->Error
Hi,
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin Tier := tTier.Create('Gesund','Weiblich','Katze'); end; |
Re: Class -->Error
ah. Danke!
|
Re: Class -->Error
Genauso heißt es aber auch nicht
Delphi-Quellcode:
sondern, da pKrankheit ein private-Attribut deiner Klasse ist, die du über deine property getKrankheit:string read pKrankheit; publishst (diese eingedeutschten Wörter :-\)
Label1.Caption:=Tier.pKrankheit;
Delphi-Quellcode:
Label1.Caption := Tier.getKrankheit;
|
Re: Class -->Error
Im Normalfall macht man das ja auch so:
Delphi-Quellcode:
Wobei man statt pArt dann FArt etc. schreiben würde.
TTier = class
private pArt:string; pAlter:integer; pGeschlecht:string; pKrankheit:string; function getTierart: string; function getAlter: integer; function getGechlecht: string; function getKrankheit: string; public constructor Create(Krankheit:string; Geschlecht:string; Art:string); published property Tierart:string read getTierart; property Alter:integer read getAlter; property Gechlecht: string read getGeschlecht; property Krankheit:string read getKrankheit; end; ... function TTier.getTierart: string; begin Result := pArt; end; //usw. für die anderen Properties |
Re: Class -->Error
Zitat:
@deddyH: Ich hab das jetzt so gelößt:
Delphi-Quellcode:
geht das so oder verstößt das total gegen die Programmierer-Ehtik? :-D
TTier = class
private procedure sAlter(NeuesAlter:integer); protected pArt:string; pAlter:integer; pGeschlecht:string; pKrankheit:string; public constructor Create(Krankheit:string; Geschlecht:string; Art:string); destructor Destroy; published property getTierart:string read pArt; property getAlter:integer read pAlter; property getGeschlecht: string read pGeschlecht; property getKrankheit:string read pKrankheit; property setAlter:integer write sAlter; property setKrankheit: string write pKrankheit; property setGeschlecht: string write pGeschlecht; property setTierart: string write pArt; end; gruß Teekeks |
Re: Class -->Error
Getter und Setter sind in der Regel Funktionen und Prozeduren, auf die über Properties zugegriffen wird und in denen die Verarbeitung der Attribute gezielt geregelt wird.
|
Re: Class -->Error
Zitat:
|
Re: Class -->Error
Das ist so nicht im Sinne der OOP. Du hast eine Property (z.B. Name), welche über einen sog. Getter (z.B. GetName) ausgelesen und einen sog. Setter (z.B. SetName) gesetzt wird. Den Getter kannst Du meist auch weglassen und gleich den Feldinhalt zurückgeben, aber ein Setter kann zur Überprüfung ganz nützlich sein.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:16 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