2.3 Wir erstellen eine neue Klasse THaus



Ähnliche Dokumente
Arbeiten mit UMLed und Delphi

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Objektorientierte Programmierung OOP

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

Informatik Kurs 12 André Hoffmann. Delphi. Einführung in die Windows- Programmierung

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Zahlen auf einen Blick

Bilder zum Upload verkleinern

Einführung in die Java- Programmierung

Primzahlen und RSA-Verschlüsselung

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Mediator 9 - Lernprogramm

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Einführung in Powerpoint M. Hasler Wie erstelle ich eine Präsentation mit Powerpoint? - Eine Kurzanleitung

Java: Vererbung. Teil 3: super()

Kleines Handbuch zur Fotogalerie der Pixel AG

Professionelle Seminare im Bereich MS-Office

Eigenen Farbverlauf erstellen

Erstellen von x-y-diagrammen in OpenOffice.calc

Datensicherung. Beschreibung der Datensicherung

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld "Sharing". Auf dem Bildschirm sollte folgendes Fenster erscheinen:

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Bauteilattribute als Sachdaten anzeigen

Folge 18 - Vererbung

Leichte-Sprache-Bilder

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

Tutorial Speichern. Jacqueline Roos - Riedstrasse 14, 8908 Hedingen, jroos@hispeed.ch -

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Fülle das erste Bild "Erforderliche Information für das Google-Konto" vollständig aus und auch das nachfolgende Bild.

Delphi eine Einführung

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Urlaubsregel in David

Ich möchte eine Bildergalerie ins Internet stellen

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

OSF Integrator für Btracking und Salesforce Anleitung für die Nutzer

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Partitionieren in Vista und Windows 7/8

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Anleitung über den Umgang mit Schildern

Schritte 4. Lesetexte 13. Kosten für ein Girokonto vergleichen. 1. Was passt? Ordnen Sie zu.

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Webgestaltung - Jimdo 2.7

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Archiv - Berechtigungen

Wie halte ich Ordnung auf meiner Festplatte?

26. November EFS Übung. Ziele. Zwei Administrator Benutzer erstellen (adm_bill, adm_peter) 2. Mit adm_bill eine Text Datei verschlüsseln

WOT Skinsetter. Nun, erstens, was brauchen Sie für dieses Tool zu arbeiten:

Kulturelle Evolution 12

s zu Hause lesen

Thunderbird herunterladen, Installieren und einrichten Version (portable)

Pfötchenhoffung e.v. Tier Manager

Aufklappelemente anlegen

Zeichen bei Zahlen entschlüsseln

Datenbanken Kapitel 2

Enigmail Konfiguration

Laufwerke, Ordner, Dateien: 1. Erklärung der Begriffe

Computeria Solothurn

Memeo Instant Backup Kurzleitfaden. Schritt 1: Richten Sie Ihr kostenloses Memeo-Konto ein

ONLINE-AKADEMIE. "Diplomierter NLP Anwender für Schule und Unterricht" Ziele

Die Dateiablage Der Weg zur Dateiablage

Die einzige benutzte Schrift ist Arial. Die musst Du auf Deinem Mac oder PC haben.

Kapitel 3 Frames Seite 1

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

Das Persönliche Budget in verständlicher Sprache

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof

Adminer: Installationsanleitung

Mail-Account Unimail mit der Einstellungen für Outlook Express 5.0

Diese Anleitung wurde erstellt von Niclas Lüchau und Daniel Scherer. Erste Anmeldung. Schritt 1: Anmeldung..2. Schritt 2: Passwort setzen 3

2. Speichern und öffnen

Jederzeit Ordnung halten

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

Was meinen die Leute eigentlich mit: Grexit?

Text Link Werbung

How to do? Projekte - Zeiterfassung

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost

Elma van Vliet. Mama, erzähl mal!

! " # $ " % & Nicki Wruck worldwidewruck

Computeria Urdorf. Treff vom 28. März Tipps und Tricks

