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
© Copyright 2024 ExpyDoc