Grundkonzepte der objektorientierten Programmierung Teil 2

Slides:



Advertisements
Ähnliche Präsentationen
Anzahl der ausgefüllten und eingesandten Fragebögen: 211
Advertisements

Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Telefonnummer.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
= = = = 47 = 47 = 48 = =
Java: Objektorientierte Programmierung
Rechneraufbau & Rechnerstrukturen, Folie 2.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 2.
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Differentielles Paar UIN rds gm UIN
Prof. Dr. Bernhard Wasmayr
Studienverlauf im Ausländerstudium
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Prof. Dr. Bernhard Wasmayr VWL 2. Semester
1 Teil 4 Übung: Uhr. 2 Zielsetzung Ziel ist es, mit Hilfe objektorientierter Modellierung ein System zu entwickeln, mit dem eine einfache Uhr simuliert.
AWA 2007 Natur und Umwelt Natürlich Leben
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
1. 2 Schreibprojekt Zeitung 3 Überblick 1. Vorstellung ComputerLernWerkstatt 2. Schreibprojekt: Zeitung 2.1 Konzeption des Kurses 2.2 Projektverlauf.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Prof. Dr. Günter Gerhardinger Soziale Arbeit mit Einzelnen und Familien Übersicht über die Lehrveranstaltung Grundlegende Bestimmungsfaktoren der Praxis.
20:00.
„Küsse deine Freunde“ – FlexKom-App teilen
Zusatzfolien zu B-Bäumen
Delphi II - OOP IFB Fortbildung
In der Schule.
Implementierung objektorientierter Modelle
Eine Einführung in die CD-ROM
GBI Genios Wiso wiso bietet Ihnen das umfassendste Angebot deutsch- und englischsprachiger Literatur für die Wirtschafts- und Sozialwissenschaften. Wir.
Dokumentation der Umfrage
Grundkonzepte der objektorientierten Programmierung Teil 3
für Weihnachten oder als Tischdekoration für das ganze Jahr
Where Europe does business Lück, JDZB | Seite © GfW NRW 252 a.
Wir üben die Malsätzchen
Syntaxanalyse Bottom-Up und LR(0)
Einführung in die objektbasierte Programmierung mit Delphi
Grundkonzepte der objektorientierten Programmierung
Grundkonzepte der objektorientierten Programmierung
Konzepte der objektorientierten Programmierung
Objektorientierte Software-Entwicklung
Einführung in die Software-Entwicklung mit Delphi Teil 1
Bausteine zum objektorientierten Programmieren mit Delphi
NEU! 1 2. Wo kommt diese Art von Rezeptor im Körper vor?
PROCAM Score Alter (Jahre)
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Geometrische Aufgaben
Symmetrische Blockchiffren DES – der Data Encryption Standard
Retuschen.ppt Die folgende Schau zeigt die Möglichkeiten, mit PhotoDraw Digitalbilder zu retuschieren. Vergleichen Sie jeweils zwei Bildpaare durch fleissiges.
Szenisches Lernen Wie Theaterelemente den Unterricht bereichern
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Folie Beispiel für eine Einzelauswertung der Gemeindedaten (fiktive Daten)
Objektorientierte Modellierung mit UML
Unternehmensbewertung Thomas Hering ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List of Figures Tabellenübersicht.
Folie Einzelauswertung der Gemeindedaten
J-Team: Gymnasium Ulricianum Aurich und MTV Aurich Ein Projekt im Rahmen von UlricianumBewegt.de Euro haben wir schon…  8000 mal habt ihr bereits.
Datum:17. Dezember 2014 Thema:IFRS Update zum Jahresende – die Neuerungen im Überblick Referent:Eberhard Grötzner, EMA ® Anlass:12. Arbeitskreis Internationale.
Einführung in die Volkswirtschaftslehre, Mikroökonomie und Wettbewerbspolitik Lothar Wildmann ISBN: © 2014 Oldenbourg Wissenschaftsverlag.
Sehen, Hören, Schmecken: wenn uns unsere Sinne täuschen
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
Grundkonzepte der objektorientierten Programmierung Teil 1
 Präsentation transkript:

Grundkonzepte der objektorientierten Programmierung Teil 2 Klaus Becker 2006

