MVC-Uhr Siehe auch K. Merkert HSG-Kaiserslautern

Slides:



Advertisements
Ähnliche Präsentationen
Karel D. Robot Ein spielerischer Weg, um OOP mit Delphi zu lernen
Advertisements

DES-Simulator in JAVA, objektorientiert
Konzepte objektorientierter Systeme
Unter- und Oberklassen: Beispiel
Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java
Objektorientierter Entwurf (OOD) Übersicht
Objektorientierte Geschäftsprozessmodellierung
MVC.
Klassenvariable (auch Klassendaten bzw. statische Attribute genannt) und statische Methoden.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.
3. Klassendiagramme in Java implementieren
C++ Vererbung und Polymorphie
Thema: Fibonacci-Zahlen
UML Begleitdokumentation des Projekts
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Delphi Eine objektorientierte Programmiersprache © Beushausen 2000.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Client Architecture Data Model GUI KI Socket Connection.
Karel D. Robot Ein spielerischer Weg, um OOP mit Delphi zu lernen
Eine Einführung in die Entwicklung ereignisgesteuerter Programme
Delphi II - OOP IFB Fortbildung
Implementierung objektorientierter Modelle
Ereignisgesteuerte Programmierung
Delphi II - OOP Objektorientiertes Programmieren in Delphi:
Ham EST Das Schwein Schmatz.. Fressen Beginnen wir.... mit einer Geschichte:
Teil 1 Grundkonzepte der OOP Speyer, Helmut Paulus MPG Trier.
Entwurfs- und Implementationsdiagramme
Listen Klaus Becker KB Listen 2 Listen Ansgar A., Speyer Claudia B., Koblenz Knut B., Neustadt Annett B., Wörrstadt Stefani D., Bad Ems Jochen F.,
Grundkonzepte der objektorientierten Programmierung Teil 3
Realisierung mit Delphi
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die objektbasierte Programmierung mit Delphi
Datenstrukturen Klaus Becker (2002).
Grundkonzepte der objektorientierten Programmierung
Grundkonzepte der objektorientierten Programmierung
Programmieren mit Delphi
Grundkonzepte der objektorientierten Programmierung mit Delphi
Modellierung grafischer Objekte
Erste Programme mit Delphi
Einführung in die Software-Entwicklung mit Delphi Teil 1
Grundkonzepte der objektorientierten Programmierung Teil 2
Bausteine zum objektorientierten Programmieren mit Delphi
Modellierung grafischer Objekte
Anforderungen und Inhalte
Grundlagen von Objekt-Pascal Erstellt von J. Rudolf überarbeitet von H.Brehm.
Ansichtsoptionen für Ordner und Dateien. Stell dir vor … Du möchtest deine Dateien besser ordnen? Du möchtest mehr Informationen über deine Dateien und.
Gruppeneinteilung Gruppe 1Gruppe 2Gruppe 3Gruppe 4.
Objektorientierte Modellierung mit UML
Klassen und Klassenstruktur
Sondermodelle Schürzen und Adaptionen Die nachfolgenden Modelle sind Basismodelle die auf Kundenwunsch verändert und angepasst werden können. Alle Modelle.
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Gießener Weihnachtsmarkt 2009 Die Klasse 10 BSF / V mit dabei.. mit einem eigenem Produkt, „Wurst im Glas“! Betreuung & Verkauf durch die Klassen 10 GJE.
A Workshop About this chapter General description Units Time Schedule
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig 0 / 1 Syntax, Semantik, Spezifikation Grundlagen der Informatik R. Hartwig.
Programmieren mit Delphi Informatik. Inhalt Projekt Reaktion Objekte im Programm Reaktion Klassen Klassen im Programm Reaktion Objekte verfügen über Methoden,
Objektorientierte (OO) Programmierung
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Programmieren mit Lazarus. Die Programmoberfläche das Hauptfenster der Objektinspektor das Formular der Quelltexteditor Komponenten hier einfügen...
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Objektorientierte Programmierung
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Venusspiegel und Marsschild
Grundkurs Informatik 11-13
9. Vererbung und Polymorphie
Vererbung in Java Von Jan und Eddi.
 Präsentation transkript:

MVC-Uhr Siehe auch K. Merkert HSG-Kaiserslautern Speyer, 13.09.05 Helmut Paulus MPG Trier

Modellierung der Klassen Klassendiagramm Modell Datenklasse Fachkonzeptklasse (Unit: mTUhr.pas) GUI-Klasse Ansicht, Steuerung (Unit: uUhrform.pas)

Formularklasse: TUhrForm type TFUhr = class(TForm) Ed_H: TEdit; Ed_Min: TEdit; Btn_setzen: TButton; Btn_abfragen: TButton; Label1: TLabel; L_Anzeige: TLabel; procedure Btn_abfragenClick(Sender: TObject); procedure Btn_setzenClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private-Deklarationen} public { Public-Deklarationen} Uhr : TUhr; end; var UhrForm: TUhrForm; TFUhr wird von TForm abgeleitet Referenzvariable für das Uhrenobjekt Uhr <- nil Referenzvariable für das Formularobjekt

