89
Grundkonzepte der Grundkonzepte der objektorientierten objektorientierten Programmierung Programmierung Klaus Becker 2003

Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

Embed Size (px)

Citation preview

Page 1: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

Grundkonzepte der Grundkonzepte der objektorientierten objektorientierten ProgrammierungProgrammierung

Klaus Becker2003

Page 2: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

2

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gObjektorientierungObjektorientierung

Grundideen

Grundkonzepte

...Ob

jekt

Kla

sse

Nach

rich

t

Ass

ozi

ati

on

Modellierungssprache: UML

Implementierungssprache: Delphi, Java, ...

Page 3: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

3

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gTeil 1Teil 1

Modellierung mit Objekten, Klassen und Nachrichten

Page 4: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

4

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

g

3

Das Würfelspiel „chuck a luck“Das Würfelspiel „chuck a luck“

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

1$ 1$1$1 2

4 5 6

Der Spieler zahlt den Einsatz.

Der Spieler tippt auf eine Zahl.

Einsatz: 1 $

Gewinn: Einsatz +1 Treffer: 1 $ 2 Treffer: 2 $3 Treffer: 3 $

Page 5: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

5

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gDas Würfelspiel „chuck a luck“Das Würfelspiel „chuck a luck“

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

1$ 1$1 2 3

4 5 6

Der Spieler zahlt den Einsatz.

Der Spieler tippt auf eine Zahl.Der Spieler wirft die drei Würfel.

31$

Einsatz: 1 $

Gewinn: Einsatz +1 Treffer: 1 $ 2 Treffer: 2 $3 Treffer: 3 $

Page 6: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

6

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gDas Würfelspiel „chuck a luck“Das Würfelspiel „chuck a luck“

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

1$ 1$1$

1 2 3

4 5 6

Der Spieler zahlt den Einsatz.

Der Spieler tippt auf eine Zahl.Der Spieler wirft die drei Würfel.Der Anbieter zahlt den Gewinn.

3

1$1$

Einsatz: 1 $

Gewinn: Einsatz +1 Treffer: 1 $ 2 Treffer: 2 $3 Treffer: 3 $

Page 7: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

7

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gZielsetzungZielsetzung

Entwicklung eines interaktiven Systems, das dem Benutzer das Würfelspiel „chuck a luck“ bereitstellt.

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

1$ 1$

Benutzer

Chuck-a-Luck-System

1 2 3

4 5 6

31$

Page 8: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

8

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gObjektorientierte ModellierungObjektorientierte Modellierung

Miniwelt:

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

1$ 1$1 2 3

4 5 6

31$

Sichtweise: Die Miniwelt ist aus Gegenständen aufgebaut, die in Beziehung zueinander stehen können. Gegenstände können Personen, Dinge, Sachverhalte, Ereignisse, ... sein. Jeder Gegenstand stellt eine autonome Einheit mit klar begrenzten Aufgaben dar. Gegenstände der Miniwelt „chuck a luck“: 3 Würfel, Spielbrett, Spielerkonto, ...

Page 9: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

9

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gObjektorientierte ModellierungObjektorientierte Modellierung

Miniwelt:

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

1$ 1$1 2 3

4 5 6

31$

Grundidee der objektorientierten Modellierung: Die Gegenstände der Miniwelt werden mit Objekten im Sinne der Informatik beschrieben.

wuerfelA wuerfelB wuerfelC

Modell(welt):

spielbrett konto

Page 10: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

10

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gStruktur eines ObjektesStruktur eines Objektes

Miniwelt:

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

1$ 1$1 2 3

4 5 6

31$

Eigenschaft: Augen

Operation: werfen

Eigenschaft: Zahl

Operation: Tipp setzen

Eigenschaft: Stand

Operationen:Betrag einzahlenBetrag abheben

Page 11: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

11

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gAttributeAttribute

Miniwelt:

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

1$ 1$1 2 3

4 5 6

31$

wuerfelA wuerfelB wuerfelC

Modell:

spielbrett konto

Die charakteristischen Eigenschaften eines Objekts werden mit Attributen erfasst. Die Gesamtheit der Attributwerte legt den Objektzustand fest.

augen = 3 augen = 3 augen = 5 zahl = 3 stand = 9

Page 12: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

12

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gMethodenMethoden

Miniwelt:

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

1$ 1$1 2 3

4 5 6

31$