Objektorientierte Modellierung 1 4 1$ 1$ 2 5 1$ 1$ 1$ 1$ 1$ 3 1$ 1$ 1$ 1$ 3 3 6 Miniwelt Modell System

Beziehungen zwischen Objekten Teil 1 Beziehungen zwischen Objekten

Das 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$ 1$ 1 4 1$ 1$ 2 5 1$ 1$ 1$ 1$ 1$ 3 1$ 1$ 1$ 1$ 1$ 3 3 6

Zielsetzung 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 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 1$ 1$ 2 5 1$ 1$ 1$ Miniwelt 1$ 1$ 3 1$ 1$ 1$ 1$ 3 3 6 System

Lösungsansatz mit Modellierung 1 4 1$ 1$ 2 5 1$ 1$ 1$ Miniwelt 1$ 1$ 3 1$ 1$ 1$ 1$ 3 3 6 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

Spiel ohne Überwachung Das bisher entwickelte Programm zur Simulation des Chuck-A-Luck-Spiels lässt noch Bedienungen zu, die in der Miniwelt nicht erlaubt sind. Einsatz zahlen und Zahl tippen Würfel werfen Gewinn verbuchen Einsatz zahlen Zahl tippen (z. B. 2) Solange Würfel werfen, bis die getippte Zahl fällt Gewinn mehrfach verbuchen

Zustandsbasierte Ablaufmodellierung Aktueller Zustand bereit einsatzgezahlt gewürfelt Auslösendes Ereignis BEinsatzZahlen. onClick RGSpielfeld. onClick BWuerfelWerfen. onClick BGewinnVerbuchen. onClick Ausgelöste Aktion(en) Einsatz vom Konto abbuchen Spielzahl festlegen Würfelwerfen simulieren Gewinn ermitteln und auf dem Konto verbuchen Neuer Zustand einsatzgezahlt gewürfelt bereit Einsatz zahlen und Zahl tippen Würfel werfen Gewinn verbuchen

Spiel mit Spielmanager 1 4 1$ 1$ 2 5 1$ 1$ 1$ 1$ 1$ 3 1$ 1$ 1$ 1$ 3 3 6 Miniwelt In der Miniwelt wird der korrekte Spielablauf durch eine Person überwacht und gesteuert. In der Modellwelt soll diese Steuerung durch ein Objekt „spielmanager“ übernommen werden. Dieses Objekt ist zuständig für die Verwaltung des Spielzustandes und die jeweilige Aktivierung der am Spiel beteiligten Objekte.

Spiel mit Spielmanager 1 4 1$ 1$ 2 5 1$ 1$ 1$ 1$ 1$ 3 1$ 1$ 1$ 1$ 3 3 6 Miniwelt Modell spielmanager Zuständigkeit: verwaltet den Spielzustand und erteilt die passenden Aufträge an die Spiel-Objekte ... spielbrett wuerfelA wuerfelB wuerfelC konto zahl = 3 augen = 3 augen = 3 augen = 5 stand = 9

Spielmanager aktiviert Spiel-Objekte Aktueller Zustand bereit Auslösendes Ereignis BEinsatzZahlen. onClick Ausgelöste Aktion(en) Einsatz vom Konto abbuchen Neuer Zustand einsatzgezahlt BEinsatzZahlen.OnClick [zustand = bereit]:

Spielmanager aktiviert Spiel-Objekte Aktueller Zustand einsatzgezahlt Auslösendes Ereignis RGSpielfeld. onClick Ausgelöste Aktion(en) Spielzahl festlegen Neuer Zustand einsatzgezahlt RGSpielfeld.onClick [zustand = einsatzgezahlt]:

Spielmanager aktiviert Spiel-Objekte Aktueller Zustand einsatzgezahlt Auslösendes Ereignis BWuerfelWerfen. onClick Ausgelöste Aktion(en) Würfelwerfen simulieren Neuer Zustand gewürfelt BWuerfelWerfen.onClick [zustand = einsatzgezahlt]:

Spielmanager aktiviert Spiel-Objekte Aktueller Zustand gewürfelt Auslösendes Ereignis BGewinnVerbuchen. onClick Ausgelöste Aktion(en) Gewinn ermitteln und auf dem Konto verbuchen Neuer Zustand bereit BGewinnVerbuchen.onClick [zustand = gewuerfelt]:

