Implementierung objektorientierter Modelle Klaus Becker 2009 2 mit
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, einfaches System zur Simulation eines Würfels zu entwickeln.
Datenmodell 5 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 wuerfel. py Konstruktor Attribut def werfen(self): self. augen = randint(1, 6) Methode def get. Augen(self): return self. augen Methode
Test des Datenmodells 7 # Datenmodell from wuerfel import * wuerfel = Wuerfel() # Test for i in range(10): wuerfel. werfen() print(wuerfel. get. Augen()) Erzeugung der 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-Objekte self. wuerfel = wuerfel # Erzeugung des Fensters self. fenster = Tk() GUI-Objekte self. fenster. title("Würfel") self. fenster. geometry('120 x 110') # Anzeige des Würfels self. label. Wuerfel = Label(master=self. fenster, text="1", background="#FBD 975") self. label. Wuerfel. place(x=45, y=40, width=30, height=30) # Button zum Auswerten self. button. Wuerfel = Button(master=self. fenster, text="Würfel werfen", command=self. Button_Wuerfel_Click) self. button. Wuerfel. place(x=10, y=80, width=100, height=20) def Button_Wuerfel_Click(self): Ereignisverarbeitung # Verarbeitung der Daten self. wuerfel. werfen() # Anzeige der Daten self. label. Wuerfel. config(text=str(self. wuerfel. get. Augen())) 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, einfaches System zur Simulation eines Würfels zu entwickeln.
Datenmodell 12 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. "Wuerfel. Ohne. GUI") Datei -> Neu -> Unit im neuen Ordner abspeichern (z. B. "u. Wuerfel. pas")
14 Implementierung des Datenmodells unit u. Wuerfel; . . . interface implementation type TWuerfel = class private Deklaration augen: integer; der Attribute public und Methoden constructor create; procedure werfen; function get. Augen: integer; end; . . . constructor TWuerfel. create; begin augen : = 1; randomize; end; Klassen werden als Module (Programmeinheiten) implementiert, die in Delphi in zwei Teilen beschrieben werden: function TWuerfel. get. Augen: integer; begin result : = augen; end; Schnittstellenvereinbarung: Deklaration der Attribute und Methoden Implementierungsteil: Implementierung der Methoden Implementierung der Attribute und Methoden procedure TWuerfel. werfen; begin augen : = random(6)+1; end; u. Wuerfel. pas
15 Test des Datenmodells Vorbereitung: Datei -> Neu -> Konsolen-Anwendung Projekt im bereits bestehenden ("Wuerfel. Ohne. GUI") abspeichern (z. B. "Project. Wuerfel. dpr") Projekt -> Dem Projekt hinzufügen -> "u. Wuerfel. pas"
Test des Datenmodells 16 program Project. Wuerfel; {$APPTYPE CONSOLE} uses sysutils, u. Wuerfel in 'u. Wuerfel. pas'; var wuerfel: Twuerfel; i: integer; begin // Datenmodell wuerfel : = TWuerfel. create; // Test for i : = 0 to 9 do begin wuerfel. werfen; writeln(wuerfel. get. Augen); end; readln; end. Project. Wuerfel. dpr Erzeugung der Objekte in Aktion Datenmodell
17 Benutzeroberfläche zum Datenmodell Vorbereitung: Neuer Ordner (z. B. "Wuerfel. Mit. GUI") Datei -> Neu -> Anwendung Projekt im neuen Ordner ("Wuerfel. Mit. GUI") abspeichern (z. B. "Project. Wuerfel. dpr") Unit "Unit 1. pas" umbenennen (z. B. "u. GUI. pas") Projekt -> Dem Projekt hinzufügen -> "u. Wuerfel. pas"
18 Benutzeroberfläche zum Datenmodell unit u. GUI; interface uses Windows, Messages, Sys. Utils, Classes, Graphics, Controls, Forms, Dialogs, Std. Ctrls, u. Wuerfel; Einbindung der Datenmodell-Unit type TFGUIWuerfel = class(TForm) label. Wuerfel: TLabel; button. Wuerfel: TButton; procedure button. Wuerfel. Click(Sender: TObject); procedure Form. Create(Sender: TObject); private { Private-Deklarationen } Deklaration des Referenzattributs wuerfel: TWuerfel; public { Public-Deklarationen } end; var FGUIWuerfel: TFGUIWuerfel; u. GUI. pas . . .
19 Benutzeroberfläche zum Datenmodell . . . implementation {$R *. DFM} procedure TFGUIWuerfel. button. Wuerfel. Click(Sender: TObject); begin wuerfel. werfen; label. Wuerfel. Caption : = Int. To. Str(wuerfel. get. Augen); end; Implementierung der Ereignisverarbeitung procedure TFGUIWuerfel. Form. Create(Sender: TObject); begin wuerfel : = TWuerfel. create; Erzeugung der end; Datenmodell-Objekte end. u. GUI. pas
20 Benutzeroberfläche zum Datenmodell . . . type TFGUIWuerfel = class(TForm) label. Wuerfel: TLabel; button. Wuerfel: TButton; procedure button. Wuerfel. Click(Sender: TObject); procedure Form. Create(Sender: TObject); private { Private-Deklarationen } wuerfel: TWuerfel; public { Public-Deklarationen } end; . . . procedure TFGUIWuerfel. Form. Create(Sender: TObject); begin wuerfel : = TWuerfel. create; end; . . . u. GUI. pas
21 Teil 3 Java - Würfel
22 Beispiel 1: Würfel Ziel ist es, einfaches System zur Simulation eines Würfels zu entwickeln.
Datenmodell 23 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. "Wuerfel. Ohne. GUI") 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 Wuerfel. java Attribute Konstruktor Methoden public void werfen() { augen = (int)(Math. random() * 6 + 1); } } public int get. Augen() { return augen; } // Ende 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 ("Wuerfel. Ohne. GUI") abspeichern (z. B. "Test. Wuerfel. java")
Test des Datenmodells 27 public class Test. Wuerfel { // Anfang Attribute // Ende Attribute } // Anfang Methoden public static void main(String[] args) { Erzeugung // Datenmodell der Objekte Wuerfel wuerfel = new Wuerfel(); // Test Objekte in for (int i = 0; i < 10; i = i + 1) { Aktion wuerfel. werfen(); System. out. println(wuerfel. get. Augen()); }; } // Ende Methoden Test. Wuerfel. java Datenmodell
28 Benutzeroberfläche zum Datenmodell Vorbereitung: Neuer Ordner (z. B. "Wuerfel. Mit. GUI") Datei -> Neu -> Frame Datei im neuen Ordner ("Wuerfel. Mit. GUI") abspeichern (z. B. „GUI. java")
29 Benutzeroberfläche zum Datenmodell import java. awt. *; import java. awt. event. *; Erzeugung der GUIObjekte public class GUI extends Frame { // Anfang Attribute private Label label. Wuerfel = new Label(); private Button button. Wuerfel = new Button(); private Wuerfel wuerfel = new Wuerfel(); // Ende Attribute Erzeugung der Datenmodell-Objekte public GUI(String title) { // Frame-Initialisierung super(title); add. Window. Listener(new Window. Adapter() { public void window. Closing(Window. Event evt) { System. exit(0); } }); int frame. Width = 186; Konfiguration der GUI-Objekte int frame. Height = 198; set. Size(frame. Width, frame. Height); Dimension d = Toolkit. get. Default. Toolkit(). get. Screen. Size(); int x = (d. width - get. Size(). width) / 2; int y = (d. height - get. Size(). height) / 2; GUI. java …
30 Benutzeroberfläche zum Datenmodell … // Anfang Methoden public void button. Wuerfel_Action. Performed(Action. Event evt) { // Verarbeitung der Datenmodell-Objekt in Aktion wuerfel. werfen(); // Anzeige der Daten label. Wuerfel. set. Text(Integer. to. String(wuerfel. get. Augen())); } // Ende Methoden } public static void main(String[] args) { new GUI("GUI"); Erzeugung des GUIVerwaltungsobjekts } GUI. java
31 Benutzeroberfläche zum Datenmodell . . . public class GUI extends Frame { // Anfang Attribute private Label label. Wuerfel = new Label(); private Button button. Wuerfel = 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.
Datenmodell 34 Das Datenmodell ist komplexer und besteht aus Objekten, die in Beziehung stehen. 1$ 1$ 1$ Einsatz zahlen Spielzahl setzen Würfel werfen Gewinn auszahlen Miniwelt 1 4 2 5 3 1$ 6 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. wuerfel. A = Wuerfel() self. wuerfel. B = Wuerfel() self. wuerfel. C = Wuerfel(). . . model_chuckaluck. py
36 Test des Datenmodells #-----------------------------# Datenmodell #-----------------------------Erzeugung der from model_chuckaluck import * Datenmodell-Objekte spiel = Spiel() #-----------------------------# Test #-----------------------------# Durchführung eines Spiels spiel. einsatz. Zahlen() spielzahl. Setzen(5) spiel. wuerfel. Werfen() Objekte in Aktion spiel. gewinn. Auszahlen() # Ausgabe der Spiel print("Würfel A: ", spiel. wuerfel. A. augen) print("Würfel B: ", spiel. wuerfel. B. augen) print("Würfel C: ", spiel. wuerfel. C. augen) print("Konto: ", spiel. konto. stand) Datenmodell test_model_chuckaluck. py
Benutzeroberfläche zum Datenmodell 37 from tkinter import * Datenmodellclass GUIChuck. ALuck(object): Objekte def __init__(self, spiel): # Referenzattribute zum Datenmodell self. spiel = spiel # Erzeugung des Fensters self. tk. Fenster = Tk() self. tk. Fenster. title("chuck a luck") self. tk. Fenster. geometry('350 x 145') # Rahmen Überschrift. . . GUI-Objekte def Button_Einsatz_Click(self): Ereignisverarbeitung # Verarbeitung der Daten self. spiel. einsatz. Zahlen() # Anzeige der Daten self. label. Konto. config(text=str(self. spiel. konto. stand)). . . gui_chuckaluck. py
38 Benutzeroberfläche zum Datenmodell #-----------------------------# Datenmodell #-----------------------------from model_chuckaluck import * spiel = Spiel() #-----------------------------# GUI-Objekt #-----------------------------from gui_chuckaluck import * guichuckaluck = GUIChuck. ALuck(spiel) guichuckaluck. tk. Fenster. mainloop() test_gui_chuckaluck. py
39 Teil 5 Delphi - chuck a luck
40 Beispiel 2: chuck a luck Ziel ist es, einfaches System zur Simulation eines Würfels zu entwickeln.
Datenmodell 41 Das Datenmodell ist komplexer und besteht aus Objekten, die in Beziehung stehen. 1$ 1$ 1$ Einsatz zahlen Spielzahl setzen Würfel werfen Gewinn auszahlen Miniwelt 1 4 2 5 3 1$ 6 Datenmodell
42 Implementierung des Datenmodells unit u. Konto; . . . interface procedure TKonto. einzahlen(betrag: integer); begin stand : = stand + betrag; end; type Deklaration TKonto = class der Attribute private und Methoden stand: integer; public constructor create(betrag: integer); procedure einzahlen(betrag: integer); procedure abheben(betrag: integer); function get. Stand: integer; end; implementation constructor TKonto. create(betrag: integer); begin stand : = betrag; end; . . . procedure TKonto. abheben(betrag: integer); begin stand : = stand - betrag; end; function TKonto. get. Stand: integer; begin result : = stand; end; Implementierung der Attribute und end. Methoden u. Konto. pas
43 Implementierung des Datenmodells unit u. Spiel; . . . interface implementation uses u. Wuerfel, u. Konto, u. Spielzahl; constructor TSpiel. create(); begin konto : = TKonto. create(100); wuerfel. A : = TWuerfel. create; wuerfel. B : = TWuerfel. create; wuerfel. C : = TWuerfel. create; spielzahl : = TSpielzahl. create; end; type Deklaration TSpiel = class der Attribute private und Methoden public spielzahl: TSpielzahl; konto: TKonto; wuerfel. A: TWuerfel; wuerfel. B: TWuerfel; wuerfel. C: TWuerfel; constructor create(); procedure einsatz. Zahlen; procedure spielzahl. Setzen(zahl: integer); procedure wuerfel. Werfen; procedure gewinn. Auszahlen; end; . . . Implementierung der Attribute und Methoden procedure TSpiel. einsatz. Zahlen(); begin konto. abheben(1); end; . . . u. Spiel. pas
44 Test des Datenmodells program Project. Chuck. ALuck; {$APPTYPE CONSOLE} uses sysutils, u. Spiel in 'u. Spiel. pas'; var spiel: TSpiel; begin Erzeugung der Objekte // Erzeugung der Datenmodell-Objekte spiel : = TSpiel. create; // Durchführung eines Spiels Objekte in Aktion spiel. einsatz. Zahlen; spielzahl. Setzen(5); spiel. wuerfel. Werfen; spiel. gewinn. Auszahlen; // Ausgabe der Spieldaten writeln('Wuerfel A: ', spiel. wuerfel. A. get. Augen); writeln('Wuerfel B: ', spiel. wuerfel. B. get. Augen); writeln('Wuerfel C: ', spiel. wuerfel. C. get. Augen); writeln('Konto: ', spiel. konto. get. Stand); readln; Project. Chuck. ALuck. dpr end.
45 Benutzeroberfläche zum Datenmodell unit u. GUI; interface uses Windows, Messages, Sys. Utils, Classes, Graphics, Controls, Forms, Dialogs, Std. Ctrls, Ext. Ctrls, u. Spiel; Einbindung type der TGUI = class(TForm) Datenmodell. PTitel: TPanel; Unit. . . private { Private-Deklarationen } spiel: TSpiel; public { Public-Deklarationen } end; Deklaration des Referenzattributs var GUI: TGUI; . . . u. GUI. pas
46 Benutzeroberfläche zum Datenmodell . . . implementation {$R *. DFM} Erzeugung der Datenmodell-Objekte procedure TGUI. Form. Create(Sender: TObject); begin spiel : = TSpiel. create; label. Konto. Caption : = Int. To. Str(spiel. konto. get. Stand) end; Implementierung der Ereignisverarbeitung procedure TGUI. Button. Einsatz. Click(Sender: TObject); begin spiel. einsatz. Zahlen; label. Konto. Caption : = Int. To. Str(spiel. konto. get. Stand); end; . . . end. u. GUI. pas
47 Teil 6 Java - chuck a luck
48 Beispiel 2: chuck a luck Ziel ist es, einfaches System zur Simulation eines Würfels zu entwickeln.
Datenmodell 49 Das Datenmodell ist komplexer und besteht aus Objekten, die in Beziehung stehen. 1$ 1$ 1$ Einsatz zahlen Spielzahl setzen Würfel werfen Gewinn auszahlen Miniwelt 1 4 2 5 3 1$ 6 Datenmodell
50 Implementierung des Datenmodells public class Konto { // Anfang Attribute private int stand = 0; // Ende Attribute . . . // Anfang Methoden public void einzahlen(int betrag) { stand = stand + betrag; } public Konto(int betrag) { stand = betrag; } public void abheben(int betrag) { stand = stand - betrag; } … public int get. Stand() { return stand; } } // Ende Methoden Konto. java
51 Implementierung des Datenmodells public class Spiel { // Anfang Attribute public Wuerfel wuerfel. A, wuerfel. B, wuerfel. C; public Konto konto; public Spielzahl spielzahl; // Ende Attribute public Spiel() { wuerfel. A = new Wuerfel(); wuerfel. B = new Wuerfel(); wuerfel. C = new Wuerfel(); konto = new Konto(100); spielzahl = new Spielzahl(); } … . . . // Anfang Methoden public void einsatz. Zahlen() { konto. abheben(1); }. . . Spiel. java
52 Test des Datenmodells public class Test. Cuck. ALuck { } public static void main(String[] args) { // Erzeugung der Datenmodell-Objekte Erzeugung Spiel spiel = new Spiel(); der Objekte // Durchführung eines Spiels spiel. einsatz. Zahlen(); Objekte in spielzahl. Setzen(5); Aktion spiel. wuerfel. Werfen(); spiel. gewinn. Auszahlen(); // Ausgabe der Spieldaten System. out. println("Würfel A: " + Integer. to. String(spiel. wuerfel. A. get. Augen())); System. out. println("Würfel B: " + Integer. to. String(spiel. wuerfel. B. get. Augen())); System. out. println("Würfel C: " + Integer. to. String(spiel. wuerfel. C. get. Augen())); System. out. println("Konto: " + Integer. to. String(spiel. konto. get. Stand())); } Test. Chuck. ALuck. java
53 Benutzeroberfläche zum Datenmodell import java. awt. *; import java. awt. event. *; public class GUI extends Frame { // Anfang Attribute private Label label. Ueberschrift = new Label(); Erzeugung der GUIprivate Panel panel. Konto = new Panel(null); Objekte private Label label. Ueberschrift. Konto = new Label(); private Button button. Einsatz = new Button(); private Label label. Konto = new Label(); private Panel panel. Zahl = new Panel(null); private Checkbox. Group checkbox. Group 1 = new Checkbox. Group(); … private Panel panel. Wuerfel = new Panel(null); private Label label. Ueberschrift. Wuerfel = new Label(); private Button button. Wuerfel = new Button(); private Label label. Wuerfel. A = new Label(); private Label label. Wuerfel. B = new Label(); private Label label. Wuerfel. C = new Label(); private Spiel spiel = new Spiel(); Erzeugung der // Ende Attribute GUI. java Datenmodell-Objekte …
54 Benutzeroberfläche zum Datenmodell … // Anfang Methoden public String get. Selected. Radio. Button(Checkbox. Group cg) { return cg. get. Selected. Checkbox(). get. Label(); } public void button. Gewinn. Auszahlen_Action. Performed(Action. Event evt) { int gewaehltezahl = Integer. parse. Int(this. get. Selected. Radio. Button(this. checkbox. Group 1)); spielzahl. Setzen(gewaehltezahl); Datenmodell-Objekt in Aktion spiel. gewinn. Auszahlen(); label. Konto. set. Text(Integer. to. String(spiel. konto. get. Stand())); } … // Ende Methoden public static void main(String[] args) { new GUI("GUI"); } Erzeugung des GUI} Verwaltungsobjekts GUI. java
55 Teil 7 Python - Bank
56 Beispiel 3: Bank Ziel ist es, 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. 234126 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 get. Nr(self): return self. nr def get. Stand(self): return self. stand . . . class Bank(object): def __init__(self): self. max. Konto. Nr = -1 self. konten = [] def konto. Erzeugen(self, nummer): self. max. Konto. Nr = self. max. Konto. Nr + 1 konto = Konto(self. max. Konto. Nr) self. konten = self. konten + [konto] def get. Konto(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. konto. Erzeugen(i) # Einzahlungen und Auszahlungen bank. get. Konto(4). einzahlen(100. 0) bank. get. Konto(4). auszahlen(40. 0) bank. get. Konto(7). einzahlen(40. 0) # Ausgabe von Daten Erzeugung der Objekte for i in range(10): print('Konto mit Nummer' + str(i) + ': ' + str(bank. get. Konto(i). get. Stand())) Objekte in Aktion Project. Bank. dpr
60 Benutzeroberfläche zum Datenmodell from tkinter import * Datenmodellclass GUIBank(): Objekte def __init__(self, bank): # Referenzattribute zum Datenmodell self. bank = bank # Erzeugung des Fensters self. fenster = Tk() self. fenster. title("Bank") GUI-Objekte self. fenster. geometry('240 x 165') # Rahmen PIN self. rahmen. Konto = Frame(master=self. fenster, background="#BDE 2 F 3") self. rahmen. Konto. place(x=10, y=40, width=220, height=85) # Label mit Aufschrift Konto Ereignisverarbeitung self. label. Konto = Label(master=self. rahmen. Konto, background="gray", text="Konto") self. label. Konto. place(x=0, y=0, width=220, height=20). . . gui_chuckaluck. py
Benutzeroberfläche zum Datenmodell 61 gui_chuckaluck. py Datenmodell. Objekte . . . def Button_Anzeigen_Click(self): kontonummer = int(self. entry. Nummer. get()) self. label. Stand. config(text=float(self. bank. get. Konto(kontonummer). get. Stand())) GUI-Objekte def Button_Einzahlen_Click(self): kontonummer = int(self. entry. Nummer. get()) betrag = float(self. entry. Betrag. get()) self. bank. get. Konto(kontonummer). einzahlen(betrag) self. label. Stand. config(text=float(self. bank. get. Konto(kontonummer). get. Stand())) Ereignisverarbeitung self. entry. Betrag. delete(0, END) def Button_Auszahlen_Click(self): kontonummer = int(self. entry. Nummer. get()) betrag = float(self. entry. Betrag. get()) self. bank. get. Konto(kontonummer). auszahlen(betrag) self. label. Stand. config(text=float(self. bank. get. Konto(kontonummer). get. Stand())) self. entry. Betrag. delete(0, END). . .
62 Benutzeroberfläche zum Datenmodell #-----------------------------# Datenmodell #-----------------------------from datenmodell_bank import * bank = Bank() # Konten erzeugen for i in range(10): bank. konto. Erzeugen(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, 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. 234126 Blatt 342 Miniwelt Datenmodell
66 Implementierung des Datenmodells unit u. Konto; interface . . . u. Konto. pas type TKonto = class private nr: integer; stand: real; public constructor create(nummer: integer); procedure einzahlen(betrag: real); procedure auszahlen(betrag: real); function get. Stand: real; function get. Nr: 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. get. Stand: real; begin result : = stand; end; function TKonto. get. Nr: integer; begin result : = nr; end.
Implementierung des Datenmodells 67 unit u. Bank; interface uses u. Konto, classes; {TList} type TBank = class private max. Konto. Nr: integer; konten: TList; public constructor create; procedure konto. Erzeugen; function get. Konto(nummer: integer): TKonto; end; implementation. . . u. Bank. pas . . . constructor TBank. create; begin max. Konto. Nr : = -1; konten : = TList. create; end; procedure TBank. konto. Erzeugen; var konto: TKonto; begin max. Konto. Nr : = max. Konto. Nr + 1; konto : = TKonto. create(max. Konto. Nr); konten. insert(max. Konto. Nr, konto); end; function TBank. get. Konto(nummer: integer): TKonto; begin result : = konten[nummer]; end.
68 Test des Datenmodells program Project. Bank; {$APPTYPE CONSOLE} uses sysutils, u. Bank in 'u. Bank. pas'; var bank: TBank; i: integer; begin Erzeugung der Objekte // Erzeugung der Datenmodell-Objekte bank : = TBank. create; for i : = 0 to 9 do Objekte in Aktion bank. konto. Erzeugen; // Einzahlungen und Auszahlungen bank. get. Konto(4). einzahlen(100. 0); bank. get. Konto(4). auszahlen(40. 0); bank. get. Konto(7). einzahlen(40. 0); // Ausgabe von Daten for i : = 0 to 9 do writeln('Konto mit Nummer' + Int. To. Str(i) + ': ' + Float. To. Str(bank. get. Konto(i). get. Stand)); readln; Project. Bank. dpr end.
69 Benutzeroberfläche zum Datenmodell unit u. GUI; interface uses Windows, Messages, Sys. Utils, Classes, Graphics, Controls, Forms, Dialogs, Std. Ctrls, Ext. Ctrls, u. Bank; Einbindung type der TGUI = class(TForm) Datenmodell. PKonto: TPanel; Unit. . . private { Private-Deklarationen } bank: TBank; public { Public-Deklarationen } end; Deklaration des Referenzattributs var GUI: TGUI; . . . u. GUI. pas
70 Benutzeroberfläche zum Datenmodell . . . procedure TGUI. Form. Create(Sender: TObject); var i: integer; begin bank : = TBank. create; for i : = 0 to 9 do bank. konto. Erzeugen; end; procedure TGUI. BEinzahlen. Click(Sender: TObject); var betrag: real; kontonummer: integer; begin kontonummer : = Str. To. Int(ENummer. text); betrag : = Str. To. Float(EBetrag. Text); bank. get. Konto(kontonummer). einzahlen(betrag); LStand. Caption : = Float. To. Str(bank. get. Konto(kontonummer). get. Stand); EBetrag. Text : = ''; end; . . . u. GUI. pas
71 Benutzeroberfläche zum Datenmodell . . . procedure TGUI. BAuszahlen. Click(Sender: TObject); var betrag: real; kontonummer: integer; begin kontonummer : = Str. To. Int(ENummer. text); betrag : = Str. To. Float(EBetrag. Text); bank. get. Konto(kontonummer). auszahlen(betrag); LStand. Caption : = Float. To. Str(bank. get. Konto(kontonummer). get. Stand); EBetrag. Text : = ''; end; procedure TGUI. BKonto. Anzeigen. Click(Sender: TObject); var kontonummer: integer; begin kontonummer : = Str. To. Int(ENummer. text); LStand. Caption : = Float. To. Str(bank. get. Konto(kontonummer). get. Stand); end; . . . u. GUI. pas
72 Teil 6 Java - Bank
73 Beispiel 3: Bank Ziel ist es, 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. 234126 Blatt 342 Miniwelt Datenmodell
75 Implementierung des Datenmodells public class Konto { // Anfang Attribute private int nr; private float stand; // Ende Attribute . . . Alternativ: double stand public void auszahlen(float betrag) { stand = stand - betrag; } public Konto(int nummer) { nr = nummer; } public int get. Nr() { return nr; } // Anfang Methoden public float get. Stand() { return stand; } // Ende Methoden public void einzahlen(float betrag) { stand = stand + betrag; }. . . } Konto. java
76 Implementierung des Datenmodells import java. util. Array. List; public class Bank { . . . // Anfang Methoden // Anfang Attribute private int max. Konto. Nr; private Array. List konten; // Ende Attribute public void konto. Erzeugen() { max. Konto. Nr = max. Konto. Nr + 1; Konto konto = new Konto(max. Konto. Nr); konten. add(konto); } public Bank() { max. Konto. Nr = -1; konten = new Array. List(); } public Konto get. Konto(int nummer) { return (Konto) konten. get(nummer); } // Ende Methoden . . . } Bank. java
77 Test des Datenmodells public class Test. Bank { } public static void main(String[] args) { // Erzeugung der Objekte Bank bank = new Bank(); Erzeugung der Objekte for (int i = 0; i < 10; i = i + 1) { bank. konto. Erzeugen(); }; // Einzahlungen und Auszahlungen Objekte in Aktion bank. get. Konto(4). einzahlen(100. 0 f); bank. get. Konto(4). auszahlen(40. 0 f); bank. get. Konto(7). einzahlen(40. 0 f); // Ausgabe der Daten for (int i = 0; i < 10; i = i + 1) { System. out. println("Konto mit Numer" + Integer. to. String(i) + "i: " + Float. to. String(bank. get. Konto(i). get. Stand())); } } Test. Bank. java
78 Benutzeroberfläche zum Datenmodell import java. awt. *; import java. awt. event. *; public class GUI extends Frame { // Anfang Attribute private Panel p. Konto = new Panel(null); private Label l. Nummer. Text = new Label(); private Text. Field tf. Nummer = new Text. Field(); private Label l. Stand. Text = new Label(); private Label l. Stand = new Label(); private Label l. Konto = new Label(); private Button b. Konto. Anzeigen = new Button(); private Button b. Konten. Erzeugen = new Button(); private Button b. Einzahlen = new Button(); private Button b. Auszahlen = new Button(); private Text. Field tf. Betrag = new Text. Field(); private Bank bank = new Bank(); // Ende Attribute … Erzeugung der Datenmodell-Objekte Erzeugung der GUIObjekte GUI. java
79 Benutzeroberfläche zum Datenmodell … public void b. Konten. Erzeugen_Action. Performed(Action. Event evt) { for (int i = 0; i < 10; i = i + 1) {bank. konto. Erzeugen(); }; } public void b. Konto. Anzeigen_Action. Performed(Action. Event evt) { int kontonummer = Integer. parse. Int(tf. Nummer. get. Text()); l. Stand. set. Text(Float. to. String(bank. get. Konto(kontonummer). get. Stand())); } public void b. Einzahlen_Action. Performed(Action. Event evt) { int kontonummer = Integer. parse. Int(tf. Nummer. get. Text()); float betrag = Float. parse. Float(tf. Betrag. get. Text()); bank. get. Konto(kontonummer). einzahlen(betrag); l. Stand. set. Text(Float. to. String(bank. get. Konto(kontonummer). get. Stand())); tf. Betrag. set. Text(""); } … } public static void main(String[] args) { new GUI("GUI"); } GUI. java
- Slides: 79