Gui-Objekte und Datenmodellobjekte

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
Java Beans von Raoul Schneider.
Seminar Internetdienste Web 2.0 und Rich Internet Applications (RIA) JavaFX Rainer Scholz.
Objektorientierte Programmierung Definition von Klassen
Ruby on Rails im Überblick
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Einführung Blue J.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung versteht Java Programmcode versteht Java Programmcode Für die Entwicklung eigener Software.
Java: Objektorientierte Programmierung
Ein Beispiel in Java.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Die Türme von Hanoi Die Lösungsfindung nach dem Prinzip der Rekursion wird noch einmal textuell und grafisch erläutert
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
AWT – Detailbetrachtung Java 3D – Seminar im Wintersemester 2002/2003 Christian Schneider.
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
EDV1 - Komplexe Datentypen
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.
DVG Klassen und Objekte
Informationsdarstellung in
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Verzweigung.
© 2004 Pohlig - Taulien Swing Ereignissteuerung. © 2004 Pohlig - Taulien GK Informatik mit Java 2 Auf Button-Klick reagieren.
Informatik Grundkurse mit Java
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
© 2004 Pohlig - Taulien Dokumentation mit JavaDoc.
FH-Hof Java2D - Grundlagen Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Delphi II - OOP IFB Fortbildung
Implementierung objektorientierter Modelle
INHALT INHALT Inhalt Delphi IDE ObjectPascal Hello World! Delphi IDE
Objektorientierte Programmierung
Programme dokumentieren mit JavaDoc
Klassendefinitionen in Java
Grafische Benutzeroberflächen
Objektorientierte Programmierung (OOP) in Python Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version
1. Entwicklungsumgebung 2. Kontextmenü 3. Compile 4. Objekt 5. Attribut 6. Klasse 7. Deklaration 8. Intialisierung.
Überblick über die Datenbankproblematik
1.3 Klassen und Beziehungen
1.3 Klassen und Beziehungen
Objektorientiertes Konstruieren
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
1. Entwicklungsumgebung 2. Kontextmenü 3. Compile 4. Objekt 5. Attribut 6. Klasse 7. Deklaration 8. Intialisierung.
Java Programmierung.
Starten der Entwicklungsumgebung (IDE)
Erste Schritte in DELPHI
Objektorientierung.
Objektorientierte Modellierung mit UML
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Klassen und Objekte.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Einführung Blue J. Inhaltsverzeichnis  Definition  Vokabeln.
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Lernlandkarte OOP (ObjektOrientiertes Programmieren)
HG13_ Herzgen, Jung & Lorkowski1 Java Programmierung BlueJ Workshop.
Einführung in die OOP in Java
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Objektorientierte Programmierung (OOP)
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Konzepte objektorientierter Programmierung: Datenmodell und GUI
4. Modellieren und Diagrammarten
Konzepte objektorientierter Programmierung: Datenmodell und GUI
 Präsentation transkript:

Gui-Objekte und Datenmodellobjekte Anja Faatz 2009 Gymnasium Gonsenheim

Die Themen Beispiel Ampel Trennung: Datenmodell-GUI Datenmodell GUI Erzeugung der Objekte Übungen Literatur

Die Themen Beispiel Ampel Trennung: Datenmodell-GUI Datenmodell GUI Erzeugung der Objekte Übungen Literatur

Beispiel Ampel Es soll eine GUI für eine Ampel geschrieben werden. Die Ampel wird über einen Button weitergeschaltet.

Zeichenfläche und Button erzeugen Beispiel Ampel Fenster erzeugen ... ampelFenster = Tk() ampelFenster.title('Ampel') zeichenflaeche=Canvas(ampelFenster,width=50,height=150) buttons=Button(ampelFenster,text="weiter",command=buttonWeiterschalten) zeichenflaeche.pack() buttons.pack() rot = zeichenflaeche.create_oval(10,10,40,40,fill='red') gelb = zeichenflaeche.create_oval(10,60,40,90,fill='grey') gruen = zeichenflaeche.create_oval(10,110,40,140,fill='grey') ampelFenster.mainloop() Zeichenfläche und Button erzeugen drei Lampen zeichnen starten

