Title: Grundkonzepte%20der%20objektorientierten%20Programmierung%20Teil%201
1Grundkonzepte der objektorientierten
ProgrammierungTeil 1
2Objektorientierte Modellierung
1
4
2
5
3
6
3
Miniwelt
Modell
System
3Warum Objektorientierung?
These Marktreife Software ist sehr schwer zu
entwickeln. (Balzert Lehrbuch der
Software-Technik, S. 27)
- Berühmte Software-Fehler
- Eine Schweizer Bank überwies einigen Kunden den
Betrag, den die Kunden selbst an die Bank hätten
überweisen müssen. Der Fehler wurde erst nach 9
Monaten bemerkt, der Bank entstand inzwischen ein
Schaden von ca. 200000 DM. - Beim Bau der Rakete Ariane-5 wurde das bewährte
Navigationssystem der Ariane-4 komplett
übernommen. Daher konnten die für die
Softwaretests vorgesehenen Ausgaben von mehr als
100 Millionen DM drastisch reduziert werden. Eine
praxisgerechte Simulation der bei einem
Ariane-5-Start anfallenden Datenmengen fand nicht
statt. Da die Ariane-5 durch zusätzliche
Triebwerke schneller startete als ihr
Vorgängermodell, konnten die Computer die Daten
nicht schnell genug verarbeiten. Die Ariane-5
musste eine Minute nach dem Start gesprengt
werden (Schaden mehrere Milliarden DM). - Der als schwarzer Montag in die Börsengeschichte
eingegangene 19.10.1987 war zum Großteil durch
falsch programmierte Börsenprogramme großer
Banken hervorgegangen. Als der Kurs einiger
Aktien an diesem Tag besonders stark fiel,
verkauften einige Programme automatisch die
entsprechenden Aktien. Durch einen Lawineneffekt
kam es zu einem weltweit drastischen Absinken der
Kurse. - (vgl. Bähnisch Praktische Informatik 1, S. 193
ff)
4Warum Objektorientierung?
These Marktreife Software ist sehr schwer zu
entwickeln. (Balzert Lehrbuch der
Software-Technik, S. 27)
- Statistische Untersuchungen
- Nach einer Untersuchung der Standish Group aus
dem Jahr 1995 werden 31 aller Softwareprojekte
erfolglos abgebrochen, 53 kosten viel mehr als
die ursprünglich vorgesehenen Kosten und nur 16
werden rechtzeitig und ohne Kostenüberschreitung
fertiggestellt. - Normale Software enthält durchschnittlich 25
Fehler pro 1000 Programmzeilen. Bei guter
Software kann der Schnitt auf ca. 2 Fehler pro
1000 Programmzeilen reduziert werden. Beim
Betriebssystem Windows-95, das aus 10 Millionen
Programmzeilen besteht, muss man davon ausgehen,
dass es bei der Auslieferung etwa 200 000 Fehler
enthält. - (vgl. http//www.standishgroup.com/chaos.html)
5Warum Objektorientierung?
These Objektorientierung ist die derzeitige
Antwort auf die gestiegene Komplexität der
Softwareentwicklung.(Oestereich
Objektorientierte Software-Entwicklung, S. 30)
Hauptprobleme der Software-Entwicklung Eines
der Hauptprobleme der Software-Entwicklung ist
die Entwicklung zuverlässiger Software. Man
bezeichnet ein Programm als zuverlässig, wenn es
sich im Betrieb so verhält, wie man es aufgrund
der Anforderungen an das Programm erwartet. Je
umfangreicher ein Software-Projekt ist, desto
unwahrscheinlicher ist es, dass sein Ergebnis
jemals fehlerfrei wird. Man muss sogar davon
ausgehen, dass es unmöglich ist, umfangreiche
Software-Produkte vollständig fehlerfrei zu
entwickeln. Das andere Hauptproblem der
Software-Entwicklung besteht darin, die Software
so zu entwickeln, dass sie später problemlos
geändert werden kann. Für die Entwickler ist es
vorteilhaft, wenn die Entwicklung eines
Software-Systems nach seiner Fertigstellung
beendet ist. Eine weitergehende Betrachtung zeigt
jedoch, dass die Entwicklung eines
Software-Systems ein evolutionärer Prozess ist,
der oft sehr lange währt, und dessen Ende
womöglich nicht abzusehen ist. (Gumm, S. 661,
662)
6Zur Orientierung
Objektorientierung zeigt ihre Vorteile in der
Regel erst bei komplexeren Software-Entwicklungsau
fgaben. Komplexe Software-Entwicklungsaufgaben
eignen sich jedoch nicht gut, um die
Grundkonzepte objektorientierter Programmierung
zu erlernen. Im folgenden sollen diese
Grundkonzepte daher zunächst an einfachen und
überschaubaren Problemkontexten entwickelt
werden. Danach werden dann umfangreichere
Problemstellungen bearbeitet, die den Nutzen der
Objektorientierung illustrieren sollen.
7Teil 1
Objekte und Klassen
8Das Würfelspiel chuck a luck
Einsatz zahlen und Zahl tippen Würfel
werfen Gewinn auszahlen
Einsatz 1
Gewinn 0 Treffer 1 Treffer Einsatz 1 2
Treffer Einsatz 2 3 Treffer Einsatz 3
1
4
2
5
3
6
3
9Zielsetzung
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.
1
4
2
5
Miniwelt
3
6
3
System
10Eine ad-hoc-Lösung mit Hilfe von Delphi
type TGUI class(TForm) Pueberschrift
TPanel Pspielfeld TPanel Pwuerfel
TPanel Pkonto TPanel ...
BEinsatzZahlen TButton ... procedure
BEinsatzZahlenClick (Sender
TObject) private Private-Deklarationen
spielzahl integer wuerfel1 integer
wuerfel2 integer wuerfel3 integer
konto integer public Public-Deklaratione
n end
Nachteil Die Klasse TGUI ist für alles
zuständig, neben der Verwaltung der GUI-Objekte
auch für die Verwaltung der Spieldaten. Bei
größeren Anwendungen führt ein solcher
Programmierstil zu schwer überschaubaren und
schlecht wartbaren Programmen.
procedure TGUI.BEinsatzZahlenClick
(Sender TObject) begin // Verarbeitung
Einsatz abbuchen konto konto-1 //
Ausgabe Aktualisierung der Anzeige
PKontostand.Caption IntToStr(konto) end
11Lösungsansatz mit Modellierung
1
4
2
5
Miniwelt
3
6
3
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.
- Abbild der Miniwelt - Vorlage für das System
Modell
System
12Objektorientierung
1
4
2
5
Miniwelt
3
6
3
Idee Die Software wird aus unabhängigen
Bausteinen zusammengesetzt. Die
Software-Bausteine sollen dabei den Bausteinen
der Miniwelt entsprechen. Ein Objekt im Sinne
der objektorientierten Programmierung ist ein
solcher Software-Baustein.
- Abbild der Miniwelt - Vorlage für das System
Modell
System
13Struktur der Miniwelt
1
4
2
5
3
6
3
Würfel
Spielbrett
Konto
ZuständigkeitGeldbetrag verwalten
Zuständigkeitgetippte Zahl merken
Zuständigkeitwürfeln
Sichtweise Die Miniwelt ist aus Gegenständen
aufgebaut. Gegenstände können Personen, Dinge,
Sachverhalte, Ereignisse, ... sein. Jeder
Gegenstand stellt eine autonome Einheit mit klar
begrenzten Zuständigkeiten dar.
14Struktur der Miniwelt
Miniwelt
Gegenstand
1
4
2
5
3
6
3
Würfel
Spielbrett
Konto
Eigenschaft Augen Operation werfen
Eigenschaft Zahl Operation Tipp setzen
Eigenschaft Stand OperationenBetrag
einzahlenBetrag abheben
Sichtweise Gegenstände der Miniwelt haben
charakteristische Eigenschaften. Mit den
Gegenständen kann man bestimmte Operationen
ausführen.
15Grundidee der Objektorientierung
Miniwelt
Gegenstand
1
4
2
5
3
6
3
Modell
Objekt
wuerfelA
wuerfelB
wuerfelC
spielbrett
konto
Die Gegenstände der Miniwelt werden mit Hilfe von
Objekten im Sinne der Informatik beschrieben.
16Grundidee der Objektorientierung
Miniwelt
Gegenstand
1
4
2
5
3
6
3
Modell
Objekt
wuerfelA
wuerfelB
wuerfelC
spielbrett
konto
Zuständigkeitwürfeln
ZuständigkeitGeldbetrag verwalten
Zuständigkeitgetippte Zahl merken
Ein Objekt stellt eine autonome Einheit mit klar
begrenzten Zuständig-keiten dar.
17Attribute
Eigenschaft Stand OperationenBetrag
einzahlenBetrag abheben
Gegenstand
Eigenschaft Augen Operation werfen
1
4
Eigenschaft Zahl Operation Tipp setzen
2
5
3
6
3
Miniwelt
Objekt
Modell
wuerfelA
wuerfelB
wuerfelC
spielbrett
konto
augen 3
augen 3
augen 5
zahl 3
stand 9
Attribut
Die charakteristischen Eigenschaften eines
Objekts werden mit Attributen erfasst. Die
Gesamtheit der Attributwerte legt den
Objektzustand fest.
18Methoden
Eigenschaft Stand OperationenBetrag
einzahlenBetrag abheben
Gegenstand
Eigenschaft Augen Operation werfen
1
4
Eigenschaft Zahl Operation Tipp setzen
2
5
3
6
3
Miniwelt
Objekt
Modell
spielbrett
wuerfelA
wuerfelB
wuerfelC
konto
zahl 3
augen 3
augen 3
augen 5
stand 9
setzen(tipp)
werfen
werfen
werfen
abheben(betrag)einzahlen(betrag)
Methode
Das Verhalten eines Objekts wird mit Operationen
/ Methoden erfasst. Diese bestimmen die
dynamischen Eigenschaften eines Objekts.
19Klassen
Modell
Klasse
TWuerfel
TSpielbrett
TKonto
augen
zahl
stand
werfen
setzen(tipp)
abheben(betrag)einzahlen(betrag)
spielbrett
wuerfelA
wuerfelB
wuerfelC
konto
zahl 3
augen 3
augen 3
augen 5
stand 9
setzen(tipp)
werfen
werfen
werfen
abheben(betrag)einzahlen(betrag)
Objekt
Gleich strukturierte Objekte werden einer Klasse
zugeordnet.
20Klassen
Modell
Klasse
TWuerfel
TSpielbrett
TKonto
augen
zahl
stand
werfen
setzen(tipp)
abheben(betrag)einzahlen(betrag)
instance of
instance of
instance of
spielbrett
wuerfelA
wuerfelB
wuerfelC
konto
zahl 3
augen 3
augen 3
augen 5
stand 9
setzen(tipp)
werfen
werfen
werfen
abheben(betrag)einzahlen(betrag)
Objekt
Klassen sind Baupläne für Objekte, sie legen den
Typ dieser Objekte fest. Objekte werden als
Exemplare (Instanzen) von Klassen bezeichnet.
21Konstruktoren / Destruktoren
Modell
Klasse
TWuerfel
TSpielbrett
TKonto
Konstruktor
Destruktor
augen
zahl
stand
erzeugen(betrag) vernichten abheben(betrag)einzah
len(betrag)
erzeugen vernichten setzen(tipp)
erzeugen vernichten werfen
instance of
instance of
instance of
spielbrett
wuerfelB
konto
zahl ...
augen 3
stand 9
Objekt
Konstruktoren / Destruktoren sind spezielle
Operationen zur Erzeugung bzw. Vernichtung von
Objekten.
22Klassenmethoden
Modell
Klasse
TWuerfel
TSpielbrett
TKonto
augen
zahl
stand
erzeugen(betrag) vernichten abheben(betrag)einzah
len(betrag)
erzeugen vernichten setzen(tipp)
erzeugen vernichten werfen
instance of
instance of
instance of
Objekt
spielbrett
wuerfelA
wuerfelB
wuerfelC
konto
zahl 3
augen 3
augen 3
augen 5
stand 9
setzen(tipp)
werfen
werfen
werfen
abheben(betrag)einzahlen(betrag)
Beachte Konstruktoren sind Klassenmethoden.
Objekte verfügen nicht über diese Methoden.
23Erstes objektorientiertes Modell
1
4
2
5
3
6
3
Miniwelt
Modell
TWuerfel
TSpielbrett
TKonto
augen
zahl
stand
erzeugen(betrag) vernichten abheben(betrag)einzah
len(betrag)
erzeugen vernichten setzen(tipp)
erzeugen vernichten werfen
instance of
instance of
instance of
spielbrett
wuerfelA
wuerfelB
wuerfelC
konto
zahl 3
augen 3
augen 3
augen 5
stand 9
24Konventionen
TWuerfel
TSpielbrett
TKonto
augen
zahl
stand
erzeugen(betrag) vernichten abheben(betrag)einzah
len(betrag)
erzeugen vernichten setzen(tipp)
erzeugen vernichten werfen
Klassendiagramm
Objektdiagramm
instance of
instance of
instance of
spielbrett
wuerfelA
wuerfelB
wuerfelC
konto
zahl 3
augen 3
augen 3
augen 5
stand 9
Klassen und Objekte werden hier mit Diagrammen
der standardisierten Sprache UML (uniform
modeling language) dargestellt. Beachte
Klassenbezeichner beginnen mit Großbuchstaben
(hier zusätzlich mit T). Objektbezeichner
beginnen jeweils mit Kleinbuchstaben.
25Teil 2
Objekte in Aktion
26Zielsetzung
Das Chuck-A-Luck-Spiel soll mit einem bereits
implementierten Modell mit Hilfe von
Objekt-Aktionen simuliert werden. Wie benutzen
hierzu die Entwicklungsumgebung BlueJ als
Simulationswerkzeug.
27Laden eines Modells
Schritt 1 Laden Sie zunächst das Projekt
ChuckALuck1 im Verzeichnis BlueJProjekte.
BlueJ zeigt die Klassen des Modells an.
28Erzeugen von Objekten
Schritt 2 Erzeugen Sie die benötigten Objekte
zur Simulation des Spiels Klasse anklicken
rechte Maustaste new ... aufrufen dem Objekt
einen passenden Namen geben ggf. weitere
Parameter festlegen.
29Inspektion von Objekten
Schritt 3 Inspizieren Sie die erzeugten Objekte
(Objekt anklicken rechte Maustaste Inspect
aufrufen). Sie können sich so einen Überblick
über die aktuellen Objektzustände verschaffen.
30Aktivierung von Objekten
Schritt 4 Beauftragen Sie die Objekte,
Operationen durchzuführen Objekt anklicken
rechte Maustaste passende Methode aufrufen ggf.
Parameterwerte festlegen.
31Aufgabe
Simulieren Sie auf die beschriebene Weise mit
Hilfe der Modell-Objekte ein gesamtes Spiel.
Aktivieren Sie jeweils das passende Objekt und
inspizieren Sie anschließend die Veränderung des
Objektzustandes.
32Aufgabe
Verschaffen Sie sich einen ersten Einblick in
eine Implementierung der Klassen zum
Chuck-A-Luck-Spiel (Klasse anklicken rechte
Maustaste Open Editor). Beachten Sie, dass hier
die Programmiersprache Java zur Implementierung
benutzt wird.
33Teil 3
Gekapselte Objekte
34Das Geheimnisprinzip
Das Geheimnisprinzip besagt, dass Details einer
Klasse (insbesondere ihre Implementierung)
verborgen werden sollten.
Ein Programmierer, der eine Klasse benutzen
möchte, sollte keine Kenntnis über den internen
Aufbau dieser Klasse benötigen. Ihm sollte auch
nicht erlaubt sein, Interna dieser Klasse zu
verwenden. Ein Vorgehen nach dieser Bedingung
ist erforderlich, wenn unabhängige
Software-Bausteine entwickelt werden sollen, die
ggf. auch wieder ausgetauscht werden müssen.
35Datenkapselung
Datenkapselung besagt, dass ein Objekt keinen
direkten Zugriff auf die Daten ermöglicht, die
mit Hilfe von Attributen verwaltet werden.
Ohne Datenkapselung
Mit Datenkapselung
TKonto
TKonto
verbergen
stand
stand
erzeugen(betrag) vernichten abheben(betrag)einzah
len(betrag)
erzeugen(betrag) vernichten abheben(betrag)einzah
len(betrag)
Zugriff erlaubt
36Zugriffsmethoden
Um weiterhin auf Attributwerte (lesend bzw.
schreibend) zugreifen zu können, werden spezielle
Zugriffsmethoden benötigt.
TKonto
TKonto
TKonto
stand
stand
stand
erzeugen(betrag) vernichten abheben(betrag)einzah
len(betrag) stand erfragenstand setzen
erzeugen(betrag) vernichten abheben(betrag)einzah
len(betrag)
erzeugen(betrag) vernichten abheben(betrag)einzah
len(betrag)
Zugriffsmethoden
37Schnittstellenspezifikation
Eine Schnittstellespezifikation beschreibt
sämtliche Informationen, die man zur Benutzung
einer Klasse benötigt.
- Zugriffsrechte auf Attribute und Methoden
- Datentypen der Attribute (und eventuelle
Initialisierungswerte) - Signaturen der Methoden (Parameter u. bei
Funktionen der Ergebnistyp)
TKonto
TKonto
stand
stand integer
erzeugen(betrag) vernichten abheben(betrag)einzah
len(betrag) stand erfragenstand setzen
create(betrag integer) destroy
abheben(betrag integer) einzahlen(betrag
int.) getStand integer setStand(betrag
integer)
38Aufgabe
Laden Sie das Modell ChuckALuck2 und führen Sie
das Spiel ohne Inspektion der Objekte durch.
Sämtliche Attributwerte müssen mit Hilfe von
Zugriffsmethoden erfragt werden.
39Teil 3
Implementierungen von Objekten und Klassen
40Zielsetzung
1
4
2
5
3
6
3
Miniwelt
Modell
System
Ziel ist es, das entwickelte objektorien-tierte
Modell zum Chuck-A-Luck-Spiel mit Delphi zu
implementieren.
41Vorgehensweise
Am Beispiel Würfel soll hier gezeigt werden,
wie (in Delphi) ein Objekt zu einer neuen
Klasse erzeugt und benutzt wird.
Wir gehen von einer fertigen Benutzungsoberfläche
aus, die aber noch keine Spielaktionen ausführt.
Ziel ist es, die Würfel-Objekte zu implementieren
und in das bestehende System zu integrieren.
42Vorgehensweise
Schritt 1 Implementierung der Klasse
TWuerfelHiermit wird der Bauplan für
TWuerfel-Objekte festgelegt. Schritt 2 Erzeugung
der TWuerfel-ObjekteJedes Objekt muss erzeugt
werden, bevor es benutzt werden kann. Schritt 3
Aktivierung der TWuerfel-ObjekteMit Hilfe der
erzeugten Objekte können jetzt die vorgesehenen
Aufgaben erledigt werden. Schritt 4 Vernichtung
der TWuerfel-ObjekteWenn Objekte nicht mehr
benötigt werden, sollte der für sie reservierte
Speicherplatz wieder freigegeben werden.
43Schritt 1 Implementierung einer Klasse
Klassen werden als Module (Programmeinheiten)
implementiert, die in Delphi in zwei Teilen
beschrieben werden Schnittstellenvereinbarung
Deklaration der Attribute und Methoden Implementie
rungsteil Implementierung der Methoden
unit uWuerfel interface // Deklaration der
// Attribute und Methoden implementation //
Implementierung der // Methoden end.
TWuerfel
augen
erzeugen vernichten werfen
44Schritt 1 Implementierung einer Klasse
unit uWuerfel interface type TWuerfel class
private augen integer public
constructor create destructor destroy
override procedure werfen function
getAugen integer end ...
Deklaration der Attribute und Operationen
45Schritt 1 Implementierung einer Klasse
unit uWuerfel interface ... implementation constr
uctor TWuerfel.createbegin augen
random(6)1end destructor TWuerfel.destroybeg
inend ...
Implementierung der Konstruktoren / Destruktoren
46Schritt 1 Implementierung einer Klasse
unit uWuerfel interface ... implementation ... pr
ocedure TWuerfel.werfenbegin augen
random(6)1end function TWuerfel.getAugen
integerbegin result augenend end.
Implementierung der Operationen
47Schritt 1 Einbindung einer Modellklasse
unit uGUI interface uses Windows, Messages,
SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, uWuerfel type
TGUI class(TForm) ...
Einbindung der Klassen-Unit
Die Unit uWuerfel enthalte die Implementierung
der Klasse TWuerfel.
48Schritt 2 Erzeugung eines Objekts
... type TGUI class(TForm) PTitel
TPanel GBWuerfel TGroupBox GBKonto
TGroupBox PWuerfelA TPanel PWuerfelB
TPanel PWuerfelC TPanel PKonto
TPanel ... procedure FormCreate(Sender
TObject) ... private
Private-Deklarationen wuerfelA TWuerfel
public Public-Deklarationen end
Deklaration einer Referenzvariablen für das neue
Objekt
49Schritt 2 Erzeugung eines Objekts
unit uGUI interface ... implementation R
.DFM procedure TGUI.FormCreate(Sender
TObject)begin randomize wuerfelA
TWuerfel.create PWuerfelA.Caption
IntToStr(wuerfelA.getAugen)end ... end.
Erzeugung des Objekts durch Aufruf des
Konstruktors
50Schritt 3 Aktivierung eines Objekts
procedure TGUI.BWuerfelWerfenClick(Sender
TObject)begin // Aktualisierung der
Modell-Objekte wuerfelA.werfen // ... //
Aktualisierung der Anzeige PWuerfelA.Caption
IntToStr(wuerfelA.getAugen) // ...end
Auftrag an das Objekt
Anfrage an das Objekt
51Schritt 4 Vernichtung eines Objekts
unit uGUI interface ... implementation R
.DFM ... procedure TGUI.FormDestroy(Sender
TObject)begin wuerfelA.freeend ... end.
Vernichtung des Objekts durch Freigabe des
Speichers
52Aufgabe
Schauen Sie sich zunächst das bereits
implementierte Teilsystem im Verzeichnis
ChuckALuck0-NurWuerfeln an. Erweitern Sie dann
das bereits implementierte Teilsystem zu einem
funktionsfähigen Gesamtsystem. Gehen Sie wie
folgt vor, wenn Sie eine weitere Klasse
implementieren und in das bereits begonnene
Projekt integrieren wollen Datei Neu Unit.
Delphi gibt Ihnen ein Programmgerüst vor. Ändern
Sie zunächst den Namen der Unit (z. B. uKonto).
Ergänzen Sie anschließend die Implementierung der
betreffenden Klasse. Vergessen Sie nicht, auch
die Ergänzungen in der Unit uGUI vorzunehmen
(Unit einbinden Objekte erzeugen ...).
53Teil 4
Ãœbung Uhr
54Zielsetzung
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.
55Aufgabe Identifikation von Objekten
Versuchen Sie, in einem ersten Schritt Objekte zu
identifizieren. Beachten Sie, dass Objekte
autonome Einheiten mit klar bestimmten
Zuständigkeiten bilden sollen.
Miniwelt
1646
56Aufgabe Beschreibung der Objekte
Beschreiben Sie zunächst informell und dann
möglichst präzise die Attribute und Methoden der
identifizierten Objekte. - Ãœberlegen Sie sich
hierzu, welche Daten ein Objekt verwalten muss /
durch welche Eigenschaften ein Objektzustand
festgelegt wird. - Ãœberlegen Sie sich auch,
welche Operationen ein Objekt ausführen soll.
57Identifikation von Objekten
Miniwelt
1646
Modell
stundenZaehler
minutenZaehler
Die Miniwelt soll mit Hilfe von zwei Objekten
stundenZaehler und minutenZaehler beschrieben
werden. Diese Objekte sind für das weiterzählen
des jeweiligen Stunden- bzw. Minutenwerts
zuständig.
58Beschreibung von Objekten
Miniwelt
1646
Modell
stundenZaehler
minutenZaehler
max 23 stand 16
max 59 stand 46
standSetzen(wert) nullSetzen weiterZaehlen
standSetzen(wert) nullSetzen weiterZaehlen
Beide Objekte stundenZaehler und
minutenZaehler arbeiten nach demselben Prinzip
Weiterzählen, bis ein maximaler Wert erreicht
ist, dann wieder bei Null beginnen.
59Klassenentwurf
TModuloZaeher
Klasse
- max integer - stand integer
create(maxWert integer) destroy
setStand(standWert int.) weiterZaehlen
nullSetzen getStand integer
Objekte
stundenZaehler
minutenZaehler
max 23 stand 16
max 59 stand 46
Es ist daher sinnvoll, eine Klasse
TModuloZaehler zu entwickeln, die ein Bauplan
für Zähler ist, die modulo eines bestimmten
maximalen Werts wieder bei Null beginnen.
60Aufgabe
Implementieren Sie das dargestellte (oder das
selbst entwickelte) Modell.
61Teil 5
Ãœbung Chiffriersystem
62Zielsetzung
Ziel ist es, mit Hilfe objektorientierter
Modellierung ein System zu entwickeln, mit dem
der Benutzer Texte nach der Caesar-Methode
verschlüsseln und wieder entschlüsseln kann.
63Identifikation von Objekten
Miniwelt
Schlüssel
Schlüssel
3
3
SALVECAESAR
VDOYHFDHVDU
SALVECAESAR
Quelltext
Geheimtext
Quelltext
Verschlüsselung
Entschlüsselung
Die Miniwelt soll mit Hilfe eines Objekts
chiffrierer TCaesarChiffrierer beschrieben
werden. Dieses Objekt ist für die gesamte
Chiffrierung nach der Caesar-Methode zuständig.
64Aufgabe
Sie sollen die Attribute und Methoden des Objekts
chiffrierer festlegen. Die folgenden Fragen
sollen bei dieser Festlegung helfen - Welche
Daten der Miniwelt muss das Objekt chiffrierer
mit geeigneten Attributen verwalten? - Welche
Operationen soll das Objekt chiffrierer
ausführen können?
65Lösungsvorschlag
TChiffrierer
- quelltext string- geheimtext String -
schluessel integer
Klasse
create destroy verschuesseln
entschluesseln setQuelltext(t string)
getQuelltext sting...
Objekt
chiffrierer
quelltext CAESAR geheimtext
FDHVDUschluessel 3
66Aufgabe
Im Verzeichnis Chiffrierer0 finden Sie eine
funktionsfähige Implementierung des
Chiffriersystems, der kein objektorientiertes
Modell zu Grunde liegt. Ändern Sie dieses System
so ab, dass das Miniwelt-Modell mit Hilfe eines
Objekts chiffrierer beschrieben wird. Zum
Vergleich finden Sie eine mögliche Lösung im
Verzeichnis Chiffrierer1.
67Teil 6
Ãœbung Roboter
68Zielsetzung
Ziel ist es, mit Hilfe objektorientierter
Modellierung ein grafisches Simulationsprogramm
zu entwickeln, mit dem ein steuerbarer
Modellroboter in einem Zellengitter bewegt werden
kann.
69Identifikation von Objekten
Miniwelt
Norden
(6,4)
Osten
Westen
Süden
Die Miniwelt soll mit Hilfe eines Objekts
roboter TRoboter beschrieben werden. Dieses
Objekt ist zunächst nur für die Bewegungen des
Roboters (Schritt vorwärts links drehen rechts
drehen zurück in eine Ausgangsposition)
zuständig. Wir gehen auch von einer festen
10x10-Gitter-Welt aus.
70Aufgabe
Sie sollen die Attribute und Methoden des Objekts
roboter festlegen. Die folgenden Fragen sollen
bei dieser Festlegung helfen - Welche
Eigenschaften des Roboters muss das Objekt
roboter mit geeigneten Attributen verwalten? -
Welche Operationen soll das Objekt roboter
vorerst ausführen können?
71Lösungsvorschlag
TRoboter
Klasse
- xPos integer- yPos integer- richtung
tRichtung
create initialisieren schritt
linksDrehen rechtsDrehen getXPos integer
getYPos integer getRichtung tRichtung
Objekt
roboter
xPos 3 yPos 5richtung osten
72Aufgabe
Im Verzeichnis Roboter0 finden Sie eine
funktionsfähige Implementierung des
Robotersystems, der kein objektorientiertes
Modell zu Grunde liegt. Ändern Sie dieses System
so ab, dass das Miniwelt-Modell mit Hilfe eines
Objekts roboter beschrieben wird. Zum Vergleich
finden Sie eine mögliche Lösung im Verzeichnis
Roboter1. Erweiterung Es sollen zwei Roboter
in der Welt agieren.
73Teil 7
Zusammenfassung
74Objektorientierung
Grundideen
Grund-konzepte
Objekt
Klasse
Modellierungssprache UML
Implementierungssprache Delphi, Java, ...
75Idee Objekt als Programmeinheit
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.
76Literaturhinweise
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 Informatikunterrich
t. 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. ...
77Literaturhinweise
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 Unterrichtsmaterialie
n und Links zu weiteren interessanten Seiten. ...