wuerfelA wuerfelB wuerfelC

Modell:

spielbrett konto

Das Verhalten eines Objekts wird mit Operationen / Methoden erfasst. Diese bestimmen die dynamischen Eigenschaften eines Objekts.

augen = 3 augen = 3 augen = 5 zahl = 3 stand = 9

werfen werfen werfen tipp setzen betrag abhebenbetrag einzahlen

Page 13: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

13

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gKlassenKlassen

wuerfelA wuerfelB wuerfelC spielbrett konto

augen = 3 augen = 3 augen = 5 zahl = 3 stand = 9

werfen werfen werfen tipp setzen betrag abhebenbetrag einzahlen

Wuerfel Spielbrett Konto

augen zahl stand

werfen tipp setzen betrag abhebenbetrag einzahlen

Objekte:

Klassen:

Klassen beschreiben die Gesamtheit gleich strukturierter Objekte.

Page 14: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

14

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gKlassenKlassen

Klassen sind Baupläne für Objekte.

Objekte werden als Exemplare (Instanzen) von Klassen bezeichnet.

wuerfelA wuerfelB wuerfelC spielbrett konto

augen = 3 augen = 3 augen = 5 zahl = 3 stand = 9

Wuerfel Spielbrett Konto

augen zahl stand

werfen tipp setzen betrag abhebenbetrag einzahlen

Objekte:

Klassen:

instance of instance of instance of

Page 15: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

15

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gUMLUML

wuerfelA wuerfelB wuerfelC

augen = 3 augen = 3 augen = 5

Wuerfel

augen

werfen

instance of

UML-Klassendiagram

m

UML-Objektdiagramm

UML (Unified Modeling Language):

Grafische Sprache zur Beschreibung objektorientierter Modelle

Page 16: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

16

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gKonstruktoren / DestruktorenKonstruktoren / Destruktoren

Konstruktoren / Destruktoren sind spezielle Operationen zur Erzeugung / Vernichtung von Objekten.

Beachte: Konstruktoren / Destruktoren sind Klassenmethoden (d. h. Objekte verfügen nicht über diese Methoden).

Wuerfel Spielbrett Konto

augen zahl stand

erzeugenvernichtenwerfen

erzeugenvernichtentipp setzen

erzeugenvernichtenbetrag abhebenbetrag einzahlen

Klassen:

Page 17: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

17

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gDatenkapselungDatenkapselung

Geheimnisprinzip:Die für die Benutzung einer Systemkomponente (eines Moduls) nicht benötigten Detailinformationen werden verborgen.

Konto

stand

erzeugenvernichtenbetrag abhebenbetrag einzahlen

Konto

stand

erzeugenvernichtenbetrag abhebenbetrag einzahlen

Datenkapselung bei Objekten / Klassen:Die innere Struktur eines Objekts (Aufbau über Attribute) wird verborgen. Objekte stellen Dienste nur über ihre Operationen / Methoden bereit.

Page 18: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

18

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gZugriffsmethodenZugriffsmethoden

Um auf Attributwerte (lesend bzw. schreibend) zugreifen zu können, werden spezielle Zugriffsmethoden benötigt.

Konto

stand

erzeugenvernichtenbetrag abhebenbetrag einzahlenstand erfragenstand setzen

Konto

stand

erzeugenvernichtenbetrag abhebenbetrag einzahlen

Konto

stand

erzeugenvernichtenbetrag abhebenbetrag einzahlen

Page 19: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

19

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gSchnittstellenspezifikationSchnittstellenspezifikation

Genaue Festlegung der Benutzungsschnittstelle

• Zugriffsrechte (- kein Zugriff; + Zugriff erlaubt)

• Datentypen (und Initialisierungswerte)

• Signaturen (Festlegung der Parameter)

Konto

stand

erzeugenvernichtenbetrag abhebenbetrag einzahlenstand erfragenstand setzen

Konto

– stand: integer

+ create(betrag: integer)+ destroy+ abheben(betrag: integer)+ einzahlen(betrag: int.)+ getStand: integer+ setStand(betrag: integer)

Page 20: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

20

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gAufgabeAufgabe

Verfeinern Sie analog zur Konto-Klasse die weiteren Klassen der ChuckALuck-Miniwelt und erstellen Sie mit Hilfe .

Konto

– stand: integer

