77
Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

Embed Size (px)

Citation preview

Page 1: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

Grundkonzepte der objektorientierten Programmierung

Teil 2

Klaus Becker

2006

Page 2: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

2 Objektorientierte Modellierung

1$ 1$ 1$ 1$1$ 1$ 1$

1$ 1$1

2

3

4

5

631$31$

Miniwelt

Modell

System

Page 3: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

3 Teil 1

Beziehungen zwischen Objekten

Page 4: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

4 Das Würfelspiel „chuck a luck“

1$ 1$ 1$ 1$1$ 1$ 1$

1$1$ 1$

1

2

3

4

5

6

Einsatz zahlen und Zahl tippen

Würfel werfen

Gewinn auszahlen

Einsatz: 1 $

3

Gewinn:

0 Treffer: 1 Treffer: Einsatz + 1 $

2 Treffer: Einsatz + 2 $3 Treffer: Einsatz + 3 $

1$

1$

1$1$

3

Page 5: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

5 Zielsetzung

1$ 1$ 1$ 1$1$ 1$ 1$

1$ 1$1

2

3

4

5

631$31$ Miniwelt

System

Ziel ist es, ein Simulationsprogramm zu entwickeln, mit dem das Würfelspiel „chuck a luck“ am Rechner gespielt werden kann. Am Beispiel dieses einfachen und überschaubaren Systems sollen Grundkonzepte der objektorientierten Programmierung verdeutlicht werden.

Page 6: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

6 Lösungsansatz mit Modellierung

1$ 1$ 1$ 1$1$ 1$ 1$

1$ 1$1

2

3

4

5

631$31$ Miniwelt

System

Modell- Abbild der Miniwelt

- Vorlage für das System

Ansatz:Mit Hilfe eines Modells soll die Miniwelt zunächst programmiersprachen-unabhängig beschrieben werden. Das Modell soll dann helfen, in einem zweiten Schritt das Programm möglichst gut zu strukturieren.

Page 7: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

7 Spiel ohne Überwachung

Das bisher entwickelte Programm zur Simulation des Chuck-A-Luck-Spiels lässt noch Bedienungen zu, die in der Miniwelt nicht erlaubt sind.

Einsatz zahlen und Zahl tippen

Würfel werfen

Gewinn verbuchen

Einsatz zahlenZahl tippen (z. B. 2)Solange Würfel werfen, bis die getippte Zahl fälltGewinn mehrfach verbuchen

Page 8: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

8

Zustandsbasierte Ablaufmodellierung

Auslösendes Ereignis

BEinsatzZahlen.onClick

RGSpielfeld.onClick

BWuerfelWerfen.onClick

BGewinnVerbuchen.onClick

Ausgelöste Aktion(en)

Einsatz vom Konto abbuchen

Spielzahl festlegen

Würfelwerfen simulieren

Gewinn ermitteln und auf dem Konto verbuchen

AktuellerZustand

bereit

einsatzgezahlt

gewürfelt

NeuerZustand

einsatzgezahlt

einsatzgezahlt

gewürfelt

bereit

Einsatz zahlen und Zahl tippen

Würfel werfen

Gewinn verbuchen

Page 9: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

9 Spiel mit Spielmanager

1$ 1$ 1$ 1$1$ 1$ 1$

1$ 1$1

2

3

4

5

631$31$

Miniwelt

In der Miniwelt wird der korrekte Spielablauf durch eine Person überwacht und gesteuert.

In der Modellwelt soll diese Steuerung durch ein Objekt „spielmanager“ übernommen werden. Dieses Objekt ist zuständig für die Verwaltung des Spielzustandes und die jeweilige Aktivierung der am Spiel beteiligten Objekte.

Page 10: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

10 Spiel mit Spielmanager

spielbrett wuerfelA wuerfelB wuerfelC

zahl = 3 augen = 3 augen = 3 augen = 5

1$ 1$ 1$ 1$1$ 1$ 1$

1$ 1$1

2

3

4

5

631$31$

Miniwelt Modell

konto

stand = 9

spielmanager

...

Zuständigkeit:verwaltet den Spielzustand und erteilt die passenden Aufträge an die Spiel-Objekte

Page 11: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

11

Spielmanager aktiviert Spiel-Objekte