Implementierung Fensterereignisse procedure TUhrForm.FormCreate(Sender: TObject); begin Uhr := TUhr.create; end; procedure TUhrForm.FormDestroy(Sender: TObject); Uhr.Free Erzeugung des Uhrenobjekts Variable Uhr erhält einen Zeiger auf das Objekt Zerstörung des Objekts (Speicherfreigabe)

Implementierung Uhr anzeigen Uhr setzen Controller-Ereignisse procedure TUhrForm.Btn_abfragenClick(Sender: TObject); var h,min : integer; sh,smin : string; begin h := Uhr.GetH; min := Uhr.GetMin; sec := Uhr.getSec; if length(sh) = 1 then sh := '0'+sh; if length(smin) = 1 then smin := '0'+smin; if length(ssec) = 1 then ssec := '0'+ssec; L_Anzeige.caption := sh+':'+smin; end; procedure TUhrForm.Btn_setzenClick(Sender: TObject); var h,min : integer; h := StrToInt(Ed_H.text); min := StrToInt(Ed_Min.text); Uhr.SetH(h); Uhr.SetMin(min); Uhr anzeigen Abfragen der Uhrendaten Ansicht aktualisieren Uhr setzen Speichern der Uhrendaten

Uhr mit Ereignis

Ein Ereignis für das Uhrobjekt Das Uhrobjekt soll die Ansicht über Datenänderungen informieren. Dazu wird ein Ereignis implementiert, das bei Datenänderung ausgelöst wird, also in den set-Methoden. Das Modell erhält einen Methodenzeiger, der mit einer Methode des Formulars verknüpft werden kann. Die Implementation erfordert in vier Schritte: Vereinbarung eines Methodenzeiger-Typs Vereinbarung eines Methodenzeigers Aufruf der Ereignisprozedur über den Methodenzeiger Zuweisung einer Ereignisprozedur Die Schritte (1) – (3) erfolgen im Modellobjekt, Schritt (4) im Formular.

Implementation des Ereignisses Ereignis: OnChanged vom Typ TChangeEvent type TOnChanged = procedure of object; (1.) TUhr = Class .... public ... OnChanged : TOnChanged; (2.) end; Methode ohne Parameterliste Deklaration eines Methodenzeigertyps (hier: für eine Prozedur ohne Parameter) Deklaration einer Referenzvariablen vom Typ des Methodenzeigers

Auslösen des Ereignisses Modell: procedure TUhr.setH(wert : integer); begin FH := wert; //GUI informieren if assigned(OnChanged) then OnChanged; (3) end; 3. Ereignis auslösen Wirkung: Das Modellobjekt ruft eine Methode des GUI-Objekts auf, wenn sich seine Daten ändern.

Ereignisbearbeitungsmethode GUI-Klasse: type TUhrForm = class(TForm) ... private Uhr : TUhr; procedure updateView; public end; Ereignismethode vom Typ des Methodenzeigers Implementierung: procedure TUhrForm.updateView; begin //wird vom Modell aufgerufen ... end;

Setzen des Methodenzeigers GUI-Klasse: 4. Verknüpfen des Methodenzeigers mit OnCreate-Ereignis procedure TUhrForm.FormCreate(Sender: TObject); begin Uhr := TUhr.create; Uhr.OnChanged := updateViews; (4) end;

Uhr mit Timer

Modell-Klasse Das Uhrenobjekt erhält eine private Timerkomponente, die die Zeit im Sekundentakt erhöht. Klassendiagramm Hat - Beziehung OnTimer - Ereignis -Timer : Referenz auf das Timerobjekt -!ticke : Ereignismethode (OnTimer) Das Uhrenobjekt ist für die Erzeugung und Zerstörung des Timerobjekts zuständig.

Implementierung Objektreferenz Ereignismethode des Timers uses extctrls; type TUhr = Class private FH : integer; Fmin : integer; FSec : integer; Timer : TTimer; procedure ticke(Sender:TObject); public constructor create; destructor destroy; override; ... end; wegen TTimer Objektreferenz Ereignismethode des Timers

Implementierung Freigabe des Objekts constructor TUhr.create; begin Timer := TTimer.create(nil); with Timer do interval := 1000; enabled := true; OnTimer := ticke end; destructor TUhr.destroy; Timer.free; inherited destroy; Erwartet wird eine Referenz auf den Besitzer der Komponente: Objekt vom Typ TComponent oder nil. Methodenzeiger mit der Ereignismethode verknüpfen Freigabe des Objekts Aufruf des Destruktors der Basiskalsse TObject TUhr ist unmittelbar von TObject abgeleitet und kann daher nicht Besitzer (owner) einer Komponente sein.