+ create(betrag: integer)+ destroy+ abheben(betrag: integer)+ einzahlen(betrag: int.)+ getStand: integer+ setStand(betrag: integer)

Wuerfel Spielbrett Konto

augen zahl stand

werfen tipp setzen betrag abhebenbetrag einzahlen

Page 21: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

21

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gAktivierung von ObjektenAktivierung von Objekten

Zustand vorher

Zustand nachher

abheben(1) Aktivierung durch Nachricht

„Kunde“

konto

stand = 9

konto

stand = 9

konto

stand = 8

Sichtweise:

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

Page 22: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

22

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gDas Spiel als NachrichtenaustauschDas Spiel als Nachrichtenaustausch

UML-Kollaborationsdiagra

mm

wuerfelA

wuerfelB

wuerfelC

konto 4: werfen 1: abheben(1)

3: werfen

5: werfen

spielbrett2: setzen(tipp)

8: getAugen10: einzahlen(richtige+1)

7: getAugen

9: getAugen

6: getZahl

Page 23: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

23

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gDas Spiel als NachrichtenaustauschDas Spiel als Nachrichtenaustausch

UML-Sequenzdiagramm

Page 24: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

24

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gUML-EditorenUML-Editoren

Mit Hilfe von UML-Editoren (wie z. B. Violet) lassen sich UML-Modelle leicht erstellen.

Page 25: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

25

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gAufgabeAufgabe

Erstellen Sie mit Hilfe des UML-Editors „Violet“ ein Objekt- und ein Klassendiagramm zur Beschreibung der ChuckALuck-Miniwelt.

Ergänzen Sie auch das bereits begonnene Interaktionsdiagramm. Hier soll der gesamte Nachrichtenaustausch zur Beschreibung des Spielablaufs dargestellt werden.

Page 26: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

26

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gLösungLösung

UML-Objektdiagramm:

Page 27: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

27

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gLösungLösung

UML-Klassendiagramm (Grobfassung):

UML-Klassendiagramm (Verfeinerung):

Page 28: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

28

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gLösungLösung

UML-Sequenzdiagramm

Page 29: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

29

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gTeil 2Teil 2

Implementierung in Delphi

Page 30: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

30

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gKlasse als ModulKlasse als Modul

Klassen werden als Module (Programmeinheit) implementiert, die in Delphi in zwei Teilen beschrieben werden:

Öffentlicher Teil bestehend aus den Vereinbarungen, die zur Benutzung des Moduls notwendig sind (Schnittstelle).Privater Teil bestehend 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.

Wuerfel

– augen: integer

+ create+ destroy+ werfen+ getAugen: integer

Page 31: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

31

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gImplementierung der KlassenImplementierung der Klassen

unit uWuerfel;

interface

type TWuerfel = class(TObject)

private augen: integer;

public constructor create; destructor destroy; procedure werfen; function getAugen: integer;

end;

...

Wuerfel

– augen: integer

+ create+ destroy+ werfen+ getAugen: integer

Deklaration der Attribute und Operationen

Von TObject abgeleitet

Page 32: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

32

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gImplementierung der KlassenImplementierung der Klassen

unit uWuerfel;

interface

...

implementation

constructor TWuerfel.create;begininherited create;augen := 1;randomize;end;

destructor TWuerfel.destroy;begininherited destroy;end;

...

Implementierung der Konstruktoren /

Destruktoren

Geerbter Konstruktor wird

aufgerufen

Page 33: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

33

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gImplementierung der KlassenImplementierung der 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 34: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

34

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gAufgabeAufgabe

Implementieren Sie die Klassen Wuerfel, Konto und Spielzahl.

Erstellen Sie zunächst ein neues Projekt in einem hierfür vorgesehenen neuen Ordner.

Erstellen Sie für jede Klassen-Unit eine eigene Datei (Datei – Neu – Unit) und geben Sie dieser Datei einen passenden Namen (z. B. uKonto).

Übernehmen Sie die Delphi-Konvention, den Klassennamen mit einem „T“ beginnen zu lassen (z. B. „TKonto“).

Page 35: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

35

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gBenutzungsoberflächeBenutzungsoberfläche

PTitel: TPanel

RGSpielbrett: TRadioGroup

GBWuerfel: TGroupBox

GBKonto: TGroupBox

PWuerfelC: TPanel

PKonto: TPanel

BSpielen: TButton

PWuerfelA: TPanel

PWuerfelB: TPanel

