Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Grundkonzepte der objektorientierten Programmierung Teil 1

Ähnliche Präsentationen


Präsentation zum Thema: "Grundkonzepte der objektorientierten Programmierung Teil 1"—  Präsentation transkript:

1 Grundkonzepte der objektorientierten Programmierung Teil 1
Klaus Becker 2006

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

3 Warum 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 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 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)

4 Warum 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 Fehler enthält. (vgl.

5 Warum 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)

6 Zur Orientierung Objektorientierung zeigt ihre Vorteile in der Regel erst bei komplexeren Software-Entwicklungsaufgaben. 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.

7 Teil 1 Objekte und Klassen

8 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

9 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

10 Eine 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-Deklarationen } 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;

11 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

12 Objektorientierung 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ Idee:
4 1$ 1$ 2 5 1$ 1$ 1$ Miniwelt 1$ 1$ 3 1$ 1$ 1$ 1$ 3 3 6 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

13 Struktur der Miniwelt 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$
4 1$ 1$ 2 5 1$ 1$ 1$ 1$ 1$ 3 1$ 1$ 1$ 1$ 3 3 6 Spielbrett Würfel Konto Zuständigkeit: getippte Zahl merken Zuständigkeit: würfeln Zuständigkeit: Geldbetrag verwalten 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.

14 Struktur der Miniwelt 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$
Gegenstand Miniwelt 1 4 1$ 1$ 2 5 1$ 1$ 1$ 1$ 1$ 3 1$ 1$ 1$ 1$ 3 3 6 Spielbrett Würfel Konto Eigenschaft: Zahl Operation: Tipp setzen Eigenschaft: Augen Operation: werfen Eigenschaft: Stand Operationen: Betrag einzahlen Betrag abheben Sichtweise: Gegenstände der Miniwelt haben charakteristische Eigenschaften. Mit den Gegenständen kann man bestimmte Operationen ausführen.

15 Grundidee der Objektorientierung
Gegenstand Miniwelt 1 4 1$ 1$ 2 5 1$ 1$ 1$ 1$ 1$ 3 1$ 1$ 1$ 1$ 3 3 6 Objekt Modell spielbrett wuerfelA wuerfelB wuerfelC konto Die Gegenstände der Miniwelt werden mit Hilfe von Objekten im Sinne der Informatik beschrieben.

16 Grundidee der Objektorientierung
Gegenstand Miniwelt 1 4 1$ 1$ 2 5 1$ 1$ 1$ 1$ 1$ 3 1$ 1$ 1$ 1$ 3 3 6 Objekt Modell spielbrett wuerfelA wuerfelB wuerfelC konto Zuständigkeit: getippte Zahl merken Zuständigkeit: würfeln Zuständigkeit: Geldbetrag verwalten Ein Objekt stellt eine autonome Einheit mit klar begrenzten Zuständig-keiten dar.

17 Attribute 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$
Eigenschaft: Stand Operationen: Betrag einzahlen Betrag abheben Gegenstand Eigenschaft: Augen Operation: werfen Eigenschaft: Zahl Operation: Tipp setzen 1 4 1$ 1$ 2 5 1$ 1$ 1$ 1$ 1$ 3 1$ 1$ 1$ 1$ 3 3 6 Miniwelt Objekt Modell spielbrett wuerfelA wuerfelB wuerfelC konto zahl = 3 augen = 3 augen = 3 augen = 5 stand = 9 Attribut Die charakteristischen Eigenschaften eines Objekts werden mit Attributen erfasst. Die Gesamtheit der Attributwerte legt den Objektzustand fest.

18 Methoden Eigenschaft: Stand Operationen: Betrag einzahlen Betrag abheben Gegenstand Eigenschaft: Augen Operation: werfen Eigenschaft: Zahl Operation: Tipp setzen 1 4 1$ 1$ 2 5 1$ 1$ 1$ 1$ 1$ 3 1$ 1$ 1$ 1$ 3 3 6 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.

19 Klassen Gleich strukturierte Objekte werden einer Klasse zugeordnet.
Modell Klasse TSpielbrett TWuerfel TKonto zahl augen stand setzen(tipp) werfen 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.

20 Klassen Modell Klasse TSpielbrett TWuerfel TKonto zahl augen stand setzen(tipp) werfen 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.