Wie man einen Artikel. auf Lautschrift.org veröffentlicht. Eine Anleitung in 14 Schritten

Das Leitbild vom Verein WIR

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Was man mit dem Computer alles machen kann

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Qt-Projekte mit Visual Studio 2005

Internet-Wissen. Browser:

Anleitung: Sammel-Rechnungen für Lizenzen bei Swiss Basketball

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

s zu Hause lesen

Transkript:

bertram.hafner@t-online.de Informatik 10 Seite 11 2.3 Wir erstellen eine neue Klasse THaus Menschen kommen heim, öffnen die Haustür, schalten das Licht an, Die Grundidee der objektorientierten Programmierung (OOP) ist es, ein Modell der Wirklichkeit zu schaffen mit Hilfe von Klassen gleichartiger Objekte. Die Objekte müssen intelligent genug sein, Aufgaben in eigener Verantwortung zu erledigen. Sie müssen miteinander kommunizieren können, Aufträge ausführen oder Anfragen beantworten. Dabei kann man einem Objekt sagen, was es tun soll, aber nicht, wie es etwas tun soll. Das muss das Objekt selber wissen (das heisst: der Programmierer muss diese Fähigkeiten der Klasse hinzugefügt haben). In diesem Abschnitt entwickeln wir eine Klasse THaus, deren Objekte so intelligent sind, dass sie sich selber zeichnen können, dass sie das Licht anschalten können und die Türe öffnen und schließen. Und sie sollen Fragen beantworten: Ist das Licht an? und Ist die Türe offen? zy y zx Breite (= Höhe) x Breite div 5 Erstellt man in Delphi eine neue Objektklasse, so tut man dies normalerweise in einer eigenen Unit. Denn eine neue Klasse hat ja nicht direkt etwas mit unserer Unit1 und dem Hauptformular Form1 zu tun. Das gesamte Delphi-System besteht aus vielen Modulen, den Units, in denen die Objektklassen deklariert und implementiert wurden. Erstelle zunächst eine neue Delphi-Anwendung und speichere das Projekt in einem neuen Ordner. Öffne dann noch eine neue Unit (Datei/Neu/Unit). Diese trägt den Namen Unit2. Ändere diesen in der erste Zeile in: unit Gebaeude1; Speichere diese Unit in den gleichen Ordner wie das ganze Projekt. Der Dateiname der Unit muss exakt gleich lauten wie der gerade festgelegte Name Gebaeude1. Jetzt wechsle in die Unit1 und füge Gebaeude1 bei der Uses-Klausel hinzu, damit später das Hauptformular Form1 die Objekte der Klasse THaus verwenden kann. Damit ein Haus-Objekt die verlangten Fertigkeiten ausführen kann, muss es sich verschiedene Dinge merken. Die Zeichenfläche, auf die es sich zeichnen soll, gehört einem anderen Objekt (FBesitzer), zum Beispiel einem Fenster von der Klasse TForm. Das Haus muss dieses Objekt kennen, dazu die Position (FX, FY) und seine eigene Größe (FBreite) und Farbe (FFarbe). Beim Zeichnen der Fenster muss es wissen, ob gerade das Licht an ist oder nicht (FLichtAn). Die Werte dieser Attribute bestimmen den Zustand des Objekts. Es ist eine stille Übereinkunft zwischen den Delphi-Programmierern, die Attribut-Bezeichner mit F (Field) zu beginnen und die Klassen-Bezeichner mit T (Type). Jede Klasse braucht eine Methode, welche die Objekte im THaus = class(tobject) <<Attribute>> - FX, FY: integer - FBreite:integer - FFarbe: TColor - FBesitzer: TForm - FLichtAn: boolean <<Methoden>> + Create() {constructor} + Zeichnen() + LichtEinschalten() + LichtAusschalten() + IstLichtAn(): boolean Klassendiagramm von THaus, für den Anfang noch nicht vollständig