Form1: TForm1

Die Benutzungsoberfläche wird mit Hilfe von sog. GUI-Objekten (Graphical User Interface) aufgebaut.

Page 36: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

36

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gEreignisbehandlungEreignisbehandlung

(Benutzer)Aktion Programmreaktionen

Erzeugung des Formulars

Erzeugung der Modellobjekte.

Mausklick auf den „Spiel durchführen“-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 37: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

37

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gEinbindung der Modellklassen Einbindung der Modellklassen

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, uWuerfel, uSpielbrett, uKonto;

type

TForm1 = class(TForm) ...

Bekanntmachen der Klassen

Page 38: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

38

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gDeklaration der ObjekteDeklaration der Objekte

...

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, wuerfelB, wuerfelC: TWuerfel; spielbrett: TSpielbrett; konto: TKonto;

public { Public-Deklarationen }

end;

Von Delphi deklarierte GUI-

Objekte

Vom Benutzer deklarierte Modell-

Objekte

Page 39: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

39

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gErzeugung der Modell-ObjekteErzeugung der Modell-Objekte

unit Unit1;

interface

...

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);beginwuerfelA := TWuerfel.create;wuerfelB := TWuerfel.create;wuerfelC := TWuerfel.create;konto := TKonto.create(100);spielbrett := TSpielbrett.create;end;

procedure TForm1.BSpielenClick(Sender: TObject);...

end.

Erzeugung der Modell-Objekte

Page 40: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

40

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gImplementierung des SpielsImplementierung des Spiels

procedure TForm1.BSpielenClick(Sender: TObject);

var tipp, zahl, richtige: integer;

begin// Aktualisierung des Eingabewerts

tipp := RGSpielbrett.ItemIndex+1;// Aktualisier. d. Modell-Objekte bzw. Durchführung d. Spielskonto.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);...end;

Nachrichtenaustausch zur Erzeugung des

Spiels

Page 41: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

41

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gImplementierung von NachrichtenImplementierung von Nachrichten

procedure TForm1.BSpielenClick(Sender: TObject);

...

begin...

konto.abheben(1);

...end;

abheben(1) kontoForm1

Empfängerobjekt

Senderobjekt-Klasse

Operation

Page 42: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

42

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gAufgabeAufgabe

Erstellen Sie eine geeignete Benutzungsoberfläche. Ergänzen Sie das Delphi-Programm zur Simulation des ChuckALuck-Spiels.

Testen Sie anschließend das fertige Programm.

Page 43: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

43

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gTeil 3Teil 3

Beziehungen

Page 44: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

44

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gDas Spiel als ObjektDas Spiel als Objekt

Das Spiel soll jetzt als eigenständiges Objekt modelliert werden.

Page 45: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

45

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gDie Klasse zum SpielobjektDie Klasse zum Spielobjekt

Spiel

...

...+ durchfuehren(tipp: int.)

spiel

Page 46: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

46

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gDie Operation „durchfuehren“Die Operation „durchfuehren“

Spiel

...

...+ durchfuehren(tipp: int.)

spiel

procedure TSpiel.durchfuehren(tipp: integer);

var richtige: integer; zahl: integer;

beginkonto.abheben(1);spielbrett.setZahl(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);end;

Page 47: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

47

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gBekanntschaft zwischen ObjektenBekanntschaft zwischen Objekten

Ein Nachrichtenaustausch zwischen Objekten kann nur stattfinden, wenn das sendende Objekt das Empfängerobjekt kennt.

wuerfelA

wuerfelB

wuerfelC

kontospielkennt

kennt

kennt

spielbrettkennt

kennt

Page 48: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

48

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gBekanntschaft durch ReferenzenBekanntschaft durch Referenzen

Referenzattribute

Zeiger (Adresse)

3A80 3A8

0

Page 49: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

49

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gBekanntschaft durch ReferenzenBekanntschaft durch Referenzen

Spiel

- wuerfelA: Wuerfel- wuerfelB: Wuerfel- wuerfelC: Wuerfel- konto: Konto- spielbrett: Spielbrett

...+ durchfuehren(tipp: int.)

Referenzattribute

Mit Referenzattributen kann ein Objekt die Adressen seiner „Bekanntschaften“ speichern.

Page 50: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

50

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gErzeugung von ReferenzenErzeugung von Referenzen

// Deklaration des Konstruktors

