1 / 79

Implementierung objektorientierter Modelle

Implementierung objektorientierter Modelle. Klaus Becker 2009. mit Python, Delphi, Java. Teil 1. Python - Würfel. Beispiel 1: Würfel. Ziel ist es, ein einfaches System zur Simulation eines Würfels zu entwickeln. Datenmodell.

diamond
Download Presentation

Implementierung objektorientierter Modelle

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. Implementierung objektorientierter Modelle Klaus Becker 2009

  2. mit Python, Delphi, Java

  3. Teil 1 Python - Würfel

  4. Beispiel 1: Würfel Ziel ist es, ein einfaches System zur Simulation eines Würfels zu entwickeln.

  5. Datenmodell Das Datenmodell ist hier sehr einfach und besteht nur aus einem Objekt einer Klasse Wuerfel. Klasse Objekt Miniwelt Datenmodell

  6. Implementierung des Datenmodells from random import randint class Wuerfel(object): def __init__(self): self.augen = 1 def werfen(self): self.augen = randint(1, 6) def getAugen(self): return self.augen wuerfel.py Konstruktor Attribut Methode Methode

  7. Test des Datenmodells # Datenmodell from wuerfel import * wuerfel = Wuerfel() # Test for i in range(10): wuerfel.werfen() print(wuerfel.getAugen()) Erzeugung der Objekte Objekte in Aktion test_wuerfel.py Datenmodell

  8. Benutzeroberfläche zum Datenmodell from tkinter import * class GUIWuerfel(object): def __init__(self, wuerfel): # Referenzattribute zum Datenmodell self.wuerfel = wuerfel # Erzeugung des Fensters self.fenster = Tk() self.fenster.title("Würfel") self.fenster.geometry('120x110') # Anzeige des Würfels self.labelWuerfel = Label(master=self.fenster, text="1", background="#FBD975") self.labelWuerfel.place(x=45, y=40, width=30, height=30) # Button zum Auswerten self.buttonWuerfel = Button(master=self.fenster, text="Würfel werfen", \ command=self.Button_Wuerfel_Click) self.buttonWuerfel.place(x=10, y=80, width=100, height=20) def Button_Wuerfel_Click(self): # Verarbeitung der Daten self.wuerfel.werfen() # Anzeige der Daten self.labelWuerfel.config(text=str(self.wuerfel.getAugen())) Datenmodell-Objekte GUI-Objekte Ereignisverarbeitung guiwuerfel.py

  9. Benutzeroberfläche zum Datenmodell # Datenmodell from wuerfel import * wuerfel = Wuerfel() # GUI from guiwuerfel import * guiwuerfel = GUIWuerfel(wuerfel) guiwuerfel.fenster.mainloop() Datenmodell-Objekte GUI-Verwaltungsobjekt test_guiwuerfel.py

  10. Teil 2 Delphi - Würfel

  11. Beispiel 1: Würfel Ziel ist es, ein einfaches System zur Simulation eines Würfels zu entwickeln.

  12. Datenmodell Das Datenmodell ist hier sehr einfach und besteht nur aus einem Objekt einer Klasse Wuerfel. Klasse Objekt Miniwelt Datenmodell

  13. Implementierung des Datenmodells Vorbereitung: Neuer Ordner (z.B. "WuerfelOhneGUI") Datei -> Neu -> Unit Unit im neuen Ordner abspeichern (z.B. "uWuerfel.pas")

  14. Implementierung des Datenmodells unit uWuerfel; interface type TWuerfel = class private augen: integer; public constructor create; procedure werfen; function getAugen: integer; end; ... ... implementation constructor TWuerfel.create; begin augen := 1; randomize; end; procedure TWuerfel.werfen; begin augen := random(6)+1; end; function TWuerfel.getAugen: integer; begin result := augen; end; Implementierung der Attribute und Methoden Deklaration der Attribute und Methoden Klassen werden als Module (Programmeinheiten) implementiert, die in Delphi in zwei Teilen beschrieben werden: Schnittstellenvereinbarung: Deklaration der Attribute und Methoden Implementierungsteil: Implementierung der Methoden uWuerfel.pas

  15. Test des Datenmodells Vorbereitung: Datei -> Neu -> Konsolen-Anwendung Projekt im bereits bestehenden ("WuerfelOhneGUI") abspeichern (z.B. "ProjectWuerfel.dpr") Projekt -> Dem Projekt hinzufügen -> "uWuerfel.pas"

  16. Test des Datenmodells program ProjectWuerfel; {$APPTYPE CONSOLE} uses sysutils, uWuerfel in 'uWuerfel.pas'; var wuerfel: Twuerfel; i: integer; begin // Datenmodell wuerfel := TWuerfel.create; // Test for i := 0 to 9 do begin wuerfel.werfen; writeln(wuerfel.getAugen); end; readln; end. Erzeugung der Objekte Objekte in Aktion Datenmodell ProjectWuerfel.dpr

  17. Benutzeroberfläche zum Datenmodell Vorbereitung: Neuer Ordner (z.B. "WuerfelMitGUI") Datei -> Neu -> Anwendung Projekt im neuen Ordner ("WuerfelMitGUI") abspeichern (z.B. "ProjectWuerfel.dpr") Unit "Unit1.pas" umbenennen (z.B. "uGUI.pas") Projekt -> Dem Projekt hinzufügen -> "uWuerfel.pas"

  18. Benutzeroberfläche zum Datenmodell unit uGUI; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, uWuerfel; type TFGUIWuerfel = class(TForm) labelWuerfel: TLabel; buttonWuerfel: TButton; procedure buttonWuerfelClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } wuerfel: TWuerfel; public { Public-Deklarationen } end; var FGUIWuerfel: TFGUIWuerfel; ... Einbindung der Datenmodell-Unit Deklaration des Referenzattributs uGUI.pas

  19. Benutzeroberfläche zum Datenmodell ... implementation {$R *.DFM} procedure TFGUIWuerfel.buttonWuerfelClick(Sender: TObject); begin wuerfel.werfen; labelWuerfel.Caption := IntToStr(wuerfel.getAugen); end; procedure TFGUIWuerfel.FormCreate(Sender: TObject); begin wuerfel := TWuerfel.create; end; end. Implementierung der Ereignisverarbeitung Erzeugung der Datenmodell-Objekte uGUI.pas

  20. Benutzeroberfläche zum Datenmodell ... type TFGUIWuerfel = class(TForm) labelWuerfel: TLabel; buttonWuerfel: TButton; procedure buttonWuerfelClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } wuerfel: TWuerfel; public { Public-Deklarationen } end; ... procedure TFGUIWuerfel.FormCreate(Sender: TObject); begin wuerfel := TWuerfel.create; end; ... uGUI.pas

  21. Teil 3 Java - Würfel

  22. Beispiel 1: Würfel Ziel ist es, ein einfaches System zur Simulation eines Würfels zu entwickeln.

  23. Datenmodell Das Datenmodell ist hier sehr einfach und besteht nur aus einem Objekt einer Klasse Wuerfel. Klasse Objekt Miniwelt Datenmodell

  24. Implementierung des Datenmodells Vorbereitung: Neuer Ordner (z.B. "WuerfelOhneGUI") Datei -> Neu -> Java Datei im neuen Ordner abspeichern: "Wuerfel.java"

  25. Implementierung des Datenmodells public class Wuerfel { // Anfang Attribute private int augen; // Ende Attribute public Wuerfel() { } // Anfang Methoden public void werfen() { augen = (int)(Math.random() * 6 + 1); } public int getAugen() { return augen; } // Ende Methoden } Wuerfel.java Attribute Konstruktor Methoden Beachte: Der Dateiname (hier: „Wuerfel.java“) muss mit dem Klassennamen (hier: „Wuerfel“) übereinstimmen. Beachte:In einer Datei kann daher auch nur eine Klasse implementiert werden.

  26. Test des Datenmodells Vorbereitung: Datei -> Neu -> Console Datei im bereits bestehenden ("WuerfelOhneGUI") abspeichern (z.B. "TestWuerfel.java")

  27. Test des Datenmodells public class TestWuerfel { // Anfang Attribute // Ende Attribute // Anfang Methoden public static void main(String[] args) { // Datenmodell Wuerfel wuerfel = new Wuerfel(); // Test for (int i = 0; i < 10; i = i + 1) { wuerfel.werfen(); System.out.println(wuerfel.getAugen()); }; } // Ende Methoden } Erzeugung der Objekte Objekte in Aktion Datenmodell TestWuerfel.java

  28. Benutzeroberfläche zum Datenmodell Vorbereitung: Neuer Ordner (z.B. "WuerfelMitGUI") Datei -> Neu -> Frame Datei im neuen Ordner ("WuerfelMitGUI") abspeichern (z.B. „GUI.java")

  29. Benutzeroberfläche zum Datenmodell import java.awt.*; import java.awt.event.*; public class GUI extends Frame { // Anfang Attribute private Label labelWuerfel = new Label(); private Button buttonWuerfel = new Button(); private Wuerfel wuerfel = new Wuerfel(); // Ende Attribute public GUI(String title) { // Frame-Initialisierung super(title); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } }); int frameWidth = 186; int frameHeight = 198; setSize(frameWidth, frameHeight); Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); int x = (d.width - getSize().width) / 2; int y = (d.height - getSize().height) / 2; … Erzeugung der GUI-Objekte Erzeugung der Datenmodell-Objekte Konfiguration der GUI-Objekte GUI.java

  30. Benutzeroberfläche zum Datenmodell … // Anfang Methoden public void buttonWuerfel_ActionPerformed(ActionEvent evt) { // Verarbeitung der Daten wuerfel.werfen(); // Anzeige der Daten labelWuerfel.setText(Integer.toString(wuerfel.getAugen())); } // Ende Methoden public static void main(String[] args) { new GUI("GUI"); } } Datenmodell-Objekt in Aktion Erzeugung des GUI-Verwaltungsobjekts GUI.java

  31. Benutzeroberfläche zum Datenmodell ... public class GUI extends Frame { // Anfang Attribute private Label labelWuerfel = new Label(); private Button buttonWuerfel = new Button(); private Wuerfel wuerfel = new Wuerfel(); // Ende Attribute ... public static void main(String[] args) { new GUI("GUI"); ... GUI.java

  32. Teil 4 Python - chuck a luck

  33. Beispiel 2: chuck a luck Ziel ist es, ein System zur Simulation des Spiels "chuck a luck" zu entwickeln.

  34. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 3 Datenmodell Das Datenmodell ist komplexer und besteht aus Objekten, die in Beziehung stehen. 1 4 Einsatz zahlen Spielzahl setzen Würfel werfen Gewinn auszahlen 2 5 3 3 6 Miniwelt Datenmodell

  35. Implementierung des Datenmodells from random import randint class Konto(object): def __init__(self, betrag): self.stand = betrag def einzahlen(self, betrag): self.stand = self.stand + betrag def abheben(self, betrag): self.stand = self.stand - betrag ... class Spiel(object): def __init__(self): self.konto = Konto(100) self.spielzahl = Spielzahl() self.wuerfelA = Wuerfel() self.wuerfelB = Wuerfel() self.wuerfelC = Wuerfel() ... model_chuckaluck.py

  36. Test des Datenmodells #----------------------------------------------------------- # Datenmodell #----------------------------------------------------------- from model_chuckaluck import * spiel = Spiel() #----------------------------------------------------------- # Test #----------------------------------------------------------- # Durchführung eines Spiels spiel.einsatzZahlen() spiel.spielzahlSetzen(5) spiel.wuerfelWerfen() spiel.gewinnAuszahlen() # Ausgabe der Spiel print("Würfel A:", spiel.wuerfelA.augen) print("Würfel B:", spiel.wuerfelB.augen) print("Würfel C:", spiel.wuerfelC.augen) print("Konto:", spiel.konto.stand) Erzeugung der Datenmodell-Objekte Datenmodell Objekte in Aktion test_model_chuckaluck.py

  37. Benutzeroberfläche zum Datenmodell from tkinter import * class GUIChuckALuck(object): def __init__(self, spiel): # Referenzattribute zum Datenmodell self.spiel = spiel # Erzeugung des Fensters self.tkFenster = Tk() self.tkFenster.title("chuck a luck") self.tkFenster.geometry('350x145') # Rahmen Überschrift ... def Button_Einsatz_Click(self): # Verarbeitung der Daten self.spiel.einsatzZahlen() # Anzeige der Daten self.labelKonto.config(text=str(self.spiel.konto.stand)) ... Datenmodell-Objekte GUI-Objekte Ereignisverarbeitung gui_chuckaluck.py

  38. Benutzeroberfläche zum Datenmodell #----------------------------------------------------------- # Datenmodell #----------------------------------------------------------- from model_chuckaluck import * spiel = Spiel() #----------------------------------------------------------- # GUI-Objekt #----------------------------------------------------------- from gui_chuckaluck import * guichuckaluck = GUIChuckALuck(spiel) guichuckaluck.tkFenster.mainloop() test_gui_chuckaluck.py

  39. Teil 5 Delphi - chuck a luck

  40. Beispiel 2: chuck a luck Ziel ist es, ein einfaches System zur Simulation eines Würfels zu entwickeln.

  41. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 3 Datenmodell Das Datenmodell ist komplexer und besteht aus Objekten, die in Beziehung stehen. 1 4 Einsatz zahlen Spielzahl setzen Würfel werfen Gewinn auszahlen 2 5 3 3 6 Miniwelt Datenmodell

  42. Implementierung des Datenmodells unit uKonto; interface type TKonto = class private stand: integer; public constructor create(betrag: integer); procedure einzahlen(betrag: integer); procedure abheben(betrag: integer); function getStand: integer; end; implementation constructor TKonto.create(betrag: integer); begin stand := betrag; end; ... ... procedure TKonto.einzahlen(betrag: integer); begin stand := stand + betrag; end; procedure TKonto.abheben(betrag: integer); begin stand := stand - betrag; end; function TKonto.getStand: integer; begin result := stand; end; end. Deklaration der Attribute und Methoden Implementierung der Attribute und Methoden uKonto.pas

  43. Implementierung des Datenmodells unit uSpiel; interface uses uWuerfel, uKonto, uSpielzahl; type TSpiel = class private public spielzahl: TSpielzahl; konto: TKonto; wuerfelA: TWuerfel; wuerfelB: TWuerfel; wuerfelC: TWuerfel; constructor create(); procedure einsatzZahlen; procedure spielzahlSetzen(zahl: integer); procedure wuerfelWerfen; procedure gewinnAuszahlen; end; ... ... implementation constructor TSpiel.create(); begin konto := TKonto.create(100); wuerfelA := TWuerfel.create; wuerfelB := TWuerfel.create; wuerfelC := TWuerfel.create; spielzahl := TSpielzahl.create; end; procedure TSpiel.einsatzZahlen(); begin konto.abheben(1); end; ... Implementierung der Attribute und Methoden Deklaration der Attribute und Methoden uSpiel.pas

  44. Test des Datenmodells program ProjectChuckALuck; {$APPTYPE CONSOLE} uses sysutils, uSpiel in 'uSpiel.pas'; var spiel: TSpiel; begin // Erzeugung der Datenmodell-Objekte spiel := TSpiel.create; // Durchführung eines Spiels spiel.einsatzZahlen; spiel.spielzahlSetzen(5); spiel.wuerfelWerfen; spiel.gewinnAuszahlen; // Ausgabe der Spieldaten writeln('Wuerfel A:', spiel.wuerfelA.getAugen); writeln('Wuerfel B:', spiel.wuerfelB.getAugen); writeln('Wuerfel C:', spiel.wuerfelC.getAugen); writeln('Konto:', spiel.konto.getStand); readln; end. Erzeugung der Objekte Objekte in Aktion ProjectChuckALuck.dpr

  45. Benutzeroberfläche zum Datenmodell unit uGUI; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, uSpiel; type TGUI = class(TForm) PTitel: TPanel; ... private { Private-Deklarationen } spiel: TSpiel; public { Public-Deklarationen } end; var GUI: TGUI; ... Einbindung der Datenmodell-Unit Deklaration des Referenzattributs uGUI.pas

  46. Benutzeroberfläche zum Datenmodell ... implementation {$R *.DFM} procedure TGUI.FormCreate(Sender: TObject); begin spiel := TSpiel.create; labelKonto.Caption := IntToStr(spiel.konto.getStand) end; procedure TGUI.ButtonEinsatzClick(Sender: TObject); begin spiel.einsatzZahlen; labelKonto.Caption := IntToStr(spiel.konto.getStand); end; ... end. Erzeugung der Datenmodell-Objekte Implementierung der Ereignisverarbeitung uGUI.pas

  47. Teil 6 Java - chuck a luck

  48. Beispiel 2: chuck a luck Ziel ist es, ein einfaches System zur Simulation eines Würfels zu entwickeln.

  49. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 3 Datenmodell Das Datenmodell ist komplexer und besteht aus Objekten, die in Beziehung stehen. 1 4 Einsatz zahlen Spielzahl setzen Würfel werfen Gewinn auszahlen 2 5 3 3 6 Miniwelt Datenmodell

  50. Implementierung des Datenmodells public class Konto { // Anfang Attribute private int stand = 0; // Ende Attribute public Konto(int betrag) { stand = betrag; } … ... // Anfang Methoden public void einzahlen(int betrag) { stand = stand + betrag; } public void abheben(int betrag) { stand = stand - betrag; } public int getStand() { return stand; } // Ende Methoden } Konto.java

More Related