Implementierung objektorientierter Modelle

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Objektorientierte Programmierung
der Universität Oldenburg
Anzahl der ausgefüllten und eingesandten Fragebögen: 211
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Kritische Betrachtung
Telefonnummer.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
= = = = 47 = 47 = 48 = =
Java: Programmierung grafischer Oberflächen
Java: Objektorientierte Programmierung
Java: Programmierung grafischer Oberflächen
Ein Beispiel in Java.
Rechneraufbau & Rechnerstrukturen, Folie 2.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 2.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Differentielles Paar UIN rds gm UIN
Prof. Dr. Bernhard Wasmayr
Studienverlauf im Ausländerstudium
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
Prof. Dr. Bernhard Wasmayr VWL 2. Semester
AWA 2007 Natur und Umwelt Natürlich Leben
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
20:00.
Zusatzfolien zu B-Bäumen
Delphi II - OOP IFB Fortbildung
In der Schule.
Eine Einführung in die CD-ROM
Dokumentation der Umfrage
Grundkonzepte der objektorientierten Programmierung Teil 3
für Weihnachten oder als Tischdekoration für das ganze Jahr
Wir üben die Malsätzchen
Syntaxanalyse Bottom-Up und LR(0)
Grundkonzepte der objektorientierten Programmierung
Grundkonzepte der objektorientierten Programmierung
Grafische Benutzeroberflächen
Gui-Objekte und Datenmodellobjekte
Grundkonzepte der objektorientierten Programmierung Teil 2
PROCAM Score Alter (Jahre)
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Geometrische Aufgaben
Symmetrische Blockchiffren DES – der Data Encryption Standard
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Folie Beispiel für eine Einzelauswertung der Gemeindedaten (fiktive Daten)
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014 Referenzdatentypen
Unternehmensbewertung Thomas Hering ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List of Figures Tabellenübersicht.
Forschungsprojekt Statistik 2013 „Jugend zählt“ – Folie 1 Statistik 2013 „Jugend zählt“: Daten zur Arbeit mit Kindern und Jugendlichen.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Folie Einzelauswertung der Gemeindedaten
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Datum:17. Dezember 2014 Thema:IFRS Update zum Jahresende – die Neuerungen im Überblick Referent:Eberhard Grötzner, EMA ® Anlass:12. Arbeitskreis Internationale.
Sehen, Hören, Schmecken: wenn uns unsere Sinne täuschen
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
 Präsentation transkript:

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 Das Datenmodell ist hier sehr einfach und besteht nur aus einem Objekt einer Klasse Wuerfel. Klasse Objekt Miniwelt Datenmodell

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

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

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

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

Teil 2 Delphi - Würfel

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

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

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

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

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"

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

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"

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

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

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

Teil 3 Java - Würfel

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

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

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

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.

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

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

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

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

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

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

Teil 4 Python - chuck a luck

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

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

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

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

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

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

Teil 5 Delphi - chuck a luck

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

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

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

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

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

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

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

Teil 6 Java - chuck a luck

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

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

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

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

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

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

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

Teil 7 Python - Bank

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

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

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

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

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

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

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

Teil 5 Delphi - Bank

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

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

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

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

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

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

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

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

Teil 6 Java - Bank

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

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

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

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

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

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

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