CPU-Scheduling - Grundkonzepte · Shortest Remaining Time First (SRTF)
Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.
-
Upload
christoph-gieger -
Category
Documents
-
view
121 -
download
6
Transcript of Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.
![Page 1: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/1.jpg)
Grundkonzepte der objektorientierten Programmierung
Teil 2
Klaus Becker
2006
![Page 2: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/2.jpg)
2 Objektorientierte Modellierung
1$ 1$ 1$ 1$1$ 1$ 1$
1$ 1$1
2
3
4
5
631$31$
Miniwelt
Modell
System
![Page 3: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/3.jpg)
3 Teil 1
Beziehungen zwischen Objekten
![Page 4: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/4.jpg)
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
![Page 5: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/5.jpg)
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.
![Page 6: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/6.jpg)
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.
![Page 7: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/7.jpg)
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
![Page 8: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/8.jpg)
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
![Page 9: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/9.jpg)
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.
![Page 10: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/10.jpg)
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
![Page 11: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/11.jpg)
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]:
![Page 12: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/12.jpg)
12
Spielmanager aktiviert Spiel-Objekte
RGSpielfeld.onClick [zustand = einsatzgezahlt]:
Auslösendes Ereignis
RGSpielfeld.onClick
Ausgelöste Aktion(en)
Spielzahl festlegen
AktuellerZustand
einsatzgezahlt
NeuerZustand
einsatzgezahlt
![Page 13: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/13.jpg)
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
![Page 14: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/14.jpg)
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
![Page 15: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/15.jpg)
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.
![Page 16: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/16.jpg)
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
![Page 17: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/17.jpg)
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
![Page 18: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/18.jpg)
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.
![Page 19: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/19.jpg)
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: ......
![Page 20: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/20.jpg)
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: ......
![Page 21: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/21.jpg)
21 Teil 2
Objekte in Aktion
![Page 22: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/22.jpg)
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
![Page 23: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/23.jpg)
23 Modell mit Hat-Beziehung
Schritt 1: Erzeugen Sie ein Objekt „GUI“ als Exemplar der Klasse „TGUI“.
![Page 24: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/24.jpg)
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.
![Page 25: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/25.jpg)
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.
![Page 26: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/26.jpg)
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.
![Page 27: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/27.jpg)
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.
![Page 28: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/28.jpg)
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.
![Page 29: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/29.jpg)
29 Teil 3
Implementierung der Hat-Beziehung
![Page 30: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/30.jpg)
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
![Page 31: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/31.jpg)
31 Referenzen schaffen Beziehungen
3A80
3A80
Speicheradresse
Referenzattribut
Mit Hilfe von Referenzattributen kann ein Objekt sich die Adressen seiner „Beziehungspartner“ merken.
![Page 32: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/32.jpg)
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.
![Page 33: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/33.jpg)
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.
![Page 34: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/34.jpg)
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...
...
![Page 35: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/35.jpg)
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
![Page 36: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/36.jpg)
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
![Page 37: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/37.jpg)
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
![Page 38: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/38.jpg)
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
![Page 39: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/39.jpg)
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
![Page 40: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/40.jpg)
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“.
![Page 41: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/41.jpg)
41 Teil 4
Implementierung einer Kennt-Beziehung
![Page 42: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/42.jpg)
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
![Page 43: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/43.jpg)
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
![Page 44: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/44.jpg)
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
![Page 45: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/45.jpg)
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
![Page 46: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/46.jpg)
46 Erzeugung der Kennt-Referenz
spielmanager := TSpielmanager.create(wuerfelA);
3A80
3A80
3A803A80
3A80
constructor TSpielmanager.create(wA: TWuerfel);begin wuerfelA := wA;end;
3A80
![Page 47: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/47.jpg)
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
![Page 48: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/48.jpg)
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“.
![Page 49: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/49.jpg)
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.
![Page 50: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/50.jpg)
50
![Page 51: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/51.jpg)
51 Teil 5
Übung: Uhr
![Page 52: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/52.jpg)
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.
![Page 53: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/53.jpg)
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
![Page 54: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/54.jpg)
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
![Page 55: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/55.jpg)
55 Aufgabe
Implementieren Sie das dargestellte (oder ein selbst entwickeltes) Modell.
![Page 56: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/56.jpg)
56 Teil 6
Übung: Chiffriersystem
![Page 57: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/57.jpg)
57 Zielsetzung
Ziel ist es, mit Hilfe objektorientierter Modellierung ein monoalphabetisches Chiffriersystem zu entwickeln.
![Page 58: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/58.jpg)
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
![Page 59: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/59.jpg)
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
![Page 60: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/60.jpg)
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
![Page 61: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/61.jpg)
61 Aufgabe
Implementieren Sie das dargestellte (oder das selbst entwickelte) Modell.
![Page 62: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/62.jpg)
62 Teil 7
Übung: Roboter
![Page 63: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/63.jpg)
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.
![Page 64: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/64.jpg)
64 Identifikation von Objekten
Miniwelt
OstenWesten
Süden
Norden
(6,4)
roboter welt
Modellkennt
![Page 65: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/65.jpg)
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
![Page 66: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/66.jpg)
66 Aufgabe
Implementieren Sie das dargestellte (oder das selbst entwickelte) Modell.
![Page 67: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/67.jpg)
67 Teil 8
UML-Editoren
![Page 68: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/68.jpg)
68 UML-Editoren
UML-Editoren unterstützen den Entwickler beim Erstellen von Diagrammen. (Beispiel: Violet)
![Page 69: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/69.jpg)
69 UML-Werkzeuge
UML-Werkzeuge unterstützen den Entwickler auch beim Erstellen des Quellcodes und der Dokumentation von Modellen. (Beispiel: UMLEd)
![Page 70: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/70.jpg)
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;
...
![Page 71: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/71.jpg)
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
![Page 72: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/72.jpg)
72 Aufgabe
Testen Sie den UML-Editor „Violet“ und das UML-Werkzeug „UMLed“.
![Page 73: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/73.jpg)
73 Teil 9
Zusammenfassung
![Page 74: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/74.jpg)
74 Objektorientierung
GrundideenO
bje
kt
Nach
rich
t
Bezi
eh
un
g
Kla
sse
Modellierungssprache: UML
Implementierungssprache: Delphi, Java, ...
Grund-konzepte
![Page 75: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/75.jpg)
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.
![Page 76: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/76.jpg)
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.
...
![Page 77: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.](https://reader031.fdokument.com/reader031/viewer/2022020718/55204d7549795902118ca1a6/html5/thumbnails/77.jpg)
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.
...