Auslösendes Ereignis

BEinsatzZahlen.onClick

Ausgelöste Aktion(en)

Einsatz vom Konto abbuchen

AktuellerZustand

bereit

NeuerZustand

einsatzgezahlt

BEinsatzZahlen.OnClick [zustand = bereit]:

Page 12: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

12

Spielmanager aktiviert Spiel-Objekte

RGSpielfeld.onClick [zustand = einsatzgezahlt]:

Auslösendes Ereignis

RGSpielfeld.onClick

Ausgelöste Aktion(en)

Spielzahl festlegen

AktuellerZustand

einsatzgezahlt

NeuerZustand

einsatzgezahlt

Page 13: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

13

Spielmanager aktiviert Spiel-Objekte

BWuerfelWerfen.onClick [zustand = einsatzgezahlt]:

Auslösendes Ereignis

BWuerfelWerfen.onClick

Ausgelöste Aktion(en)

Würfelwerfen simulieren

AktuellerZustand

einsatzgezahlt

NeuerZustand

gewürfelt

Page 14: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

14

Spielmanager aktiviert Spiel-Objekte

BGewinnVerbuchen.onClick [zustand = gewuerfelt]:

Auslösendes Ereignis

BGewinnVerbuchen.onClick

Ausgelöste Aktion(en)

Gewinn ermitteln und auf dem Konto verbuchen

AktuellerZustand

gewürfelt

NeuerZustand

bereit

Page 15: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

15 Aktivierung von Objekten

Zustand vorher

Zustand nachher

abheben(1) Aktivierung durch eine Nachricht

konto

stand = 9

konto

stand = 9

konto

stand = 8

spielmanager

zustand = bereit

Ein Objekt stellt seiner Umgebung bestimmte Dienste (Operationen) zur Verfügung. Durch eine Nachricht veranlasst ein „Kunde“ das Objekt, die Dienstleistung zu erledigen. Das Objekt führt dann die Operation aus.

Page 16: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

16 Beziehung zwischen Objekten

Ein Nachrichtenaustausch zwischen Objekten kann nur stattfinden, wenn das sendende Objekt die Nachricht dem Empfängerobjekt „zustellen“ kann. Hierzu müssen diese Objekte in Beziehung zueinander stehen.

wuerfelA

wuerfelB

wuerfelC

kontospielmanagerkennt

kennt

kennt

spielbrettkennt

kennt

wuerfelA

wuerfelB

wuerfelC

kontospielmanager

spielbrett

hat

hat

hat

hat

hat

Page 17: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

17 Hat-Beziehung / Komposition

Bei dieser Struktur geht man davon aus, dass ein Objekt ein anderes besitzt, d. h. die vollständige Kontrolle über dieses Objekt hat. Insbesondere ist es für die Erzeugung und Vernichtung des kontrollierten Objekts zuständig. Man spricht in diesem Fall von einer Hat-Beziehung.

wuerfelA

wuerfelB

wuerfelC

kontospielmanagerhat

hat

hat

spielbrett

hat

hat

Page 18: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

18 Kennt-Beziehung / Verbindung

wuerfelA

wuerfelB

wuerfelC

kontospielmanagerkennt

kennt

kennt

spielbrettkennt

kennt

Bei diesen Beziehungen führen die beteiligten Objekte ein Eigenleben. Die in Verbindung stehenden Objekte sind zwar aufeinander angewiesen, weil sie beispielsweise miteinander kommunizieren müssen, um eine gemeinsame Aufgabe zu erledigen, aber es reicht, wenn ein Objekt das andere kennt. Man spricht von einer Kennt-Beziehung zwischen Objekten.

Page 19: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

19 Modell mit Spielmanager

TSpielbretthat

TWuerfelhat

TWuerfelhat

TWuerfelhat

TKontohat

wuerfelA

wuerfelB

wuerfelC

kontospielmanager

spielbrett

hat

hat

hat

hat

hat

TSpielmanager

- zustand: ......

+ „erzeugen“+ „vernichten“+ einsatzZahlen+ spielzahlSetzen(z: int.)+ wuerfelWerfen+ gewinnVerbuchen+ getZustand: ......

Page 20: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

20 Modell mit Spielmanager

TSpielbrettkennt

TWuerfelkennt