bertram.hafner@t-online.de Informatik 10 Seite 12 Speicher des Computers erstellt. Diese nennt man Konstruktor. Ihr Bezeichner lautet meistens create(). Bisher haben wir Delphi-Objekte erzeugt, indem wir mit der Maus z.b. ein Button1 aus der Komponentenpalette geholt haben. In diesem Moment hat Delphi die Methode TButton.create ausgeführt und dem neuen Objekt den Bezeichner Button1 gegeben. Da wir Haus1, Haus2 nicht mit der Maus holen, müssen wir später an geeigneter Stelle der Unit1 dafür sorgen, dass THaus.create aufgerufen wird. Aufruf in einer Anwendung erklären, zb. TButton.Create oder TShape.Create : Aber wir wissen doch gar nicht, wie man ein Objekt erzeugt!?! Das ist auch nicht nötig, weil eine neue Klasse sehr elegant durch Vererbung von einer schon vorhandenen Klasse abgeleitet ( vererbt ) wird. Die Klasse TForm1 einer Anwendung wird von der Klasse TForm vererbt. TForm ist der Vorfahre. TForm1 hat alle Eigenschaften und Methoden, die TForm besitzt, und dann kommen in unserer Unit1 noch weitere Eigenschaften, Objekte, Methoden dazu. Wie ist das mit unserer Klasse THaus? type THaus = class (TObject) Die Klasse TObject ist die Basis-Klasse für alle anderen Delphi-Klassen. Sie hat fast nichts! Aber eine Methode constructor create. Diese kann ein Objekt der Klasse erzeugen. Wenn wir im Konstruktor von THaus als erstes die geerbte Methode aufrufen mit inherited create, so brauchen wir nur noch das festlegen, was unsere Klasse zusätzlich hat: FX, FY, FBreite. constructor THaus.create(xPos,yPos,Breite: integer; F: TColor; Besitzer: TForm); begin inherited create; FX:= xpos; FY:= ypos; FBreite:=Breite;...

bertram.hafner@t-online.de Informatik 10 Seite 13 private oder public? Attribute und Methoden, die ich im Klassendiagramm mit einem - versehen habe, wollte ich unter private deklarieren, die mit einem + unter public. Für andere Objekte ist die Privatsphäre eines THaus-Objekts nicht sichtbar. Man kann also von Form1 aus nicht das Attribut FX ansprechen mit Haus1.FX, wohl aber seine Methode zeichnen aufrufen mit Haus1.zeichnen. Der Zweck ist ganz einfach: Wenn du die Unit Gebaeude1 fertig hast, soll nicht ein anderer Benutzer dieser Unit auf die Attribut-Werte zugreifen können. Er kennt ja meist gar nicht deren Bedeutung und würde ein heilloses Durcheinander anrichten. Nur über die public-methoden des Objekts sollen die Attributwerte verändert werden können. Nur der Programmierer der Unit hat vollen Zugriff auf alle Attribute und Methoden. Merke: Attribute werden in der Regel unter private deklariert, Methoden unter public, sodass andere Objekte Zugriff auf die Attribut-Werte eines Objekts nur über seine Methoden erhalten. (Prinzip der Datenkapselung)

bertram.hafner@t-online.de Informatik 10 Seite 14 Gib den Quelltext der Unit Gebaeude ein. Beschränke dich zuerst auf die Prozeduren create, zeichnen und zeichnewand. Bevor du weiterschreibst, teste deine neue Klasse THaus: Füge in der Unit1 der Klasse TForm1 unter private die Bezeichner Haus1, Haus2: THaus bei. Benutze das onclick-ereignis eines Button (oder besser: das oncreate-ereignis von Form1), um die beiden Objekte zu erschaffen: Haus1:=THaus.create(); Haus2:=THaus.create(); Wenn alles richtig ist, solltest du jetzt auf dem Formular zwei Rechtecke sehen. Das sind die noch unvollständigen Objekte Haus1 und Haus2. Schrittweises Fertigstellen der Klasse THaus Besprechen: Parameter-Übergabe, Unterschied zwischen procedure (Methode) und function (Funktions-Methode) Gib Form1 ein ganzes Array von Häusern H: array[1..5] of THaus; und initialisiere das Array mit for i := 1 to 5 do H[i]:=THaus.create() Dabei musst du die Position der Häuser von der Zählvariablen i abhängen lassen. Füge Lichtschalter hinzu. Aufgabe: Programmiere die Methoden TuereOeffnen() und TuereSchließen(), und die Funktionsmethode IstTuereOffen:boolean. Orientiere dich dabei an LichtEinschalten(). Bedenke, dass man durch eine offene Tür auch sieht, ob das Licht an ist.