21 Konstruktoren / Destruktoren
Modell Klasse TSpielbrett TWuerfel TKonto Konstruktor Destruktor zahl augen stand erzeugen vernichten setzen(tipp) erzeugen vernichten werfen erzeugen(betrag) vernichten abheben(betrag) einzahlen(betrag) 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.

22 Klassenmethoden Modell Klasse TSpielbrett TWuerfel TKonto zahl augen stand erzeugen vernichten setzen(tipp) erzeugen vernichten werfen erzeugen(betrag) vernichten abheben(betrag) einzahlen(betrag) 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.

23 Erstes objektorientiertes Modell
1 4 1$ 1$ 2 5 1$ 1$ 1$ 1$ 1$ 3 1$ 1$ 1$ 1$ 3 3 6 Miniwelt Modell TSpielbrett TWuerfel TKonto zahl augen stand erzeugen vernichten setzen(tipp) erzeugen vernichten werfen erzeugen(betrag) vernichten 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

24 Konventionen TSpielbrett TWuerfel TKonto zahl augen stand erzeugen vernichten setzen(tipp) erzeugen vernichten werfen erzeugen(betrag) vernichten abheben(betrag) einzahlen(betrag) 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.

25 Teil 2 Objekte in Aktion

26 Zielsetzung 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.

27 Laden eines Modells Schritt 1: Laden Sie zunächst das Projekt „ChuckALuck1“ im Verzeichnis „BlueJProjekte“. BlueJ zeigt die Klassen des Modells an.

28 Erzeugen 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.

29 Inspektion 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.

30 Aktivierung von Objekten
Schritt 4: Beauftragen Sie die Objekte, Operationen durchzuführen: Objekt anklicken; rechte Maustaste; passende Methode aufrufen; ggf. Parameterwerte festlegen.

31 Aufgabe 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.

32 Aufgabe 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.

33 Teil 3 Gekapselte Objekte

34 Das 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.

35 Datenkapselung 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) einzahlen(betrag) erzeugen(betrag) vernichten abheben(betrag) einzahlen(betrag) Zugriff erlaubt

36 Zugriffsmethoden 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) einzahlen(betrag) erzeugen(betrag) vernichten abheben(betrag) einzahlen(betrag) erzeugen(betrag) vernichten abheben(betrag) einzahlen(betrag) „stand erfragen“ „stand setzen“ Zugriffsmethoden

37 Schnittstellenspezifikation
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) einzahlen(betrag) „stand erfragen“ „stand setzen“ + create(betrag: integer) + destroy + abheben(betrag: integer) + einzahlen(betrag: int.) + getStand: integer + setStand(betrag: integer)

38 Aufgabe 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.

39 Implementierungen von Objekten und Klassen
Teil 3 Implementierungen von Objekten und Klassen

40 Zielsetzung 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$
4 1$ 1$ 2 5 1$ 1$ 1$ 1$ 1$ 3 1$ 1$ 1$ 1$ 3 3 6 Miniwelt Modell System Ziel ist es, das entwickelte objektorien-tierte Modell zum Chuck-A-Luck-Spiel mit Delphi zu implementieren.

41 Vorgehensweise 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.

42 Vorgehensweise Schritt 1: Implementierung der Klasse TWuerfel Hiermit wird der Bauplan für TWuerfel-Objekte festgelegt. Schritt 2: Erzeugung der TWuerfel-Objekte Jedes Objekt muss erzeugt werden, bevor es benutzt werden kann. Schritt 3: Aktivierung der TWuerfel-Objekte Mit Hilfe der erzeugten Objekte können jetzt die vorgesehenen Aufgaben erledigt werden. Schritt 4: Vernichtung der TWuerfel-Objekte Wenn Objekte nicht mehr benötigt werden, sollte der für sie reservierte Speicherplatz wieder freigegeben werden.

43 Schritt 1: Implementierung einer Klasse
Klassen werden als Module (Programmeinheiten) implementiert, die in Delphi in zwei Teilen beschrieben werden: Schnittstellenvereinbarung: Deklaration der Attribute und Methoden Implementierungsteil: Implementierung der Methoden unit uWuerfel; interface // Deklaration der // Attribute und Methoden implementation // Implementierung der // Methoden end. TWuerfel augen erzeugen vernichten werfen

