Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.

Post on 06-Apr-2015

121 views 6 download

Transcript of Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006.

Grundkonzepte der objektorientierten Programmierung

Teil 2

Klaus Becker

2006

2 Objektorientierte Modellierung

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

1$ 1$1

2

3

4

5

631$31$

Miniwelt

Modell

System

3 Teil 1

Beziehungen zwischen Objekten

4 Das Würfelspiel „chuck a luck“

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

1$1$ 1$

1

2

3

4

5

6

Einsatz zahlen und Zahl tippen

Würfel werfen

Gewinn auszahlen

Einsatz: 1 $

3

Gewinn:

0 Treffer: 1 Treffer: Einsatz + 1 $

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

1$

1$

1$1$

3

5 Zielsetzung

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

1$ 1$1

2

3

4

5

631$31$ Miniwelt

System

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

6 Lösungsansatz mit Modellierung

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

1$ 1$1

2

3

4

5

631$31$ Miniwelt

System

Modell- Abbild der Miniwelt

- Vorlage für das System

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

7 Spiel ohne Überwachung

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

Einsatz zahlen und Zahl tippen

Würfel werfen

Gewinn verbuchen

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

8

Zustandsbasierte Ablaufmodellierung

Auslösendes Ereignis

BEinsatzZahlen.onClick

RGSpielfeld.onClick

BWuerfelWerfen.onClick

BGewinnVerbuchen.onClick

Ausgelöste Aktion(en)

Einsatz vom Konto abbuchen

Spielzahl festlegen

Würfelwerfen simulieren

Gewinn ermitteln und auf dem Konto verbuchen

AktuellerZustand

bereit

einsatzgezahlt

gewürfelt

NeuerZustand

einsatzgezahlt

einsatzgezahlt

gewürfelt

bereit

Einsatz zahlen und Zahl tippen

Würfel werfen

Gewinn verbuchen

9 Spiel mit Spielmanager

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

1$ 1$1

2

3

4

5

631$31$

Miniwelt

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

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

10 Spiel mit Spielmanager

spielbrett wuerfelA wuerfelB wuerfelC

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

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

1$ 1$1

2

3

4

5

631$31$

Miniwelt Modell

konto

stand = 9

spielmanager

...

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

11

Spielmanager aktiviert Spiel-Objekte

Auslösendes Ereignis

BEinsatzZahlen.onClick

Ausgelöste Aktion(en)

Einsatz vom Konto abbuchen

AktuellerZustand

bereit

NeuerZustand

einsatzgezahlt

BEinsatzZahlen.OnClick [zustand = bereit]:

12

Spielmanager aktiviert Spiel-Objekte

RGSpielfeld.onClick [zustand = einsatzgezahlt]:

Auslösendes Ereignis

RGSpielfeld.onClick

Ausgelöste Aktion(en)

Spielzahl festlegen

AktuellerZustand

einsatzgezahlt

NeuerZustand

einsatzgezahlt

13

Spielmanager aktiviert Spiel-Objekte

BWuerfelWerfen.onClick [zustand = einsatzgezahlt]:

Auslösendes Ereignis

BWuerfelWerfen.onClick

Ausgelöste Aktion(en)

Würfelwerfen simulieren

AktuellerZustand

einsatzgezahlt

NeuerZustand

gewürfelt

14

Spielmanager aktiviert Spiel-Objekte

BGewinnVerbuchen.onClick [zustand = gewuerfelt]:

Auslösendes Ereignis

BGewinnVerbuchen.onClick

Ausgelöste Aktion(en)

Gewinn ermitteln und auf dem Konto verbuchen

AktuellerZustand

gewürfelt

NeuerZustand

bereit

15 Aktivierung von Objekten

Zustand vorher

Zustand nachher

abheben(1) Aktivierung durch eine Nachricht

konto

stand = 9

konto

stand = 9

konto

stand = 8

spielmanager

zustand = bereit

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

16 Beziehung zwischen Objekten

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

wuerfelA

wuerfelB

wuerfelC

kontospielmanagerkennt

kennt

kennt

spielbrettkennt

kennt

