![Page 1: Grundkonzepte der objektorientierten Programmierung](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/html5/thumbnails/1.jpg)
Grundkonzepte der objektorientierten Programmierung
Klaus Becker
2004
![Page 2: Grundkonzepte der objektorientierten Programmierung](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/html5/thumbnails/3.jpg)
3 Teil 1
Objekt-basierte Programmierung
![Page 4: Grundkonzepte der objektorientierten Programmierung](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/html5/thumbnails/10.jpg)
10
![Page 11: Grundkonzepte der objektorientierten Programmierung](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/html5/thumbnails/11.jpg)
11 Teil 2
Objektorientierte Modellierung
![Page 12: Grundkonzepte der objektorientierten Programmierung](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/html5/thumbnails/28.jpg)
28 Lösung
UML-Objektdiagramm:
UML-Klassendiagramm (Feinfassung):
![Page 29: Grundkonzepte der objektorientierten Programmierung](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/html5/thumbnails/29.jpg)
29 Teil 3
Vom Modell zum Programm
![Page 30: Grundkonzepte der objektorientierten Programmierung](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/html5/thumbnails/42.jpg)
42
![Page 43: Grundkonzepte der objektorientierten Programmierung](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/html5/thumbnails/43.jpg)
43 Teil 4
Komplexe Objektstruktur
![Page 44: Grundkonzepte der objektorientierten Programmierung](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/html5/thumbnails/63.jpg)
63 Teil 5
Implementierung einer Hat-Beziehung
![Page 64: Grundkonzepte der objektorientierten Programmierung](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/html5/thumbnails/65.jpg)
65 Referenzen schaffen Beziehungen
Referenzattribut
Zeiger (Adresse)
2091
2091
![Page 66: Grundkonzepte der objektorientierten Programmierung](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/html5/thumbnails/74.jpg)
74
![Page 75: Grundkonzepte der objektorientierten Programmierung](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/html5/thumbnails/75.jpg)
75 Teil 6
Implementierung einer Kennt-Beziehung
![Page 76: Grundkonzepte der objektorientierten Programmierung](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/html5/thumbnails/83.jpg)
83 Teil 7
UML-Werkzeuge
![Page 84: Grundkonzepte der objektorientierten Programmierung](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/html5/thumbnails/89.jpg)
89 Teil 8
Zusammenfassung
![Page 90: Grundkonzepte der objektorientierten Programmierung](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/html5/thumbnails/99.jpg)
99 Ein Blick auf den LF-Lehrplan
![Page 100: Grundkonzepte der objektorientierten Programmierung](https://reader036.vdocuments.pub/reader036/viewer/2022062517/56813eab550346895da90cec/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
...