44 Schritt 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; ... TWuerfel – augen: integer + create + destroy + werfen + getAugen: integer Deklaration der Attribute und Operationen

45 Schritt 1: Implementierung einer Klasse
unit uWuerfel; interface ... implementation constructor TWuerfel.create; begin augen := random(6)+1; end; destructor TWuerfel.destroy; begin end; Implementierung der Konstruktoren / Destruktoren

46 Schritt 1: Implementierung einer Klasse
unit uWuerfel; interface ... implementation procedure TWuerfel.werfen; begin augen := random(6)+1; end; function TWuerfel.getAugen: integer; begin result := augen; end; end. Implementierung der Operationen

47 Schritt 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“.

48 Schritt 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

49 Schritt 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

50 Schritt 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

51 Schritt 4: Vernichtung eines Objekts
unit uGUI; interface ... implementation {$R *.DFM} procedure TGUI.FormDestroy(Sender: TObject); begin wuerfelA.free; end; end. Vernichtung des Objekts durch Freigabe des Speichers

52 Aufgabe 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; ...).

53 Teil 4 Übung: Uhr

54 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.

55 Aufgabe: 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 16:46

56 Aufgabe: 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.

57 Identifikation von Objekten
Miniwelt 16:46 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.

58 Beschreibung von Objekten
Miniwelt 16:46 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.

59 Klassenentwurf 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.

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

61 Übung: Chiffriersystem
Teil 5 Übung: Chiffriersystem

62 Zielsetzung 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.

63 Identifikation 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.

64 Aufgabe 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?

65 Lösungsvorschlag Klasse Objekt TChiffrierer
- quelltext: string - geheimtext: String - schluessel: integer Klasse + create + destroy + verschuesseln + entschluesseln + setQuelltext(t: string) + getQuelltext: sting ... Objekt chiffrierer quelltext = ‚CAESAR‘ geheimtext = ‚FDHVDU‘ schluessel = 3

66 Aufgabe 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“.

67 Teil 6 Übung: Roboter

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

69 Identifikation von Objekten
Miniwelt Norden (6,4) Westen Osten 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.

70 Aufgabe 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?

71 Lösungsvorschlag Klasse Objekt TRoboter
- xPos: integer - yPos: integer - richtung: tRichtung + create + initialisieren + schritt + linksDrehen + rechtsDrehen + getXPos: integer + getYPos: integer + getRichtung: tRichtung Objekt roboter xPos = 3 yPos = 5 richtung = osten

72 Aufgabe 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.

73 Teil 7 Zusammenfassung

74 Objektorientierung Grundideen Grund- konzepte Objekt Klasse
Modellierungssprache: UML Implementierungssprache: Delphi, Java, ...

75 Idee: 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.

76 Literaturhinweise Es gibt eine Vielzahl von fachwissenschaftlichen Darstellungen zur objektorientierten Modellierung und Programmierung. Hier wurden folgende Lehrwerke benutzt: - D. J. Barnes, M. Kölling: Objektorientierte Programmierung mit Java. Pearson - Studium Helmut Balzert: Lehrbuch Grundlagen der Informatik. Spektrum Ak. Verlag 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 P. Damann, J. Wemßen: Objektorientierte Programmierung mit Delphi, Band 2. Klett-Verlag 2003. Viele interessante Artikel mit Unterrichtsvorschlägen bzw. fachdidaktischen Auseinandersetzungen findet man in der Zeitschrift LOG IN. Das Themenheft 128/129 ist speziell dem Thema „Objektorientiertes Modellieren und Programmieren“ gewidmet. ...

77 Literaturhinweise Im Internet findet man ebenfalls sehr viele schulgerechte Darstellungen der objektorientierten Modellierung und Programmierung, z. B: Die AG-Informatik des LMZ in RLP stellt u. a. auch Fortbildungsmaterialien zu diesem Thema bereit. Auf der Homepage des HSG in Kaiserslautern findet man Unterrichtsmaterialien und Links zu weiteren interessanten Seiten. ...


Herunterladen ppt "Grundkonzepte der objektorientierten Programmierung Teil 1"

Ähnliche Präsentationen


Google-Anzeigen