![Page 1: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/1.jpg)
Grundkonzepte der objektorientierten Programmierung
Klaus Becker
2004
![Page 2: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/2.jpg)
2 Objektorientierung
Grundideen
Grundkonzepte
...Ob
jekt
Kla
sse
Nach
rich
t
Ass
ozi
ati
on
Modellierungssprache: UML
Implementierungssprache: Delphi, Java, ...
![Page 3: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/3.jpg)
3 Teil 1
Objekt-basierte Programmierung
![Page 4: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/4.jpg)
4 Fallstudie: chuck a luck
Ziel ist es, ein System zu entwickeln, mit dem das in Amerika weit verbreitete Würfelspiel „chuck a luck“ am Rechner gespielt werden kann.
![Page 5: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/5.jpg)
5 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 6: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/6.jpg)
6 Eine erste objektbasierte Lösung
Im Verzeichnis „ChuckALuck0“ finden Sie ein erstes Programm zur Realisierung des Spiels.
![Page 7: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/7.jpg)
7 Eine erste objektbasierte Lösung
Die Benutzungsoberfläche wird mit Hilfe von sog. GUI-Objekten (Graphical User Interface) aufgebaut. Für die Ausführung des Spiels ist das TButton-Objekt „BWerfen“ zuständig.
PTitel: TPanel
RGSpielbrett: TRadioGroup
GBWuerfel: TGroupBox
GBKonto: TGroupBox
PKonto: TPanel
BWerfen: TButton
PWuerfelA: TPanel
Form1: TForm1
![Page 8: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/8.jpg)
8 Eine erste objektbasierte Lösung
procedure TGUI.BSpielenClick(Sender: TObject); var wuerfelA, wuerfelB, wuerfelC, konto, spielzahl: integer; richtige: integer;begin// Durchführung des Spielsspielzahl := RGSpielbrett.ItemIndex+1;konto := StrToInt(PKonto.Caption);konto := konto-1;wuerfelA := random(6)+1;wuerfelB := random(6)+1;wuerfelC := random(6)+1;richtige := 0;if spielzahl = wuerfelA then inc(richtige);if spielzahl = wuerfelB then inc(richtige);if spielzahl = wuerfelC then inc(richtige);if richtige > 0 then konto := konto+(richtige+1);// Aktualisierung der AnzeigePWuerfelA.Caption := IntToStr(wuerfelA);PWuerfelB.Caption := IntToStr(wuerfelB);PWuerfelC.Caption := IntToStr(wuerfelC);PKonto.Caption := IntToStr(konto);end;
Variablen zur Repräsentation der Spielinformationen
![Page 9: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/9.jpg)
9 Bemerkungen
Das Programm im Verzeichnis „ChuckALuck0“ ist ad hoc entwickelt worden (d. h. Benutzungsoberfläche zusammenstellen; Ereignisbehandlung ergänzen). Für kleinere Anwendungen kann man auf diese Weise schnell zu einem lauffähigen System kommen. Bei größeren Anwendungen versagt in der Regel die ad-hoc-Methode. Man benötigt dann Methoden zur systematischen Entwicklung von Software. Ziel soll es sein, die objektorientierte Methode anhand des ChuckALuck-Beispiels Schritt für Schritt zu entwickeln.
![Page 10: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/10.jpg)
10
![Page 11: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/11.jpg)
11 Teil 2
Objektorientierte Modellierung
![Page 12: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/12.jpg)
12 Modellierung
1$ 1$ 1$ 1$1$ 1$ 1$
1$ 1$1
2
3
4
5
631$31$
- Abbild der Miniwelt
- Vorlage für das System
Miniwelt
Modell
Informatisches System
![Page 13: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/13.jpg)
13 Vom Gegenstand der Miniwelt ...
Sichtweise: Die Miniwelt ist aus Gegenständen aufgebaut. Gegenstände können Personen, Dinge, Sachverhalte, Ereignisse, ... sein. Jeder Gegenstand stellt eine autonome Einheit mit klar begrenzten Zuständigkeiten dar.
1$ 1$ 1$ 1$1$ 1$ 1$
1$ 1$1
2
3
4
5
631$31$
WürfelSpielbrett Konto
![Page 14: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/14.jpg)
14 ... zum Objekt im Modell
Grundidee der objektorientierten Modellierung: Die Gegenstände der Miniwelt werden mit Hilfe von Objekten im Sinne der Informatik beschrieben.
wuerfelA wuerfelB wuerfelCspielbrett konto
1$ 1$ 1$ 1$1$ 1$ 1$
1$ 1$1
2
3
4
5
631$31$
Miniwelt
Modell
Gegenstand
Objekt
![Page 15: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/15.jpg)
15 Struktur eines Gegenstandes
Eigenschaft: Augen
Operation: werfen
Eigenschaft: Zahl
Operation: Tipp setzen
Eigenschaft: Stand
Operationen:Betrag einzahlenBetrag abheben
1$ 1$ 1$ 1$1$ 1$ 1$
1$ 1$1
2
3
4
5
631$31$
MiniweltGegenstand
WürfelSpielbrett Konto
Sichtweise: Gegenstände der Miniwelt haben charakteristische Eigenschaften. Mit den Gegenständen kann man bestimmte Operationen ausführen.
![Page 16: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/16.jpg)
16 Attribute
wuerfelA wuerfelB wuerfelCspielbrett konto
Die charakteristischen Eigenschaften eines Objekts werden mit Attributen erfasst. Die Gesamtheit der Attributwerte legt den Objektzustand fest.
augen = 3 augen = 3 augen = 5zahl = 3 stand = 9
1$ 1$ 1$ 1$1$ 1$ 1$
1$ 1$1
2
3
4
5
631$31$
Gegenstand
Eigenschaft: Zahl
Operation: Tipp setzen
Eigenschaft: Augen
Operation: werfen
Eigenschaft: Stand
Operationen:Betrag einzahlenBetrag abheben
Objekt
Attribut
Miniwelt
Modell
![Page 17: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/17.jpg)
17 Methoden
Das Verhalten eines Objekts wird mit Operationen / Methoden erfasst. Diese bestimmen die dynamischen Eigenschaften eines Objekts.
1$ 1$ 1$ 1$1$ 1$ 1$
1$ 1$1
2
3
4
5
631$31$Miniwelt
Gegenstand
Objekt
Eigenschaft: Zahl
Operation: Tipp setzen
Eigenschaft: Augen
Operation: werfen
Eigenschaft: Stand
Operationen:Betrag einzahlenBetrag abheben
spielbrett
zahl = 3
setzen(tipp)
wuerfelA wuerfelB wuerfelC
augen = 3 augen = 3 augen = 5
werfen werfen werfen
konto
stand = 9
abheben(betrag)einzahlen(betrag)
Modell
Methode
![Page 18: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/18.jpg)
18 Klassen
Gleich strukturierte Objekte werden einer Klasse zugeordnet.
spielbrett
zahl = 3
setzen(tipp)
wuerfelA wuerfelB wuerfelC
augen = 3 augen = 3 augen = 5
werfen werfen werfen
konto
stand = 9
abheben(betrag)einzahlen(betrag)
TWuerfelTSpielbrett TKonto
augenzahl stand
werfensetzen(tipp) abheben(betrag)einzahlen(betrag)
Modell
Objekt
Klasse
![Page 19: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/19.jpg)
19 Klassen
Klassen sind Baupläne für Objekte. Objekte werden als Exemplare (Instanzen) von Klassen bezeichnet.
spielbrett
setzen(tipp)
wuerfelA wuerfelB wuerfelC
werfen werfen werfen
konto
abheben(betrag)einzahlen(betrag)
TWuerfelTSpielbrett TKonto
augenzahl stand
werfensetzen(tipp) abheben(betrag)einzahlen(betrag)
Modell
Objekt
Klasse
instance ofinstance of instance of
zahl = 3 augen = 3 augen = 3 augen = 5 stand = 9
![Page 20: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/20.jpg)
20 Erstes objektorientiertes Modell
spielbrett wuerfelA wuerfelB wuerfelC konto
TWuerfelTSpielbrett TKonto
augenzahl stand
werfensetzen(tipp) abheben(betrag)einzahlen(betrag)
instance ofinstance of instance of
zahl = 3 augen = 3 augen = 3 augen = 5 stand = 9
1$ 1$ 1$ 1$1$ 1$ 1$
1$ 1$1
2
3
4
5
631$31$
Miniwelt Modell
![Page 21: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/21.jpg)
21 Konstruktoren / Destruktoren
spielbrett wuerfelB konto
TWuerfelTSpielbrett TKonto
augenzahl stand
erzeugenvernichtenabheben(betrag)einzahlen(betrag)
Modell
Objekt
Klasse
instance of
zahl = ... augen = 3 stand = 9
erzeugenvernichtensetzen(tipp)
erzeugenvernichtenwerfen
instance of instance of
Konstruktoren / Destruktoren sind spezielle Operationen zur Erzeugung / Vernichtung von Objekten. Beachte: Konstruktoren / Destruktoren sind Klassenmethoden (d. h. Objekte verfügen nicht über diese Methoden).
![Page 22: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/22.jpg)
22 Datenkapselung
Geheimnisprinzip:Die für die Benutzung einer Systemkomponente (eines Moduls) nicht benötigten Detailinformationen werden verborgen.
TKonto
stand
erzeugenvernichtenabheben(betrag)einzahlen(betrag)
Datenkapselung bei Objekten / Klassen:Die innere Struktur eines Objekts (Aufbau über Attribute) wird verborgen. Objekte stellen Dienste nur über ihre Operationen / Methoden bereit.
verborgen
Zugriff erlaubt
![Page 23: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/23.jpg)
23 Zugriffsmethoden
Um weiterhin auf Attributwerte (lesend bzw. schreibend) zugreifen zu können, werden spezielle Zugriffsmethoden benötigt.
TKonto
stand
erzeugenvernichtenabheben(betrag)einzahlen(betrag)„stand erfragen“„stand setzen“
TKonto
stand
erzeugenvernichtenabheben(betrag)einzahlen(betrag)
TKonto
stand
erzeugenvernichtenabheben(betrag)einzahlen(betrag)
Zugriffsmethoden
![Page 24: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/24.jpg)
24 Schnittstellenspezifikation
Die Benutzungsschnittstelle einer Klasse muss genau festgelegt werden.
• Zugriffsrechte (- kein Zugriff; + Zugriff erlaubt)
• Datentypen (und eventuelle Initialisierungswerte)
• Signaturen (Parameter und bei Funktionen der Ergebnistyp)
TKonto
stand
erzeugenvernichtenabheben(betrag)einzahlen(betrag)„stand erfragen“„stand setzen“
TKonto
– stand: integer
+ create(betrag: integer)+ destroy+ abheben(betrag: integer)+ einzahlen(betrag: int.)+ getStand: integer+ setStand(betrag: integer)
![Page 25: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/25.jpg)
25 UML
wuerfelA wuerfelB wuerfelC
augen = 3 augen = 3 augen = 5
instance of
UML-Klassendiagram
m
UML-Objektdiagramm
UML (Unified Modeling Language):
Grafische Sprache zur Beschreibung objektorientierter Modelle
TWuerfel
augen
erzeugenvernichtenwerfen
![Page 26: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/26.jpg)
26 UML-Editoren
Mit Hilfe von UML-Editoren (wie z. B. Violet) lassen sich UML-Modelle leicht erstellen.
![Page 27: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/27.jpg)
27 Aufgabe
Erstellen Sie mit Hilfe des UML-Editors „Violet“ ein Objekt- und ein Klassendiagramm zur Beschreibung der ChuckALuck-Miniwelt.
Beachte: Mit Hilfe von Violet können Objekt- und Klassendiagramme nur getrennt erstellt werden.
Ergänzen Sie auch passende Datentypen.
![Page 28: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/28.jpg)
28 Lösung
UML-Objektdiagramm:
UML-Klassendiagramm (Feinfassung):
![Page 29: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/29.jpg)
29 Teil 3
Vom Modell zum Programm
![Page 30: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/30.jpg)
30 Zielsetzung
Ziel ist es, ein System zur Simulation des ChuckALuck-Spiels auf der Basis des entwickelten objektorientierten Modells zu erstellen.
1$ 1$ 1$ 1$1$ 1$ 1$
1$ 1$1
2
3
4
5
631$31$
Miniwelt
Modell
System
![Page 31: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/31.jpg)
31 Teilmodell
Teil-Modell
wuerfelA wuerfelB wuerfelC
instance of
augen = 3 augen = 3 augen = 5
Die Implementierung eines objektorientierten Modells soll anhand eines Teilmodells des Gesamtmodells gezeigt werden.
TWuerfel
– augen: integer
+ create+ destroy+ werfen+ getAugen: integer
![Page 32: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/32.jpg)
32 Die Klasse als Modul
Klassen werden als Module (Programmeinheiten) implementiert, die in Delphi in zwei Teilen beschrieben werden:
Der öffentliche Teil besteht aus den Vereinbarungen, die zur Benutzung des Moduls notwendig sind (Schnittstelle).Der private Teil besteht aus den Implementierungsdetails, die für die Benutzung nicht benötigt werden.
unit uWuerfel;
interface
// Deklaration der // Attribute und Operationen
implementation
// Implementierung der // Operationen
end.
TWuerfel
– augen: integer
+ create+ destroy+ werfen+ getAugen: integer
![Page 33: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/33.jpg)
33 Implementierung von Klassen
unit uWuerfel;
interface
type TWuerfel = class
private augen: integer;
public constructor create; destructor destroy; procedure werfen; function getAugen: integer;
end;
...
TWuerfel
– augen: integer
+ create+ destroy+ werfen+ getAugen: integer
Deklaration der Attribute und Operationen
![Page 34: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/34.jpg)
34 Implementierung von Klassen
unit uWuerfel;
interface
...
implementation
constructor TWuerfel.create;beginaugen := 1;randomize;end;
destructor TWuerfel.destroy;beginend;
...
Implementierung der Konstruktoren /
Destruktoren
![Page 35: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/35.jpg)
35 Implementierung von Klassen
unit uWuerfel;
interface
...
implementation
...
procedure TWuerfel.werfen;beginaugen := random(6)+1;end;
function TWuerfel.getAugen: integer;beginresult := augen;end;
end.
Implementierung der Operationen
![Page 36: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/36.jpg)
36 Einbindung einer Modellklasse
unit uGUI;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, uWuerfel;
type
TForm1 = class(TForm) ...
Bekanntmachen der Klassen
![Page 37: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/37.jpg)
37 Deklaration eines Objekts
...
type
TForm1 = class(TForm) PTitel: TPanel; RGSpielbrett: TRadioGroup; GBWuerfel: TGroupBox; GBKonto: TGroupBox; PWuerfelA: TPanel; PWuerfelB: TPanel; PWuerfelC: TPanel; PKonto: TPanel; BSpielen: TButton; procedure FormCreate(Sender: TObject); procedure BSpielenClick(Sender: TObject);
private { Private-Deklarationen } wuerfelA: TWuerfel;
public { Public-Deklarationen }
end;
Deklaration eines GUI-Objekts
Deklaration eines Modell-Objekts
![Page 38: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/38.jpg)
38 Erzeugung eines Modell-Objekts
unit uGUI;
interface
...
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);beginwuerfelA := TWuerfel.create;end;
procedure TForm1.BSpielenClick(Sender: TObject);...
end.
Erzeugung eines Modell-Objekts
![Page 39: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/39.jpg)
39 Aktivierung eines Modell-Objekts
procedure TForm1.BSpielenClick(Sender: TObject);
Begin
// Aktivierung des Modell-Objekts wuerfelA.werfen;
// Aktualisierung der AnzeigePWuerfelA.Caption := IntToStr(wuerfelA.getAugen);
end;
![Page 40: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/40.jpg)
40 Aufgabe
Kopieren Sie die Dateien aus dem Verzeichnis ChuchALuck0 in einen neuen Ordner.
Implementieren und testen Sie Schritt für Schritt die Klassen TWuerfel, TKonto und TSpielzahl.
Erstellen Sie ein objektorientiertes Programm zur Simulation des ChuckALuck-Spiels. Eine vollständige Lösung finden Sie im Verzeichnis „ChuckALuck1“.
![Page 41: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/41.jpg)
41 Lösung
procedure TGUI.BSpielenClick(Sender: TObject);
var tipp, zahl, richtige: integer;
Begintipp := RGSpielbrett.ItemIndex+1;// Aktivierung der Modell-Objektekonto.abheben(1);spielbrett.setzen(tipp);wuerfelA.werfen;wuerfelB.werfen;wuerfelC.werfen;richtige := 0;zahl := spielbrett.getZahl;if zahl = wuerfelA.getAugen then inc(richtige);if zahl = wuerfelB.getAugen then inc(richtige);if zahl = wuerfelC.getAugen then inc(richtige);if richtige > 0 then konto.einzahlen(richtige+1);// Aktualisierung der AnzeigePWuerfelA.Caption := IntToStr(wuerfelA.getAugen);PWuerfelB.Caption := IntToStr(wuerfelB.getAugen);PWuerfelC.Caption := IntToStr(wuerfelC.getAugen);PKonto.Caption := IntToStr(konto.getStand);end;
![Page 42: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/42.jpg)
42
![Page 43: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/43.jpg)
43 Teil 4
Komplexe Objektstruktur
![Page 44: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/44.jpg)
44 Ereignissteuerung bisher
Auslösende Aktion Ausgelöste Aktion
Mausklick auf den „werfen“-Button
Der vom Benutzer eingestellte Tipp am Spielbrett wird übernommen.
Das Spiel wird mit diesem Tipp durchgeführt.
Die Ergebnisse des Spiels (Würfelergebnisse, neuer Kontostand) werden angezeigt.
![Page 45: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/45.jpg)
45 Ereignissteuerung jetzt
Auslösende Aktion Ausgelöste Aktion
Mausklick auf den „werfen“-Button
Die Würfel werden geworfen.
Mausklick auf den „aktualisieren“-Button
Der Gewinn wird ermittelt und auf dem Konto eingezahlt.
Mausklick auf einen Radio-Button
Der Einsatz wird vom Konto abgehoben. Die gewählte Zahl wird gesetzt.
![Page 46: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/46.jpg)
46 Ereignissteuerung jetzt
Aktionen
Solange würfeln, bis genug „Treffer“ erzielt sind.
Gewinn auszahlen lassen.
Zahl auf dem Spielbrett festlegen
Achtung, Fehlbedienun
g möglich!
![Page 47: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/47.jpg)
47 Komplexere Ereignissteuerung
Auslösende Aktion:
RadioGroupButton anklicken
RadioGroupButton anklicken
Button „werfen“ anklicken
Button „aktualisieren“ anklicken
Ausgelöste Aktion:
Tipp setzenKonto abbuchen
Tipp setzen
Würfel werfen
Konto aktualisieren
Zustand:
bereit
gesetzt
gesetzt
gewürfelt
Neuer Zustand:
gesetzt
gesetzt
gewürfelt
bereit
[1][2]... / Tipp setzen; Konto
abbuchen
bereitz0
gesetztz1
[1][2]... / Tipp setzen
[aktualisieren] / Konto aktualisieren
[werfen] / Würfel werfen
gewürfeltz2
![Page 48: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/48.jpg)
48 Spielsteuerung
Die Steuerung des Spiels soll 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.
Auslösende Aktion:
RadioGroupButton anklicken
RadioGroupButton anklicken
Button „werfen“ anklicken
Button „aktualisieren“ anklicken
Ausgelöste Aktion:
Tipp setzenKonto abbuchen
Tipp setzen
Würfel werfen
Konto aktualisieren
Zustand:
bereit
gesetzt
gesetzt
gewürfelt
Neuer Zustand:
gesetzt
gesetzt
gewürfelt
bereit
![Page 49: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/49.jpg)
49 Modellierung
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
zustand = 0
![Page 50: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/50.jpg)
50 Aktivierung von Objekten
Zustand vorher
Zustand nachher
abheben(1) Aktivierung durch eine Nachricht
konto
stand = 9
konto
stand = 9
konto
stand = 8
Sichtweise:
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.
spielmanager
zustand = 0
![Page 51: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/51.jpg)
51 Das Spiel als Nachrichtenaustausch
UML-Kollaborationsdiagra
mm
wuerfelA
wuerfelB
wuerfelC
konto spielmanager1: abheben(1)
spielbrett2: setzen(tipp)
RadioGroupButton anklicken im Zustand „bereit“:
spielbrettSetzen(tipp)
![Page 52: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/52.jpg)
52 Das Spiel als Nachrichtenaustausch
wuerfelA
wuerfelB
wuerfelC
konto spielmanager 2: werfen
1: werfen
3: werfen
spielbrett
Button [werfen] anklicken im Zustand „gesetzt“:
wuerfelWerfen
![Page 53: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/53.jpg)
53 Das Spiel als Nachrichtenaustausch
wuerfelA
wuerfelB
wuerfelC
konto spielmanager
spielbrett
3: getAugen 5: [richtige > 0] einzahlen(richtige+1)
2: getAugen
4: getAugen
1: zahl getZahl
Button [aktualisieren] anklicken im Zustand „gewürfelt“:
kontoAktualisieren
![Page 54: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/54.jpg)
54 Das Spiel als Nachrichtenaustausch
UML-Kollaborationsdiagra
mm
konto spielmanager1: abheben(1)
spielbrett2: setzen(tipp)
RadioGroupButton anklicken im Zustand „bereit“:
UML-Sequenzdiagramm
![Page 55: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/55.jpg)
55 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
konto spielmanager
spielbrett
3: getAugen 5: [richtige > 0] einzahlen(richtige+1)
2: getAugen
4: getAugen
1: zahl getZahl
kontoAktualisieren
![Page 56: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/56.jpg)
56 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 57: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/57.jpg)
57 Hat-Beziehung / Komposition
Bei dieser Struktur geht man davon aus, dass ein Objekt ein anderes besitzt, d. h. es hat die vollständige Kontrolle über dieses Objekt. Bei einer solchen Zerlegung trägt das Ganze die Verantwortung für die Teilobjekte, die Existenz eines Teilobjekts hängt unmittelbar von der Existenz des Ganzen ab. Man spricht von einer Hat-Beziehung zwischen dem Ganzen und seinen Teilen.
wuerfelA
wuerfelB
wuerfelC
kontospielmanagerhat
hat
hat
spielbrett
hat
hat
![Page 58: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/58.jpg)
58 Modell mit Spielmanager
TSpielmanager
- zustand: integer...
+ create(...)+ spielbrettSetzen(z: int.)+ wuerfelWerfen+ kontoAktualisieren+ getZustand: integer
TSpielbrettkennt
TWuerfelkennt
TWuerfelkennt
TWuerfelkennt
TKontokennt
wuerfelA
wuerfelB
wuerfelC
kontospielmanagerkennt
kennt
kennt
spielbrettkennt
kennt
![Page 59: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/59.jpg)
59 Modell mit Spielmanager
TSpielmanager
- zustand: integer...
+ create(...)+ spielbrettSetzen(z: int.)+ wuerfelWerfen+ kontoAktualisieren+ getZustand: integer...
TSpielbretthat
TWuerfelhat
TWuerfelhat
TWuerfelhat
TKontohat
wuerfelA
wuerfelB
wuerfelC
kontospielmanager
spielbrett
hat
hat
hat
hat
hat
![Page 60: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/60.jpg)
60 Exkurs: Beziehungsarten
TKontoTSpielmanagerkennt
hat
TSpielmanager TKonto
TFormTForm1ist
Kennt-Beziehung: Verbindung
Hat-Beziehung: Komposition
Ist-Beziehung: Verfeinerung; Vererbung
![Page 61: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/61.jpg)
61 Exkurs: Kardinalitäten
TWuerfel
TKonto
TSpielmanagerkennt kennt
TSpielbrett
kennt3
1
1
3: Ein Spielmanager-Objekt steht in Beziehung zu 3 Wuerfel-Objekten.
Kardinalitätsangaben:
Kardinalität: legt die Wertigkeit einer Beziehung fest.
Beziehung zu genau einem ObjektKlasse 1
Beziehung zu beliebig vielen ObjektenKlasse *
Beziehung zu höchstens einem ObjektKlasse 0..1
Beziehung zu mindestens einem ObjektKlasse 1..*
![Page 62: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/62.jpg)
62 Aufgabe
Erstellen Sie mit Violet zu einem der gezeigten UML-Kollaborationsdiagramme ein entsprechendes UML-Sequenzdiagramm.
![Page 63: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/63.jpg)
63 Teil 5
Implementierung einer Hat-Beziehung
![Page 64: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/64.jpg)
64 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: integer...
+ create+ wuerfelWerfen...
TWuerfelhat
hat
instance of
Teil-Modell
erstellen
fertig
![Page 65: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/65.jpg)
65 Referenzen schaffen Beziehungen
Referenzattribut
Zeiger (Adresse)
2091
2091
![Page 66: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/66.jpg)
66 Referenzen schaffen Beziehungen
Referenzattribute
Mit Hilfe von Referenzattributen kann ein Objekt sich die Adressen seiner „Beziehungspartner“ merken.
TSpielmanager
- zustand: integer- wuerfelA: TWuerfel- wuerfelB: TWuerfel- wuerfelC: TWuerfel- spielbrett: TSpielbrett- konto: TKonto
...
![Page 67: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/67.jpg)
67
Modellklasse mit Referenzattributen
unit uSpielmanager;
interface
uses uWuerfel, uKonto, uSpielbrett;
type
TSpielmanager = class(TObject) private zustand: integer; wuerfelA: TWuerfel; wuerfelB: Twuerfel; wuerfelC: TWuerfel; konto: TKonto; spielbrett: TSpielbrett; public constructor create; destructor destroy; override; ... end;
implementation
Bekanntmachen der Klassen
Deklaration der Referenzattribute
TSpielmanager
- zustand: integer- wuerfelA: TWuerfel- wuerfelB: TWuerfel- wuerfelC: TWuerfel- spielbrett: TSpielbrett- konto: TKonto
...
![Page 68: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/68.jpg)
68 Erzeugung des Würfel-Objekts
type TSpielmanager = class(TObject) private wuerfelA: TWuerfel; public constructor create; destructor destroy; override; ... end;implementationconstructor TSpielmanager.create;begininherited create;wuerfelA := TWuerfel.create;end;destructor TSpielmanager.destroy;beginwuerfelA.free;inherited destroy;end;
Modellstruktur
wuerfelAspielmanagerhat
Bei dieser Struktur geht man davon aus, dass ein Objekt ein anderes besitzt, d. h. es hat die vollständige Kontrolle über dieses Objekt. Bei einer solchen Zerlegung trägt das Ganze die Verantwortung für die Teilobjekte, die Existenz eines Teilobjekts hängt unmittelbar von der Existenz des Ganzen ab. Man spricht von einer Hat-Beziehung zwischen dem Ganzen und seinen Teilen.
Siehe Delphi-Hilfe
Siehe Delphi-Hilfe
![Page 69: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/69.jpg)
69 Implementierung einer Nachricht
...
type TSpielmanager = class(TObject) private wuerfelA: TWuerfel; public constructor create; destructor destroy; override; procedure wuerfelWerfen; ... end;
implementation
...
procedure TSpielmanager.wuerfelWerfen;beginwuerfelA.werfen;end;
Empfängerobjekt
wuerfelAspielmanagerhat
Modellstruktur
wuerfelAspielmanagerwerfen
Nachricht
Senderobjekt-Klasse
Operation
![Page 70: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/70.jpg)
70
Erzeugung des Spielmanager-Objekts
unit uGUI;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, uSpielmanager;
type TForm1 = class(TForm) ... private { Private-Deklarationen } spielmanager: TSpielmanager; public { Public-Deklarationen } end;
implementation{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);beginspielmanager := TSpielmanager.create;end; ...
wuerfelAspielmanagerhat
Modellstruktur
![Page 71: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/71.jpg)
71 Zugriff auf abhängiges Objekt
unit uGUI;
interface
...
implementation
{$R *.DFM}
procedure TGUI.BWerfenClick(Sender: TObject);begin// Aktualisierung der Modell-Objektespielmanager.wuerfelWerfen;// Aktualisierung der AnzeigePWuerfelA.Caption := IntToStr(spielmanager.getWuerfelA);end;
...
Kein direkter Zugriff auf
wuerfelA möglich
wuerfelAspielmanagergetAugen
form1getWuerfelA
wuerfelAspielmanagerhat
Modellstruktur
Nachrichten
form1
Nachrichten
kennt
![Page 72: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/72.jpg)
72 Zugriff auf abhängiges Objekt
unit uGUI;
interface
...
implementation
{$R *.DFM}
procedure TGUI.BWerfenClick(...);begin// Aktualisierung der Modell-Objektespielmanager.wuerfelWerfen;// Aktualisierung der AnzeigePWuerfelA.Caption := IntToStr(spielmanager.getWuerfelA);end;
wuerfelAspielmanagerhat
Hilfsoperation
TSpielmanager
- wuerfelA: Wuerfel...
+ create+ destroy+ wuerfelWerfen...+ getWuerfelA: integer...
function TSpielmanager.getWuerfelA: integer;beginresult := wuerfelA.getAugen;end;
![Page 73: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/73.jpg)
73 Aufgabe
Die gezeigte Implementierung des Teilmodells „Spielmanager hat Wuerfel“ finden Sie im Verzeichnis „ChuckALuck20“. 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. (Zum Vergleich: „ChuckALuck21“)
Berücksichtigen Sie in einem letzten Schritt den jeweiligen Spielzustand. Eine vollständige Implementierung finden Sie im Verzeichnis „ChuckALuck22“.
![Page 74: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/74.jpg)
74
![Page 75: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/75.jpg)
75 Teil 6
Implementierung einer Kennt-Beziehung
![Page 76: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/76.jpg)
76 Zielsetzung
spielmanager konto
instance of
zustand = ... stand = 99
Hier sollen die Ähnlichkeiten und Unterschiede zwischen einer Implementierung der Kennt-Beziehung und der Hat-Beziehung aufgezeigt werden.
TSpielmanager
- zustand: integer...
+ create+ wuerfelWerfen...
TKontokennt
kennt
instance of
Teil-Modell
![Page 77: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/77.jpg)
77 Bekanntschaft durch Referenzen
Referenzattribute
Die anzustrebende Grundsituation bleibt gleich: Mit Hilfe von Referenzattributen soll das TSpielmanager-Objekt sich die Adressen seiner „Bekanntschaften“ merken.
TSpielmanager
- zustand: integer- wuerfelA: Wuerfel- wuerfelB: Wuerfel- wuerfelC: Wuerfel- spielbrett: Spielbrett- konto: Konto
+ create(...)+ spielbrettSetzen(z: int.)+ wuerfelWerfen+ kontoAktualisieren+ getZustand: integer
![Page 78: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/78.jpg)
78 Erzeugung der Objekte
unit uGUI;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, uKonto, ..., uSpielmanager;
type TForm1 = class(TForm) ... private { Private-Deklarationen } konto: TKonto; ... spielmanager: TSpielmanager; public { Public-Deklarationen } constructor create(...; k: Tkonto; ...); ... end;
implementation {$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);beginkonto := TKonto.create; ...spielmanager := TSpielmanager.create(..., konto, ...);end;
kontospielmanagerkennt
Modellstruktur
![Page 79: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/79.jpg)
79 Erzeugung von Referenzen
spielmanager := TSpielmanager.create(..., konto, ...);
3A80
3A80
3A80
3A80
3A80
constructor TSpielmanager.create(...; k: TKonto; ...);begin ... konto := k; ...end;
3A80
![Page 80: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/80.jpg)
80 Erzeugung von Referenzen
// Deklaration des Konstruktorsconstructor TSpielmanager.create (wA, wB, wC: TWuerfel;
k: TKonto; sp: TSpielbrett);begin zustand := 0;konto := k;wuerfelA := wA;wuerfelB := wB;wuerfelC := wC;spielbrett := sp;end;
// Aufruf des Konstruktorskonto := TKonto.create(100);... spielmanager := TSpielmanager.create (wuerfelA, wuerfelB, wuerfelC, konto, spielbrett);
Die Referenzbildung erfolgt bei der Erzeugung des Spielmanager-Objekts.
Konstruktor mit Parametern zur Übergabe der Referenzen
TSpielmanager
- zustand: integer- wuerfelA: Wuerfel- wuerfelB: Wuerfel- wuerfelC: Wuerfel- spielbrett: Spielbrett- konto: Konto
+ create(wA, wB, wC: Wuerfel; k: Konto; sp: Spielbrett)+ spielbrettSetzen(z: int.)+ wuerfelWerfen+ kontoAktualisieren+ getZustand: integer
konto: [3A80]
![Page 81: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/81.jpg)
81 Unterschied: Kennt-/Hat-Beziehung
kennt
hat
Das Objekt „spielmanger“ hat die volle Kontrolle über das Objekt „konto“.
Das Objekt „spielmanager“ steht in Verbindung zum Objekt „konto“.
![Page 82: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/82.jpg)
82 Aufgabe
Implementieren Sie ein ChuckALuck-System mit Kennt-Beziehungen. Ausgangspunkt kann „ChuckALuck1“ (Version des neuen ChuckALuck-Systems ohne Spielmanager) oder „ChuckALuck21“ oder „ChuckALuck22“ (Versionen mit Hat-Beziehungen) sein.
Eine Lösung ohne Spielkontrolle finden Sie im Verzeichnis „ChuckALuck31“, eine mit Kontrolle des Spielzustands im Verzeichnis „ChuckALuck32“.
![Page 83: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/83.jpg)
83 Teil 7
UML-Werkzeuge
![Page 84: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/84.jpg)
84 UML-Editoren
UML-Editoren unterstützen den Entwickler beim Erstellen von Diagrammen. (Beispiel: Violet)
![Page 85: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/85.jpg)
85 UML-Werkzeuge
UML-Werkzeuge unterstützen den Entwickler auch beim Erstellen des Quellcodes und der Dokumentation von Modellen. (Beispiel: UMLEd)
![Page 86: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/86.jpg)
86 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 87: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/87.jpg)
87 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 88: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/88.jpg)
88 Aufgabe
Testen Sie das UML-Werkzeug UMLEd. Geben Sie eines der entwickelten Modelle ein und lassen Sie den zugehörigen Quellcode erzeugen.
![Page 89: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/89.jpg)
89 Teil 8
Zusammenfassung
![Page 90: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/90.jpg)
90 Objektorientierung
Grundideen
Grundkonzepte
...Ob
jekt
Kla
sse
Nach
rich
t
Ass
ozi
ati
on
Modellierungssprache: UML
Implementierungssprache: Delphi, Java, ...
![Page 91: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/91.jpg)
91
Idee: Objekt als Systemkomponente
Ein System besteht aus Objekten. Jedes Objekt ist für bestimmte Aufgaben
zuständig und erledigt diese in eigener Verantwortung. Durch Nachrichten können Objekte andere Objekte zur
Erledigung von (Teil)Aufgaben auffordern und somit gemeinsam die System-
aktivitäten erzeugen.
![Page 92: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/92.jpg)
92 Idee: Objekt als Modul
Ein Objekt (eine Klasse) ist eine Einheit (Modul), bei dem Daten und die hierauf
anzuwendenden Operationen gemeinsam verwaltet werden. Die Daten werden so
verkapselt, dass ein Zugriff nur über Operationen erfolgen kann
(Geheimnisprinzip). Diese Operationen werden in einer klar definierten
Schnittstelle festgelegt.
![Page 93: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/93.jpg)
93 Idee: Objekt als Baustein
Objekte / Klassen sollten nach Möglichkeit so abstrakt entworfen werden, dass sie zur Erledigung vieler Aufgaben benutzt
werden können (Wiederverwendung). Gut verwendbare Klassen können dann in
Klassenbibliotheken zur weiteren Verwendung bereitgestellt
werden.
![Page 94: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/94.jpg)
94 Grundkonzept: Objekt
konto
stand = 9
Betrag abhebenBetrag einzahlen
Die Struktur eines Objekts wird durch Attribute festgelegt. Die Attributwerte bestimmen den aktuellen Zustand des Objekts.
Das Verhalten eines Objekts wird durch Operationen / Methoden festgelegt. Das Objekt stellt diese Methoden selbst bereit. Ein Objekt ist insofern eine autonome Einheiten.
Attribut Attributwert
Operationen
Obj
ekt
![Page 95: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/95.jpg)
95 Grundkonzept: Klasse
Klassen sind Baupläne für Objekte. Objekte werden als Exemplare / Instanzen von Klassen bezeichnet.
Klasse
Objekt
TKonto
stand
Betrag abhebenBetrag einzahlen
konto
stand = 9
instance of
Kla
sse
![Page 96: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/96.jpg)
96 Grundkonzept: Nachricht
Die Aktivierung von Operationen / Methoden erfolgt mit Hilfe von Nachrichten.Eine Nachricht kann also als Methodenaufruf angesehen werden.
wuerfelAwerfen( )
Nachricht
spielmanager
EmpfängerSender
Nac
hric
ht
![Page 97: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/97.jpg)
97 Grundkonzept: Assoziation
Eine Assoziation ist eine Beziehung zwischen verschiedenen Objekten einer oder mehrerer Klassen.
Eine Assoziation ist i.a. Grundvoraussetzung für den Nachrichtenaustausch.
TWuerfel
TSpielbrett
TKonto
TSpielmanager
1
3
1
Assoziation
Ass
ozia
tion
![Page 98: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/98.jpg)
98 UML: Unified Modeling Language
Die Unified Modelling Language ist eine Sprache zur Spezifikation, Visualisierung, Konstruktion und Dokumentation von Modellen für Softwaresysteme, Geschäftsmodelle und andere Nicht-Softwaresysteme. Sie bietet den Entwicklern die Möglichkeit, den Entwurf und die Entwicklung von Softwaremodellen auf einheitlicher Basis zu diskutieren. Die UML wird seit 1998 als Standard angesehen.
(aus: UML-Tutorial der Uni Magdeburg)
![Page 99: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/99.jpg)
99 Ein Blick auf den LF-Lehrplan
![Page 100: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2004](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7549795902118ca17e/html5/thumbnails/100.jpg)
100 Literaturhinweise
Helmut Balzert: Lehrbuch Grundlagen der Informatik. Spektrum Ak. Verlag 1999.
Heide Balzert: Lehrbuch der Objektmodellierung. Spektrum Ak. Verlag 1999.
Bernd Oestereich: Objektorientierte Softwareentwicklung. Oldenbourg 1998.
Thomas Erler: Das Einsteigerseminar UML. Bhv 2000.
Siegfried Spolwig: Objektorientierung im Informatikunterricht. Dümmler-Verlag 1997.
http://ivs.cs.uni-magdeburg.de/~dumke/UML/index.htm (UML-Tutorial der Uni Magdeburg)
http://www.oose.de/uml/index.htm (UML-Links Bernd Oestereich)
http://hsg.region-kaiserslautern.de/Informatik/se/swep/beispiele/chuckaluck/index.html (ChuckALuck im Unterricht von K. Merkert)
LOG IN 128/129. Thema: Objektorientiertes Modellieren und Programmieren
Lehrplan für das Leistungsfach: www.informatik-lehren.de
...