1 / 89

Grundkonzepte der objektorientierten Programmierung

Grundkonzepte der objektorientierten Programmierung. Objektorientierung. Grundideen. Grundkonzepte. Objekt. Klasse. Nachricht. Assoziation. Modellierungssprache: UML. Implementierungssprache: Delphi, Java,. Teil 1. Modellierung mit Objekten, Klassen und Nachrichten. 1$. 1$. 1$. 1$.

gary-norris
Download Presentation

Grundkonzepte der objektorientierten Programmierung

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Grundkonzepte der objektorientierten Programmierung

  2. Objektorientierung Grundideen Grundkonzepte ... Objekt Klasse Nachricht Assoziation Modellierungssprache: UML Implementierungssprache: Delphi, Java, ...

  3. Teil 1 Modellierung mit Objekten, Klassen und Nachrichten

  4. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ Das Würfelspiel „chuck a luck“ Der Spieler zahlt den Einsatz. Einsatz: 1 $ Gewinn: Einsatz +1 Treffer: 1 $ 2 Treffer: 2 $3 Treffer: 3 $ Der Spieler tippt auf eine Zahl. 1$ 1 2 3 4 5 6

  5. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ Das Würfelspiel „chuck a luck“ Der Spieler zahlt den Einsatz. Einsatz: 1 $ Gewinn: Einsatz +1 Treffer: 1 $ 2 Treffer: 2 $3 Treffer: 3 $ Der Spieler tippt auf eine Zahl. Der Spieler wirft die drei Würfel. 1$ 1 2 3 3 4 5 6

  6. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ Das Würfelspiel „chuck a luck“ Der Spieler zahlt den Einsatz. Einsatz: 1 $ Gewinn: Einsatz +1 Treffer: 1 $ 2 Treffer: 2 $3 Treffer: 3 $ Der Spieler tippt auf eine Zahl. Der Spieler wirft die drei Würfel. Der Anbieter zahlt den Gewinn. 1 2 3 3 1$ 1$ 4 5 6

  7. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ Zielsetzung Entwicklung eines interaktiven Systems, das dem Benutzer das Würfelspiel „chuck a luck“ bereitstellt. 1$ 1 2 3 3 4 5 6 Benutzer Chuck-a-Luck-System

  8. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ Objektorientierte Modellierung Miniwelt: 1$ 1 2 3 3 4 5 6 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. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ Objektorientierte Modellierung Miniwelt: 1$ 1 2 3 3 4 5 6 wuerfelA wuerfelB wuerfelC spielbrett konto Modell(welt): Grundidee der objektorientierten Modellierung:Die Gegenstände der Miniwelt werden mit Objekten im Sinne der Informatik beschrieben.

  10. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ Struktur eines Objektes Miniwelt: 1$ 1 2 3 3 4 5 6 Eigenschaft:Augen Operation:werfen Eigenschaft: Zahl Operation: Tipp setzen Eigenschaft: Stand Operationen:Betrag einzahlenBetrag abheben

  11. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ Attribute Miniwelt: 1$ 1 2 3 3 4 5 6 Modell: wuerfelA wuerfelB wuerfelC spielbrett konto augen = 3 augen = 3 augen = 5 zahl = 3 stand = 9 Die charakteristischen Eigenschaften eines Objekts werden mit Attributen erfasst. Die Gesamtheit der Attributwerte legt den Objektzustand fest.

  12. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ Methoden Miniwelt: 1$ 1 2 3 3 4 5 6 Modell: wuerfelA wuerfelB wuerfelC spielbrett konto augen = 3 augen = 3 augen = 5 zahl = 3 stand = 9 werfen werfen werfen tipp setzen betrag abhebenbetrag einzahlen Das Verhalten eines Objekts wird mit Operationen / Methoden erfasst. Diese bestimmen die dynamischen Eigenschaften eines Objekts.

  13. Klassen Klassen: Wuerfel Spielbrett Konto augen zahl stand werfen tipp setzen betrag abhebenbetrag einzahlen Objekte: wuerfelA wuerfelB wuerfelC spielbrett konto augen = 3 augen = 3 augen = 5 zahl = 3 stand = 9 werfen werfen werfen tipp setzen betrag abhebenbetrag einzahlen Klassen beschreiben die Gesamtheit gleich strukturierter Objekte.

  14. Klassen Klassen: Wuerfel Spielbrett Konto augen zahl stand werfen tipp setzen betrag abhebenbetrag einzahlen Objekte: instance of instance of instance of wuerfelA wuerfelB wuerfelC spielbrett konto augen = 3 augen = 3 augen = 5 zahl = 3 stand = 9 Klassen sind Baupläne für Objekte. Objekte werden als Exemplare (Instanzen) von Klassen bezeichnet.

  15. UML Wuerfel UML-Klassendiagramm augen werfen instance of UML-Objektdiagramm wuerfelA wuerfelB wuerfelC augen = 3 augen = 3 augen = 5 UML (Unified Modeling Language): Grafische Sprache zur Beschreibung objektorientierter Modelle

  16. Konstruktoren / Destruktoren Klassen: Wuerfel Spielbrett Konto augen zahl stand erzeugen vernichten werfen erzeugen vernichten tipp setzen erzeugen vernichten betrag abhebenbetrag einzahlen Konstruktoren / Destruktoren sind spezielle Operationen zur Erzeugung/ Vernichtung von Objekten. Beachte: Konstruktoren / Destruktoren sind Klassenmethoden(d. h. Objekte verfügen nicht über diese Methoden).

  17. Datenkapselung Geheimnisprinzip:Die für die Benutzung einer Systemkomponente (eines Moduls) nicht benötigten Detailinformationen werden verborgen. Datenkapselung bei Objekten / Klassen:Die innere Struktur eines Objekts (Aufbau über Attribute) wird verborgen. Objekte stellen Dienste nur über ihre Operationen / Methoden bereit. Konto Konto stand stand erzeugen vernichten betrag abhebenbetrag einzahlen erzeugen vernichten betrag abhebenbetrag einzahlen

  18. Zugriffsmethoden Um auf Attributwerte (lesend bzw. schreibend) zugreifen zu können, werden spezielle Zugriffsmethoden benötigt. Konto Konto Konto stand stand stand erzeugen vernichten betrag abhebenbetrag einzahlen erzeugen vernichten betrag abhebenbetrag einzahlen erzeugen vernichten betrag abhebenbetrag einzahlen stand erfragenstand setzen

  19. Schnittstellenspezifikation Genaue Festlegung der Benutzungsschnittstelle • Zugriffsrechte (- kein Zugriff; + Zugriff erlaubt) • Datentypen (und Initialisierungswerte) • Signaturen (Festlegung der Parameter) Konto Konto stand – stand: integer erzeugen vernichten betrag abhebenbetrag einzahlen stand erfragenstand setzen + create(betrag: integer) + destroy + abheben(betrag: integer) + einzahlen(betrag: int.) + getStand: integer + setStand(betrag: integer)

  20. Aufgabe Verfeinern Sie analog zur Konto-Klasse die weiteren Klassen der ChuckALuck-Miniwelt und erstellen Sie mit Hilfe . Wuerfel Spielbrett Konto augen zahl stand werfen tipp setzen betrag abhebenbetrag einzahlen Konto – stand: integer + create(betrag: integer) + destroy+ abheben(betrag: integer) + einzahlen(betrag: int.) + getStand: integer + setStand(betrag: integer)

  21. Aktivierung von Objekten konto Zustand vorher stand = 9 abheben(1)  „Kunde“ konto Aktivierung durch Nachricht stand = 9 konto Zustand nachher 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.  3: werfen 2: setzen(tipp)   7: getAugen 6: getZahl   4: werfen 1: abheben(1)   8: getAugen  5: werfen  9: getAugen Das Spiel als Nachrichtenaustausch wuerfelA spielbrett wuerfelB konto 10: einzahlen(richtige+1)  wuerfelC UML-Kollaborationsdiagramm

  23. Das Spiel als Nachrichtenaustausch UML-Sequenzdiagramm

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

  25. Aufgabe Erstellen Sie mit Hilfe des UML-Editors „Violet“ ein Objekt- und ein Klassendiagramm zur Beschreibung der ChuckALuck-Miniwelt. Ergänzen Sie auch das bereits begonnene Interaktionsdiagramm. Hier soll der gesamte Nachrichtenaustausch zur Beschreibung des Spielablaufs dargestellt werden.

  26. Lösung UML-Objektdiagramm:

  27. Lösung UML-Klassendiagramm (Grobfassung): UML-Klassendiagramm (Verfeinerung):

  28. Lösung UML-Sequenzdiagramm

  29. Teil 2 Implementierung in Delphi

  30. Wuerfel – augen: integer + create + destroy + werfen + getAugen: integer Klasse als Modul Klassen werden als Module (Programmeinheit) implementiert, die in Delphi in zwei Teilen beschrieben werden: Öffentlicher Teil bestehend aus den Vereinbarungen, die zur Benutzung des Moduls notwendig sind (Schnittstelle).Privater Teil bestehend aus den Implementierungsdetails, die für die Benutzung nicht benötigt werden. unit uWuerfel; interface // Deklaration der // Attribute und Operationen implementation // Implementierung der // Operationen end.

  31. Wuerfel – augen: integer + create + destroy + werfen + getAugen: integer Implementierung der Klassen Von TObject abgeleitet unit uWuerfel; interface type TWuerfel = class(TObject) private augen: integer; public constructor create; destructor destroy;procedure werfen; function getAugen: integer; end; ... Deklaration der Attribute und Operationen

  32. Implementierung der Klassen unit uWuerfel; interface ... implementation constructor TWuerfel.create;begininherited create;augen := 1;randomize;end; destructor TWuerfel.destroy;begininherited destroy;end; ... Implementierung der Konstruktoren / Destruktoren Geerbter Konstruktor wird aufgerufen

  33. Implementierung der Klassen unit uWuerfel; interface ... implementation ... procedure TWuerfel.werfen;beginaugen := random(6)+1;end; function TWuerfel.getAugen: integer;beginresult := augen;end; end. Implementierung der Operationen

  34. Aufgabe Implementieren Sie die Klassen Wuerfel, Konto und Spielzahl. Erstellen Sie zunächst ein neues Projekt in einem hierfür vorgesehenen neuen Ordner. Erstellen Sie für jede Klassen-Unit eine eigene Datei (Datei – Neu – Unit) und geben Sie dieser Datei einen passenden Namen (z. B. uKonto). Übernehmen Sie die Delphi-Konvention, den Klassennamen mit einem „T“ beginnen zu lassen (z. B. „TKonto“).

  35. Benutzungsoberfläche Form1: TForm1 PTitel: TPanel GBWuerfel: TGroupBox RGSpielbrett: TRadioGroup GBKonto: TGroupBox PWuerfelA: TPanel PWuerfelB: TPanel PKonto: TPanel PWuerfelC: TPanel BSpielen: TButton Die Benutzungsoberfläche wird mit Hilfe von sog. GUI-Objekten (Graphical User Interface) aufgebaut.

  36. Ereignisbehandlung (Benutzer)Aktion Programmreaktionen Erzeugung des Formulars Erzeugung der Modellobjekte. Mausklick auf den „Spiel durchführen“-Button Der vom Benutzer eingestellte Tipp am Spielbrett wird übernommen. Das Spiel wird mit diesem Tipp durchgeführt. Die Ergebnisse des Spiels (Würfelergebnisse, neuer Kontostand) werden angezeigt.

  37. 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. Deklaration 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. Erzeugung der Modell-Objekte unit Unit1; interface ... implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject);beginwuerfelA := TWuerfel.create;wuerfelB := TWuerfel.create;wuerfelC := TWuerfel.create;konto := TKonto.create(100);spielbrett := TSpielbrett.create;end; procedure TForm1.BSpielenClick(Sender: TObject);... end. Erzeugung der Modell-Objekte

  40. Implementierung des Spiels procedure TForm1.BSpielenClick(Sender: TObject); var tipp, zahl, richtige: integer; begin// Aktualisierung des Eingabewerts tipp := RGSpielbrett.ItemIndex+1;// Aktualisier. d. Modell-Objekte bzw. Durchführung d. Spielskonto.abheben(1);spielbrett.setzen(tipp);wuerfelA.werfen;wuerfelB.werfen;wuerfelC.werfen;richtige := 0;zahl := spielbrett.getZahl; if zahl = wuerfelA.getAugen then inc(richtige);if zahl = wuerfelB.getAugen then inc(richtige);if zahl = wuerfelC.getAugen then inc(richtige);if richtige > 0 then konto.einzahlen(richtige+1); // Aktualisierung der AnzeigePWuerfelA.Caption := IntToStr(wuerfelA.getAugen);...end; Nachrichtenaustausch zur Erzeugung des Spiels

  41. Implementierung von Nachrichten abheben(1)  Form1 konto Senderobjekt-Klasse procedure TForm1.BSpielenClick(Sender: TObject); ... begin... konto.abheben(1); ...end; Empfängerobjekt Operation

  42. Aufgabe Erstellen Sie eine geeignete Benutzungsoberfläche. Ergänzen Sie das Delphi-Programm zur Simulation des ChuckALuck-Spiels. Testen Sie anschließend das fertige Programm.

  43. Teil 3 Beziehungen

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

  45. Die Klasse zum Spielobjekt Spiel ... ... + durchfuehren(tipp: int.) spiel

  46. Die Operation „durchfuehren“ 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; Spiel ... ... + durchfuehren(tipp: int.) spiel

  47. Bekanntschaft zwischen Objekten wuerfelA spielbrett kennt kennt wuerfelB spiel konto kennt kennt wuerfelC kennt Ein Nachrichtenaustausch zwischen Objekten kann nur stattfinden, wenn das sendende Objekt das Empfängerobjekt kennt.

  48. Bekanntschaft durch Referenzen Zeiger (Adresse) 3A80 3A80 Referenzattribute

  49. Bekanntschaft 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. Erzeugung 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; Spiel - wuerfelA: Wuerfel - wuerfelB: Wuerfel - wuerfelC: Wuerfel - konto: Konto - spielbrett: Spielbrett Konstruktor mit Parametern zur Übergabe der Referenzen + create( wA, wB, wC: Wuerfel; k: Konto; sp: Spielbrett) + durchfuehren(tipp: int.) // Aufruf des Konstruktors konto := Tkonto.create(100);... spiel := TSpiel.create( wuerfelA, wuerfelB, wuerfelC, konto, spielbrett); Die Referenzbildung erfolgt bei der Erzeugung des Spiel-Objekts.

More Related