Einzelnen Beitrag anzeigen

Trax

Registriert seit: 5. Jan 2003
29 Beiträge
 
Delphi 6 Personal
 
#1

OOP - Fragen zu Informatik Hausaufgaben

  Alt 5. Jan 2003, 17:13
Hallo Leute,
ich haben ein paar Fragen/Probleme mit einer Informatik Hausaufgabe, die auch bedeutend für die nächste Klausur sein wird. Und zwar habe ich von meinem info lehrer 2 aufgaben (Programme) zum thema OOP bekommen:

Zum ersten Programm soll ich schriftlich die wichtigsten sachen im programm erklären. Ich könnte zwar größtenteils durch den sourcecode gehen und die sachen nach und nach versuchen zu erklären, jedoch befürchte ich, dass ich die wichtigsten sachen nicht gut genug erkläre, oder sogar übersehe. Wäre echt super nett, wenn mir hier jemand sagen könnte, worauf ich den focus legen muß. Was muß ich gründlich erklären, was darf ich nicht vergessen?

Hab heute mal ein bischen im Forum gelesen. Da waren so viele nette und hilfsbereite leute, ich hoffe ihr lasst mich nicht hängen. Hab bis donnerstag zeit für meine arbeit. ist sehr wichtig für mich!!

Vielen Dank


Nun aber genug gebettelt, hier der Source:

Delphi-Quellcode:
unit Unit1; // stellt die Rennstrecke und die Cockpits zur Verfügung

interface
//Types,.. weggelassen

var
  Form1: TForm1;

implementation

uses Auto; // Einbinden der TAuto-Unit

{$R *.DFM}

var Auto1, Auto2, Auto3: TAuto; // drei Auto-Objekte deklarieren
    xb: Integer; // außerhalb des Sichtbereihs licegender Streckenabschnitt

procedure TForm1.FormCreate(Sender: TObject);
begin
 Auto1 := TAuto.Create; // rotes Auto-Objekt erzeugen (Instanz von TAuto)
 with Auto1 do
 begin
  x := Shape1.Left -100; y := 10; farbe := clRed
 end;

 Auto2 := TAuto.Create; // blaues Auto-Objekt erzeugen (Instanz von TAuto)
 with Auto2 do
 begin
  x := Shape1.Left -100; y := 110; farbe := clBlue
 end;

 Auto3 := TAuto.Create; // grünes Auto-Objekt erzeugen (Instanz von TAuto)
 with Auto3 do
 begin
  x := Shape1.Left -100; y := 210; farbe := clGreen
 end;
  Form1.Canvas.Brush.Style := bsClear // Füllmuster ist transparent
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 Auto1.Gasgeben(0.5)
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Auto1.Bremsen(1)
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
 Auto2.Gasgeben(1.8)
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 Auto2.Bremsen(1.5)
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
 Auto3.Gasgeben(5)
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
 Auto3.Bremsen(4)
end;

procedure anzeigen(auto:TAuto); // Anzeigeroutine für ein TAuto-Objekt
 begin
   auto.Zeichnen(Form1.Canvas, Form1.Color); // alte Position mit Hintergrundfarbe löschen
   auto.x := auto.x + Trunc(auto.va); // Verschieben der x-Position
   If auto.x >= Form1.ClientWidth then auto.x := -xb; // Rand erreicht => zurücksetzen
   auto.Zeichnen(Form1.Canvas, auto.farbe) // an neuer Position zeichnen
 end;

procedure TForm1.Timer1Timer(Sender: TObject); // periodisches Anzeigen
begin
 anzeigen(auto1);
 anzeigen(auto2);
 anzeigen(auto3)
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Auto1.Free;
 Auto2.Free;
 Auto3.Free
end;

procedure TForm1.FormResize(Sender: TObject);
begin
 xb := 3 * Form1.ClientWidth; // Fensterbreite hat sich geändert
 Timer1Timer(Self) // Aufruf von TForm1.Timer1Timer
end;

procedure TForm1.Button7Click(Sender: TObject); // Beenden
begin
 Form1.Close
end;


end.


Hier ist die Unit Auto




Delphi-Quellcode:
unit Auto; // stellt die TAuto-Klasse zur Verfügung

interface
uses Graphics;

  type TAuto = class(TObject) // Klassendeklaration von TAuto
   // Eigenschaften:
   x:Integer; // x - Position
   y: Integer; // y - Position
   va: Single; // aktuelle Geschwindigkeit
   farbe: LongInt; // Lackierung
   // Methoden:
   procedure Gasgeben(dv:Single); // erhöht va um dv
   procedure Bremsen(dv:Single); // verringert va um dv
   procedure Zeichnen(canv:TCanvas; colr: LongInt); // zeichnet Auto auf Canvas in Farbe colr

  end;

 implementation

  // ------------ Methoden implementieren:

 procedure TAuto.Gasgeben(dv:Single);
 begin
  va := va + dv;
  if va > 100 then va := 100 // Geschwindigkeitsbegrenzung
 end;

 procedure TAuto.Bremsen(dv:Single);
 begin
  va := va - dv;
  if va <= 0 then va := 0 // Rückwärtsrollen verhindern
 end;

 procedure TAuto.Zeichnen(canv:TCanvas; colr: LongInt);
  begin
   with canv do begin
    Pen.Color := colr; // Stiftfarbe zuweisen
    Rectangle(x+10, y+5, x+30, y+20); // linkes Hinterrad
    Rectangle(x+10,y+70,x+30,y+85); // rechtes Hinterrad
    Rectangle(x+80,y+10,x+100,y+20); // linkes Vorderrad
    Rectangle(x+80,y+70,x+100,y+80); // rechtes Vorderrad
    MoveTo(x+20, y+20); LineTo(x+20,y+30); // linke Hinterachse
    MoveTo(x+20, y+60); LineTo(x+20,y+70); // rechte Hinterachse
    MoveTo(x+90, y+20); LineTo(x+90,y+35); // linke Vorderachse
    MoveTo(x+90, y+55); LineTo(x+90,y+70); // rechte Vorderachse
    MoveTo(x, y+30); LineTo(x+70,y+30); // linke Karosserieseite
    LineTo(x+110, y+40); LineTo(x+110,y+50);
    LineTo(x+70, y+60); LineTo(x,y+60); // rechte Karosserieseite
    LineTo(x,y+30);
    Ellipse(x+45,y+35,x+65,y+55) // Cockpit
   end
  end;

end.
  Mit Zitat antworten Zitat