TWuerfelkennt

TWuerfelkennt

TKontokennt

wuerfelA

wuerfelB

wuerfelC

kontospielmanagerkennt

kennt

kennt

spielbrettkennt

kennt

TSpielmanager

- zustand: ......

+ „erzeugen“+ „vernichten“+ einsatzZahlen+ spielzahlSetzen(z: int.)+ wuerfelWerfen+ gewinnVerbuchen+ getZustand: ......

Page 21: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

21 Teil 2

Objekte in Aktion

Page 22: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

22 Zielsetzung

Ziel ist es, das Chuck-A-Luck-Spiel mit einem Spielmanager zu simulieren.

Beachte: In BlueJ werden Hat- und Kennt-Beziehung auf gleiche Weise mit Hilfe von Pfeilen dargestellt.

Kennt-BeziehungHat-Beziehung

Page 23: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

23 Modell mit Hat-Beziehung

Schritt 1: Erzeugen Sie ein Objekt „GUI“ als Exemplar der Klasse „TGUI“.

Page 24: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

24 Modell mit Hat-Beziehung

Schritt 2: Inspizieren Sie zunächst das Objekt „GUI“ und die von ihm verwalteten Spielobjekte. Hier erkennt man, welches Objekt auf welches andere einen direkten Zugriff hat.

Page 25: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

25 Modell mit Hat-Beziehung

Schritt 3: Aktivieren Sie mit Hilfe von „GUI“ die einzelnen Spielaktionen. Die Veränderungen der Objektzustände kann man sich durch Inspektion anschauen.

Page 26: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

26 Modell mit Hat-Beziehung

Schritt 4: Aktivieren Sie abschließend die Methode „spielDatenAnzeigen“ des Objekts „GUI“. Diese Methode sollte jetzt genau die Spielergebnisse anzeigen, die man auch durch Inspektion der Objekte erhält.

Page 27: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

27 Modell mit Kennt-Beziehung

Schritt 1: Erzeugen Sie ein Objekt „GUI“ als Exemplar der Klasse „TGUI“.Schritt 2: Inspizieren Sie dieses Objekt und die von ihm verwalteten Objekte.

Page 28: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

28 Modell mit Kennt-Beziehung

Schritt 3: Führen Sie ein Spiel mit den Methoden von „GUI“ aus.Schritt 4: Lassen Sie „GUI“ die Spielergebnisse anzeigen.

Page 29: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

29 Teil 3

Implementierung der Hat-Beziehung

Page 30: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

30 Zielsetzung

spielmanager wuerfelA

instance of

zustand = ... augen = 3

Die Implementierung der Hat-Beziehung soll anhand eines Teilmodells des Gesamtmodells gezeigt werden. Wir verzichten vorerst auf die Verwaltung des Spielzustands.

TSpielmanager

- zustand: ......

+ create+ wuerfelWerfen...

TWuerfelhat

hat

instance of

Teil-Modell

erstellen

fertig

Page 31: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

31 Referenzen schaffen Beziehungen

3A80

3A80

Speicheradresse

Referenzattribut

Mit Hilfe von Referenzattributen kann ein Objekt sich die Adressen seiner „Beziehungspartner“ merken.

Page 32: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

32 Klasse mit Referenzattribut

3A80

3A80

Speicheradresse

Referenzattribut

TSpielmanager

- zustand: ...- wuerfelA: TWuerfel...

+ „erzeugen“+ „vernichten“+ einsatzZahlen+ spielzahlSetzen(z: int.)+ wuerfelWerfen+ gewinnVerbuchen+ getZustand: ......

Referenzattribut

Die Klasse TSpielmanager muss um Referenzattribute erweitert werden, mit deren Hilfe die Beziehungen zu anderen Objekten verwaltet werden.

Page 33: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

33 Modellstruktur

wuerfelAspielmanagerhat

FGUIhat

Bei der Hat-Beziehung geht man davon aus, dass ein Objekt ein anderes besitzt, d. h. die vollständige Kontrolle über dieses Objekt hat. Insbesondere ist es für die Erzeugung und Vernichtung des kontrollierten Objekts zuständig. Man spricht in diesem Fall von einer Hat-Beziehung.

Page 34: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

34

Modellklasse mit Referenzattributen