constructor TSpiel.create(wA, wB, wC: TWuerfel; k: TKonto; sp: TSpielbrett);

beginkonto := k;wuerfelA := wA;wuerfelB := wB;wuerfelC := wC;spielbrett := sp;end;

// Aufruf des Konstruktors

konto := Tkonto.create(100);... spiel := TSpiel.create(

wuerfelA, wuerfelB, wuerfelC, konto, spielbrett);

Die Referenzbildung erfolgt bei der Erzeugung des Spiel-Objekts.

Spiel

- wuerfelA: Wuerfel- wuerfelB: Wuerfel- wuerfelC: Wuerfel- konto: Konto- spielbrett: Spielbrett

+ create( wA, wB, wC: Wuerfel; k: Konto; sp: Spielbrett)+ durchfuehren(tipp: int.)

Konstruktor mit Parametern zur Übergabe der Referenzen

Page 51: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

51

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gErzeugung von ReferenzenErzeugung von Referenzen

konto := Tkonto.create(100);

3A80

3A80

Page 52: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

52

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gErzeugung von ReferenzenErzeugung von Referenzen

spiel := TSpiel.create(..., konto, ...);

3A80

3A80

3A80

3A80

3A80

constructor TSpiel.create(...; k: TKonto; ...);begin ... konto := k; ...end;

3A80

Page 53: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

53

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gAufgabeAufgabe

Fertigen Sie sich zunächst eine Kopie des ersten ChuckALuck-Programms an (neuer Ordner, ...).

Ändern Sie das Programm so ab, dass auch das Spiel mit einem Objekt beschrieben wird.

Implementieren Sie hierzu die Klasse TSpiel (neue Unit, ...).

Ändern Sie anschließend die Form-Unit passend ab.

Page 54: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

54

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gKennt-Beziehung / VerbindungKennt-Beziehung / Verbindung

wuerfelA

wuerfelB

wuerfelC

kontospielkennt

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 55: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

55

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gHat-Beziehung / KompositionHat-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

kontospielhat

hat

hat

spielbrett

hat

hat

Page 56: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

56

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gHat-BeziehungHat-Beziehung

kennt

hat

Page 57: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

57

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gHat-BeziehungHat-Beziehung

// Deklaration des Konstruktors

constructor TSpiel.create;begininherited create;konto := TKonto.create(100);wuerfelA := TWuerfel.create;wuerfelB := TWuerfel.create;wuerfelC := TWuerfel.create;spielbrett := TSpielbrett.create;end;

Spiel

- wuerfelA: Wuerfel- wuerfelB: Wuerfel- wuerfelC: Wuerfel- konto: Konto- spielbrett: Spielbrett

+ create+ destroy+ durchfuehren(tipp: int.)+ getWuerfelAAugen: int....+ getKontoStand: integer// Deklaration des Destruktors

destructor TSpiel.destroy;beginkonto.free;wuerfelA.free;wuerfelB.free;wuerfelC.free;spielbrett.free;inherited destroy;end;

Page 58: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

58

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gAufgabeAufgabe

Fertigen Sie sich zunächst eine Kopie des ersten ChuckALuck-Programms an (neuer Ordner, ...).

Ändern Sie das Programm so ab, dass das Spiel die volle Kontrolle über die weiteren Objekte hat.

Page 59: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

59

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gUML: Beziehungen / AssoziationenUML: Beziehungen / Assoziationen

UML-Klassendiagramm

wuerfelA

wuerfelB

wuerfelC

kontospielkennt

kennt

kennt

spielbrettkennt

kennt

Wuerfel

Konto

Spielkennt kennt

Spielbrett

kennt3

1

1

UML-Objektdiagramm

Page 60: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

60

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gKardinalitätenKardinalitäten

Wuerfel

Konto

Spielkennt kennt

Spielbrett

kennt3

1

1

3: Ein Spiel-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 61: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

61

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gUML: BeziehungsartenUML: Beziehungsarten

KontoSpielkennt

hat

Spiel Konto

FormForm1ist

Kennt-Beziehung: Verbindung

Hat-Beziehung: Komposition

Ist-Beziehung: Verfeinerung; Vererbung

Page 62: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

62

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gExkurs: Ist-BeziehungExkurs: Ist-Beziehung

TForm

...

TForm1

– wuerfelA: Wuerfel...

...

ist ein Vererbung

type

