Informatik GK 12 Klassen Seite 1 Klassen programmieren in Delphi

Informatik GK 12
Klassen
Klassen programmieren in Delphi am Beispiel der konkreten Klasse Auto
Auto
Die Klasse wird definiert mit dem eindeutigen Namen, hier Auto.
-Baujahr
Die Eigenschaften der Klasse werden benannt, dabei gibt es statische
Eigenschaften (Zustand), die sich nicht ändern und dynamische Eigenschaften (Verhalten), die sich ändern können.
-Typ
-Besitzer
-Farbe
Unter dem Zustand versteht man Attribute, wie besitzer, typ, farbe, kilometerstand.
-Kilometerstand
Der Klasse Auto können nun Instanzen angehören.
-Fahren()
Attributwerte eines Objektes können sich ändern, z.B. besitzer, farbe
-Bremsen()
Der Zustand nicht. baujahr, typ
Objekt1: Auto
Bei der Methode fahren() erhöht sich der Kilometerstand.
Typ: Golf
Baujahr: 1998
Besitzer: Peter
Farbe: rot
Kilometerstand: 12
Anwendung in Delphi
Zunächst erfolgt die Deklaration der Klasse:
type TAuto = class
private
FFarbe: string;
FBaujahr,
Fkm:integer;
procedure SetFarbe(Farbe: string);
procedure Setkm(km:integer);
public
property Farbe: string read FFarbe write SetFarbe;
property km: integer read Fkm write Setkm;
//Änderbar: km
end;
var
Form1: TForm1;
Meinauto
:TAuto;
sfarbe: set of (rot,blau,gelb,gruen);
Klassendefinition
Welche Attribute und welchen Zustand hat das Objekt
Definition der Methoden (procedure)
//Änderbar: Farbe, auch hier ist die
Methode:
SetFarbe() nötig
Deklaration der Variablen
Hier sind nur die genannten Farben
möglich.
Seite 1
Informatik GK 12
Klassen
function faerben(x:string):integer ;
Im folgenden werden alle Methoden
begin
definiert,
if x='rot' then result:=clred;
SetFarbe() weist dem Auto die Farbe
if x='blau' then result:=clblue;
zu
if x='grün' then result:=cllime;
if x='gelb' then result:=clyellow;
SetKm erhöht den Kilometerstand
end;
function ffaerben(x:string):string;
begin
with meinauto do begin
if farbe='rot' then result:='blau';
if farbe='blau' then result:='grün';
if farbe='grün' then result:='gelb';
if farbe='gelb' then result:='rot';
end;
end;
procedure TAuto.SetFarbe(Farbe: string);
begin
if (farbe='rot') or (farbe='blau') or (farbe='gruen') then
FFarbe:=Farbe;
end;
procedure Tauto.Setkm(km: integer);
begin
Fkm:=km;
form1.Kms.caption:=inttostr(km);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(meinauto.farbe);
end;
procedure TForm1.Farbe_neuClick(Sender: TObject);
begin
MeinAuto.FFarbe:=ffaerben(MeinAuto.Farbe);
Kms.Color:=faerben(MeinAuto.Farbe);
end;
procedure TForm1.BJClick(Sender: TObject);
begin
showmessage(inttostr(meinauto.FBaujahr));
end;
procedure TForm1.FahrenClick(Sender: TObject);
begin
Fahrtimer.enabled:=true;
end;
procedure TForm1.StopClick(Sender: TObject);
begin
Fahrtimer.Enabled:=false;
end;
procedure TForm1.FahrtimerTimer(Sender: TObject);
begin
meinauto.km:=meinauto.km+1;
end;
procedure TForm1.Zeige_kmClick(Sender: TObject);
begin
showmessage(inttostr(meinauto.fkm));
end;
Seite 2
Informatik GK 12
Klassen
Im Hauptprogramm wird das Auto erzeugt.
begin
MeinAuto:=TAuto.Create;
MeinAuto.FFarbe:='rot';
MeinAuto.FBaujahr:=1980;
MeinAuto.SetFarbe('rot');
MeinAuto.Farbe:='rot';
MeinAuto.Fkm:= 0;
end.
Es fehlt hier bei den Eigenschaften der Besitzer. Weisen Sie dem Objekt Auto noch einen Besitzer zu.
Sie finden das Programm unter Class_Auto.
Seite 3
Informatik GK 12
Klassen
Im zweiten Beispiel werden zehn Autos erzeugt: Ordner: Klassen2
Daher die veränderten Deklarationen:
var
Form1: TForm1;
Meinauto
:array [1..10] of TAuto;
sfarbe: set of (rot,blau,gelb,gruen);
i,n:integer;
begin
for i:=1 to 10 do begin
MeinAuto[i]:=TAuto.Create;
MeinAuto[i].FFarbe:='rot';
MeinAuto[i].FBaujahr:=1980+i;
MeinAuto[i].SetFarbe('rot');
MeinAuto[i].Farbe:='rot';
MeinAuto[i].Fkm:= 0;
end;
end.
Erläutern Sie, wie die zehn Autos erzeugt werden.
Welches Baujahr haben die Autos?
Im dritten Beispiel werden die Autos auch über das Verlassen des Programms hinweg erhalten, in
dem die Autoliste in einer Textdatei abgespeichert werden. (Klasseen3)
procedure TForm1.Neues_AutoClick(Sender: TObject);
begin
Auto_Nr:=Auto_Nr+1;
MeinAuto[Auto_Nr]:=TAuto.Create;
Hier werden die Autos erzeugt.
MeinAuto[Auto_Nr].FFarbe:='rot';
MeinAuto[Auto_Nr].FBaujahr:=1980+i;
MeinAuto[Auto_Nr].SetFarbe('rot');
MeinAuto[Auto_Nr].Farbe:='rot';
MeinAuto[Auto_Nr].Fkm:= 0;
trackbar1.max:=Auto_Nr;
end;
procedure TForm1.Auto_ListeClick(Sender: TObject);
Hier werden die Daten
begin
aus den Autos zur
AutoListe.clear;
späteren Verwendung
for i:=1 to Auto_Nr do begin
gelesen.
A:=meinauto[i].Farbe+','+inttostr(meinauto[i].fkm)+',';
AutoListe.items.add(a);
end;
end;
Seite 4
Informatik GK 12
Klassen
procedure TForm1.Speichere_AutosClick(Sender: TObject);
var
F: TextFile;
s
:string;
Hier wird die Autoliste auf
Festplatte gespeichert.
begin
AssignFile(F, 'autos.txt');
Rewrite(F);
for i:=0 to autoliste.Count-1 do begin
Writeln(F,autoliste
.items[i] );
// showmessage(autoliste
.items[i]);
end;
CloseFile(F);
end;
procedure TForm1.Hole_AutolisteClick(Sender: TObject);
var
s
:string;
F: TextFile;
Hier wird die Autoliste
von HD geholt.
begin
autoliste.clear;
{$i-}
AssignFile(F, 'auto.txt'); { File selected in dialog }
Reset(F);
repeat
Readln(F, S);
autoliste.Items.Add(s);
until eof(F);
CloseFile(F);
{$i+}
if fileexists('auto.txt')=false then showmessage('Die Datei existiert
nicht');
end;
procedure TForm1.Baue_AutosClick(Sender: TObject);
begin
{Aufgabe:
Es sollen hier Autos, in den Farben rot, gelb, blau
und grün
mit beliebigem Baujahr erzeugt werden. Die Daten werden
dabei aus der Datei Autos.txt geholt. Die alten Autos
sollen dabei
überschrieben werden. Existieren mehr alte als neue
Autos, sollen
die überzähligen gelöscht werden.
}
end;
begin
for i:=1 to 3 do begin
MeinAuto[i]:=TAuto.Create;
MeinAuto[i].FFarbe:='rot';
MeinAuto[i].FBaujahr:=1980+i;
MeinAuto[i].SetFarbe('rot');
MeinAuto[i].Farbe:='rot';
MeinAuto[i].Fkm:= 0;
end;
Auto_Nr:=i-1;
Noch nicht implementiert. Hier kann manversuchen, selbst neue Autos zu bauen mit der
Wunschfarbe aus den
vier vorhandenen usw.
Hier wird sozusagen der
Autostamm erzeugt.
Seite 5
Informatik GK 12
Klassen
end.
Seite 6