unit uSpielmanager;

interface

uses uWuerfel;

type

TSpielmanager = class private wuerfelA: TWuerfel; public constructor create; destructor destroy; override; ... end;

implementation

Einbindung der Klassen-Unit

Deklaration des Referenzattributs

TSpielmanager

- wuerfelA: TWuerfel...

...

Page 35: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

35 Erzeugung des Würfel-Objekts

type TSpielmanager = class private wuerfelA: TWuerfel; public constructor create; destructor destroy; override; ... end;

implementationconstructor TSpielmanager.create;begin wuerfelA := TWuerfel.create;end;destructor TSpielmanager.destroy;begin wuerfelA.free;end;

wuerfelAspielmanagerhat

FGUIhat

Modellstruktur

Page 36: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

36 Implementierung einer Nachricht

...

type TSpielmanager = class private wuerfelA: TWuerfel; public constructor create; destructor destroy; override; procedure wuerfelWerfen; ... end;

implementation

...

procedure TSpielmanager.wuerfelWerfen;begin wuerfelA.werfen;end;

Empfängerobjekt

Modellstruktur

wuerfelAspielmanagerwerfen

Nachricht

Senderobjekt-Klasse

Operation

wuerfelAspielmanagerhat

FGUIhat

Page 37: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

37

Erzeugung des Spielmanager-Objekts

unit uGUI;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, uSpielmanager;

type TGUI = class(TForm) ... private { Private-Deklarationen } spielmanager: TSpielmanager; public { Public-Deklarationen } end;

implementation{$R *.DFM}

procedure TGUI.FormCreate(Sender: TObject);begin spielmanager := TSpielmanager.create;end; ...

Modellstruktur

wuerfelAspielmanagerhat

FGUIhat

Page 38: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

38 Zugriff auf Objekte

unit uGUI;

interface

...

implementation

{$R *.DFM}

procedure TGUI.BWerfenClick(Sender: TObject);begin // Aktualisierung der Modell-Objekte spielmanager.wuerfelWerfen; // Aktualisierung der Anzeige PWuerfelA.Caption := IntToStr(spielmanager.getWuerfelA);end;

...

Kein direkter Zugriff auf

wuerfelA möglich

wuerfelAspielmanagergetAugen

FGUIgetWuerfelA

Modellstruktur

NachrichtenNachrichten

wuerfelAspielmanagerhat

FGUIhat

Page 39: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

39 Zugriff auf ein abhängiges Objekt

unit uGUI;

interface

...

implementation

{$R *.DFM}

procedure TGUI.BWerfenClick(...);begin // Aktualisierung der Modell-Objekte spielmanager.wuerfelWerfen; // Aktualisierung der Anzeige PWuerfelA.Caption := IntToStr(spielmanager.getWuerfelA);end;

Hilfsoperation

TSpielmanager

- wuerfelA: Wuerfel...

+ create+ destroy+ wuerfelWerfen...+ getWuerfelA: integer...

function TSpielmanager.getWuerfelA: integer;begin result := wuerfelA.getAugen;end;

wuerfelAspielmanagerhat

FGUIhat

Page 40: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

40 Aufgabe

Die gezeigte Implementierung des Teilmodells „Spielmanager hat Wuerfel“ finden Sie im Verzeichnis „ChuckALuck21NurWuerfelnMitHatBeziehung“. Testen Sie zunächst diese Implementierung. Beachten Sie, dass man hier nur Würfel A werfen kann.

Bauen Sie dann schrittweise diese Implementierung zu einer Implementierung des gesamten Spiels aus. Berücksichtigen Sie zunächst noch nicht den jeweiligen Spielzustand.

Berücksichtigen Sie in einem letzten Schritt den jeweiligen Spielzustand. Eine vollständige Implementierung finden Sie im Verzeichnis „ChuckALuck22GesamtesSpielMitHatBeziehung“.

Page 41: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

41 Teil 4

Implementierung einer Kennt-Beziehung

Page 42: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

42 Zielsetzung

spielmanager wuerfelA

instance of

zustand = ... augen = 3

Hier sollen die Ähnlichkeiten und Unterschiede zwischen einer Implementierung der Kennt-Beziehung und der Hat-Beziehung aufgezeigt werden.

TSpielmanager