TForm1 = class(TForm)

..

end;

Page 63: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

63

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gExkurs: Erzeugung von QuellcodeExkurs: Erzeugung von Quellcode

Erstellen Sie mit Hilfe von UMLed ein Klassendiagramm zum ChuckALuck-Spiel. Erzeugen Sie anschließend mit Hilfe von UMLed den zugehörigen Delphi-Code.

Page 64: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

64

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gEine neue ModellierungEine neue Modellierung

wuerfel kontospielhat kennt

Spiel

- wuerfelA: integer- wuerfelB: integer- wuerfelC: integer- spielzahl: integer - konto: Konto- wuerfel: Wuerfel

+ create(k: Konto) + destroy+ durchfuehren(tipp: int.)+ getWuerfelA: integer+ getWuerfelB: integer+ getWuerfelC: integer

Bei dieser Modellierung des ChuckALuck-Spiels soll nur ein Würfel-Objekt benutzt werden. Dieses Würfel-Objekt soll dreimal zum Würfelwerfen aktiviert werden. Die Würfelergebnisse werden mit geeigneten Spiel-Attributen (wuerfelA, wuerfelB, wuerfelC: integer) erfasst. Des weiteren wird kein Spielbrett-Objekt benutzt. Die relevanten Informationen werden mit einem geeigneten Spiel-Attribut (spielzahl: integer) erfasst.

Page 65: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

65

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gAufgabeAufgabe

Implementieren Sie das neue Modell. Bedenken Sie, an welcher Stelle im Programm das Würfel-Objekt erzeugt werden soll.

Page 66: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

66

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gLösungLösung

unit uSpiel;

interface

uses uWuerfel, uKonto;

type TSpiel = class private spielzahl: integer; wuerfelA, wuerfelB, wuerfelC: integer; konto: TKonto; wuerfel: TWuerfel; public constructor create(k: TKonto); destructor destroy; procedure durchfuehren(tipp: integer); function getWuerfelA: integer; function getWuerfelB: integer; function getWuerfelC: integer; end;

implementation

...

Page 67: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

67

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gLösungLösung

unit uSpiel;

interface

...

implementation

constructor TSpiel.create(k: TKonto);begininherited create;spielzahl := 1;wuerfel := TWuerfel.create;konto := k;end;

destructor Tspiel.destroy;beginwuerfel.free;inherited destroy;end;

...

end.

Page 68: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

68

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gBenutzungsoberfläche und Benutzungsoberfläche und

FachkonzeptFachkonzept

wuerfel kontospielhat kennt

PWuerfelA Form1hat

PWuerfelBhat

...

GUI-Objekte

Fachkonzept-Objekte

Trennungsprinzip:klare Trennung zwischen Benutzungsoberfläche und Fachkonzept:Die Fachkonzeptobjekte kennen die GUI-Objekte nicht.

Page 69: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

69

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gÜbungen – Aufgabe 1Übungen – Aufgabe 1

Folgendes Zufallsexperiment soll simuliert werden: Man würfelt so lange, bis eine 6 fällt.

Page 70: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

70

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gÜbungen – Aufgabe 1Übungen – Aufgabe 1

Erstellen Sie in einem ersten Schritt ein objektorientiertes Modell und dokumentieren sie es mit UML-Diagrammen.

Überlegen Sie sich hierzu, welche Objekte im Modell zur Miniwelt vorkommen und in welchen Beziehungen sie zueinander stehen sollen. Lassen Sie zunächst die statistische Auswertung außer Betracht.

Entwerfen Sie anschließend die Details (Attribute und Methoden) und erstellen Sie ein Klassendiagramm.

Stellen Sie Ihre Modelle mit Hilfe von Violet dar.

Implementieren Sie in einem zweiten Schritt das erstellte Modell.

In einem dritten Schritt können Sie dann das entwickelte System um eine statistische Auswertung erweitern.

Page 71: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

71

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gÜbungen – Aufgabe 2Übungen – Aufgabe 2

Das ChuckALuck-Spiel soll vom System wiederholt gespielt werden. Die jeweilige Spielzahl soll dabei mit dem Zufallsgenerator erzeugt werden. Über die Ergebnisse soll eine Statistik geführt werden.

Page 72: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

72

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gÜbungen – Aufgabe 2Übungen – Aufgabe 2

Erstellen Sie zunächst ein objektorientiertes Modell.