bertram.hafner@t-online.de Informatik 10 Seite 15 2.4 Wir modellieren eine einfache Bank (Vergleiche Diagramm S. 1!) Systemanalyse: Was macht eine Bank? Abgrenzung: Abstraktion: Aggregation: Idealisierung: Unsere Bank soll nur Giro-Konten haben und nur mit ganzen -Werten rechnen. Wir brauchen mehrere Konten (meinkonto, Konto2 ) und ein Objekt, das (zunächst) nur meinkonto verwaltet, nennen wir es Bank. Wir bilden eine Klasse TKonto und eine Klasse TBank. TKonto braucht die Attribute Nummer, Inhaber, Kontostand und Methoden für Ein-/ Auszahlung, Überweisung und Einsichtnahme, also um den Kontostand zu erhöhen oder zu erniedrigen und mitzuteilen und den Kontostand eines anderen zu erhöhen. TBank braucht einen Automaten mit Buttons, Eingabefenster und die Fähigkeit, Konto-Objekte zu erzeugen und die Methoden der Konto-Objekte zu nutzen. (Später wird die Bank dazu eine Liste der Konto-Objekte führen müssen.) Strukturanalyse: Eine Bank verwaltet mehrere Konten auf diese Art. Modellbildung: Wir benutzen die Delphi-IDE als Programmierumgebung und definieren dort eine neue Delphi-Klasse TKonto in einer eigenen Unit. Als Bank benutzen wir ein gewöhnliches Delphi-Formular, nennen 1 die Klasse TBank (statt TForm1) und das Objekt Bank statt Form1 und geben ihr Konten, Buttons, ein Edit (später eine ComboBox) und die Überschrift Automat für mein Bank-Konto. Dann bekommen TKonto und TBank noch ihre Methoden. TBank legen wir so einfach an, dass sie zunächst nur meinkonto verwaltet und von diesem auf ein zweites überweisen kann. TKonto = class(tobject) <<Attribute>> - FNummer: string - FInhaber: string - FKontostand: integer <<Methoden>> + constructor create (nr,inh:string) + einzahlen(betrag:integer) + auszahlen(betrag:integer) + ueberweisen(empfaenger:tkonto; Betrag:integer) + gibstand: string + gibnummerundinhaber:string Beachte: Objekte von TKonto sind unsichtbare Objekte, im Gegensatz zu den Objekten der bisher besprochenen Delphi-Klassen. <<Eigenschaften>> TBank = class(tform) (viele geerbte Eigenschaften von TForm) meinkonto, Konto2: TKonto Edit1: TEdit EinzButton: TButton AuszButton: TButton UeberwButton: TButton... <<Methoden>> (viele geerbte Methoden von TForm) EinzButtonClick AuszButtonClick UeberwButtonClick FormCreate 1 Die Hauptklasse einer Delphi-Anwendung heißt standardmäßig immer TForm1 und das zugehörige Fenster-Objekt hat den Bezeichner Form1. Wenn du diese, wie oben vorgeschlagen, tatsächlich umbenennen willst, musst du das in Unit1.pas, in Unit1.dfm und in Project1.dpr machen.

