Post on 25-Feb-2016
description
transcript
Grundkonzepte der Grundkonzepte der objektorientierten objektorientierten ProgrammierungProgrammierung
Klaus Becker2003
2
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
ObjektorientierungObjektorientierung
Grundideen
Grundkonzepte...Ob
jekt
Klas
se
Nach
richt
Asso
ziatio
n
Modellierungssprache: UMLImplementierungssprache: Delphi,
Java, ...
3
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Teil 1Teil 1
Modellierung mit Objekten, Klassen und Nachrichten
4
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
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 $
5
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Das 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 $
6
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Das 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 $
7
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
ZielsetzungZielsetzung
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$
8
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Objektorientierte 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, ...
9
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Objektorientierte 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
10
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Struktur eines ObjektesStruktur eines Objektes
Miniwelt:
1$ 1$ 1$ 1$1$ 1$ 1$
1$ 1$1 2 3
4 5 6
31$
Eigenschaft: AugenOperation: werfen
Eigenschaft: ZahlOperation: Tipp setzen
Eigenschaft: StandOperationen:Betrag einzahlenBetrag abheben
11
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
AttributeAttribute
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
12
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
MethodenMethoden
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
13
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
KlassenKlassen
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.
14
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
KlassenKlassen
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
15
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
UMLUML
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
16
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Konstruktoren / 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:
17
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
DatenkapselungDatenkapselungGeheimnisprinzip: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.
18
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
ZugriffsmethodenZugriffsmethodenUm 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
19
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
SchnittstellenspezifikationSchnittstellenspezifikationGenaue 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)
20
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
AufgabeAufgabeVerfeinern 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
21
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Aktivierung 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).
22
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Das 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
23
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Das Spiel als NachrichtenaustauschDas Spiel als Nachrichtenaustausch
UML-Sequenzdiagramm
24
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
UML-EditorenUML-EditorenMit Hilfe von UML-Editoren (wie z. B. Violet) lassen sich UML-Modelle leicht erstellen.
25
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
AufgabeAufgabeErstellen 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.
26
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
LösungLösungUML-Objektdiagramm:
27
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
LösungLösungUML-Klassendiagramm (Grobfassung):
UML-Klassendiagramm (Verfeinerung):
28
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
LösungLösung
UML-Sequenzdiagramm
29
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Teil 2Teil 2
Implementierung in Delphi
30
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Klasse als ModulKlasse als ModulKlassen 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
31
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Implementierung der KlassenImplementierung der Klassenunit 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
32
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Implementierung der KlassenImplementierung der Klassenunit 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
33
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Implementierung der KlassenImplementierung der Klassenunit uWuerfel;
interface
...
implementation
...
procedure TWuerfel.werfen;beginaugen := random(6)+1;end;
function TWuerfel.getAugen: integer;beginresult := augen;end;
end.
Implementierung der Operationen
34
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
AufgabeAufgabeImplementieren 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“).
35
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Benutzungsoberflä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.
36
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
EreignisbehandlungEreignisbehandlung(Benutzer)Aktion ProgrammreaktionenErzeugung 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.
37
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Einbindung 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
38
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Deklaration 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
39
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Erzeugung der Modell-ObjekteErzeugung der Modell-Objekteunit 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
40
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Implementierung des SpielsImplementierung des Spielsprocedure 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
41
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Implementierung von NachrichtenImplementierung von Nachrichten
procedure TForm1.BSpielenClick(Sender: TObject);
...
begin...
konto.abheben(1);
...end;
abheben(1) kontoForm1
Empfängerobjekt
Senderobjekt-Klasse
Operation
42
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
AufgabeAufgabeErstellen Sie eine geeignete Benutzungsoberfläche. Ergänzen Sie das Delphi-Programm zur Simulation des ChuckALuck-Spiels.Testen Sie anschließend das fertige Programm.
43
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Teil 3Teil 3
Beziehungen
44
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Das Spiel als ObjektDas Spiel als Objekt
Das Spiel soll jetzt als eigenständiges Objekt modelliert werden.
45
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Die Klasse zum SpielobjektDie Klasse zum Spielobjekt
Spiel
...
...+ durchfuehren(tipp: int.)
spiel
46
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Die 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;
47
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Bekanntschaft 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
48
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Bekanntschaft durch ReferenzenBekanntschaft durch Referenzen
Referenzattribute
Zeiger (Adresse)
3A80 3A8
0
49
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Bekanntschaft 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.
50
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Erzeugung 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
51
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Erzeugung von ReferenzenErzeugung von Referenzen
konto := Tkonto.create(100);
3A80
3A80
52
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Erzeugung von ReferenzenErzeugung von Referenzen
spiel := TSpiel.create(..., konto, ...);
3A80
3A80
3A80
3A80
3A80
constructor TSpiel.create(...; k: TKonto; ...);begin ... konto := k; ...end;
3A80
53
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
AufgabeAufgabeFertigen 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.
54
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Kennt-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.
55
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Hat-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
56
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Hat-BeziehungHat-Beziehung
kennt
hat
57
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Hat-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;
58
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
AufgabeAufgabeFertigen 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.
59
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
UML: Beziehungen / AssoziationenUML: Beziehungen / Assoziationen
UML-Klassendiagramm
wuerfelA
wuerfelB
wuerfelC
kontospielkennt
kennt
kennt
spielbrettkennt
kennt
Wuerfel
Konto
Spielkennt kennt
Spielbrett
kennt3
1
1
UML-Objektdiagramm
60
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Kardinalitä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..*
61
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
UML: BeziehungsartenUML: Beziehungsarten
KontoSpielkennt
hatSpiel Konto
FormForm1ist
Kennt-Beziehung: Verbindung
Hat-Beziehung: Komposition
Ist-Beziehung: Verfeinerung; Vererbung
62
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Exkurs: Ist-BeziehungExkurs: Ist-Beziehung
TForm
...
TForm1
– wuerfelA: Wuerfel...
...
ist ein Vererbung
type
TForm1 = class(TForm)
..
end;
63
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Exkurs: Erzeugung von QuellcodeExkurs: Erzeugung von QuellcodeErstellen Sie mit Hilfe von UMLed ein Klassendiagramm zum ChuckALuck-Spiel. Erzeugen Sie anschließend mit Hilfe von UMLed den zugehörigen Delphi-Code.
64
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Eine 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.
65
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
AufgabeAufgabeImplementieren Sie das neue Modell. Bedenken Sie, an welcher Stelle im Programm das Würfel-Objekt erzeugt werden soll.
66
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
LösungLösungunit 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
...
67
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
LösungLösungunit 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.
68
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Benutzungsoberflä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.
69
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Übungen – Aufgabe 1Übungen – Aufgabe 1
Folgendes Zufallsexperiment soll simuliert werden: Man würfelt so lange, bis eine 6 fällt.
70
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Ü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.
71
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Ü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.
72
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Ü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)
73
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Lösungsvorschlag – Aufgabe 1Lösungsvorschlag – Aufgabe 1
74
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Lö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
75
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Lösungsvorschlag – Aufgabe 2Lösungsvorschlag – Aufgabe 2
76
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Lösungsvorschlag – Aufgabe 2Lösungsvorschlag – Aufgabe 2
77
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Teil 4Teil 4
Zusammenfassung
78
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
ObjektorientierungObjektorientierung
Grundideen
Grundkonzepte...Ob
jekt
Klas
se
Nach
richt
Asso
ziatio
n
Modellierungssprache: UMLImplementierungssprache: Delphi,
Java, ...
79
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Grundidee: 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.
80
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Grundidee: 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.
81
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Grundidee: 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.
82
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Grundkonzept: 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
83
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Grundkonzept: 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
84
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Grundkonzept: 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
85
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
Grundkonzept: 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
86
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
UML: 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)
87
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
UML: 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
88
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
UML: SequenzdiagrammUML: Sequenzdiagramm
UML-Sequenzdiagramm
89
KB
Obje
ktor
ient
ierte
Pro
gram
mie
rung
LiteraturhinweiseLiteraturhinweiseHelmut 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)