Aktivierung von Objekten Ein Objekt stellt seiner Umgebung bestimmte Dienste (Operationen) zur Verfügung. Durch eine Nachricht veranlasst ein „Kunde“ das Objekt, die Dienstleistung zu erledigen. Das Objekt führt dann die Operation aus. konto Zustand vorher stand = 9 abheben(1)  spielmanager konto Aktivierung durch eine Nachricht zustand = bereit stand = 9 konto Zustand nachher stand = 8

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

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

Kennt-Beziehung / Verbindung wuerfelA spielbrett kennt kennt wuerfelB spielmanager konto kennt kennt wuerfelC 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.

Modell mit Spielmanager TSpielbrett hat - zustand: ... ... TWuerfel hat + „erzeugen“ + „vernichten“ + einsatzZahlen + spielzahlSetzen(z: int.) + wuerfelWerfen + gewinnVerbuchen + getZustand: ... ... TWuerfel hat TWuerfel hat TKonto hat wuerfelA spielbrett hat hat wuerfelB spielmanager konto hat hat hat wuerfelC

Modell mit Spielmanager TSpielbrett kennt - zustand: ... ... TWuerfel kennt + „erzeugen“ + „vernichten“ + einsatzZahlen + spielzahlSetzen(z: int.) + wuerfelWerfen + gewinnVerbuchen + getZustand: ... ... TWuerfel kennt TWuerfel kennt TKonto kennt kennt kennt wuerfelA spielbrett kennt kennt wuerfelB spielmanager konto kennt wuerfelC

Teil 2 Objekte in Aktion

Zielsetzung Ziel ist es, das Chuck-A-Luck-Spiel mit einem Spielmanager zu simulieren. Hat-Beziehung Kennt-Beziehung Beachte: In BlueJ werden Hat- und Kennt-Beziehung auf gleiche Weise mit Hilfe von Pfeilen dargestellt.

Modell mit Hat-Beziehung Schritt 1: Erzeugen Sie ein Objekt „GUI“ als Exemplar der Klasse „TGUI“.

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

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

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

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

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

Implementierung der Hat-Beziehung Teil 3 Implementierung der Hat-Beziehung

Zielsetzung TSpielmanager TWuerfel hat - zustand: ... ... erstellen fertig + create + wuerfelWerfen ... instance of instance of Teil-Modell spielmanager wuerfelA hat zustand = ... augen = 3 Die Implementierung der Hat-Beziehung soll anhand eines Teilmodells des Gesamtmodells gezeigt werden. Wir verzichten vorerst auf die Verwaltung des Spielzustands.

Referenzen schaffen Beziehungen Mit Hilfe von Referenzattributen kann ein Objekt sich die Adressen seiner „Beziehungspartner“ merken. Speicheradresse 3A80 3A80 Referenzattribut

Klasse mit Referenzattribut TSpielmanager - zustand: ... - wuerfelA: TWuerfel ... Referenzattribut Speicheradresse + „erzeugen“ + „vernichten“ + einsatzZahlen + spielzahlSetzen(z: int.) + wuerfelWerfen + gewinnVerbuchen + getZustand: ... ... 3A80 3A80 Referenzattribut Die Klasse TSpielmanager muss um Referenzattribute erweitert werden, mit deren Hilfe die Beziehungen zu anderen Objekten verwaltet werden.

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

Modellklasse mit Referenzattributen unit uSpielmanager; interface uses uWuerfel; type TSpielmanager = class private wuerfelA: TWuerfel; public constructor create; destructor destroy; override; ... end; implementation TSpielmanager Einbindung der Klassen-Unit wuerfelA: TWuerfel ... ... Deklaration des Referenzattributs

Erzeugung des Würfel-Objekts type TSpielmanager = class private wuerfelA: TWuerfel; public constructor create; destructor destroy; override; ... end; implementation constructor TSpielmanager.create; begin wuerfelA := TWuerfel.create; end; destructor TSpielmanager.destroy; begin wuerfelA.free; end; FGUI spielmanager wuerfelA hat hat Modellstruktur