- zustand: ......

+ create+ wuerfelWerfen...

TWuerfelkennt

kennt

instance of

Teil-Modell

Page 43: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

43 Bekanntschaft durch Referenzen

Die Ausgangssituation bleibt gleich: Die Klasse TSpielmanager muss um Referenzattribute erweitert werden, mit deren Hilfe die Beziehungen zu anderen Objekten verwaltet werden.

3A80

3A80

Speicheradresse

Referenzattribut

TSpielmanager

- zustand: ...- wuerfelA: TWuerfel...

+ „erzeugen“+ „vernichten“+ einsatzZahlen+ spielzahlSetzen(z: int.)+ wuerfelWerfen+ gewinnVerbuchen+ getZustand: ......

Referenzattribut

Page 44: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

44 Modellstruktur

wuerfelAspielmanagerFGUIhat

Bei der Kennt-Beziehung führen die beteiligten Objekte ein Eigenleben. Die in Verbindung stehenden Objekte sind zwar aufeinander angewiesen, weil sie beispielsweise miteinander kommunizieren müssen, um eine gemeinsame Aufgabe zu erledigen, aber es reicht, wenn ein Objekt das andere kennt.

kennt

Page 45: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

45 Erzeugung der Objekte

unit uGUI;

interface

uses ..., uWuerfel, uSpielmanager;

type TGUI = class(TForm) ... private { Private-Deklarationen } wuerfelA: TWuerfel; spielmanager: TSpielmanager; public { Public-Deklarationen } end;

implementation {$R *.DFM}

procedure TGUI.FormCreate(Sender: TObject);begin randomize; wuerfelA := TWuerfel.create; spielmanager := TSpielmanager.create(wuerfelA);end;

Modellstruktur

wuerfelAspielmanagerFGUIhat kennt

Page 46: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

46 Erzeugung der Kennt-Referenz

spielmanager := TSpielmanager.create(wuerfelA);

3A80

3A80

3A803A80

3A80

constructor TSpielmanager.create(wA: TWuerfel);begin wuerfelA := wA;end;

3A80

Page 47: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

47 Zugriff auf Objekte

unit uGUI;

interface

...

implementation

{$R *.DFM}

procedure TGUI.BWerfenClick(Sender: TObject);begin // Aktualisierung der Modell-Objekte spielmanager.wuerfelWerfen; // Aktualisierung der Anzeige PWuerfelA.Caption := IntToStr(wuerfelA.getAugen);end;

...

direkter Zugriff auf wuerfelA

möglich

Modellstruktur

Nachrichten

wuerfelAspielmanagerFGUIhat kennt

getAugen

wuerfelAspielmanagerFGUIwuerfelWerfen werfen

Page 48: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

48 Aufgabe

Die gezeigte Implementierung des Teilmodells „Spielmanager kennt Wuerfel“ finden Sie im Verzeichnis „ChuckALuck31NurWuerfelnMitKenntBeziehung“. Testen Sie zunächst diese Implementierung. Beachten Sie, dass man hier nur Würfel A werfen kann.

Bauen Sie dann schrittweise diese Implementierung zu einer Implementierung des gesamten Spiels aus. Berücksichtigen Sie zunächst noch nicht den jeweiligen Spielzustand.

Berücksichtigen Sie in einem letzten Schritt den jeweiligen Spielzustand. Eine vollständige Implementierung finden Sie im Verzeichnis „ChuckALuck32GesamtesSpielMitKenntBeziehung“.

Page 49: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

49 Aufgabe

Das Simulationsprogramm zum Chuck-A-Luck-Spiel soll jetzt wie folgt verändert werden:- Es werden gezinkte Würfel benutzt (die keine 6 ermöglichen).- Der Spieleinsatz beträgt jetzt 2$, als Gewinne erhält man das 3-fache der Anzahl der Treffer (in $) zurück.- Die Würfel werden mit Hilfe von Bildern angezeigt.Machen Sie sich zunächst klar, wo im bestehenden Programm die jeweiligen Änderungen vorgenommen werden müssen (in einem gut strukturierten objektorientierten Programm sollte das kein Problem sein). Nehmen Sie dann die Änderungen schrittweise vor.

Page 50: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

50

Page 51: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

51 Teil 5

Übung: Uhr

