1 / 100

Grundkonzepte der objektorientierten Programmierung

Grundkonzepte der objektorientierten Programmierung. Klaus Becker 2004. Objektorientierung. Grundideen. Grundkonzepte. Objekt. Klasse. Nachricht. Assoziation. Modellierungssprache: UML. Implementierungssprache: Delphi, Java,. Teil 1. Objekt-basierte Programmierung.

rodney
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 Klaus Becker 2004

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

  3. Teil 1 Objekt-basierte Programmierung

  4. Fallstudie: chuck a luck Ziel ist es, ein System zu entwickeln, mit dem das in Amerika weit verbreitete Würfelspiel „chuck a luck“ am Rechner gespielt werden kann.

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

  6. Eine erste objektbasierte Lösung Im Verzeichnis „ChuckALuck0“ finden Sie ein erstes Programm zur Realisierung des Spiels.

  7. Eine erste objektbasierte Lösung Die Benutzungsoberfläche wird mit Hilfe von sog. GUI-Objekten (Graphical User Interface) aufgebaut. Für die Ausführung des Spiels ist das TButton-Objekt „BWerfen“ zuständig. Form1: TForm1 PTitel: TPanel RGSpielbrett: TRadioGroup GBWuerfel: TGroupBox GBKonto: TGroupBox PWuerfelA: TPanel PKonto: TPanel BWerfen: TButton

  8. Eine erste objektbasierte Lösung procedure TGUI.BSpielenClick(Sender: TObject); var wuerfelA, wuerfelB, wuerfelC, konto, spielzahl: integer; richtige: integer; begin // Durchführung des Spiels spielzahl := RGSpielbrett.ItemIndex+1; konto := StrToInt(PKonto.Caption); konto := konto-1; wuerfelA := random(6)+1; wuerfelB := random(6)+1; wuerfelC := random(6)+1; richtige := 0; if spielzahl = wuerfelA then inc(richtige); if spielzahl = wuerfelB then inc(richtige); if spielzahl = wuerfelC then inc(richtige); if richtige > 0 then konto := konto+(richtige+1); // Aktualisierung der Anzeige PWuerfelA.Caption := IntToStr(wuerfelA); PWuerfelB.Caption := IntToStr(wuerfelB); PWuerfelC.Caption := IntToStr(wuerfelC); PKonto.Caption := IntToStr(konto); end; Variablen zur Repräsentation der Spielinformationen

  9. Bemerkungen Das Programm im Verzeichnis „ChuckALuck0“ ist ad hoc entwickelt worden (d. h. Benutzungsoberfläche zusammenstellen; Ereignisbehandlung ergänzen). Für kleinere Anwendungen kann man auf diese Weise schnell zu einem lauffähigen System kommen. Bei größeren Anwendungen versagt in der Regel die ad-hoc-Methode. Man benötigt dann Methoden zur systematischen Entwicklung von Software. Ziel soll es sein, die objektorientierte Methode anhand des ChuckALuck-Beispiels Schritt für Schritt zu entwickeln.

  10. Teil 2 Objektorientierte Modellierung

  11. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 3 Modellierung 1 4 2 5 Miniwelt 3 3 6 - Abbild der Miniwelt - Vorlage für das System Modell Informatisches System

  12. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 3 Vom Gegenstand der Miniwelt ... 1 4 2 5 3 3 6 Spielbrett Würfel Konto 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.

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

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

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

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

  17. Klassen 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.

  18. 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. Objekte werden als Exemplare (Instanzen) von Klassen bezeichnet.

  19. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 3 Erstes objektorientiertes Modell 1 4 2 5 3 3 6 Modell Miniwelt 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

  20. Konstruktoren / Destruktoren Modell Klasse TSpielbrett TWuerfel TKonto zahl augen stand erzeugen vernichten setzen(tipp) erzeugen vernichten werfen erzeugen 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/ Vernichtung von Objekten. Beachte: Konstruktoren / Destruktoren sind Klassenmethoden(d. h. Objekte verfügen nicht über diese Methoden).

  21. 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. TKonto verborgen stand erzeugen vernichten abheben(betrag)einzahlen(betrag) Zugriff erlaubt

  22. Zugriffsmethoden Um weiterhin auf Attributwerte (lesend bzw. schreibend) zugreifen zu können, werden spezielle Zugriffsmethoden benötigt. TKonto TKonto TKonto stand stand stand erzeugen vernichten abheben(betrag)einzahlen(betrag) erzeugen vernichten abheben(betrag)einzahlen(betrag) erzeugen vernichten abheben(betrag)einzahlen(betrag) „stand erfragen“„stand setzen“ Zugriffsmethoden

  23. Schnittstellenspezifikation • Die Benutzungsschnittstelle einer Klasse muss genau festgelegt werden. • Zugriffsrechte (- kein Zugriff; + Zugriff erlaubt) • Datentypen (und eventuelle Initialisierungswerte) • Signaturen (Parameter und bei Funktionen der Ergebnistyp) TKonto TKonto stand – stand: integer erzeugen vernichten abheben(betrag)einzahlen(betrag) „stand erfragen“„stand setzen“ + create(betrag: integer) + destroy + abheben(betrag: integer) + einzahlen(betrag: int.) + getStand: integer + setStand(betrag: integer)

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

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

  26. Aufgabe Erstellen Sie mit Hilfe des UML-Editors „Violet“ ein Objekt- und ein Klassendiagramm zur Beschreibung der ChuckALuck-Miniwelt. Beachte: Mit Hilfe von Violet können Objekt- und Klassendiagramme nur getrennt erstellt werden. Ergänzen Sie auch passende Datentypen.

  27. Lösung UML-Objektdiagramm: UML-Klassendiagramm (Feinfassung):

  28. Teil 3 Vom Modell zum Programm

  29. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 3 Zielsetzung 1 4 2 5 3 3 6 Miniwelt Modell System Ziel ist es, ein System zur Simulation des ChuckALuck-Spiels auf der Basis des entwickelten objektorientierten Modells zu erstellen.

  30. TWuerfel – augen: integer + create + destroy + werfen + getAugen: integer Teilmodell Teil-Modell instance of wuerfelA wuerfelB wuerfelC augen = 3 augen = 3 augen = 5 Die Implementierung eines objektorientierten Modells soll anhand eines Teilmodells des Gesamtmodells gezeigt werden.

  31. TWuerfel – augen: integer + create + destroy + werfen + getAugen: integer Die Klasse als Modul Klassen werden als Module (Programmeinheiten) implementiert, die in Delphi in zwei Teilen beschrieben werden: Der öffentliche Teil besteht aus den Vereinbarungen, die zur Benutzung des Moduls notwendig sind (Schnittstelle).Der private Teil besteht 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.

  32. TWuerfel – augen: integer + create + destroy + werfen + getAugen: integer Implementierung von Klassen unit uWuerfel; interface type TWuerfel = class private augen: integer; public constructor create;destructor destroy;procedure werfen; function getAugen: integer; end; ... Deklaration der Attribute und Operationen

  33. Implementierung von Klassen unit uWuerfel; interface ... implementation constructor TWuerfel.create;beginaugen := 1;randomize;end; destructor TWuerfel.destroy;beginend; ... Implementierung der Konstruktoren / Destruktoren

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

  35. Einbindung einer Modellklasse unit uGUI; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls,uWuerfel; type TForm1 = class(TForm) ... Bekanntmachen der Klassen

  36. Deklaration eines Objekts ... 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: TWuerfel; public { Public-Deklarationen } end; Deklaration eines GUI-Objekts Deklaration eines Modell-Objekts

  37. Erzeugung eines Modell-Objekts unit uGUI; interface ... implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject);beginwuerfelA := TWuerfel.create;end; procedure TForm1.BSpielenClick(Sender: TObject);... end. Erzeugung eines Modell-Objekts

  38. Aktivierung eines Modell-Objekts procedure TForm1.BSpielenClick(Sender: TObject); Begin // Aktivierung des Modell-Objekts wuerfelA.werfen; // Aktualisierung der AnzeigePWuerfelA.Caption := IntToStr(wuerfelA.getAugen); end;

  39. Aufgabe Kopieren Sie die Dateien aus dem Verzeichnis ChuchALuck0 in einen neuen Ordner. Implementieren und testen Sie Schritt für Schritt die Klassen TWuerfel, TKonto und TSpielzahl. Erstellen Sie ein objektorientiertes Programm zur Simulation des ChuckALuck-Spiels. Eine vollständige Lösung finden Sie im Verzeichnis „ChuckALuck1“.

  40. Lösung procedure TGUI.BSpielenClick(Sender: TObject); var tipp, zahl, richtige: integer; Begintipp := RGSpielbrett.ItemIndex+1;// Aktivierung der Modell-Objektekonto.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);PWuerfelB.Caption := IntToStr(wuerfelB.getAugen);PWuerfelC.Caption := IntToStr(wuerfelC.getAugen);PKonto.Caption := IntToStr(konto.getStand);end;

  41. Teil 4 Komplexe Objektstruktur

  42. Ereignissteuerung bisher Auslösende Aktion Ausgelöste Aktion Mausklick auf den „werfen“-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.

  43. Ereignissteuerung jetzt Auslösende Aktion Ausgelöste Aktion Mausklick auf einen Radio-Button Der Einsatz wird vom Konto abgehoben. Die gewählte Zahl wird gesetzt. Mausklick auf den „werfen“-Button Die Würfel werden geworfen. Mausklick auf den „aktualisieren“-Button Der Gewinn wird ermittelt und auf dem Konto eingezahlt.

  44. Ereignissteuerung jetzt Aktionen Zahl auf dem Spielbrett festlegen Achtung, Fehlbedienung möglich! Solange würfeln, bis genug „Treffer“ erzielt sind. Gewinn auszahlen lassen.

  45. Komplexere Ereignissteuerung [1][2]... / Tipp setzen [1][2]... / Tipp setzen; Konto abbuchen [werfen] / Würfel werfen bereitz0 gesetztz1 gewürfeltz2 [aktualisieren] / Konto aktualisieren Zustand: bereit gesetzt gesetzt gewürfelt Auslösende Aktion: RadioGroupButton anklicken RadioGroupButton anklicken Button „werfen“ anklicken Button „aktualisieren“ anklicken Ausgelöste Aktion: Tipp setzenKonto abbuchen Tipp setzen Würfel werfen Konto aktualisieren Neuer Zustand: gesetzt gesetzt gewürfelt bereit

  46. Spielsteuerung Die Steuerung des Spiels soll 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. Zustand: bereit gesetzt gesetzt gewürfelt Auslösende Aktion: RadioGroupButton anklicken RadioGroupButton anklicken Button „werfen“ anklicken Button „aktualisieren“ anklicken Ausgelöste Aktion: Tipp setzenKonto abbuchen Tipp setzen Würfel werfen Konto aktualisieren Neuer Zustand: gesetzt gesetzt gewürfelt bereit

  47. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 3 Modellierung 1 4 2 5 3 3 6 Modell Miniwelt spielmanager zustand = 0 spielbrett wuerfelA wuerfelB wuerfelC konto zahl = 3 augen = 3 augen = 3 augen = 5 stand = 9

  48. Aktivierung von Objekten konto Zustand vorher stand = 9 abheben(1)  spielmanager konto Aktivierung durch eine Nachricht zustand = 0 stand = 9 konto Zustand nachher stand = 8 Sichtweise: 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.

More Related