wuerfelA

wuerfelB

wuerfelC

kontospielmanager

spielbrett

hat

hat

hat

hat

hat

17 Hat-Beziehung / Komposition

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

wuerfelA

wuerfelB

wuerfelC

kontospielmanagerhat

hat

hat

spielbrett

hat

hat

18 Kennt-Beziehung / Verbindung

wuerfelA

wuerfelB

wuerfelC

kontospielmanagerkennt

kennt

kennt

spielbrettkennt

kennt

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

19 Modell mit Spielmanager

TSpielbretthat

TWuerfelhat

TWuerfelhat

TWuerfelhat

TKontohat

wuerfelA

wuerfelB

wuerfelC

kontospielmanager

spielbrett

hat

hat

hat

hat

hat

TSpielmanager

- zustand: ......

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

20 Modell mit Spielmanager

TSpielbrettkennt

TWuerfelkennt

TWuerfelkennt

TWuerfelkennt

TKontokennt

wuerfelA

wuerfelB

wuerfelC

kontospielmanagerkennt

kennt

kennt

spielbrettkennt

kennt

TSpielmanager

- zustand: ......

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

21 Teil 2

Objekte in Aktion

22 Zielsetzung

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

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

Kennt-BeziehungHat-Beziehung

23 Modell mit Hat-Beziehung

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

24 Modell mit Hat-Beziehung

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

25 Modell mit Hat-Beziehung

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

26 Modell mit Hat-Beziehung

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

27 Modell mit Kennt-Beziehung

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

28 Modell mit Kennt-Beziehung

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

29 Teil 3

Implementierung der Hat-Beziehung

30 Zielsetzung

spielmanager wuerfelA

instance of

zustand = ... augen = 3

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

TSpielmanager

- zustand: ......

+ create+ wuerfelWerfen...

TWuerfelhat

hat

instance of

Teil-Modell

erstellen

fertig

31 Referenzen schaffen Beziehungen

3A80

3A80

Speicheradresse

Referenzattribut

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

32 Klasse mit Referenzattribut

3A80

3A80

Speicheradresse

Referenzattribut

TSpielmanager

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

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

Referenzattribut

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

33 Modellstruktur

wuerfelAspielmanagerhat

FGUIhat

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

34

Modellklasse mit Referenzattributen

unit uSpielmanager;

interface

uses uWuerfel;

type

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

implementation

Einbindung der Klassen-Unit

Deklaration des Referenzattributs

TSpielmanager

- wuerfelA: TWuerfel...

...

35 Erzeugung des Würfel-Objekts

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

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

wuerfelAspielmanagerhat

FGUIhat

Modellstruktur

36 Implementierung einer Nachricht

...

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

implementation

...

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

Empfängerobjekt

Modellstruktur

wuerfelAspielmanagerwerfen

Nachricht

Senderobjekt-Klasse

Operation

wuerfelAspielmanagerhat

FGUIhat

37

Erzeugung des Spielmanager-Objekts

unit uGUI;

interface

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

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

implementation{$R *.DFM}

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

Modellstruktur

wuerfelAspielmanagerhat

FGUIhat

38 Zugriff auf Objekte

unit uGUI;

interface

...

implementation

{$R *.DFM}

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

...

Kein direkter Zugriff auf

wuerfelA möglich

wuerfelAspielmanagergetAugen

FGUIgetWuerfelA

Modellstruktur

NachrichtenNachrichten

wuerfelAspielmanagerhat

FGUIhat

39 Zugriff auf ein abhängiges Objekt

unit uGUI;

interface

...

implementation

{$R *.DFM}

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

Hilfsoperation

TSpielmanager

- wuerfelA: Wuerfel...

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

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

wuerfelAspielmanagerhat

FGUIhat

40 Aufgabe

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

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

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

41 Teil 4

Implementierung einer Kennt-Beziehung

42 Zielsetzung

spielmanager wuerfelA

instance of

zustand = ... augen = 3

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

TSpielmanager

- zustand: ......

+ create+ wuerfelWerfen...

TWuerfelkennt

kennt

instance of

Teil-Modell