Beispiel Ampel 0  1  2  3  0  ... from tkinter import * def buttonWeiterschalten(): colour1=zeichenflaeche.itemcget(rot, 'fill') colour2=zeichenflaeche.itemcget(gelb, 'fill') colour3=zeichenflaeche.itemcget(gruen, 'fill') if colour1=='red' and colour2=='grey': Zaehler=0 elif colour1=='red' and colour2=='yellow': Zaehler=1 elif colour3=='green': Zaehler=2 else: Zaehler=3 Zaehler = (Zaehler + 1) % 4 Farben = ['Rot','Rot/Gelb','Gruen','Gelb'] Zustand = Farben[Zaehler] ... Verwaltung der Daten Verarbeitung der Daten 0  1  2  3  0  ... Zaehler auswerten

Beispiel Ampel ... if 'Rot' in Zustand: zeichenflaeche.itemconfig(rot,fill='red') else: zeichenflaeche.itemconfig(rot,fill='grey') if 'Gelb' in Zustand: zeichenflaeche.itemconfig(gelb,fill='yellow') zeichenflaeche.itemconfig(gelb,fill='grey') if 'Gruen' in Zustand: zeichenflaeche.itemconfig(gruen,fill='green') zeichenflaeche.itemconfig(gruen,fill='grey') Ampel zeichnen

Beispiel Ampel Nachteile Programm läuft nicht ohne GUI GUI-Objekte sind nicht für die Datenhaltung einer Anwendung gedacht colour1=zeichenflaeche.itemcget(rot, 'fill') Programmerweiterung unübersichtlich aktueller Zustand der roten Lampe

Die Themen Beispiel Ampel Trennung: Datenmodell-GUI Datenmodell GUI Erzeugung der Objekte Übungen Literatur

Trennung: Datenmodell-GUI „Ein grundlegendes Prinzip beim Entwurf von Software-Systemen besteht heute in der klaren Trennung zwischen Benutzeroberfläche und Fachkonzept“ (H.Balzert: Lehrbuch der Informatik, S. 123) View --------------------- Controller Model http://www.oszhandel.de/gymnasium/faecher/informatik/didaktik/delphi-java.pdf

Trennung: Datenmodell-GUI Model = Applikation ohne Benutzeroberfläche interne Datenverarbeitung View = verantwortlich für die aktuelle Darstellung der Eingangs-/Ausgangsdaten der Anzeigenobjekte Controller = überwacht und kontrolliert alle Eingabegeräte View und Controller bilden zusammen die Benutzer- Oberfläche. http://www.oszhandel.de/gymnasium/faecher/informatik/didaktik/delphi-java.pdf

Trennung: Datenmodell-GUI Zu dem reinen Datenobjekten kommen GUI-Objekte (Fenster, Label, Button,...) hinzu Model weiß nichts über View-Contoller View-Controller kennen Model, holen von und schicken ihm Daten Die interne Datenverarbeitung ist gänzlich von der Benutzeroberfläche abgekoppelt. Änderungen der Benutzeroberfläche haben keinen Einfluss auf die Datenverarbeitung und Datenstruktur. http://www.oszhandel.de/gymnasium/faecher/informatik/didaktik/delphi-java.pdf

Trennung: Datenmodell-GUI hat ... AmpelGUI hat Button hat Canvas kennt Trennung zwischen GUI und Datenmodell Ampel

Die Themen Beispiel Ampel Trennung: Datenmodell-GUI Datenmodell GUI Erzeugung der Objekte Übungen Literatur

Datenmodell class Ampel(object): def __init__(self): self.zaehler = 0 self.zustand='Rot' def weiterschalten(self): self.zaehler = (self.zaehler + 1) % 4 Farben = ['Rot','Rot/Gelb','Gruen','Gelb'] self.zustand = Farben[self.zaehler] Konstruktor Attribute zur Verwaltung der Ampeldaten mit Anfangwerten Ampel weiterschalten Erzeugt neue Werte für die Attribute zur Verwaltung der Ampel

Datenmodell >>> a=Ampel() >>> a.zustand 'Rot' >>> a.weiterschalten() 'Rot/Gelb' Wenn man diese Klassendeklaration ausführt, dann lässt sich folgender Python-Dialog zur Simulation einer Ampel führen Wichtig: Die Klasse Ampel ist so konzipiert, dass sie ohne grafische Oberfläche benutzt werden kann. Sie liefert also ein reines Datenmodell.

