Upload
christoph-gieger
View
121
Download
6
Embed Size (px)
Citation preview
Grundkonzepte der objektorientierten Programmierung
Teil 2
Klaus Becker
2006
2 Objektorientierte Modellierung
1$ 1$ 1$ 1$1$ 1$ 1$
1$ 1$1
2
3
4
5
631$31$
Miniwelt
Modell
System
3 Teil 1
Beziehungen zwischen Objekten
4 Das Würfelspiel „chuck a luck“
1$ 1$ 1$ 1$1$ 1$ 1$
1$1$ 1$
1
2
3
4
5
6
Einsatz zahlen und Zahl tippen
Würfel werfen
Gewinn auszahlen
Einsatz: 1 $
3
Gewinn:
0 Treffer: 1 Treffer: Einsatz + 1 $
2 Treffer: Einsatz + 2 $3 Treffer: Einsatz + 3 $
1$
1$
1$1$
3
5 Zielsetzung
1$ 1$ 1$ 1$1$ 1$ 1$
1$ 1$1
2
3
4
5
631$31$ Miniwelt
System
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.
6 Lösungsansatz mit Modellierung
1$ 1$ 1$ 1$1$ 1$ 1$
1$ 1$1
2
3
4
5
631$31$ Miniwelt
System
Modell- Abbild der Miniwelt
- Vorlage für das System
Ansatz:Mit Hilfe eines Modells soll die Miniwelt zunächst programmiersprachen-unabhä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 zahlenZahl tippen (z. B. 2)Solange Würfel werfen, bis die getippte Zahl fälltGewinn mehrfach verbuchen
8
Zustandsbasierte Ablaufmodellierung
Auslösendes Ereignis
BEinsatzZahlen.onClick
RGSpielfeld.onClick
BWuerfelWerfen.onClick
BGewinnVerbuchen.onClick
Ausgelöste Aktion(en)
Einsatz vom Konto abbuchen
Spielzahl festlegen
Würfelwerfen simulieren
Gewinn ermitteln und auf dem Konto verbuchen
AktuellerZustand
bereit
einsatzgezahlt
gewürfelt
NeuerZustand
einsatzgezahlt
einsatzgezahlt
gewürfelt
bereit
Einsatz zahlen und Zahl tippen
Würfel werfen
Gewinn verbuchen
9 Spiel mit Spielmanager
1$ 1$ 1$ 1$1$ 1$ 1$
1$ 1$1
2
3
4
5
631$31$
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.
10 Spiel mit Spielmanager
spielbrett wuerfelA wuerfelB wuerfelC
zahl = 3 augen = 3 augen = 3 augen = 5
1$ 1$ 1$ 1$1$ 1$ 1$
1$ 1$1
2
3
4
5
631$31$
Miniwelt Modell
konto
stand = 9
spielmanager
...
Zuständigkeit:verwaltet den Spielzustand und erteilt die passenden Aufträge an die Spiel-Objekte
11
Spielmanager aktiviert Spiel-Objekte
Auslösendes Ereignis
BEinsatzZahlen.onClick
Ausgelöste Aktion(en)
Einsatz vom Konto abbuchen
AktuellerZustand
bereit
NeuerZustand
einsatzgezahlt
BEinsatzZahlen.OnClick [zustand = bereit]:
12
Spielmanager aktiviert Spiel-Objekte
RGSpielfeld.onClick [zustand = einsatzgezahlt]:
Auslösendes Ereignis
RGSpielfeld.onClick
Ausgelöste Aktion(en)
Spielzahl festlegen
AktuellerZustand
einsatzgezahlt
NeuerZustand
einsatzgezahlt
13
Spielmanager aktiviert Spiel-Objekte
BWuerfelWerfen.onClick [zustand = einsatzgezahlt]:
Auslösendes Ereignis
BWuerfelWerfen.onClick
Ausgelöste Aktion(en)
Würfelwerfen simulieren
AktuellerZustand
einsatzgezahlt
NeuerZustand
gewürfelt
14
Spielmanager aktiviert Spiel-Objekte
BGewinnVerbuchen.onClick [zustand = gewuerfelt]:
Auslösendes Ereignis
BGewinnVerbuchen.onClick
Ausgelöste Aktion(en)
Gewinn ermitteln und auf dem Konto verbuchen
AktuellerZustand
gewürfelt
NeuerZustand
bereit
15 Aktivierung von Objekten
Zustand vorher
Zustand nachher
abheben(1) Aktivierung durch eine Nachricht
konto
stand = 9
konto
stand = 9
konto
stand = 8
spielmanager
zustand = bereit
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.
16 Beziehung zwischen Objekten
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
wuerfelB
wuerfelC
kontospielmanagerkennt
kennt
kennt
spielbrettkennt
kennt
wuerfelA
wuerfelB
wuerfelC
kontospielmanager
spielbrett
hat
hat
hat
hat
hat
17 Hat-Beziehung / Komposition
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.
wuerfelA
wuerfelB
wuerfelC
kontospielmanagerhat
hat
hat
spielbrett
hat
hat
18 Kennt-Beziehung / Verbindung
wuerfelA
wuerfelB
wuerfelC
kontospielmanagerkennt
kennt
kennt
spielbrettkennt
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.
19 Modell mit Spielmanager
TSpielbretthat
TWuerfelhat
TWuerfelhat
TWuerfelhat
TKontohat
wuerfelA
wuerfelB
wuerfelC
kontospielmanager
spielbrett
hat
hat
hat
hat
hat
TSpielmanager
- zustand: ......
+ „erzeugen“+ „vernichten“+ einsatzZahlen+ spielzahlSetzen(z: int.)+ wuerfelWerfen+ gewinnVerbuchen+ getZustand: ......
20 Modell mit Spielmanager
TSpielbrettkennt
TWuerfelkennt
TWuerfelkennt
TWuerfelkennt
TKontokennt
wuerfelA
wuerfelB
wuerfelC
kontospielmanagerkennt
kennt
kennt
spielbrettkennt
kennt
TSpielmanager
- zustand: ......
+ „erzeugen“+ „vernichten“+ einsatzZahlen+ spielzahlSetzen(z: int.)+ wuerfelWerfen+ gewinnVerbuchen+ getZustand: ......
21 Teil 2
Objekte in Aktion
22 Zielsetzung
Ziel ist es, das Chuck-A-Luck-Spiel mit einem Spielmanager zu simulieren.
Beachte: In BlueJ werden Hat- und Kennt-Beziehung auf gleiche Weise mit Hilfe von Pfeilen dargestellt.
Kennt-BeziehungHat-Beziehung
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
30 Zielsetzung
spielmanager wuerfelA
instance of
zustand = ... augen = 3
Die Implementierung der Hat-Beziehung soll anhand eines Teilmodells des Gesamtmodells gezeigt werden. Wir verzichten vorerst auf die Verwaltung des Spielzustands.
TSpielmanager
- zustand: ......
+ create+ wuerfelWerfen...
TWuerfelhat
hat
instance of
Teil-Modell
erstellen
fertig
31 Referenzen schaffen Beziehungen
3A80
3A80
Speicheradresse
Referenzattribut
Mit Hilfe von Referenzattributen kann ein Objekt sich die Adressen seiner „Beziehungspartner“ merken.
32 Klasse mit Referenzattribut
3A80
3A80
Speicheradresse
Referenzattribut
TSpielmanager
- zustand: ...- wuerfelA: TWuerfel...
+ „erzeugen“+ „vernichten“+ einsatzZahlen+ spielzahlSetzen(z: int.)+ wuerfelWerfen+ gewinnVerbuchen+ getZustand: ......
Referenzattribut
Die Klasse TSpielmanager muss um Referenzattribute erweitert werden, mit deren Hilfe die Beziehungen zu anderen Objekten verwaltet werden.
33 Modellstruktur
wuerfelAspielmanagerhat
FGUIhat
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.
34
Modellklasse mit Referenzattributen
unit uSpielmanager;
interface
uses uWuerfel;
type
TSpielmanager = class private wuerfelA: TWuerfel; public constructor create; destructor destroy; override; ... end;
implementation
Einbindung der Klassen-Unit
Deklaration des Referenzattributs
TSpielmanager
- wuerfelA: TWuerfel...
...
35 Erzeugung des Würfel-Objekts
type TSpielmanager = class private wuerfelA: TWuerfel; public constructor create; destructor destroy; override; ... end;
implementationconstructor TSpielmanager.create;begin wuerfelA := TWuerfel.create;end;destructor TSpielmanager.destroy;begin wuerfelA.free;end;
wuerfelAspielmanagerhat
FGUIhat
Modellstruktur
36 Implementierung einer Nachricht
...
type TSpielmanager = class private wuerfelA: TWuerfel; public constructor create; destructor destroy; override; procedure wuerfelWerfen; ... end;
implementation
...
procedure TSpielmanager.wuerfelWerfen;begin wuerfelA.werfen;end;
Empfängerobjekt
Modellstruktur
wuerfelAspielmanagerwerfen
Nachricht
Senderobjekt-Klasse
Operation
wuerfelAspielmanagerhat
FGUIhat
37
Erzeugung des Spielmanager-Objekts
unit uGUI;
interface
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; ...
Modellstruktur
wuerfelAspielmanagerhat
FGUIhat
38 Zugriff auf Objekte
unit uGUI;
interface
...
implementation
{$R *.DFM}
procedure TGUI.BWerfenClick(Sender: TObject);begin // Aktualisierung der Modell-Objekte spielmanager.wuerfelWerfen; // Aktualisierung der Anzeige PWuerfelA.Caption := IntToStr(spielmanager.getWuerfelA);end;
...
Kein direkter Zugriff auf
wuerfelA möglich
wuerfelAspielmanagergetAugen
FGUIgetWuerfelA
Modellstruktur
NachrichtenNachrichten
wuerfelAspielmanagerhat
FGUIhat
39 Zugriff auf ein abhängiges Objekt
unit uGUI;
interface
...
implementation
{$R *.DFM}
procedure TGUI.BWerfenClick(...);begin // Aktualisierung der Modell-Objekte spielmanager.wuerfelWerfen; // Aktualisierung der Anzeige PWuerfelA.Caption := IntToStr(spielmanager.getWuerfelA);end;
Hilfsoperation
TSpielmanager
- wuerfelA: Wuerfel...
+ create+ destroy+ wuerfelWerfen...+ getWuerfelA: integer...
function TSpielmanager.getWuerfelA: integer;begin result := wuerfelA.getAugen;end;
wuerfelAspielmanagerhat
FGUIhat
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
42 Zielsetzung
spielmanager wuerfelA
instance of
zustand = ... augen = 3
Hier sollen die Ähnlichkeiten und Unterschiede zwischen einer Implementierung der Kennt-Beziehung und der Hat-Beziehung aufgezeigt werden.
TSpielmanager
- zustand: ......
+ create+ wuerfelWerfen...
TWuerfelkennt
kennt
instance of
Teil-Modell
43 Bekanntschaft durch Referenzen
Die Ausgangssituation bleibt gleich: Die Klasse TSpielmanager muss um Referenzattribute erweitert werden, mit deren Hilfe die Beziehungen zu anderen Objekten verwaltet werden.
3A80
3A80
Speicheradresse
Referenzattribut
TSpielmanager
- zustand: ...- wuerfelA: TWuerfel...
+ „erzeugen“+ „vernichten“+ einsatzZahlen+ spielzahlSetzen(z: int.)+ wuerfelWerfen+ gewinnVerbuchen+ getZustand: ......
Referenzattribut
44 Modellstruktur
wuerfelAspielmanagerFGUIhat
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.
kennt
45 Erzeugung der Objekte
unit uGUI;
interface
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
wuerfelAspielmanagerFGUIhat kennt
46 Erzeugung der Kennt-Referenz
spielmanager := TSpielmanager.create(wuerfelA);
3A80
3A80
3A803A80
3A80
constructor TSpielmanager.create(wA: TWuerfel);begin wuerfelA := wA;end;
3A80
47 Zugriff auf Objekte
unit uGUI;
interface
...
implementation
{$R *.DFM}
procedure TGUI.BWerfenClick(Sender: TObject);begin // Aktualisierung der Modell-Objekte spielmanager.wuerfelWerfen; // Aktualisierung der Anzeige PWuerfelA.Caption := IntToStr(wuerfelA.getAugen);end;
...
direkter Zugriff auf wuerfelA
möglich
Modellstruktur
Nachrichten
wuerfelAspielmanagerFGUIhat kennt
getAugen
wuerfelAspielmanagerFGUIwuerfelWerfen werfen
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
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.
16:46
stundenZaehler minutenZaehler
Modell
digitalUhr
hathat
54 Klassenentwurf
stundenZaehler
TModuloZaeher
- max: integer- stand: integer
+ create(maxWert: integer)+ destroy+ setStand(standWert: int.)+ weiterZaehlen+ nullSetzen+ getStand: integer
max = 23 stand = 16
minutenZaehler
max = 59 stand = 46
TDigitalUhr
sZaehler: TModuloZaehlermZaehler: TModuloZaehler
erzeugenvernichtensetzen(sWert, mWert)tickrueckSetzen...
digitalUhr
sZaehler =mZaehler =
hat
hat
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.
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
Klartextalphabet
Geheimtextalphabet
59 Objekte und ihre Beziehung
chiffrierer codierung
Modell
WEITERBILDUNGSKURSX
VDOYHFDHVDU
Geheimtext
Schlüssel
Quelltext
Schlüssel
Quelltext
SALVECAESARSALVECAESAR
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
Miniwelt
hat
60 Klassenentwurf
chiffrierer codierung
TCodierung
code: array [‚A‘..‘Z‘] of char
erzeugensetCode(s: string)getCode: stringgetGeheim(klar: char): chargetKlar(geheim: char): char
TChiffrierer
quelltextgeheimtextchluesselcodierung
erzeugensetSchluessel(...)getSchluessel: ...vorbereitenverschluesselnentschluesseln...
hat
hat
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
OstenWesten
Süden
Norden
(6,4)
roboter welt
Modellkennt
65 Klassenentwurf
TWelt
marken: array [0..9] of array [0..9] of booleanziegel: array [0..9] of array [0..9] of integer
erzeugenmarkeSetzen(x, y: integer)markeLoeschen(x, y: integer)ziegelHinlegen(x, y: integer)ziegelAufheben(x, y: integer)getMarke(x, y: integer): booleangetZiegel(x, y: integer): integer
TRoboter
xPosyPosrichtungwelt
erzeugeninitialisierenschrittlinksDrehenrechtsDrehenmarkeSetzenmarkeLoeschen...
kennt
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
74 Objektorientierung
GrundideenO
bje
kt
Nach
rich
t
Bezi
eh
un
g
Kla
sse
Modellierungssprache: UML
Implementierungssprache: Delphi, Java, ...
Grund-konzepte
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.
...