Die Welt wird erst schön durch die Dinge,
die sie hat, aus der sie besteht. Man kann sagen, die Blumen, die
Bäume sind ein Teil der Welt.
Diese Beziehung wird Aggregation
genannt. Es ist eine festere Beziehung, bei der eine Klasse ein Teil
einer anderen Klasse ist, also in ihr enthalten ist. Das läßt sich
dadurch implementieren, daß beim Erzeugen eines Exemplars das andere
enthaltene miterzeugt wird.
|
|
Wir brauchen also eine neue
Unit, in der TMyWorld geschrieben wird. Dazu werden wir eine völlige leere
Unit von Delphi nehmen (statt der, die bereits im Projekt vorhanden ist).
1. Aufgabe
Eine neue Unit schreiben und einbinden
a) Neue Unit einführen - Datei-Neu-Unit
b) Neue Unit1 umbenennen mit - Datei-Speichern unter... uMyWorld.pas im
Hauptverzeichnis.
Damit wird die Datei gleichzeitig dem Projekt hinzugefügt und
man braucht es nicht
extra zu tun.
Prüfen mit
Ansicht-Projektverwaltung
|
Wenn Sie diesen Namen benutzen, läßt sich die Welt aus dem Projektmenü aufrufen;
sonst müssen Sie in ControlFrm die Unit importieren, deklarieren und ein Exemplar kreieren, wie bei
jedem anderen Objekt auch. |
c) Schreiben Sie mit dem Editor den gesamten Code in die neue Unit
und fügen Sie alles
ein, was Sie möchten.
UNIT uMyWorld;
(* ******************************************************************** *)
(* K L A S S E : TMyWorld *)
(* -------------------------------------------------------------------- *)
(* Version : 2.2 *)
(* Autor : *)
(* Beschreibung: Die Klasse bildet die Welt 'MyWorld'mit einem Haus und *)
(* einem Monster ab. *)
(* Compiler : Delphi 6 *)
(* Aenderungen : 0.9 28-MAR-04 *)
(* ******************************************************************** *)
INTERFACE
// =======================================================================
uses
uWelt,
uCritter; // und was man man sonst gern drin hätte
type
TMyWorld = class(TWelt) // erbt alles von TWelt
protected
Haus : THaus;
Critter : TCritter;
public
constructor Create; override;
procedure Init;
end;
(* -------------------- B e s c h r e i b u n g -------------------------
Oberklasse : TWelt
Bezugsklassen : - import:
Methoden
--------
Create
Auftrag: Haus, Critter erzeugen und init.
Alle Objekte der vorigen Welt entfernen
vorher :
nachher: done.
Init
Auftrag: Anfangswerte setzen
vorher :
nachher: Fuellfarbe grün, Rasterlinie Silber
--------------------------------------------------------------------- *)
IMPLEMENTATION
// ====================================================================
USES graphics,
uFenster; // importiert Welt und was gebraucht wird
constructor TMyWorld.Create;
// --------------------------------------------------------------------
begin
inherited Create;
Welt.AlleItemsEntfernen; // alten Kram weg
Haus := THaus.Create; // die aggregierten Objekte erzeugen
Haus.SetPos ('H',2);
Critter := TCritter.Create;
Critter.SetPos ('A',8);
Critter.SetBild ('.\bilder\monster.bmp');
// ...... und was Sie sonst brauchen
Init;
Welt.AllesZeigen;
end;
procedure TMyWorld.Init;
// --------------------------------------------------------------------
begin
SetFuellFarbe(clgreen);
Welt.SetLinienFarbe(clSilver);
end;
END. // -------- UNIT ------------- |
Starten, im Menü aufrufen und testen!
Tip: Sehen Sie sich auch
uCleanCity.pas u. a. als Vorlage an
|
|
Aggregation |