43 Bekanntschaft durch Referenzen

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

3A80

3A80

Speicheradresse

Referenzattribut

TSpielmanager

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

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

Referenzattribut

44 Modellstruktur

wuerfelAspielmanagerFGUIhat

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

kennt

45 Erzeugung der Objekte

unit uGUI;

interface

uses ..., uWuerfel, uSpielmanager;

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

implementation {$R *.DFM}

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

Modellstruktur

wuerfelAspielmanagerFGUIhat kennt

46 Erzeugung der Kennt-Referenz

spielmanager := TSpielmanager.create(wuerfelA);

3A80

3A80

3A803A80

3A80

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

3A80

47 Zugriff auf Objekte

unit uGUI;

interface

...

implementation

{$R *.DFM}

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

...

direkter Zugriff auf wuerfelA

möglich

Modellstruktur

Nachrichten

wuerfelAspielmanagerFGUIhat kennt

getAugen

wuerfelAspielmanagerFGUIwuerfelWerfen werfen

48 Aufgabe

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

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

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

49 Aufgabe

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

50

51 Teil 5

Übung: Uhr

52 Zielsetzung

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

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

53 Objekte und ihre Beziehung

Miniwelt

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

16:46

stundenZaehler minutenZaehler

Modell

digitalUhr

hathat

54 Klassenentwurf

stundenZaehler

TModuloZaeher

- max: integer- stand: integer

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

max = 23 stand = 16

minutenZaehler

max = 59 stand = 46

TDigitalUhr

sZaehler: TModuloZaehlermZaehler: TModuloZaehler

erzeugenvernichtensetzen(sWert, mWert)tickrueckSetzen...

digitalUhr

sZaehler =mZaehler =

hat

hat

55 Aufgabe

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

56 Teil 6

Übung: Chiffriersystem

57 Zielsetzung

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

58 Der Chiffrieransatz

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

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

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

Klartextalphabet

Geheimtextalphabet

59 Objekte und ihre Beziehung

chiffrierer codierung

Modell

WEITERBILDUNGSKURSX

VDOYHFDHVDU

Geheimtext

Schlüssel

Quelltext

Schlüssel

Quelltext

SALVECAESARSALVECAESAR

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

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

Miniwelt

hat

60 Klassenentwurf

chiffrierer codierung

TCodierung

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

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

TChiffrierer

quelltextgeheimtextchluesselcodierung

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

hat

hat

61 Aufgabe

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

62 Teil 7

Übung: Roboter

63 Zielsetzung

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

64 Identifikation von Objekten

Miniwelt

OstenWesten

Süden

Norden

(6,4)

roboter welt

Modellkennt

65 Klassenentwurf

TWelt

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

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

TRoboter

xPosyPosrichtungwelt

erzeugeninitialisierenschrittlinksDrehenrechtsDrehenmarkeSetzenmarkeLoeschen...

kennt

66 Aufgabe

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

67 Teil 8

UML-Editoren

68 UML-Editoren

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

69 UML-Werkzeuge

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

70 UML-Werkzeuge

Quellcode – erzeugt mit UMLEd:

UNIT mTWuerfel;

interface

uses // Uses-Klausel ggf. anpassen

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

...

71 UML-Werkzeuge

Dokumentation – erzeugt mit UMLEd:

Dokumentation der Klasse "TWuerfel"

Beschreibung der Klasse: 

Attribute

augen : integer beschreibt die aktuelle Augenzahl des Würfels

Protokoll der Dienste / Methoden

Konstruktor

create

Auftrag

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

Anfrage

getAugen : integer

72 Aufgabe

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

73 Teil 9

Zusammenfassung

74 Objektorientierung

GrundideenO

bje

kt

Nach

rich

t

Bezi

eh

un

g

Kla

sse

Modellierungssprache: UML

Implementierungssprache: Delphi, Java, ...

Grund-konzepte

75

Idee: Objekt als Systemkomponente

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

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

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

somit gemeinsam die Systemaktivitäten erzeugen.

76 Literaturhinweise

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

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

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

...

77 Literaturhinweise

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

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

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

...