Title: Implementierung objektorientierter Modelle
1Implementierung objektorientierter Modelle
2mit Python, Delphi, Java
3Teil 1
Python - Würfel
4Beispiel 1 Würfel
Ziel ist es, ein einfaches System zur Simulation
eines Würfels zu entwickeln.
5Datenmodell
Das Datenmodell ist hier sehr einfach und besteht
nur aus einem Objekt einer Klasse Wuerfel.
Klasse
Objekt
Miniwelt
Datenmodell
6Implementierung 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
7Test 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
8Benutzeroberflä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(masterself.fenster, text"1",
background"FBD975") self.labelWuerfel.pl
ace(x45, y40, width30, height30)
Button zum Auswerten self.buttonWuerfel
Button(masterself.fenster, text"Würfel werfen",
\
commandself.Button_Wuerfel_Click)
self.buttonWuerfel.place(x10, y80, width100,
height20) def Button_Wuerfel_Click(self)
Verarbeitung der Daten
self.wuerfel.werfen() Anzeige der
Daten self.labelWuerfel.config(textstr(se
lf.wuerfel.getAugen()))
Datenmodell-Objekte
GUI-Objekte
Ereignisverarbeitung
guiwuerfel.py
9Benutzeroberfläche zum Datenmodell
Datenmodell from wuerfel import wuerfel
Wuerfel() GUI from guiwuerfel import
guiwuerfel GUIWuerfel(wuerfel) guiwuerfel.fens
ter.mainloop()
Datenmodell-Objekte
GUI-Verwaltungsobjekt
test_guiwuerfel.py
10Teil 2
Delphi - Würfel
11Beispiel 1 Würfel
Ziel ist es, ein einfaches System zur Simulation
eines Würfels zu entwickeln.
12Datenmodell
Das Datenmodell ist hier sehr einfach und besteht
nur aus einem Objekt einer Klasse Wuerfel.
Klasse
Objekt
Miniwelt
Datenmodell
13Implementierung des Datenmodells
Vorbereitung Neuer Ordner (z.B.
"WuerfelOhneGUI") Datei -gt Neu -gt Unit Unit im
neuen Ordner abspeichern (z.B. "uWuerfel.pas")
14Implementierung 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 Implementie
rungsteil Implementierung der Methoden
uWuerfel.pas
15Test des Datenmodells
Vorbereitung Datei -gt Neu -gt Konsolen-Anwendung
Projekt im bereits bestehenden ("WuerfelOhneGUI")
abspeichern (z.B. "ProjectWuerfel.dpr") Projekt
-gt Dem Projekt hinzufügen -gt "uWuerfel.pas"
16Test 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
17Benutzeroberfläche zum Datenmodell
Vorbereitung Neuer Ordner (z.B.
"WuerfelMitGUI") Datei -gt Neu -gt
Anwendung Projekt im neuen Ordner
("WuerfelMitGUI") abspeichern (z.B.
"ProjectWuerfel.dpr") Unit "Unit1.pas" umbenennen
(z.B. "uGUI.pas") Projekt -gt Dem Projekt
hinzufügen -gt "uWuerfel.pas"
18Benutzeroberflä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
19Benutzeroberflä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
20Benutzeroberflä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
21Teil 3
Java - Würfel
22Beispiel 1 Würfel
Ziel ist es, ein einfaches System zur Simulation
eines Würfels zu entwickeln.
23Datenmodell
Das Datenmodell ist hier sehr einfach und besteht
nur aus einem Objekt einer Klasse Wuerfel.
Klasse
Objekt
Miniwelt
Datenmodell
24Implementierung des Datenmodells
Vorbereitung Neuer Ordner (z.B.
"WuerfelOhneGUI") Datei -gt Neu -gt Java Datei im
neuen Ordner abspeichern "Wuerfel.java"
25Implementierung 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. BeachteIn einer Datei kann
daher auch nur eine Klasse implementiert werden.
26Test des Datenmodells
Vorbereitung Datei -gt Neu -gt Console Datei im
bereits bestehenden ("WuerfelOhneGUI")
abspeichern (z.B. "TestWuerfel.java")
27Test 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 lt
10 i i 1) wuerfel.werfen()
System.out.println(wuerfel.getAugen())
// Ende Methoden
Erzeugung der Objekte
Objekte in Aktion
Datenmodell
TestWuerfel.java
28Benutzeroberfläche zum Datenmodell
Vorbereitung Neuer Ordner (z.B.
"WuerfelMitGUI") Datei -gt Neu -gt Frame Datei im
neuen Ordner ("WuerfelMitGUI") abspeichern (z.B.
GUI.java")
29Benutzeroberfläche zum Datenmodell
import java.awt. import java.awt.event. publi
c 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
30Benutzeroberfläche zum Datenmodell
// Anfang Methoden public void
buttonWuerfel_ActionPerformed(ActionEvent evt)
// Verarbeitung der Daten
wuerfel.werfen() // Anzeige der Daten
labelWuerfel.setText(Integer.toString(wuerfel.getA
ugen())) // Ende Methoden public
static void main(String args) new
GUI("GUI")
Datenmodell-Objekt in Aktion
Erzeugung des GUI-Verwaltungsobjekts
GUI.java
31Benutzeroberflä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
32Teil 4
Python - chuck a luck
33Beispiel 2 chuck a luck
Ziel ist es, ein System zur Simulation des Spiels
"chuck a luck" zu entwickeln.
34Datenmodell
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
6
3
Miniwelt
Datenmodell
35Implementierung 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
36Test des Datenmodells
-------------------------------------------------
---------- Datenmodell ------------------------
----------------------------------- from
model_chuckaluck import spiel
Spiel() ----------------------------------------
------------------- Test ----------------------
-------------------------------------
Durchführung eines Spiels spiel.einsatzZahlen() sp
iel.spielzahlSetzen(5) spiel.wuerfelWerfen() spiel
.gewinnAuszahlen() Ausgabe der
Spiel print("Würfel A", spiel.wuerfelA.augen) pri
nt("Würfel B", spiel.wuerfelB.augen) print("Würfe
l C", spiel.wuerfelC.augen) print("Konto",
spiel.konto.stand)
Erzeugung der Datenmodell-Objekte
Datenmodell
Objekte in Aktion
test_model_chuckaluck.py
37Benutzeroberflä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.einsatzZ
ahlen() Anzeige der Daten
self.labelKonto.config(textstr(self.spiel.konto.s
tand)) ...
Datenmodell-Objekte
GUI-Objekte
Ereignisverarbeitung
gui_chuckaluck.py
38Benutzeroberfläche zum Datenmodell
-------------------------------------------------
---------- Datenmodell ------------------------
----------------------------------- from
model_chuckaluck import spiel
Spiel() ----------------------------------------
------------------- GUI-Objekt ----------------
------------------------------------------- from
gui_chuckaluck import guichuckaluck
GUIChuckALuck(spiel) guichuckaluck.tkFenster.mainl
oop()
test_gui_chuckaluck.py
39Teil 5
Delphi - chuck a luck
40Beispiel 2 chuck a luck
Ziel ist es, ein einfaches System zur Simulation
eines Würfels zu entwickeln.
41Datenmodell
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
6
3
Miniwelt
Datenmodell
42Implementierung 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 constru
ctor 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
43Implementierung 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
44Test 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
45Benutzeroberflä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
46Benutzeroberflä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
47Teil 6
Java - chuck a luck
48Beispiel 2 chuck a luck
Ziel ist es, ein einfaches System zur Simulation
eines Würfels zu entwickeln.
49Datenmodell
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
6
3
Miniwelt
Datenmodell
50Implementierung 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
51Implementierung 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
52Test 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(sp
iel.konto.getStand()))
Erzeugung der Objekte
Objekte in Aktion
TestChuckALuck.java
53Benutzeroberfläche zum Datenmodell
import java.awt. import java.awt.event. publi
c class GUI extends Frame 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
54Benutzeroberflä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(gewaeh
ltezahl) spiel.gewinnAuszahlen()
labelKonto.setText(Integer.toString(spiel.konto.ge
tStand())) // Ende Methoden
public static void main(String args) new
GUI("GUI")
Datenmodell-Objekt in Aktion
Erzeugung des GUI-Verwaltungsobjekts
GUI.java
55Teil 7
Python - Bank
56Beispiel 3 Bank
Ziel ist es, ein einfaches System zur Verwaltung
von Bankkonten zu entwickeln.
57Datenmodell
Das Datenmodell ist komplexer und besteht aus
Objekten, die in Beziehung stehen.
Miniwelt
Datenmodell
58Implementierung 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.kontennummer
datenmodell_bank.py
datenmodell_bank.py
59Test 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) ban
k.getKonto(4).auszahlen(40.0) bank.getKonto(7).ein
zahlen(40.0) Ausgabe von Daten for i in
range(10) print('Konto mit Nummer' str(i)
' ' str(bank.getKonto(i).getStand()))
Erzeugung der Objekte
Objekte in Aktion
ProjectBank.dpr
60Benutzeroberflä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(masterself.f
enster, background"BDE2F3")
self.rahmenKonto.place(x10, y40, width220,
height85) Label mit Aufschrift Konto
self.labelKonto Label(masterself.rahmenKo
nto, background"gray", text"Konto")
self.labelKonto.place(x0, y0, width220,
height20) ...
Datenmodell-Objekte
GUI-Objekte
Ereignisverarbeitung
gui_chuckaluck.py
61Benutzeroberfläche zum Datenmodell
Datenmodell-Objekte
gui_chuckaluck.py
... def
Button_Anzeigen_Click(self) kontonummer
int(self.entryNummer.get())
self.labelStand.config(textfloat(self.bank.getKon
to(kontonummer).getStand())) def
Button_Einzahlen_Click(self) kontonummer
int(self.entryNummer.get()) betrag
float(self.entryBetrag.get())
self.bank.getKonto(kontonummer).einzahlen(betrag)
self.labelStand.config(textfloat(self.ban
k.getKonto(kontonummer).getStand()))
self.entryBetrag.delete(0, END) def
Button_Auszahlen_Click(self) kontonummer
int(self.entryNummer.get()) betrag
float(self.entryBetrag.get())
self.bank.getKonto(kontonummer).auszahlen(betrag)
self.labelStand.config(textfloat(self.ban
k.getKonto(kontonummer).getStand()))
self.entryBetrag.delete(0, END) ...
GUI-Objekte
Ereignisverarbeitung
62Benutzeroberflä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
63Teil 5
Delphi - Bank
64Beispiel 3 Bank
Ziel ist es, ein einfaches System zur Verwaltung
von Bankkonten zu entwickeln.
65Datenmodell
Das Datenmodell ist komplexer und besteht aus
Objekten, die in Beziehung stehen.
Miniwelt
Datenmodell
66Implementierung 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) begin stand stand -
betrag end function TKonto.getStand
real begin result stand end function
TKonto.getNr integer begin result
nr end end.
uKonto.pas
67Implementierung 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 begin
maxKontoNr maxKontoNr 1 konto
TKonto.create(maxKontoNr) konten.insert(maxKont
oNr, konto) end function TBank.getKonto(nummer
integer) TKonto begin result
kontennummer end end.
uBank.pas
68Test 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 for i 0 to 9 do writeln('Konto
mit Nummer' IntToStr(i) ' '
FloatToStr(bank.getKonto(i).getStand))
readln end.
Erzeugung der Objekte
Objekte in Aktion
ProjectBank.dpr
69Benutzeroberflä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
70Benutzeroberflä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) var
betrag real kontonummer integer begin
kontonummer StrToInt(ENummer.text) betrag
StrToFloat(EBetrag.Text) bank.getKonto(konto
nummer).einzahlen(betrag) LStand.Caption
FloatToStr(bank.getKonto(kontonummer).getStand)
EBetrag.Text '' end ...
uGUI.pas
71Benutzeroberfläche zum Datenmodell
... procedure TGUI.BAuszahlenClick(Sender
TObject) var betrag real kontonummer
integer begin kontonummer
StrToInt(ENummer.text) betrag
StrToFloat(EBetrag.Text) bank.getKonto(kontonum
mer).auszahlen(betrag) LStand.Caption
FloatToStr(bank.getKonto(kontonummer).getStand)
EBetrag.Text '' end procedure
TGUI.BKontoAnzeigenClick(Sender TObject) var
kontonummer integer begin kontonummer
StrToInt(ENummer.text) LStand.Caption
FloatToStr(bank.getKonto(kontonummer).getStand) e
nd ...
uGUI.pas
72Teil 6
Java - Bank
73Beispiel 3 Bank
Ziel ist es, ein einfaches System zur Verwaltung
von Bankkonten zu entwickeln.
74Datenmodell
Das Datenmodell ist komplexer und besteht aus
Objekten, die in Beziehung stehen.
Miniwelt
Datenmodell
75Implementierung 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
76Implementierung 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
77Test des Datenmodells
public class TestBank public static void
main(String args) // Erzeugung der
Objekte Bank bank new Bank() for (int
i 0 i lt 10 i i 1)
bank.kontoErzeugen() // Einzahlungen
und Auszahlungen bank.getKonto(4).einzahlen(10
0.0f) bank.getKonto(4).auszahlen(40.0f)
bank.getKonto(7).einzahlen(40.0f) // Ausgabe
der Daten for (int i 0 i lt 10 i i 1)
System.out.println("Konto mit Numer"
Integer.toString(i) "i "
Float.toString(bank.getKonto(i).getSt
and()))
Erzeugung der Objekte
Objekte in Aktion
TestBank.java
78Benutzeroberfläche zum Datenmodell
import java.awt. import java.awt.event. publi
c 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
79Benutzeroberfläche zum Datenmodell
public void bKontenErzeugen_ActionPerforme
d(ActionEvent evt) for (int i 0 i lt 10
i i 1) bank.kontoErzeugen() public
void bKontoAnzeigen_ActionPerformed(ActionEvent
evt) int kontonummer Integer.parseInt(tfNu
mmer.getText()) lStand.setText(Float.toString
(bank.getKonto(kontonummer).getStand()))
public void bEinzahlen_ActionPerformed(ActionEvent
evt) int kontonummer Integer.parseInt(tfN
ummer.getText()) float betrag
Float.parseFloat(tfBetrag.getText())
bank.getKonto(kontonummer).einzahlen(betrag)
lStand.setText(Float.toString(bank.getKonto(konton
ummer).getStand())) tfBetrag.setText("")
public static void main(String args)
new GUI("GUI")
GUI.java