Page 52: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

52 Zielsetzung

Ziel ist es, mit Hilfe objektorientierter Modellierung ein System zu entwickeln, mit dem eine einfache Uhr simuliert werden kann.

Nach: Barnes / Kölling: Objektorientierte Programmierung mit Java. Pearson Studium 2003.

Page 53: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

53 Objekte und ihre Beziehung

Miniwelt

Die Digitaluhr der Miniwelt soll mit Hilfe eines Objekts „digitalUhr“ beschrieben werden, das seine Operationen mit Hilfe von zwei von ihm verwalteten Objekten „stundenZaehler“ und „minutenZaehler“ durchführt.

16:46

stundenZaehler minutenZaehler

Modell

digitalUhr

hathat

Page 54: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

54 Klassenentwurf

stundenZaehler

TModuloZaeher

- max: integer- stand: integer

+ create(maxWert: integer)+ destroy+ setStand(standWert: int.)+ weiterZaehlen+ nullSetzen+ getStand: integer

max = 23 stand = 16

minutenZaehler

max = 59 stand = 46

TDigitalUhr

sZaehler: TModuloZaehlermZaehler: TModuloZaehler

erzeugenvernichtensetzen(sWert, mWert)tickrueckSetzen...

digitalUhr

sZaehler =mZaehler =

hat

hat

Page 55: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

55 Aufgabe

Implementieren Sie das dargestellte (oder ein selbst entwickeltes) Modell.

Page 56: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

56 Teil 6

Übung: Chiffriersystem

Page 57: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

57 Zielsetzung

Ziel ist es, mit Hilfe objektorientierter Modellierung ein monoalphabetisches Chiffriersystem zu entwickeln.

Page 58: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

58 Der Chiffrieransatz

Der Benutzer gibt ein (langes) Schlüsselwort vor (z. B. WEITERBILDUNGSKURSX), aus dem dann die Chiffriertabelle wie folgt erzeugt wird. Man streicht zunächst alle mehrfach vorkommenden Buchstaben (im Beispiel ergibt das WEITRBLDUNGSKSX). Diese Buchstaben bilden den Anfang des Geheimtextalphabets. Dann füllt man ab der letzten Stelle mit den noch zur Verfügung stehenden Buchstaben des Alphabets auf.

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

W E I T R B L D U N G S K X Y Z A C F H J M O P Q V

Klartextalphabet

Geheimtextalphabet

Page 59: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

59 Objekte und ihre Beziehung

chiffrierer codierung

Modell

WEITERBILDUNGSKURSX

VDOYHFDHVDU

Geheimtext

Schlüssel

Quelltext

Schlüssel

Quelltext

SALVECAESARSALVECAESAR

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

W E I T R B L D U N G S K X Y Z A C F H J M O P Q V

Miniwelt

hat

Page 60: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

60 Klassenentwurf

chiffrierer codierung

TCodierung

code: array [‚A‘..‘Z‘] of char

erzeugensetCode(s: string)getCode: stringgetGeheim(klar: char): chargetKlar(geheim: char): char

TChiffrierer

quelltextgeheimtextchluesselcodierung

erzeugensetSchluessel(...)getSchluessel: ...vorbereitenverschluesselnentschluesseln...

hat

hat

Page 61: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

61 Aufgabe

Implementieren Sie das dargestellte (oder das selbst entwickelte) Modell.

Page 62: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

62 Teil 7

Übung: Roboter

Page 63: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

63 Zielsetzung

Ziel ist es, mit Hilfe objektorientierter Modellierung ein grafisches Simulationsprogramm zu entwickeln, mit dem ein steuerbarer Modellroboter in einem Zellengitter bewegt werden kann.

Page 64: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

64 Identifikation von Objekten

Miniwelt

OstenWesten

Süden

Norden

(6,4)

roboter welt

Modellkennt

Page 65: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

65 Klassenentwurf

TWelt

marken: array [0..9] of array [0..9] of booleanziegel: array [0..9] of array [0..9] of integer

erzeugenmarkeSetzen(x, y: integer)markeLoeschen(x, y: integer)ziegelHinlegen(x, y: integer)ziegelAufheben(x, y: integer)getMarke(x, y: integer): booleangetZiegel(x, y: integer): integer