Überlegen Sie sich zunächst, welche Objekte in dem neuen Modell vorkommen und in welchen Beziehungen sie zueinander stehen.

Entwerfen Sie anschließend die Details (Attribute und Methoden) und erstellen Sie ein Klassendiagramm.

Stellen Sie Ihr Modell mit Hilfe von Violet dar.

Implementieren Sie abschließend das Modell. Sie können die vorgegebene Benutzungsoberfläche benutzen. (siehe ChuckALuck5 – Aufgabe)

Page 73: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

73

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gLösungsvorschlag – Aufgabe 1Lösungsvorschlag – Aufgabe 1

Page 74: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

74

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gLösungsvorschlag – Aufgabe 2Lösungsvorschlag – Aufgabe 2

wuerfel kontospielkennt

statistik

kennt

Statistik

- anzahlDerSpiele: integer- anfangskontostand: integer- gewinnProSpiel: integer- konto: Konto

+ create(k: Konto) + spieleBeruecksichtigen( spielanzahl: integer)+ getAnzahlDerSpiele: integer+ getGewinnProSpiel: real

UML-Klassendiagra

mm

UML-Objektdiagram

m

hat

Page 75: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

75

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gLösungsvorschlag – Aufgabe 2Lösungsvorschlag – Aufgabe 2

Page 76: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

76

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gLösungsvorschlag – Aufgabe 2Lösungsvorschlag – Aufgabe 2

Page 77: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

77

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gTeil 4Teil 4

Zusammenfassung

Page 78: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

78

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gObjektorientierungObjektorientierung

Grundideen

Grundkonzepte

...Ob

jekt

Kla

sse

Nach

rich

t

Ass

ozi

ati

on

Modellierungssprache: UML

Implementierungssprache: Delphi, Java, ...

Page 79: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

79

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gGrundidee: Objekt als Grundidee: Objekt als SystemkomponenteSystemkomponente

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 80: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

80

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gGrundidee: Objekt als ModulGrundidee: 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 81: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

81

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gGrundidee: Objekt als BausteinGrundidee: Objekt als Baustein

Objekte sollten nach Möglichkeit so abstrakt entworfen werden, dass sie zur

Erledigung vieler Aufgaben benutzt werden können (Wiederverwendung). Gut

verwendbare Objekte / Klassen können dann in Klassenbibliotheken zur weiteren

Verwendung bereitgestellt werden.

Page 82: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

82

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gGrundkonzept: ObjektGrundkonzept: 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 83: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

83

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gGrundkonzept: KlasseGrundkonzept: Klasse

Kla

sse

Klassen sind Baupläne für Objekte. Objekte werden als Exemplare / Instanzen von Klassen bezeichnet.

Klasse

Objekt

Konto

stand

Betrag abhebenBetrag einzahlen

konto

stand = 9

instance of

Page 84: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

84

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gGrundkonzept: NachrichtGrundkonzept: Nachricht

Nac

hric

ht

Die Aktivierung von Operationen / Methoden erfolgt mit Hilfe von Nachrichten.Eine Nachricht kann also als Methodenaufruf angesehen werden.

wuerfelAwerfen( )

Nachricht

spiel

EmpfängerSender

Page 85: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

85

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gGrundkonzept: AssoziationGrundkonzept: Assoziation

Ass

ozia

tion

Eine Assoziation ist eine Beziehung zwischen verschiedenen Objekten einer oder mehrerer Klassen.

Eine Assoziation ist i.a. Grundvoraussetzung für den Nachrichtenaustausch.

Wuerfel

Spielbrett

Konto

Spiel

1

3

1

Assoziation

Page 86: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

86

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gUML: Unified Modeling LanguageUML: 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 87: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

87

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gUML: Klassen- und ObjektdiagrammeUML: Klassen- und Objektdiagramme

wuerfelA wuerfelB wuerfelC

augen = 3 augen = 3 augen = 5

Wuerfel

augen

werfen

instance of

UML-Klassendiagram

m

UML-Objektdiagramm

Page 88: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

88

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gUML: SequenzdiagrammUML: Sequenzdiagramm

UML-Sequenzdiagramm

Page 89: Grundkonzepte der objektorientierten Programmierung Klaus Becker 2003

89

KB

Ob

jekto

rien

tiert

e P

rog

ram

mie

run

gLiteraturhinweiseLiteraturhinweise

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)