Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Implementierung objektorientierter Modelle

Ähnliche Präsentationen


Präsentation zum Thema: "Implementierung objektorientierter Modelle"—  Präsentation transkript:

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
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; augen := random(6)+1; function TWuerfel.getAugen: integer; result := augen; 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 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); wuerfel := TWuerfel.create; 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; 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 Datenmodell 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$
Das Datenmodell ist komplexer und besteht aus Objekten, die in Beziehung stehen. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1 4 Einsatz zahlen Spielzahl setzen Würfel werfen Gewinn auszahlen 2 5 1$ 1$ 3 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 Erzeugung der Datenmodell-Objekte
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 Datenmodell 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$
Das Datenmodell ist komplexer und besteht aus Objekten, die in Beziehung stehen. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1 4 Einsatz zahlen Spielzahl setzen Würfel werfen Gewinn auszahlen 2 5 1$ 1$ 3 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; ... ... procedure TKonto.einzahlen(betrag: integer); begin stand := stand + betrag; end; procedure TKonto.abheben(betrag: integer); stand := stand - betrag; function TKonto.getStand: integer; result := stand; 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(); konto.abheben(1); 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); spiel.einsatzZahlen; labelKonto.Caption := IntToStr(spiel.konto.getStand); 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 Datenmodell 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$
Das Datenmodell ist komplexer und besteht aus Objekten, die in Beziehung stehen. 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1$ 1 4 Einsatz zahlen Spielzahl setzen Würfel werfen Gewinn auszahlen 2 5 1$ 1$ 3 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