Die Themen Beispiel Ampel Trennung: Datenmodell-GUI Datenmodell GUI Erzeugung der Objekte Übungen Literatur

Zeichenfläche und Button erzeugen GUI class AmpelGUI(object): def __init__(self, a): self.ampel = a self.ampelFenster = Tk() self.ampelFenster.title('Ampel') self.zeichenflaeche=Canvas(self.ampelFenster,width=50,height=150) self.buttons=Button(self.ampelFenster,text="weiter",command=self.buttonWeiterschalten) self.zeichenflaeche.pack() self.buttons.pack() self.rot = self.zeichenflaeche.create_oval(10,10,40,40,fill='red') self.gelb = self.zeichenflaeche.create_oval(10,60,40,90,fill='grey') self.gruen = self.zeichenflaeche.create_oval(10,110,40,140,fill='grey') ... Konstruktor Fenster erzeugen Zeichenfläche und Button erzeugen drei Lampen zeichnen

GUI ... def ampelZeichnen(self): if 'Rot' in self.ampel.zustand: self.zeichenflaeche.itemconfig(self.rot,fill='red') else: self.zeichenflaeche.itemconfig(self.rot,fill='grey') if 'Gelb' in self.ampel.zustand: self.zeichenflaeche.itemconfig(self.gelb,fill='yellow') self.zeichenflaeche.itemconfig(self.gelb,fill='grey') if 'Gruen' in self.ampel.zustand: self.zeichenflaeche.itemconfig(self.gruen,fill='green') self.zeichenflaeche.itemconfig(self.gruen,fill='grey') Anzeige der Daten

Ereignisverarbeitung GUI ... def buttonWeiterschalten(self): self.ampel.weiterschalten() self.ampelZeichnen() Ereignisverarbeitung Mit Hilfe des Datenmodell-Objektes ampel wird gemeinsam mit den GUI-Objekten die Aufgaben der Benutzeroberfläche erledigt. Die Datenhaltung und Datenverarbeitung wird komplett von der Klasse Ampel übernommen.

Die Themen Beispiel Ampel Trennung: Datenmodell-GUI Datenmodell GUI Erzeugung der Objekte Übungen Literatur

Erzeugung der Objekte from Ampeldatenmodell1 import * a = Ampel() from AmpelGUI import * gui = AmpelGUI(a) gui.ampelFenster.mainloop() Ampel-Objekt kennt AmpelGUI-Objekt nicht GUI-Objekte AmpelGUI-Objekt kennt Ampel-Objekt

Die Themen Beispiel Ampel Trennung: Datenmodell-GUI Datenmodell GUI Erzeugung der Objekte Übungen Literatur

Ampel Ändern Sie das Projekt Ampel in eine Fussgänger-Ampel. Was müssen Sie dazu alles ändern?

Konto Schreiben Sie zu dem Datenmodell in konto.py folgende GUI. Button_Gutschrift: eingegebener Betrag wird zum Kontostand addiert und der Kontostand wird angezeigt ... Gestalten Sie zuerst die reine Benutzungsoberfläche. Funktionen und Methoden, die an Buttons gebunden sind werden erst einmal mit leeren Anweisungen versehen. (kontoGUI1vorlage.py) Im zweiten Schritt werden die Methodendefinitionen ausformuliert. (kontoGUI1solo.py)

Konto Schreiben Sie zu dem Datenmodell in konto.py folgende GUI. Button_Gutschrift: eingegebener Betrag wird zum Kontostand addiert und der Kontostand wird angezeigt ... Button_Konto: eingegebene Kontonummer wird in einer Kontoliste gesucht und Nummer, Besitzer und aktueller Kontostand wird in den entsprechenden Labels angezeigt

Die Themen Beispiel Ampel Trennung: Datenmodell-GUI Datenmodell GUI Erzeugung der Objekte Übungen Literatur

Literatur Michael Weigend: Objektorienrierte Programmierung mit Python, 3.Auflage (mitp 2006) www.inf-schule.de/informatik/gui/entwicklung www.inf-schule.de/informatik/konzepteoop/gui/einstieg_konto www.oszhandel.de/gymnasium/faecher/informatik/didaktik/delphi-java.pdf