bertram.hafner@t-online.de Informatik 10 Seite 16 Die Unit Konten.pas vorstellen und besprechen, zusammen mit den Schülern schreiben; Teile können die Schüler selber schreiben. Neues Projekt erstellen, die Unit dem Projekt hinzufügen. Uses-Klausel Dann das Formular Bank Schritt für Schritt aufbauen und immer sofort testen. (Auch Abschreiben von Code bringt Lerneffekte.) Erst wenn die Anwendung in dieser Form funktioniert, dann: Aufgaben: 1. Auch von Konto2 soll beim Programmstart Nummer und Inhaber angezeigt werden. 2. Nach jeder Aktion der Bank soll das Editfenster gelöscht werden. 3. Füge noch ein drittes Konto hinzu, auf das man mit einem weiteren Button überweisen kann. Wer schon Programmierkenntnisse hat, - kann die Geldbeträge auch mit zweistelligen Dezimalzahlen machen. - der Bank eine Kontenliste (Objekt der Klasse TComboBox) hinzufügen, aus welcher der Empfänger einer Überweisung ausgewählt wird.

bertram.hafner@t-online.de Informatik 10 Seite 17 Quellcode der Unit Konten mit der Klasse TKonto

bertram.hafner@t-online.de Informatik 10 Seite 18 Quellcode der Unit1 mit der Klasse TBank

bertram.hafner@t-online.de Informatik 10 Seite 19 anspruchsvolle Aufgabe: Folgendes Problem gibt es in vielerlei Versionen: Ein Weinhändler hat einen 8-Liter-Krug und einen 3- Liter-Krug. Er möchte aus einem großen Fass genau 1 Liter Wein abfüllen. Wie muss er vorgehen? (Zu beachten ist: Die Krüge haben keinerlei Liter-Marken, und man hat auch sonst keine Hilfsmittel. Man kann nur vom Weinfass Wein auslaufen lassen, bis ein Krug randvoll ist oder von einem Krug in den anderen umfüllen, bis dieser voll oder der erste leer ist, oder den Krug ins Fass zurückschütten.) Das Umfüllen des Weins soll in einem Delphi-Programm simuliert werden. Dazu soll eine Klasse TGefaess in einer Unit Gefaesse deklariert werden, ähnlich zu der Klasse TKonto oder THaus. In einer Delphi-Anwendung sollen kleinerkrug, grosserkrug und Fass Objekte der Klasse TGefaess sein. Du kannst so vorgehen wie in THaus, wo die Objekte sich auf dem Canvas von Form1 zeichnen. Einfacher geht es jedoch, wenn du TGefaess von einer sichtbaren Delphi-Klasse vererbst, z.b. von TProgressBar. Diese hat schon die Fähigkeit sich zu zeichnen aber den Nachteil, dass sie rechteckig aussieht. Als Füllhöhe des Gefässes kannst du ihre Eigenschaft Position benutzen. Die Klassendeklaration lautet dann: TGefaess = class(tprogressbar) public constructor create(besitzer:tform; Volumen, Menge:integer; xpos, ypos:integer); procedure umfuellen(ziel: TGefaess); end; Ein Objekt von der Klasse TProgressBar muss wie alle sichtbaren Delphi-Objekte seinen Besitzer (z.b. Form1) kennen, damit es sich auf dessen Canvas zeichnen kann. Deswegen übergeben wir den Besitzer auch in der create-methode von TGefaess. Es hat außerdem alle Eigenschaften und Methoden, die TProgressBar hat, also z.b. Left, Top, Width, Max das kannst du wunderbar brauchen! Du kannst also in der create-methode das Volumen an die Eigenschaft Max übergeben und die Füllmenge an die Eigenschaft Position. Dann zeichnet sich die Progressbar automatisch mit der richtigen Füllmenge. Du musst dann in der create-methode als erstes die geerbte create-methode von TProgressbar aufrufen. In der Hilfe siehst du, dass diese Methode als Parameter ebenfalls den Besitzer braucht. inherited create(besitzer); parent:=besitzer; Sichtbare Delphi-Objekte haben alle das Attribut parent (wie unser THaus das Attribut zbesitzer), in der sie sich ihren Besitzer merken. Deine Delphi-Anwendung braucht drei Objekte von der Klasse TGefaess, nämlich kleinerkrug, grosserkrug und Fass. In der Unit1 kannst du dann solche Objekte erschaffen z.b. so: kleinerkrug.create(form1, 3, 0, 100,50); Damit erzeugst du einen Krug mit dem Volumen 3Liter, der Startmenge 0Liter an der Stelle (100,50). Mit mehreren Buttons soll man dann vom Fass in die Krüge umfüllen können und auch vom einen in den anderen Krug oder ins Fass zurück.