Implementierung einer Nachricht ... type TSpielmanager = class private wuerfelA: TWuerfel; public constructor create; destructor destroy; override; procedure wuerfelWerfen; ... end; implementation procedure TSpielmanager.wuerfelWerfen; begin wuerfelA.werfen; end; FGUI spielmanager wuerfelA hat hat Modellstruktur Nachricht werfen  spielmanager wuerfelA Senderobjekt-Klasse Operation Empfängerobjekt

Erzeugung des Spielmanager-Objekts unit uGUI; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, uSpielmanager; type TGUI = class(TForm) ... private { Private-Deklarationen } spielmanager: TSpielmanager; public { Public-Deklarationen } end; implementation {$R *.DFM} procedure TGUI.FormCreate(Sender: TObject); begin spielmanager := TSpielmanager.create; end; ... FGUI spielmanager wuerfelA hat hat Modellstruktur

Kein direkter Zugriff auf wuerfelA möglich Zugriff auf Objekte unit uGUI; interface ... implementation {$R *.DFM} procedure TGUI.BWerfenClick(Sender: TObject); begin // Aktualisierung der Modell-Objekte spielmanager.wuerfelWerfen; // Aktualisierung der Anzeige PWuerfelA.Caption := IntToStr(spielmanager.getWuerfelA); end; FGUI spielmanager wuerfelA hat hat Modellstruktur Kein direkter Zugriff auf wuerfelA möglich Nachrichten Nachrichten getWuerfelA  getAugen  FGUI spielmanager wuerfelA

Zugriff auf ein abhängiges Objekt unit uGUI; interface ... implementation {$R *.DFM} procedure TGUI.BWerfenClick(...); begin // Aktualisierung der Modell-Objekte spielmanager.wuerfelWerfen; // Aktualisierung der Anzeige PWuerfelA.Caption := IntToStr(spielmanager.getWuerfelA); end; FGUI spielmanager wuerfelA hat hat TSpielmanager - wuerfelA: Wuerfel ... + create + destroy + wuerfelWerfen ... + getWuerfelA: integer ... Hilfsoperation function TSpielmanager.getWuerfelA: integer; begin result := wuerfelA.getAugen; end;

Aufgabe Die gezeigte Implementierung des Teilmodells „Spielmanager hat Wuerfel“ finden Sie im Verzeichnis „ChuckALuck21NurWuerfelnMitHatBeziehung“. Testen Sie zunächst diese Implementierung. Beachten Sie, dass man hier nur Würfel A werfen kann. Bauen Sie dann schrittweise diese Implementierung zu einer Implementierung des gesamten Spiels aus. Berücksichtigen Sie zunächst noch nicht den jeweiligen Spielzustand. Berücksichtigen Sie in einem letzten Schritt den jeweiligen Spielzustand. Eine vollständige Implementierung finden Sie im Verzeichnis „ChuckALuck22GesamtesSpielMitHatBeziehung“.

Implementierung einer Kennt-Beziehung Teil 4 Implementierung einer Kennt-Beziehung

Zielsetzung TSpielmanager TWuerfel kennt - zustand: ... ... + create + wuerfelWerfen ... instance of instance of Teil-Modell spielmanager wuerfelA kennt zustand = ... augen = 3 Hier sollen die Ähnlichkeiten und Unterschiede zwischen einer Implementierung der Kennt-Beziehung und der Hat-Beziehung aufgezeigt werden.

Bekanntschaft durch Referenzen TSpielmanager - zustand: ... - wuerfelA: TWuerfel ... Referenzattribut Speicheradresse + „erzeugen“ + „vernichten“ + einsatzZahlen + spielzahlSetzen(z: int.) + wuerfelWerfen + gewinnVerbuchen + getZustand: ... ... 3A80 3A80 Referenzattribut Die Ausgangssituation bleibt gleich: Die Klasse TSpielmanager muss um Referenzattribute erweitert werden, mit deren Hilfe die Beziehungen zu anderen Objekten verwaltet werden.

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

Erzeugung der Objekte unit uGUI; interface uses ..., uWuerfel, uSpielmanager; type TGUI = class(TForm) ... private { Private-Deklarationen } wuerfelA: TWuerfel; spielmanager: TSpielmanager; public { Public-Deklarationen } end; implementation {$R *.DFM} procedure TGUI.FormCreate(Sender: TObject); begin randomize; wuerfelA := TWuerfel.create; spielmanager := TSpielmanager.create(wuerfelA); end; FGUI spielmanager wuerfelA hat kennt Modellstruktur