51 Implementierung des Datenmodells
public class Spiel { // Anfang Attribute public Wuerfel wuerfelA, wuerfelB, wuerfelC; public Konto konto; public Spielzahl spielzahl; // Ende Attribute public Spiel() wuerfelA = new Wuerfel(); wuerfelB = new Wuerfel(); wuerfelC = new Wuerfel(); konto = new Konto(100); spielzahl = new Spielzahl(); } ... // Anfang Methoden public void einsatzZahlen() { konto.abheben(1); } Spiel.java

52 Test des Datenmodells public class TestCuckALuck {
public static void main(String[] args) { // Erzeugung der Datenmodell-Objekte Spiel spiel = new Spiel(); // Durchführung eines Spiels spiel.einsatzZahlen(); spiel.spielzahlSetzen(5); spiel.wuerfelWerfen(); spiel.gewinnAuszahlen(); // Ausgabe der Spieldaten System.out.println("Würfel A: " + Integer.toString(spiel.wuerfelA.getAugen())); System.out.println("Würfel B: " + Integer.toString(spiel.wuerfelB.getAugen())); System.out.println("Würfel C: " + Integer.toString(spiel.wuerfelC.getAugen())); System.out.println("Konto: " + Integer.toString(spiel.konto.getStand())); } Erzeugung der Objekte Objekte in Aktion TestChuckALuck.java

53 Benutzeroberfläche zum Datenmodell
import java.awt.*; import java.awt.event.*; public class GUI extends Frame { // Anfang Attribute private Label labelUeberschrift = new Label(); private Panel panelKonto = new Panel(null); private Label labelUeberschriftKonto = new Label(); private Button buttonEinsatz = new Button(); private Label labelKonto = new Label(); private Panel panelZahl = new Panel(null); private CheckboxGroup checkboxGroup1 = new CheckboxGroup(); private Panel panelWuerfel = new Panel(null); private Label labelUeberschriftWuerfel = new Label(); private Button buttonWuerfel = new Button(); private Label labelWuerfelA = new Label(); private Label labelWuerfelB = new Label(); private Label labelWuerfelC = new Label(); private Spiel spiel = new Spiel(); // Ende Attribute Erzeugung der GUI-Objekte Erzeugung der Datenmodell-Objekte GUI.java

54 Benutzeroberfläche zum Datenmodell
// Anfang Methoden public String getSelectedRadioButton(CheckboxGroup cg) { return cg.getSelectedCheckbox().getLabel(); } public void buttonGewinnAuszahlen_ActionPerformed(ActionEvent evt) { int gewaehltezahl = Integer.parseInt(this.getSelectedRadioButton(this.checkboxGroup1)); spiel.spielzahlSetzen(gewaehltezahl); spiel.gewinnAuszahlen(); labelKonto.setText(Integer.toString(spiel.konto.getStand())); // Ende Methoden public static void main(String[] args) { new GUI("GUI"); Datenmodell-Objekt in Aktion Erzeugung des GUI-Verwaltungsobjekts GUI.java

55 Teil 7 Python - Bank

56 Beispiel 3: Bank Ziel ist es, ein einfaches System zur Verwaltung von Bankkonten zu entwickeln.

57 Datenmodell Das Datenmodell ist komplexer und besteht aus Objekten, die in Beziehung stehen. S Konto-Nr Blatt 342 Miniwelt Datenmodell

58 Implementierung des Datenmodells
class Konto(object): def __init__(self, nummer): self.nr = nummer self.stand = 0.0 def einzahlen(self, betrag): self.stand = self.stand + betrag def auszahlen(self, betrag): self.stand = self.stand - betrag def getNr(self): return self.nr def getStand(self): return self.stand ... ... class Bank(object): def __init__(self): self.maxKontoNr = -1 self.konten = [] def kontoErzeugen(self, nummer): self.maxKontoNr = self.maxKontoNr + 1 konto = Konto(self.maxKontoNr) self.konten = self.konten + [konto] def getKonto(self, nummer): return self.konten[nummer] datenmodell_bank.py datenmodell_bank.py

59 Test des Datenmodells from datenmodell_bank import * bank = Bank()
# Konten erzeugen for i in range(10): bank.kontoErzeugen(i) # Einzahlungen und Auszahlungen bank.getKonto(4).einzahlen(100.0) bank.getKonto(4).auszahlen(40.0) bank.getKonto(7).einzahlen(40.0) # Ausgabe von Daten print('Konto mit Nummer' + str(i) + ': ' + str(bank.getKonto(i).getStand())) Erzeugung der Objekte Objekte in Aktion ProjectBank.dpr

60 Benutzeroberfläche zum Datenmodell
from tkinter import * class GUIBank(): def __init__(self, bank): # Referenzattribute zum Datenmodell self.bank = bank # Erzeugung des Fensters self.fenster = Tk() self.fenster.title("Bank") self.fenster.geometry('240x165') # Rahmen PIN self.rahmenKonto = Frame(master=self.fenster, background="#BDE2F3") self.rahmenKonto.place(x=10, y=40, width=220, height=85) # Label mit Aufschrift Konto self.labelKonto = Label(master=self.rahmenKonto, background="gray", text="Konto") self.labelKonto.place(x=0, y=0, width=220, height=20) ... Datenmodell-Objekte GUI-Objekte Ereignisverarbeitung gui_chuckaluck.py

61 Benutzeroberfläche zum Datenmodell
Datenmodell-Objekte gui_chuckaluck.py ... def Button_Anzeigen_Click(self): kontonummer = int(self.entryNummer.get()) self.labelStand.config(text=float(self.bank.getKonto(kontonummer).getStand())) def Button_Einzahlen_Click(self): betrag = float(self.entryBetrag.get()) self.bank.getKonto(kontonummer).einzahlen(betrag) self.entryBetrag.delete(0, END) def Button_Auszahlen_Click(self): self.bank.getKonto(kontonummer).auszahlen(betrag) self.entryBetrag.delete(0, END) GUI-Objekte Ereignisverarbeitung

62 Benutzeroberfläche zum Datenmodell
# # Datenmodell from datenmodell_bank import * bank = Bank() # Konten erzeugen for i in range(10): bank.kontoErzeugen(i) # GUI-Objekt from gui_bank import * guibank = GUIBank(bank) guibank.fenster.mainloop() test_gui_bank.py

63 Teil 5 Delphi - Bank

64 Beispiel 3: Bank Ziel ist es, ein einfaches System zur Verwaltung von Bankkonten zu entwickeln.

65 Datenmodell Das Datenmodell ist komplexer und besteht aus Objekten, die in Beziehung stehen. S Konto-Nr Blatt 342 Miniwelt Datenmodell

66 Implementierung des Datenmodells
unit uKonto; interface type TKonto = class private nr: integer; stand: real; public constructor create(nummer: integer); procedure einzahlen(betrag: real); procedure auszahlen(betrag: real); function getStand: real; function getNr: integer; end; implementation constructor TKonto.create(nummer: integer); begin nr := nummer; end; ... ... procedure TKonto.einzahlen(betrag: real); begin stand := stand + betrag; end; procedure TKonto.auszahlen(betrag: real); stand := stand - betrag; function TKonto.getStand: real; result := stand; function TKonto.getNr: integer; result := nr; end. uKonto.pas

67 Implementierung des Datenmodells
unit uBank; interface uses uKonto, classes; {TList} type TBank = class private maxKontoNr: integer; konten: TList; public constructor create; procedure kontoErzeugen; function getKonto(nummer: integer): TKonto; end; implementation ... ... constructor TBank.create; begin maxKontoNr := -1; konten := TList.create; end; procedure TBank.kontoErzeugen; var konto: TKonto; maxKontoNr := maxKontoNr + 1; konto := TKonto.create(maxKontoNr); konten.insert(maxKontoNr, konto); function TBank.getKonto(nummer: integer): TKonto; result := konten[nummer]; end. uBank.pas

68 Test des Datenmodells program ProjectBank; {$APPTYPE CONSOLE} uses
sysutils, uBank in 'uBank.pas'; var bank: TBank; i: integer; begin // Erzeugung der Datenmodell-Objekte bank := TBank.create; for i := 0 to 9 do bank.kontoErzeugen; // Einzahlungen und Auszahlungen bank.getKonto(4).einzahlen(100.0); bank.getKonto(4).auszahlen(40.0); bank.getKonto(7).einzahlen(40.0); // Ausgabe von Daten writeln('Konto mit Nummer' + IntToStr(i) + ': ' + FloatToStr(bank.getKonto(i).getStand)); readln; end. Erzeugung der Objekte Objekte in Aktion ProjectBank.dpr

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

70 Benutzeroberfläche zum Datenmodell
... procedure TGUI.FormCreate(Sender: TObject); var i: integer; begin bank := TBank.create; for i := 0 to 9 do bank.kontoErzeugen; end; procedure TGUI.BEinzahlenClick(Sender: TObject); betrag: real; kontonummer: integer; kontonummer := StrToInt(ENummer.text); betrag := StrToFloat(EBetrag.Text); bank.getKonto(kontonummer).einzahlen(betrag); LStand.Caption := FloatToStr(bank.getKonto(kontonummer).getStand); EBetrag.Text := ''; end; ... uGUI.pas

71 Benutzeroberfläche zum Datenmodell
... procedure TGUI.BAuszahlenClick(Sender: TObject); var betrag: real; kontonummer: integer; begin kontonummer := StrToInt(ENummer.text); betrag := StrToFloat(EBetrag.Text); bank.getKonto(kontonummer).auszahlen(betrag); LStand.Caption := FloatToStr(bank.getKonto(kontonummer).getStand); EBetrag.Text := ''; end; procedure TGUI.BKontoAnzeigenClick(Sender: TObject); end; ... uGUI.pas

72 Teil 6 Java - Bank

73 Beispiel 3: Bank Ziel ist es, ein einfaches System zur Verwaltung von Bankkonten zu entwickeln.

74 Datenmodell Das Datenmodell ist komplexer und besteht aus Objekten, die in Beziehung stehen. S Konto-Nr Blatt 342 Miniwelt Datenmodell

75 Implementierung des Datenmodells
public class Konto { // Anfang Attribute private int nr; private float stand; // Ende Attribute public Konto(int nummer) nr = nummer; } // Anfang Methoden public void einzahlen(float betrag) stand = stand + betrag; ... ... public void auszahlen(float betrag) { stand = stand - betrag; } public int getNr() return nr; public float getStand() return stand; // Ende Methoden Alternativ: double stand Konto.java

76 Implementierung des Datenmodells
import java.util.ArrayList; public class Bank { // Anfang Attribute private int maxKontoNr; private ArrayList konten; // Ende Attribute public Bank() maxKontoNr = -1; konten = new ArrayList(); } ... ... // Anfang Methoden public void kontoErzeugen() { maxKontoNr = maxKontoNr + 1; Konto konto = new Konto(maxKontoNr); konten.add(konto); } public Konto getKonto(int nummer) return (Konto) konten.get(nummer); // Ende Methoden Bank.java

77 Test des Datenmodells public class TestBank {
public static void main(String[] args) { // Erzeugung der Objekte Bank bank = new Bank(); for (int i = 0; i < 10; i = i + 1) { bank.kontoErzeugen(); }; // Einzahlungen und Auszahlungen bank.getKonto(4).einzahlen(100.0f); bank.getKonto(4).auszahlen(40.0f); bank.getKonto(7).einzahlen(40.0f); // Ausgabe der Daten System.out.println("Konto mit Numer" + Integer.toString(i) + "i: " + Float.toString(bank.getKonto(i).getStand())); } Erzeugung der Objekte Objekte in Aktion TestBank.java

78 Benutzeroberfläche zum Datenmodell
import java.awt.*; import java.awt.event.*; public class GUI extends Frame { // Anfang Attribute private Panel pKonto = new Panel(null); private Label lNummerText = new Label(); private TextField tfNummer = new TextField(); private Label lStandText = new Label(); private Label lStand = new Label(); private Label lKonto = new Label(); private Button bKontoAnzeigen = new Button(); private Button bKontenErzeugen = new Button(); private Button bEinzahlen = new Button(); private Button bAuszahlen = new Button(); private TextField tfBetrag = new TextField(); private Bank bank = new Bank(); // Ende Attribute Erzeugung der GUI-Objekte Erzeugung der Datenmodell-Objekte GUI.java

79 Benutzeroberfläche zum Datenmodell
public void bKontenErzeugen_ActionPerformed(ActionEvent evt) { for (int i = 0; i < 10; i = i + 1) {bank.kontoErzeugen();}; } public void bKontoAnzeigen_ActionPerformed(ActionEvent evt) { int kontonummer = Integer.parseInt(tfNummer.getText()); lStand.setText(Float.toString(bank.getKonto(kontonummer).getStand())); public void bEinzahlen_ActionPerformed(ActionEvent evt) { float betrag = Float.parseFloat(tfBetrag.getText()); bank.getKonto(kontonummer).einzahlen(betrag); tfBetrag.setText(""); public static void main(String[] args) { new GUI("GUI"); GUI.java


Herunterladen ppt "Implementierung objektorientierter Modelle"

Ähnliche Präsentationen


Google-Anzeigen