bertram.hafner@t-online.de Informatik 10 Seite 20 2.5 Objektbeziehungen und Klassenbeziehungen Die objektorientierte Denkweise geht davon aus, dass ein System nur aus Objekten und ihren Beziehungen untereinander besteht. Gleichartige Objekte werden zu einer Klasse zusammengefasst und zwar nicht nur so, wie man Briefmarken in ein Album gibt oder gleichaltrige Schüler in eine Schulklasse. Eine Objekt-Klasse stellt den Bauplan für alle von ihr erzeugten Objekte dar. Diese sind absolut gleichartig und unterscheiden sich nur in den Attribut-Werten. Zwischen den Objekten bestehen Beziehungen. Form1 besitzt die Objekte Button1, Button2 und Edit1, verwaltet diese und benutzt ihre Methoden. Button1 sendet beim Ereignis onclick eine Botschaft an Form1. Form1 kann mit einer Ereignis-Methode darauf reagieren. Bank erzeugt und verwaltet mehrere TKonto-Objekte. Haus1 kennt seinen Besitzer Form1 und benutzt dessen Canvas, um sich darauf zu zeichnen. Manche Objekte können gar nicht ohne andere existieren: Jedes sichtbare Objekt wie Button1 braucht ein Objekt der Klasse TWinControl, von dem es verwaltet wird. Die Klasse TForm ist ein TWin- Control (weil TForm in mehreren Schritten aus der Klasse TWinControl vererbt wurde). Objekte der Klasse TForm können deswegen dieses Aufgabe übernehmen. Um Beziehungen zwischen Objekten darzustellen benutzt man Klassendiagramme der Unified Modelling Language (UML). Diese Diagramme sind beim Entwurf umfangreicherer Programme unentbehrlich. Die Kennt-Beziehung (auch: Benutzt-Beziehung, in UML: Assoziation ) Die Objekte unserer Klasse THaus kennen ihren Besitzer, ein Objekt der Klasse TForm1. Ihre Methode zeichnen() benutzt die Zeichenfläche Canvas des Besitzers, ohne dass die Zeichenfläche die THaus- Objekte kennen muss. Diese Kennt-Beziehung ist eine gerichtete Assoziation THaus -FBesitzer: TForm +zeichnen() () zeichnet sich auf zwischen den Objekten der beiden Klassen. An den Pfeilenden wird die Kardinalität der Beziehung angegeben: In unserem Programm benutzen beliebig viele (*) THaus-Objekte genau ein (1) TForm-Objekt. Die Hat-Beziehung (auch: Besitzt-Beziehung, in UML: Aggregation ) TForm1 +Canvas: TCanvas () Die Verbindungslinie mit der Raute zeigt an, dass ein Objekt der Klasse TForm jeweils ein Objekt der Klassen TCanvas, TBrush, TFont besitzt und verwaltet. Das gleiche gilt für Objekte, die wir in der Klassendeklaration von TForm1 hinzufügen. Ein Objekt der Klasse TForm1 (nämlich Form1) verwaltet sieben THaus-Objekte, ein TButton-Objekt und fünf TCheckbox-Objekte. Und weil TForm1 von TForm vererbt wurde, verwaltet Form1 auch ein TCanvas-Objekt, ein TBrush-Objekt usw.. Diese Hat-Beziehung bedeutet, dass das besitzende Objekt für die Existenz der anderen Objekte zuständig ist. Die Linien * 1 TForm... TForm1 1 1 1 TCanvas TBrush TFont... 7 1 5 THaus TButton TCheckbox