Erzeugung der Kennt-Referenz 3A80 3A80 3A80 spielmanager := TSpielmanager.create(wuerfelA); constructor TSpielmanager.create(wA: TWuerfel); begin wuerfelA := wA; end; 3A80 3A80 3A80

direkter Zugriff auf wuerfelA möglich Zugriff auf Objekte unit uGUI; interface ... implementation {$R *.DFM} procedure TGUI.BWerfenClick(Sender: TObject); begin // Aktualisierung der Modell-Objekte spielmanager.wuerfelWerfen; // Aktualisierung der Anzeige PWuerfelA.Caption := IntToStr(wuerfelA.getAugen); end; FGUI spielmanager wuerfelA hat kennt Modellstruktur direkter Zugriff auf wuerfelA möglich Nachrichten wuerfelWerfen  werfen  FGUI spielmanager wuerfelA getAugen 

Aufgabe Die gezeigte Implementierung des Teilmodells „Spielmanager kennt Wuerfel“ finden Sie im Verzeichnis „ChuckALuck31NurWuerfelnMitKenntBeziehung“. Testen Sie zunächst diese Implementierung. Beachten Sie, dass man hier nur Würfel A werfen kann. Bauen Sie dann schrittweise diese Implementierung zu einer Implementierung des gesamten Spiels aus. Berücksichtigen Sie zunächst noch nicht den jeweiligen Spielzustand. Berücksichtigen Sie in einem letzten Schritt den jeweiligen Spielzustand. Eine vollständige Implementierung finden Sie im Verzeichnis „ChuckALuck32GesamtesSpielMitKenntBeziehung“.

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

Teil 5 Übung: Uhr

Zielsetzung Ziel ist es, mit Hilfe objektorientierter Modellierung ein System zu entwickeln, mit dem eine einfache Uhr simuliert werden kann. Nach: Barnes / Kölling: Objektorientierte Programmierung mit Java. Pearson Studium 2003.

Objekte und ihre Beziehung Miniwelt 16:46 Modell digitalUhr hat hat stundenZaehler minutenZaehler Die Digitaluhr der Miniwelt soll mit Hilfe eines Objekts „digitalUhr“ beschrieben werden, das seine Operationen mit Hilfe von zwei von ihm verwalteten Objekten „stundenZaehler“ und „minutenZaehler“ durchführt.

Klassenentwurf hat hat TDigitalUhr TModuloZaeher sZaehler: TModuloZaehler mZaehler: TModuloZaehler - max: integer - stand: integer hat erzeugen vernichten setzen(sWert, mWert) tick rueckSetzen ... + create(maxWert: integer) + destroy + setStand(standWert: int.) + weiterZaehlen + nullSetzen + getStand: integer digitalUhr stundenZaehler minutenZaehler sZaehler = mZaehler = max = 23 stand = 16 max = 59 stand = 46

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

Übung: Chiffriersystem Teil 6 Übung: Chiffriersystem

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

Der Chiffrieransatz Der Benutzer gibt ein (langes) Schlüsselwort vor (z. B. WEITERBILDUNGSKURSX), aus dem dann die Chiffriertabelle wie folgt erzeugt wird. Man streicht zunächst alle mehrfach vorkommenden Buchstaben (im Beispiel ergibt das WEITRBLDUNGSKSX). Diese Buchstaben bilden den Anfang des Geheimtextalphabets. Dann füllt man ab der letzten Stelle mit den noch zur Verfügung stehenden Buchstaben des Alphabets auf. Klartextalphabet A B C D E F G H I J K L M N O P Q R S T U V W X Y Z W E I T R B L D U N G S K X Y Z A C F H J M O P Q V Geheimtextalphabet

Objekte und ihre Beziehung Miniwelt Schlüssel Schlüssel WEITERBILDUNGSKURSX SALVECAESAR VDOYHFDHVDU SALVECAESAR Quelltext Geheimtext Quelltext A B C D E F G H I J K L M N O P Q R S T U V W X Y Z W E I T R B L D U N G S K X Y Z A C F H J M O P Q V Modell hat chiffrierer codierung

