Teil 2

Werbung
Grundkonzepte der
objektorientierten Programmierung
Teil 2
Klaus Becker
2006
Objektorientierte Modellierung
2
1
4
2
5
3
1$
6
1$ 1$
1$ 1$ 1$
1$ 1$ 1$ 1$
Miniwelt
Modell
System
3
Teil 1
Beziehungen zwischen Objekten
Das Würfelspiel „chuck a luck“
4
Einsatz zahlen und Zahl tippen
Einsatz: 1 $
Gewinn:
Würfel werfen
Gewinn auszahlen
1
4
2
5
3
1$
6
0 Treffer:
1 Treffer: Einsatz + 1 $
2 Treffer: Einsatz + 2 $
3 Treffer: Einsatz + 3 $
1$
1$ 1$
1$ 1$ 1$ 1$
1$ 1$ 1$ 1$ 1$
Zielsetzung
5
Ziel ist es, ein Simulationsprogramm zu entwickeln, mit dem das Würfelspiel
„chuck a luck“ am Rechner gespielt werden kann. Am Beispiel dieses
einfachen und überschaubaren Systems sollen Grundkonzepte der
objektorientierten Programmierung verdeutlicht werden.
1
4
2
5
3
1$
6
1$ 1$
1$ 1$ 1$
1$ 1$ 1$ 1$
Miniwelt
System
Lösungsansatz mit Modellierung
6
1
4
2
5
3
1$
6
Modell
System
1$ 1$
1$ 1$ 1$
1$ 1$ 1$ 1$
- Abbild der Miniwelt
- Vorlage für das System
Miniwelt
Ansatz:
Mit Hilfe eines Modells soll
die Miniwelt zunächst
programmiersprachenunabhängig beschrieben
werden.
Das Modell soll dann helfen,
in einem zweiten Schritt das
Programm möglichst gut zu
strukturieren.
7
Spiel ohne Überwachung
Das bisher entwickelte Programm zur Simulation des Chuck-A-Luck-Spiels
lässt noch Bedienungen zu, die in der Miniwelt nicht erlaubt sind.
Einsatz zahlen und Zahl tippen
Würfel werfen
Gewinn verbuchen
Einsatz zahlen
Zahl tippen (z. B. 2)
Solange Würfel werfen, bis die getippte Zahl fällt
Gewinn mehrfach verbuchen
Zustandsbasierte Ablaufmodellierung
8
Aktueller
Zustand
Auslösendes
Ereignis
Ausgelöste
Aktion(en)
Neuer
Zustand
bereit
BEinsatzZahlen.
onClick
Einsatz vom Konto
abbuchen
einsatzgezahlt
einsatzgezahlt
RGSpielfeld.
onClick
Spielzahl festlegen
einsatzgezahlt
BWuerfelWerfen.
onClick
Würfelwerfen simulieren
gewürfelt
BGewinnVerbuchen.
onClick
Gewinn ermitteln und auf
dem Konto verbuchen
bereit
gewürfelt
Einsatz zahlen und Zahl tippen
Würfel werfen
Gewinn verbuchen
Spiel mit Spielmanager
9
1
4
2
5
3
1$
6
1$ 1$
1$ 1$ 1$
1$ 1$ 1$ 1$
Miniwelt
In der Miniwelt wird der korrekte Spielablauf durch eine Person überwacht
und gesteuert.
In der Modellwelt soll diese Steuerung durch ein Objekt „spielmanager“
übernommen werden. Dieses Objekt ist zuständig für die Verwaltung des
Spielzustandes und die jeweilige Aktivierung der am Spiel beteiligten
Objekte.
Spiel mit Spielmanager
10
1
4
2
5
3
1$
6
1$ 1$
1$ 1$ 1$
1$ 1$ 1$ 1$
Modell
Miniwelt
spielmanager
...
Zuständigkeit:
verwaltet den Spielzustand
und erteilt die passenden
Aufträge an die SpielObjekte
spielbrett
wuerfelA
wuerfelB
wuerfelC
konto
zahl = 3
augen = 3
augen = 3
augen = 5
stand = 9
11
Spielmanager aktiviert Spiel-Objekte
Aktueller
Zustand
Auslösendes
Ereignis
Ausgelöste
Aktion(en)
Neuer
Zustand
bereit
BEinsatzZahlen.
onClick
Einsatz vom Konto
abbuchen
einsatzgezahlt
BEinsatzZahlen.OnClick [zustand = bereit]:
12
Spielmanager aktiviert Spiel-Objekte
Aktueller
Zustand
Auslösendes
Ereignis
Ausgelöste
Aktion(en)
Neuer
Zustand
einsatzgezahlt
RGSpielfeld.
onClick
Spielzahl festlegen
einsatzgezahlt
RGSpielfeld.onClick [zustand = einsatzgezahlt]:
13
Spielmanager aktiviert Spiel-Objekte
Aktueller
Zustand
Auslösendes
Ereignis
Ausgelöste
Aktion(en)
Neuer
Zustand
einsatzgezahlt
BWuerfelWerfen.
onClick
Würfelwerfen simulieren
gewürfelt
BWuerfelWerfen.onClick [zustand = einsatzgezahlt]:
14
Spielmanager aktiviert Spiel-Objekte
Aktueller
Zustand
Auslösendes
Ereignis
Ausgelöste
Aktion(en)
Neuer
Zustand
gewürfelt
BGewinnVerbuchen.
onClick
Gewinn ermitteln und auf
dem Konto verbuchen
bereit
BGewinnVerbuchen.onClick [zustand = gewuerfelt]:
Aktivierung von Objekten
15
Ein Objekt stellt seiner Umgebung bestimmte Dienste (Operationen) zur
Verfügung. Durch eine Nachricht veranlasst ein „Kunde“ das Objekt, die
Dienstleistung zu erledigen. Das Objekt führt dann die Operation aus.
konto
stand = 9
spielmanager
zustand = bereit
abheben(1) 
konto
stand = 9
konto
stand = 8
Zustand vorher
Aktivierung durch
eine Nachricht
Zustand nachher
Beziehung zwischen Objekten
16
Ein Nachrichtenaustausch zwischen Objekten kann nur stattfinden, wenn
das sendende Objekt die Nachricht dem Empfängerobjekt „zustellen“ kann.
Hierzu müssen diese Objekte in Beziehung zueinander stehen.
wuerfelA
spielbrett
hat
wuerfelB
hat
spielmanager
hat
hat
konto
hat
wuerfelC
wuerfelA
kennt
wuerfelB
kennt
wuerfelC
kennt
kennt
spielmanager
kennt
spielbrett
konto
Hat-Beziehung / Komposition
17
wuerfelA
spielbrett
hat
wuerfelB
hat
spielmanager
hat
konto
hat
hat
wuerfelC
Bei dieser Struktur geht man davon aus, dass ein Objekt ein anderes
besitzt, d. h. die vollständige Kontrolle über dieses Objekt hat.
Insbesondere ist es für die Erzeugung und Vernichtung des kontrollierten
Objekts zuständig. Man spricht in diesem Fall von einer Hat-Beziehung.
Kennt-Beziehung / Verbindung
18
wuerfelA
kennt
wuerfelB
kennt
spielmanager
kennt
spielbrett
konto
kennt
wuerfelC
kennt
Bei diesen Beziehungen führen die beteiligten Objekte ein Eigenleben. Die
in Verbindung stehenden Objekte sind zwar aufeinander angewiesen, weil
sie beispielsweise miteinander kommunizieren müssen, um eine
gemeinsame Aufgabe zu erledigen, aber es reicht, wenn ein Objekt das
andere kennt. Man spricht von einer Kennt-Beziehung zwischen Objekten.
Modell mit Spielmanager
19
TSpielmanager
- zustand: ...
...
TSpielbrett
hat
TWuerfel
hat
+ „erzeugen“
+ „vernichten“
+ einsatzZahlen
+ spielzahlSetzen(z: int.)
+ wuerfelWerfen
+ gewinnVerbuchen
+ getZustand: ...
...
TWuerfel
hat
TWuerfel
hat
TKonto
hat
wuerfelA
spielbrett
hat
wuerfelB
spielmanager
hat
wuerfelC
hat
hat
konto
hat
Modell mit Spielmanager
20
TSpielmanager
kennt
- zustand: ...
...
kennt
+ „erzeugen“
+ „vernichten“
+ einsatzZahlen
+ spielzahlSetzen(z: int.)
+ wuerfelWerfen
+ gewinnVerbuchen
+ getZustand: ...
...
wuerfelA
kennt
kennt
kennt
kennt
wuerfelB
kennt
wuerfelC
kennt
TSpielbrett
TWuerfel
TWuerfel
TWuerfel
TKonto
kennt
spielmanager
kennt
spielbrett
konto
21
Teil 2
Objekte in Aktion
22
Zielsetzung
Ziel ist es, das Chuck-A-Luck-Spiel mit einem Spielmanager zu simulieren.
Hat-Beziehung
Kennt-Beziehung
Beachte: In BlueJ werden Hat- und Kennt-Beziehung auf gleiche Weise mit
Hilfe von Pfeilen dargestellt.
23
Modell mit Hat-Beziehung
Schritt 1: Erzeugen Sie ein Objekt „GUI“ als Exemplar der Klasse „TGUI“.
24
Modell mit Hat-Beziehung
Schritt 2: Inspizieren Sie zunächst das Objekt „GUI“ und die von ihm
verwalteten Spielobjekte. Hier erkennt man, welches Objekt auf welches
andere einen direkten Zugriff hat.
25
Modell mit Hat-Beziehung
Schritt 3: Aktivieren Sie mit Hilfe von „GUI“ die einzelnen Spielaktionen. Die
Veränderungen der Objektzustände kann man sich durch Inspektion
anschauen.
26
Modell mit Hat-Beziehung
Schritt 4: Aktivieren Sie abschließend die Methode „spielDatenAnzeigen“ des
Objekts „GUI“. Diese Methode sollte jetzt genau die Spielergebnisse
anzeigen, die man auch durch Inspektion der Objekte erhält.
27
Modell mit Kennt-Beziehung
Schritt 1: Erzeugen Sie ein Objekt „GUI“ als Exemplar der Klasse „TGUI“.
Schritt 2: Inspizieren Sie dieses Objekt und die von ihm verwalteten
Objekte.
28
Modell mit Kennt-Beziehung
Schritt 3: Führen Sie ein Spiel mit den Methoden von „GUI“ aus.
Schritt 4: Lassen Sie „GUI“ die Spielergebnisse anzeigen.
29
Teil 3
Implementierung der Hat-Beziehung
Zielsetzung
30
TSpielmanager
erstellen
TWuerfel
hat
- zustand: ...
...
fertig
+ create
+ wuerfelWerfen
...
Teil-Modell
instance of
instance of
spielmanager
zustand = ...
wuerfelA
hat
augen = 3
Die Implementierung der Hat-Beziehung soll anhand eines Teilmodells des
Gesamtmodells gezeigt werden. Wir verzichten vorerst auf die Verwaltung
des Spielzustands.
31
Referenzen schaffen Beziehungen
Mit Hilfe von Referenzattributen kann ein Objekt sich die Adressen seiner
„Beziehungspartner“ merken.
Speicheradresse
3A80
3A80
Referenzattribut
32
Klasse mit Referenzattribut
TSpielmanager
- zustand: ...
- wuerfelA: TWuerfel
...
+ „erzeugen“
+ „vernichten“
+ einsatzZahlen
+ spielzahlSetzen(z: int.)
+ wuerfelWerfen
+ gewinnVerbuchen
+ getZustand: ...
...
Referenzattribut
Speicheradresse
3A80
3A80
Referenzattribut
Die Klasse TSpielmanager muss um Referenzattribute erweitert werden,
mit deren Hilfe die Beziehungen zu anderen Objekten verwaltet werden.
Modellstruktur
33
FGUI
spielmanager
hat
wuerfelA
hat
Bei der Hat-Beziehung geht man davon aus, dass ein Objekt ein anderes
besitzt, d. h. die vollständige Kontrolle über dieses Objekt hat.
Insbesondere ist es für die Erzeugung und Vernichtung des kontrollierten
Objekts zuständig. Man spricht in diesem Fall von einer Hat-Beziehung.
Modellklasse mit Referenzattributen
34
unit uSpielmanager;
interface
uses uWuerfel;
type
TSpielmanager
Einbindung der Klassen-Unit
- wuerfelA: TWuerfel
...
...
TSpielmanager = class
private
wuerfelA: TWuerfel;
Deklaration des Referenzattributs
public
constructor create;
destructor destroy; override;
...
end;
implementation
35
Erzeugung des Würfel-Objekts
FGUI
hat
type
TSpielmanager = class
private
wuerfelA: TWuerfel;
public
constructor create;
destructor destroy; override;
...
end;
implementation
constructor TSpielmanager.create;
begin
wuerfelA := TWuerfel.create;
end;
destructor TSpielmanager.destroy;
begin
wuerfelA.free;
end;
spielmanager
wuerfelA
hat
Modellstruktur
36
Implementierung einer Nachricht
...
FGUI
hat
type
TSpielmanager = class
private
wuerfelA: TWuerfel;
public
constructor create;
destructor destroy; override;
procedure wuerfelWerfen;
...
end;
spielmanager
hat
Modellstruktur
Nachricht
spielmanager
implementation
...
Senderobjekt-Klasse
procedure TSpielmanager.wuerfelWerfen;
begin
wuerfelA.werfen;
Operation
end;
Empfängerobjekt
wuerfelA
werfen 
wuerfelA
37
Erzeugung des Spielmanager-Objekts
unit uGUI;
interface
FGUI
spielmanager
hat
wuerfelA
hat
Modellstruktur
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ExtCtrls, uSpielmanager;
type
TGUI = class(TForm)
...
private
{ Private-Deklarationen }
spielmanager: TSpielmanager;
public
{ Public-Deklarationen }
end;
implementation
{$R *.DFM}
procedure TGUI.FormCreate(Sender: TObject);
begin
spielmanager := TSpielmanager.create;
end; ...
Zugriff auf Objekte
38
unit uGUI;
FGUI
spielmanager
hat
interface
wuerfelA
hat
...
Modellstruktur
implementation
{$R *.DFM}
procedure TGUI.BWerfenClick(Sender: TObject);
begin
// Aktualisierung der Modell-Objekte
Kein direkter Zugriff
spielmanager.wuerfelWerfen;
auf wuerfelA möglich
// Aktualisierung der Anzeige
PWuerfelA.Caption :=
IntToStr(spielmanager.getWuerfelA);
end;
Nachrichten
...
FGUI
getWuerfelA 
spielmanager
getAugen 
wuerfelA
39
Zugriff auf ein abhängiges Objekt
unit uGUI;
interface
FGUI
spielmanager
hat
wuerfelA
hat
...
implementation
{$R *.DFM}
procedure TGUI.BWerfenClick(...);
begin
// Aktualisierung der Modell-Objekte
spielmanager.wuerfelWerfen;
// Aktualisierung der Anzeige
Hilfsoperation
PWuerfelA.Caption :=
IntToStr(spielmanager.getWuerfelA);
end;
function TSpielmanager.getWuerfelA: integer;
begin
result := wuerfelA.getAugen;
end;
TSpielmanager
- wuerfelA: Wuerfel
...
+ create
+ destroy
+ wuerfelWerfen
...
+ getWuerfelA: integer
...
40
Aufgabe
Die gezeigte Implementierung des Teilmodells „Spielmanager hat Wuerfel“
finden Sie im Verzeichnis „ChuckALuck21NurWuerfelnMitHatBeziehung“.
Testen Sie zunächst diese Implementierung. Beachten Sie, dass man hier
nur Würfel A werfen kann.
Bauen Sie dann schrittweise diese Implementierung zu einer
Implementierung des gesamten Spiels aus. Berücksichtigen Sie zunächst
noch nicht den jeweiligen Spielzustand.
Berücksichtigen Sie in einem letzten Schritt den jeweiligen Spielzustand.
Eine vollständige Implementierung finden Sie im Verzeichnis
„ChuckALuck22GesamtesSpielMitHatBeziehung“.
41
Teil 4
Implementierung einer Kennt-Beziehung
Zielsetzung
42
TSpielmanager
TWuerfel
kennt
- zustand: ...
...
+ create
+ wuerfelWerfen
...
Teil-Modell
instance of
instance of
spielmanager
zustand = ...
wuerfelA
kennt
augen = 3
Hier sollen die Ähnlichkeiten und Unterschiede zwischen einer
Implementierung der Kennt-Beziehung und der Hat-Beziehung aufgezeigt
werden.
43
Bekanntschaft durch Referenzen
TSpielmanager
- zustand: ...
- wuerfelA: TWuerfel
...
+ „erzeugen“
+ „vernichten“
+ einsatzZahlen
+ spielzahlSetzen(z: int.)
+ wuerfelWerfen
+ gewinnVerbuchen
+ getZustand: ...
...
Referenzattribut
Speicheradresse
3A80
3A80
Referenzattribut
Die Ausgangssituation bleibt gleich:
Die Klasse TSpielmanager muss um Referenzattribute erweitert werden, mit
deren Hilfe die Beziehungen zu anderen Objekten verwaltet werden.
Modellstruktur
44
FGUI
spielmanager
hat
wuerfelA
kennt
Bei der Kennt-Beziehung führen die beteiligten Objekte ein Eigenleben. Die
in Verbindung stehenden Objekte sind zwar aufeinander angewiesen, weil
sie beispielsweise miteinander kommunizieren müssen, um eine
gemeinsame Aufgabe zu erledigen, aber es reicht, wenn ein Objekt das
andere kennt.
45
unit uGUI;
Erzeugung der Objekte
FGUI
interface
spielmanager
hat
wuerfelA
kennt
uses
..., uWuerfel, uSpielmanager;
type
TGUI = class(TForm)
...
private
{ Private-Deklarationen }
wuerfelA: TWuerfel;
spielmanager: TSpielmanager;
public
{ Public-Deklarationen }
end;
implementation {$R *.DFM}
procedure TGUI.FormCreate(Sender: TObject);
begin
randomize;
wuerfelA := TWuerfel.create;
spielmanager := TSpielmanager.create(wuerfelA);
end;
Modellstruktur
46
Erzeugung der Kennt-Referenz
3A80
3A80
3A80
spielmanager := TSpielmanager.create(wuerfelA);
constructor TSpielmanager.create(wA: TWuerfel);
begin
wuerfelA := wA;
end;
3A80
3A80
3A80
47
unit uGUI;
Zugriff auf Objekte
FGUI
spielmanager
hat
interface
wuerfelA
kennt
...
implementation
Modellstruktur
{$R *.DFM}
procedure TGUI.BWerfenClick(Sender: TObject);
begin
// Aktualisierung der Modell-Objekte
spielmanager.wuerfelWerfen;
// Aktualisierung der Anzeige
direkter Zugriff auf
wuerfelA möglich
PWuerfelA.Caption :=
IntToStr(wuerfelA.getAugen);
end;
...
FGUI
wuerfelWerfen 
spielmanager
getAugen 
Nachrichten
werfen 
wuerfelA
48
Aufgabe
Die gezeigte Implementierung des Teilmodells „Spielmanager kennt
Wuerfel“ finden Sie im Verzeichnis
„ChuckALuck31NurWuerfelnMitKenntBeziehung“. Testen Sie zunächst diese
Implementierung. Beachten Sie, dass man hier nur Würfel A werfen kann.
Bauen Sie dann schrittweise diese Implementierung zu einer
Implementierung des gesamten Spiels aus. Berücksichtigen Sie zunächst
noch nicht den jeweiligen Spielzustand.
Berücksichtigen Sie in einem letzten Schritt den jeweiligen Spielzustand.
Eine vollständige Implementierung finden Sie im Verzeichnis
„ChuckALuck32GesamtesSpielMitKenntBeziehung“.
49
Aufgabe
Das Simulationsprogramm zum Chuck-A-Luck-Spiel soll jetzt wie folgt
verändert werden:
- Es werden gezinkte Würfel benutzt (die keine 6 ermöglichen).
- Der Spieleinsatz beträgt jetzt 2$, als Gewinne erhält man das 3-fache der
Anzahl der Treffer (in $) zurück.
- Die Würfel werden mit Hilfe von Bildern angezeigt.
Machen Sie sich zunächst klar, wo im bestehenden Programm die jeweiligen
Änderungen vorgenommen werden müssen (in einem gut strukturierten
objektorientierten Programm sollte das kein Problem sein). Nehmen Sie
dann die Änderungen schrittweise vor.
50
51
Teil 5
Übung: Uhr
52
Zielsetzung
Ziel ist es, mit Hilfe objektorientierter Modellierung ein System zu
entwickeln, mit dem eine einfache Uhr simuliert werden kann.
Nach: Barnes / Kölling: Objektorientierte Programmierung mit Java. Pearson Studium 2003.
53
Objekte und ihre Beziehung
Miniwelt
16:46
Modell
digitalUhr
hat
stundenZaehler
hat
minutenZaehler
Die Digitaluhr der Miniwelt soll mit Hilfe eines Objekts „digitalUhr“
beschrieben werden, das seine Operationen mit Hilfe von zwei von ihm
verwalteten Objekten „stundenZaehler“ und „minutenZaehler“ durchführt.
Klassenentwurf
54
TDigitalUhr
sZaehler: TModuloZaehler
mZaehler: TModuloZaehler
erzeugen
vernichten
setzen(sWert, mWert)
tick
rueckSetzen
...
TModuloZaeher
hat
- max: integer
- stand: integer
hat
+ create(maxWert: integer)
+ destroy
+ setStand(standWert: int.)
+ weiterZaehlen
+ nullSetzen
+ getStand: integer
digitalUhr
stundenZaehler
minutenZaehler
sZaehler =
mZaehler =
max = 23
stand = 16
max = 59
stand = 46
55
Aufgabe
Implementieren Sie das dargestellte (oder ein selbst entwickeltes) Modell.
56
Teil 6
Übung: Chiffriersystem
57
Zielsetzung
Ziel ist es, mit Hilfe objektorientierter Modellierung ein monoalphabetisches
Chiffriersystem zu entwickeln.
58
Der Chiffrieransatz
Der Benutzer gibt ein (langes) Schlüsselwort vor (z. B.
WEITERBILDUNGSKURSX), aus dem dann die Chiffriertabelle wie folgt
erzeugt wird. Man streicht zunächst alle mehrfach vorkommenden
Buchstaben (im Beispiel ergibt das WEITRBLDUNGSKSX). Diese Buchstaben
bilden den Anfang des Geheimtextalphabets. Dann füllt man ab der letzten
Stelle mit den noch zur Verfügung stehenden Buchstaben des Alphabets auf.
Klartextalphabet
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
W E I T R B L D U N G S K X Y Z A C F H J M O P Q V
Geheimtextalphabet
Objekte und ihre Beziehung
59
Schlüssel
Schlüssel
Miniwelt
WEITERBILDUNGSKURSX
SALVECAESAR
VDOYHFDHVDU
Quelltext
Geheimtext
SALVECAESAR
Quelltext
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
W E I T R B L D U N G S K X Y Z A C F H J M O P Q V
Modell
chiffrierer
hat
codierung
Klassenentwurf
60
TChiffrierer
quelltext
geheimtext
chluessel
codierung
TCodierung
code: array [‚A‘..‘Z‘] of char
hat
erzeugen
setSchluessel(...)
getSchluessel: ...
vorbereiten
verschluesseln
entschluesseln
...
chiffrierer
hat
erzeugen
setCode(s: string)
getCode: string
getGeheim(klar: char): char
getKlar(geheim: char): char
codierung
61
Aufgabe
Implementieren Sie das dargestellte (oder das selbst entwickelte) Modell.
62
Teil 7
Übung: Roboter
63
Zielsetzung
Ziel ist es, mit Hilfe objektorientierter Modellierung ein grafisches
Simulationsprogramm zu entwickeln, mit dem ein steuerbarer Modellroboter
in einem Zellengitter bewegt werden kann.
64
Identifikation von Objekten
Miniwelt
Norden
(6,4)
Westen
Osten
Süden
Modell
roboter
kennt
welt
Klassenentwurf
65
TRoboter
xPos
yPos
richtung
welt
erzeugen
initialisieren
schritt
linksDrehen
rechtsDrehen
markeSetzen
markeLoeschen
...
TWelt
kennt
marken: array [0..9] of
array [0..9] of boolean
ziegel: array [0..9] of
array [0..9] of integer
erzeugen
markeSetzen(x, y: integer)
markeLoeschen(x, y: integer)
ziegelHinlegen(x, y: integer)
ziegelAufheben(x, y: integer)
getMarke(x, y: integer): boolean
getZiegel(x, y: integer): integer
66
Aufgabe
Implementieren Sie das dargestellte (oder das selbst entwickelte) Modell.
67
Teil 8
UML-Editoren
68
UML-Editoren
UML-Editoren unterstützen den Entwickler beim Erstellen von Diagrammen.
(Beispiel: Violet)
69
UML-Werkzeuge
UML-Werkzeuge unterstützen den Entwickler auch beim Erstellen des
Quellcodes und der Dokumentation von Modellen. (Beispiel: UMLEd)
70
UML-Werkzeuge
Quellcode – erzeugt mit UMLEd:
UNIT mTWuerfel;
interface
uses
// Uses-Klausel ggf. anpassen
type
TWuerfel = CLASS
// Attribute
private
augen : integer;
//Objektbeziehungen
// Methoden
public
constructor create;
procedure werfen;
function getAugen : integer;
end;
...
71
UML-Werkzeuge
Dokumentation – erzeugt mit UMLEd:
Dokumentation der Klasse "TWuerfel"
Beschreibung der Klasse:
Attribute
augen : integer
beschreibt die aktuelle Augenzahl des Würfels
Protokoll der Dienste / Methoden
Konstruktor
create
Auftrag
werfen
aktiviert den Würfel so, dass (mit Hilfe des Zufallsgenerators) eine neue
Augenzahl erzeugt wird
Anfrage
getAugen : integer
72
Aufgabe
Testen Sie den UML-Editor „Violet“ und das UML-Werkzeug „UMLed“.
73
Teil 9
Zusammenfassung
Objektorientierung
74
Klasse
Grundkonzepte
Beziehung
Nachricht
Objekt
Grundideen
Modellierungssprache: UML
Implementierungssprache: Delphi, Java, ...
75
Idee: Objekt als Systemkomponente
Ein Objekt ist eine aktive und autonome
Programmeinheit, das für bestimmte Aufgaben
zuständig ist und diese in eigener Verantwortung
erledigt. Durch Nachrichten können Objekte andere
Objekte zur Erledigung von (Teil)Aufgaben
auffordern und somit gemeinsam die
Systemaktivitäten erzeugen.
76
Literaturhinweise
Es gibt eine Vielzahl von fachwissenschaftlichen Darstellungen zur
objektorientierten Modellierung und Programmierung. Hier wurden folgende
Lehrwerke benutzt:
- D. J. Barnes, M. Kölling: Objektorientierte Programmierung mit Java. Pearson Studium 2003.
- Helmut Balzert: Lehrbuch Grundlagen der Informatik. Spektrum Ak. Verlag 1999.
- Bernd Oestereich: Objektorientierte Softwareentwicklung. Oldenbourg 1998.
Dagegen gibt es nur wenige Schulbücher, die systematisch in die objektorientierte
Programmierung einführen, z. B.:
- Siegfried Spolwig: Objektorientierung im Informatikunterricht. Dümmler-Verlag
1997.
- P. Damann, J. Wemßen: Objektorientierte Programmierung mit Delphi, Band 2.
Klett-Verlag 2003.
Viele interessante Artikel mit Unterrichtsvorschlägen bzw. fachdidaktischen
Auseinandersetzungen findet man in der Zeitschrift LOG IN. Das Themenheft
128/129 ist speziell dem Thema „Objektorientiertes Modellieren und
Programmieren“ gewidmet.
...
77
Literaturhinweise
Im Internet findet man ebenfalls sehr viele schulgerechte Darstellungen der
objektorientierten Modellierung und Programmierung, z. B:
http://informatikag.bildung-rp.de/
Die AG-Informatik des LMZ in RLP stellt u. a. auch Fortbildungsmaterialien zu
diesem Thema bereit.
http://hsg.region-kaiserslautern.de/faecher/inf/index.php
Auf der Homepage des HSG in Kaiserslautern findet man Unterrichtsmaterialien und
Links zu weiteren interessanten Seiten.
...
Herunterladen