TRoboter

xPosyPosrichtungwelt

erzeugeninitialisierenschrittlinksDrehenrechtsDrehenmarkeSetzenmarkeLoeschen...

kennt

Page 66: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

66 Aufgabe

Implementieren Sie das dargestellte (oder das selbst entwickelte) Modell.

Page 67: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

67 Teil 8

UML-Editoren

Page 68: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

68 UML-Editoren

UML-Editoren unterstützen den Entwickler beim Erstellen von Diagrammen. (Beispiel: Violet)

Page 69: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

69 UML-Werkzeuge

UML-Werkzeuge unterstützen den Entwickler auch beim Erstellen des Quellcodes und der Dokumentation von Modellen. (Beispiel: UMLEd)

Page 70: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

70 UML-Werkzeuge

Quellcode – erzeugt mit UMLEd:

UNIT mTWuerfel;

interface

uses // Uses-Klausel ggf. anpassen

type TWuerfel = CLASS // Attribute private augen : integer; //Objektbeziehungen // Methoden public constructor create; procedure werfen; function getAugen : integer; end;

...

Page 71: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

71 UML-Werkzeuge

Dokumentation – erzeugt mit UMLEd:

Dokumentation der Klasse "TWuerfel"

Beschreibung der Klasse: 

Attribute

augen : integer beschreibt die aktuelle Augenzahl des Würfels

Protokoll der Dienste / Methoden

Konstruktor

create

Auftrag

werfen aktiviert den Würfel so, dass (mit Hilfe des Zufallsgenerators) eine neue Augenzahl erzeugt wird

Anfrage

getAugen : integer

Page 72: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

72 Aufgabe

Testen Sie den UML-Editor „Violet“ und das UML-Werkzeug „UMLed“.

Page 73: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

73 Teil 9

Zusammenfassung

Page 74: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

74 Objektorientierung

GrundideenO

bje

kt

Nach

rich

t

Bezi

eh

un

g

Kla

sse

Modellierungssprache: UML

Implementierungssprache: Delphi, Java, ...

Grund-konzepte

Page 75: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

75

Idee: Objekt als Systemkomponente

Ein Objekt ist eine aktive und autonome Programmeinheit, das für bestimmte

Aufgaben zuständig ist und diese in eigener Verantwortung erledigt. Durch Nachrichten

können Objekte andere Objekte zur Erledigung von (Teil)Aufgaben auffordern und

somit gemeinsam die Systemaktivitäten erzeugen.

Page 76: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

76 Literaturhinweise

Es gibt eine Vielzahl von fachwissenschaftlichen Darstellungen zur objektorientierten Modellierung und Programmierung. Hier wurden folgende Lehrwerke benutzt:- D. J. Barnes, M. Kölling: Objektorientierte Programmierung mit Java. Pearson - Studium 2003.- Helmut Balzert: Lehrbuch Grundlagen der Informatik. Spektrum Ak. Verlag 1999.- Bernd Oestereich: Objektorientierte Softwareentwicklung. Oldenbourg 1998.

Dagegen gibt es nur wenige Schulbücher, die systematisch in die objektorientierte Programmierung einführen, z. B.: - Siegfried Spolwig: Objektorientierung im Informatikunterricht. Dümmler-Verlag 1997.- P. Damann, J. Wemßen: Objektorientierte Programmierung mit Delphi, Band 2. Klett-Verlag 2003.

Viele interessante Artikel mit Unterrichtsvorschlägen bzw. fachdidaktischen Auseinandersetzungen findet man in der Zeitschrift LOG IN. Das Themenheft 128/129 ist speziell dem Thema „Objektorientiertes Modellieren und Programmieren“ gewidmet.

...

Page 77: Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

77 Literaturhinweise

Im Internet findet man ebenfalls sehr viele schulgerechte Darstellungen der objektorientierten Modellierung und Programmierung, z. B:

http://informatikag.bildung-rp.de/ Die AG-Informatik des LMZ in RLP stellt u. a. auch Fortbildungsmaterialien zu diesem Thema bereit.

http://hsg.region-kaiserslautern.de/faecher/inf/index.php Auf der Homepage des HSG in Kaiserslautern findet man Unterrichtsmaterialien und Links zu weiteren interessanten Seiten.

...