Klassenentwurf hat hat TChiffrierer TCodierung quelltext geheimtext chluessel codierung code: array [‚A‘..‘Z‘] of char erzeugen setCode(s: string) getCode: string getGeheim(klar: char): char getKlar(geheim: char): char hat erzeugen setSchluessel(...) getSchluessel: ... vorbereiten verschluesseln entschluesseln ... hat chiffrierer codierung

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

Teil 7 Übung: Roboter

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

Identifikation von Objekten Miniwelt Norden (6,4) Westen Osten Süden Modell kennt roboter welt

Klassenentwurf kennt TRoboter TWelt xPos yPos richtung welt marken: array [0..9] of array [0..9] of boolean ziegel: array [0..9] of array [0..9] of integer kennt erzeugen initialisieren schritt linksDrehen rechtsDrehen markeSetzen markeLoeschen ... erzeugen markeSetzen(x, y: integer) markeLoeschen(x, y: integer) ziegelHinlegen(x, y: integer) ziegelAufheben(x, y: integer) getMarke(x, y: integer): boolean getZiegel(x, y: integer): integer

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

Teil 8 UML-Editoren

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

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

UML-Werkzeuge Quellcode – erzeugt mit UMLEd: UNIT mTWuerfel; interface uses // Uses-Klausel ggf. anpassen type TWuerfel = CLASS // Attribute private augen : integer; //Objektbeziehungen // Methoden public constructor create; procedure werfen; function getAugen : integer; end; ...

UML-Werkzeuge Dokumentation – erzeugt mit UMLEd: Dokumentation der Klasse "TWuerfel" Beschreibung der Klasse:  Attribute augen : integer beschreibt die aktuelle Augenzahl des Würfels Protokoll der Dienste / Methoden Konstruktor create Auftrag werfen aktiviert den Würfel so, dass (mit Hilfe des Zufallsgenerators) eine neue Augenzahl erzeugt wird Anfrage getAugen : integer

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

Teil 9 Zusammenfassung

Objektorientierung Grundideen Nachricht Beziehung Grund- konzepte Klasse Modellierungssprache: UML Implementierungssprache: Delphi, Java, ...

Idee: Objekt als Systemkomponente Ein Objekt ist eine aktive und autonome Programmeinheit, das für bestimmte Aufgaben zuständig ist und diese in eigener Verantwortung erledigt. Durch Nachrichten können Objekte andere Objekte zur Erledigung von (Teil)Aufgaben auffordern und somit gemeinsam die Systemaktivitäten erzeugen.

Literaturhinweise Es gibt eine Vielzahl von fachwissenschaftlichen Darstellungen zur objektorientierten Modellierung und Programmierung. Hier wurden folgende Lehrwerke benutzt: - D. J. Barnes, M. Kölling: Objektorientierte Programmierung mit Java. Pearson - Studium 2003. - Helmut Balzert: Lehrbuch Grundlagen der Informatik. Spektrum Ak. Verlag 1999. - Bernd Oestereich: Objektorientierte Softwareentwicklung. Oldenbourg 1998. Dagegen gibt es nur wenige Schulbücher, die systematisch in die objektorientierte Programmierung einführen, z. B.: - Siegfried Spolwig: Objektorientierung im Informatikunterricht. Dümmler-Verlag 1997. - P. Damann, J. Wemßen: Objektorientierte Programmierung mit Delphi, Band 2. Klett-Verlag 2003. Viele interessante Artikel mit Unterrichtsvorschlägen bzw. fachdidaktischen Auseinandersetzungen findet man in der Zeitschrift LOG IN. Das Themenheft 128/129 ist speziell dem Thema „Objektorientiertes Modellieren und Programmieren“ gewidmet. ...

Literaturhinweise Im Internet findet man ebenfalls sehr viele schulgerechte Darstellungen der objektorientierten Modellierung und Programmierung, z. B: http://informatikag.bildung-rp.de/ Die AG-Informatik des LMZ in RLP stellt u. a. auch Fortbildungsmaterialien zu diesem Thema bereit. http://hsg.region-kaiserslautern.de/faecher/inf/index.php Auf der Homepage des HSG in Kaiserslautern findet man Unterrichtsmaterialien und Links zu weiteren interessanten Seiten. ...