bertram.hafner@t-online.de Informatik 10 Seite 21 beschreiben gleichzeitig auch die möglichen Nachrichtenwege: Das besitzende Objekt hat die Möglichkeit, den verwalteten Objekten Nachrichten zu schicken, also ihre Methoden aufzurufen. Das bedeutet auch: Die Hat-Beziehung umfasst die Kennt-Beziehung. Insbesondere bedeutet Verwalten eines Objekts: Das besitzende Objekt führt das verwaltete Objekt in einer Objektvariablen oder in der Komponentenliste, erzeugt es durch Aufruf des Konstruktors der Klasse und ist auch verantwortlich dafür, dass es irgendwann aus dem Speicher entfernt wird. Von außerhalb des Besitzers ist ein verwaltetes Objekt nur über den Besitzer ansprechbar, z.b. Form1.Haus3.LichtAusschalten; oder: Paintbox1.Canvas.Moveto(20,20); Die Ist-Beziehung (auch: Is-a-Beziehung) Die Ist-Beziehung beschreibt die Hierarchie bei der Vererbung. Während Hat und Kennt Beziehungen zwischen zwei Objekten darstellen, beschreibt die Ist-Beziehung den Zusammenhang zwischen zwei Klassen: Die Klasse TForm1 ist ein TForm, weil sie von dieser Klasse abgeleitet wurde. TForm ist ein TWinControl, weil sie über mehrere Stufen von dieser Klasse abstammt. TWinControl ist Vorfahre (Oberklasse), TForm Nachkomme (Unterklasse). Der Nachkomme hat alle Merkmale des Vorfahren aber darüber hinaus noch zusätzliche Merkmale (Spezialisierung). TWinControl TScrollingWinControl TForm +Name: string +Caption: string +Color: TColor +Create() +Destroy() +Close() +Print() () über mehrere Stufen TObject +Create() +Destroy() TCustomform TForm TForm1 TForm1 +Name: string +Caption: string +Color: TColor +Button1: TButton +Create() +Destroy() +Close() +Print() +Button1Click() () THaus -FX, FY: integer -FBreite: integer -FFarbe: TColor -FBesitzer: TForm -FLichtAn: boolean +Create() +Destroy() +Zeichnen() +LichtEinschalten() +LichtAusschalten() +IstLichtAn(): boolean Delphi kann die Hat-Beziehungen zwischen den verwendeten Objekten im Diagramm- Fenster anzeigen. Hole dazu mit der Maus die Objekte aus dem Objekthierarchie-Fenster ins Diagramm. Studiere in der Delphi-Hilfe die Klassenhierarchie einiger Klassen. Zeichne zu unserem Bankprogramm die Klassendiagramme. Komplexere Strukturen werden häufig durch UML-Diagramme dargestellt. Ein UML-Modell von Wetterstationen findest du unter: http://ifgivor.uni-muenster.de/vorlesungen/geoinformatik/kap/kap4/k04_2.htm

bertram.hafner@t-online.de Informatik 10 Seite 22 2.6 Objekte und Klassen in einem Vektorgrafik-Programm Klasse Ellipse <<Attribute>> Liniendicke Linienfarbe Füllfarbe <<Methoden>> verschieben() strecken() kopieren() Klasse Bogen <<Attribute>> Liniendicke Linienfarbe Startpfeil Endepfeil <<Methoden>> verschieben() strecken() biegen() kopieren() Grafik-Programm Dia (Freeware) Die Eigenschaftswerte der Objekte werden mit der Maus eingestellt oder im Fenster Properties (Doppelclick auf das Objekt!). Die Methoden der Objekte erreicht man ebenfalls mit Maus oder Tastatur. UML-Klassen-Diagramm zeichnen Zustandsdiagramm (sh. 11.Kl.) zeichnen (z.b. für Parallelschaltung) ER-Diagramm zeichnen (sh. Datenbank-Skript)