mvc mit lazarus - michael-fuchs.net file4 mvc mit lazarus Überblick theorie definition aufbau vor-...
Post on 22-Aug-2019
228 Views
Preview:
TRANSCRIPT
MVC mit Lazarus1
MVCMVC
mit Lazarusmit Lazarus
MVCMVC
mit Lazarusmit Lazarus
www.lazarusforum.de25. - 27.07.2014 Reinheim
MVC mit Lazarus2
Überblick
MVC mit Lazarus3
Überblick● Theorie
● Definition
● Aufbau
● Vor- und Nachteile
MVC mit Lazarus4
Überblick● Theorie
● Definition
● Aufbau
● Vor- und Nachteile
● Praxis
● Beispiel-Implementierung mit Lazarus
MVC mit Lazarus5
Was ist MVC?Was ist MVC?Was ist MVC?Was ist MVC?
MVC mit Lazarus6
„Wir entwickeln unser Out-of-the-box Web 3.0
Customer-Relationship-Management-System in einem
agilen Prozess unter strenger Nutzung des MVC-
Patterns, um das Like-Value in den Social-Networks
auf einem von unseren Stakeholdern akzeptierten
Wert zu halten.“
MVC mit Lazarus7
„Wir entwickeln unser Out-of-the-box Web 3.0
Customer-Relationship-Management-System in einem
agilen Prozess unter strenger Nutzung des MVC-
Patterns, um das Like-Value in den Social-Networks
auf einem von unseren Stakeholdern akzeptierten
Wert zu halten.“Bullshit!
Bullshit!
MVC mit Lazarus8
Model-View-ControllerModel-View-Controller
MVC mit Lazarus9
Model-View-ControllerModel-View-Controller
Model-View-PresenterModel-View-Presenter
MVC mit Lazarus10
Model-View-ControllerModel-View-Controller
Model-View-PresenterModel-View-Presenter
Model-View-AdaptorModel-View-Adaptor
MVC mit Lazarus11
Model-View-ControllerModel-View-Controller
Model-View-PresenterModel-View-Presenter
Model-View-AdaptorModel-View-Adaptor
Model-View-ViewmodelModel-View-Viewmodel
MVC mit Lazarus12
Model-View-ControllerModel-View-Controller
Model-View-Presenter
Model-View-Adaptor
Model-View-Viewmodel
MVC mit Lazarus13
Model-View-Controller (MVC) ist ein Architekturmuster für GUI-Anwendungen. Es trennt die Applikation in drei Teile, die lose miteinander gekoppelt sind.
Model–View-Controller
MVC mit Lazarus14
Model
Model-View-Controller (MVC) ist ein Architekturmuster für GUI-Anwendungen. Es trennt die Applikation in drei Teile, die lose miteinander gekoppelt sind.
Model–View-Controller
MVC mit Lazarus15
Model View
Model-View-Controller (MVC) ist ein Architekturmuster für GUI-Anwendungen. Es trennt die Applikation in drei Teile, die lose miteinander gekoppelt sind.
Model–View-Controller
MVC mit Lazarus16
Model ViewController
Model-View-Controller (MVC) ist ein Architekturmuster für GUI-Anwendungen. Es trennt die Applikation in drei Teile, die lose miteinander gekoppelt sind.
Model–View-Controller
MVC mit Lazarus17
Model
MVC mit Lazarus18
ModelDas Modell enthält Klassen, die alle darzustellenden Daten repräsentieren.
MVC mit Lazarus19
Model
TAnnualResults
+ Year: Integer+ Sales: Currency+ Profit: Currency
TResults
+ CompanyId: Integer+ Results: array of TAnnualResult
Das Modell enthält Klassen, die alle darzustellenden Daten repräsentieren.
MVC mit Lazarus20
Model
TAnnualResults
+ Year: Integer+ Sales: Currency+ Profit: Currency
TResults
+ CompanyId: Integer+ Results: array of TAnnualResult
Das Modell enthält Klassen, die alle darzustellenden Daten repräsentieren.
In vielen Fällen sind im Modell auch die Klassen der Geschäftslogik und Datenpersistenz vertreten.
MVC mit Lazarus21
Model
TAnnualResults
+ Year: Integer+ Sales: Currency+ Profit: Currency
TResults
+ CompanyId: Integer+ Results: array of TAnnualResult
Das Modell enthält Klassen, die alle darzustellenden Daten repräsentieren.
In vielen Fällen sind im Modell auch die Klassen der Geschäftslogik und Datenpersistenz vertreten.
TBilanzService
+ Connect()+ Disconnect()+ GetResults(StartYear: Integer): TResults
MVC mit Lazarus22
Model
TAnnualResults
+ Year: Integer+ Sales: Currency+ Profit: Currency
TResults
+ CompanyId: Integer+ Results: array of TAnnualResult
TBilanzService
+ Connect()+ Disconnect()+ GetResults(StartYear: Integer): TResults
Das Modell enthält Klassen, die alle darzustellenden Daten repräsentieren.
In vielen Fällen sind im Modell auch alle Klassen zur Geschäftslogik und Datenpersistenz vertreten.
Datenbank
MVC mit Lazarus23
View
MVC mit Lazarus24
ViewDie Views sind für die Darstellung der Daten aus dem Modell und die Entgegennahme von Benutzerinteraktionen zuständig. Sie kennen das Model.
MVC mit Lazarus25
Umsatz Gewinn
2011 3,5 Mio EUR 210 tsd. EUR
2012 3,2 Mio. EUR 570 tsd. EUR
2013 3,8 Mio. EUR 510 tsd. EUR
2014 2,9 Mio. EUR 720 tsd. EUR
ViewDie Views sind für die Darstellung der Daten aus dem Modell und die Entgegennahme von Benutzerinteraktionen zuständig. Sie kennen das Model.
MVC mit Lazarus26
2011 2012 2013 20140
500000
1000000
1500000
2000000
2500000
3000000
3500000
4000000
Umsatz Gewinn
2011 3,5 Mio EUR 210 tsd. EUR
2012 3,2 Mio. EUR 570 tsd. EUR
2013 3,8 Mio. EUR 510 tsd. EUR
2014 2,9 Mio. EUR 720 tsd. EUR
ViewDie Views sind für die Darstellung der Daten aus dem Modell und die Entgegennahme von Benutzerinteraktionen zuständig. Sie kennen das Model.
MVC mit Lazarus27
2011 2012 2013 20140
500000
1000000
1500000
2000000
2500000
3000000
3500000
4000000
2011 2012 2013 20140
500000
1000000
1500000
2000000
2500000
3000000
3500000
4000000
Umsatz Gewinn
2011 3,5 Mio EUR 210 tsd. EUR
2012 3,2 Mio. EUR 570 tsd. EUR
2013 3,8 Mio. EUR 510 tsd. EUR
2014 2,9 Mio. EUR 720 tsd. EUR
ViewDie Views sind für die Darstellung der Daten aus dem Modell und die Entgegennahme von Benutzerinteraktionen zuständig. Sie kennen das Model.
MVC mit Lazarus28
2011 2012 2013 20140
500000
1000000
1500000
2000000
2500000
3000000
3500000
4000000
2011 2012 2013 20140
500000
1000000
1500000
2000000
2500000
3000000
3500000
4000000
Umsatz Gewinn
2011 3,5 Mio EUR 210 tsd. EUR
2012 3,2 Mio. EUR 570 tsd. EUR
2013 3,8 Mio. EUR 510 tsd. EUR
2014 2,9 Mio. EUR 720 tsd. EUR
2012 Jahr:
Umsatz:
Gewinn:
3.200.000 EUR
570.000 EUR
ViewDie Views sind für die Darstellung der Daten aus dem Modell und die Entgegennahme von Benutzerinteraktionen zuständig. Sie kennen das Model.
MVC mit Lazarus29
Controller
MVC mit Lazarus30
ControllerDie Controller verwalten die Views, reagieren auf die Benutzereingaben und fordern Daten vom Model an oder geben sie an das Model weiter.
MVC mit Lazarus31
ControllerDie Controller verwalten die Views, reagieren auf die Benutzereingaben und fordern Daten vom Model an oder geben sie an das Model weiter.
Model View
Controller Benutzer
MVC mit Lazarus32
ControllerDie Controller verwalten die Views, reagieren auf die Benutzereingaben und fordern Daten vom Model an oder geben sie an das Model weiter.
Model View
Controller Benutzer
MVC mit Lazarus33
ControllerDie Controller verwalten die Views, reagieren auf die Benutzereingaben und fordern Daten vom Model an oder geben sie an das Model weiter.
Model View
Controller Benutzer
MVC mit Lazarus34
ControllerDie Controller verwalten die Views, reagieren auf die Benutzereingaben und fordern Daten vom Model an oder geben sie an das Model weiter.
Model View
Controller Benutzer
MVC mit Lazarus35
ControllerDie Controller verwalten die Views, reagieren auf die Benutzereingaben und fordern Daten vom Model an oder geben sie an das Model weiter.
Model View
Controller Benutzer
MVC mit Lazarus36
ControllerDie Controller verwalten die Views, reagieren auf die Benutzereingaben und fordern Daten vom Model an oder geben sie an das Model weiter.
Model View
Controller Benutzer
MVC mit Lazarus37
ControllerDie Controller verwalten die Views, reagieren auf die Benutzereingaben und fordern Daten vom Model an oder geben sie an das Model weiter.
Model View
Controller Benutzer
MVC mit Lazarus38
VorteileVorteileVorteileVorteile
MVC mit Lazarus39
Austauschbarkeit
MVC mit Lazarus40
verteilte Entwicklung
MVC mit Lazarus41
Testbarkeit
MVC mit Lazarus42
wartungsfreundlich
monolithische Anwendung
MVC-Anwendung
MVC mit Lazarus43
NachteileNachteileNachteileNachteile
MVC mit Lazarus44
MVC-Anwendung
monolithische Anwendung
Entwicklungsaufwand
MVC mit Lazarus45
Komplexität der Anwendung / Entwicklungszeitraum
pro
zentu
aler
Aufw
and
Entwicklungsaufwand
MVC
monol.
MVC mit Lazarus46
Beispiel-ApplikationBeispiel-ApplikationBeispiel-ApplikationBeispiel-Applikation
MVC mit Lazarus47
Beispiel-ApplikationBeispiel-ApplikationBeispiel-ApplikationBeispiel-Applikation
wir bauen uns eine Adresslistewir bauen uns eine Adresslistewir bauen uns eine Adresslistewir bauen uns eine Adressliste
MVC mit Lazarus48
Entwicklungsphasen
MVC mit Lazarus49
Analyse
Entwicklungsphasen
MVC mit Lazarus50
Analyse
Entwicklungsphasen
Design
MVC mit Lazarus51
Analyse
Implementierung
Entwicklungsphasen
Design
MVC mit Lazarus52
Userstories
Analyse Design Implementierung
MVC mit Lazarus53
Userstories
MVC mit Lazarus54
Userstories
MVC mit Lazarus55
Userstories
#1 Liste aller Personen anzeigen
Im Hauptfenster des Programms soll eine Liste aller in der Datenbank gespeicherten Personen angezeigt werden (Daten: Name, Vorname).
MVC mit Lazarus56
Userstories
#1
MVC mit Lazarus57
Userstories
#2 Detailansicht für eine Person
Beim Klick auf den „Details“-Button soll in einem neuen Fenster alle Daten zu einer Person angezeigt werden.(Daten: Name, Vorname, Adresse, Stadt, Postleitzahl, E-Mail, Telefonnummer)
#1
MVC mit Lazarus58
Userstories
#1 #2
MVC mit Lazarus59
Userstories
#3 Person editieren
Beim Klick auf den „Bearbeiten“-Button soll in einem neuen Fenster alle Daten einer Person bearbeitet werden können.(Daten: Name, Vorname, Adresse, Stadt, Postleitzahl, E-Mail, Telefonnummer)
#1 #2
MVC mit Lazarus60
Userstories
#3#1 #2
MVC mit Lazarus61
Userstories
#3
#4 neue Person hinzufügen
Beim Klick auf den „Neu“-Button soll einem neuen Fenster die Daten zu einer neuen Person eingegeben werden können. Nach dem Klick auf Speichern soll die Person in die Datenbank geschrieben werden.
#1 #2
MVC mit Lazarus62
Userstories
#3#1 #2 #4
Analyse Design Implementierung
MVC mit Lazarus63
Analyse Design Implementierung
Datenklassen
MVC mit Lazarus64
Datenklassen
#2 Detailansicht für eine Person
Beim Klick auf den „Details“-Button soll in einem neuen Fenster alle Daten zu einer Person angezeigt werden.(Daten: Name, Vorname, Adresse, Stadt, Postleitzahl, E-Mail, Telefonnummer)
MVC mit Lazarus65
Datenklassen
#2 Detailansicht für eine Person
Beim Klick auf den „Details“-Button soll in einem neuen Fenster alle Daten zu einer Person angezeigt werden.(Daten: Name, Vorname, Adresse, Stadt, Postleitzahl, E-Mail, Telefonnummer)
TPerson
+ Id: LongInt+ Firstname: String+ Lastname: String+ Adress: String+ City: String+ Postcode: String+ Email: String+ Phone: String
MVC mit Lazarus66
Datenklassen
TPerson
+ Id: LongInt+ Firstname: String+ Lastname: String+ Adress: String+ City: String+ Postcode: String+ Email: String+ Phone: String
#1 Liste aller Personen anzeigen
Im Hauptfenster des Programms soll eine Liste aller in der Datenbank gespeicherten Personen angezeigt werden (Daten: Name, Vorname).
MVC mit Lazarus67
Datenklassen
TPerson
+ Id: LongInt+ Firstname: String+ Lastname: String+ Adress: String+ City: String+ Postcode: String+ Email: String+ Phone: String
#1 Liste aller Personen anzeigen
Im Hauptfenster des Programms soll eine Liste aller in der Datenbank gespeicherten Personen angezeigt werden (Daten: Name, Vorname).
TPersonHead
+ Id: LongInt+ Firstname: String+ Lastname: String
MVC mit Lazarus68
Datenklassen
TPerson
+ Id: LongInt+ Firstname: String+ Lastname: String+ Adress: String+ City: String+ Postcode: String+ Email: String+ Phone: String
#1 Liste aller Personen anzeigen
Im Hauptfenster des Programms soll eine Liste aller in der Datenbank gespeicherten Personen angezeigt werden (Daten: Name, Vorname).
TPersonHead
+ Id: LongInt+ Firstname: String+ Lastname: String
TObjectList
TPersonHeadList
+ Add+ Extract+ Remove+ IndexOf+ Insert+ First+ Last+ GetEnumerator+ Items
MVC mit Lazarus69
Datenklassen
TPerson
+ Adress: String+ City: String+ Postcode: String+ Email: String+ Phone: String
TPersonHead
+ Id: LongInt+ Firstname: String+ Lastname: String
TObjectList
TPersonHeadList
+ Add+ Extract+ Remove+ IndexOf+ Insert+ First+ Last+ GetEnumerator+ Items
Analyse Design Implementierung
MVC mit Lazarus70
Interfaces
MVC mit Lazarus71
#1 Liste aller Personen anzeigen
Im Hauptfenster des Programms soll eine Liste aller in der Datenbank gespeicherten Personen angezeigt werden (Daten: Name, Vorname).
Interfaces
MVC mit Lazarus72
Interfaces
<<interface>>IMainView
+ BindPersonHeads(List: TPersonHeadList)
#1 Liste aller Personen anzeigen
Im Hauptfenster des Programms soll eine Liste aller in der Datenbank gespeicherten Personen angezeigt werden (Daten: Name, Vorname).
MVC mit Lazarus73
Interfaces
<<interface>>IMainView
+ BindPersonHeads(List: TPersonHeadList)
#2 Detailansicht für eine Person
Beim Klick auf den „Details“-Button soll in einem neuen Fenster alle Daten zu einer Person angezeigt werden.(Daten: Name, Vorname, Adresse, Stadt, Postleitzahl, E-Mail, Telefonnummer)
MVC mit Lazarus74
Interfaces
<<interface>>IMainView
+ BindPersonHeads(List: TPersonHeadList)
<<interface>>IDetailView
+ ShowPerson(APerson: TPerson)
#2 Detailansicht für eine Person
Beim Klick auf den „Details“-Button soll in einem neuen Fenster alle Daten zu einer Person angezeigt werden.(Daten: Name, Vorname, Adresse, Stadt, Postleitzahl, E-Mail, Telefonnummer)
MVC mit Lazarus75
Interfaces
<<interface>>IMainView
+ BindPersonHeads(List: TPersonHeadList)
<<interface>>IDetailView
+ ShowPerson(APerson: TPerson)
#3 Person editieren
Beim Klick auf den „Bearbeiten“-Button soll in einem neuen Fenster alle Daten einer Person bearbeitet werden können.(Daten: Name, Vorname, Adresse, Stadt, Postleitzahl, E-Mail, Telefonnummer)
MVC mit Lazarus76
Interfaces
<<interface>>IMainView
+ BindPersonHeads(List: TPersonHeadList)
<<interface>>IDetailView
+ ShowPerson(APerson: TPerson)+ EditPerson(APerson: TPerson): Boolean
#3 Person editieren
Beim Klick auf den „Bearbeiten“-Button soll in einem neuen Fenster alle Daten einer Person bearbeitet werden können.(Daten: Name, Vorname, Adresse, Stadt, Postleitzahl, E-Mail, Telefonnummer)
MVC mit Lazarus77
Interfaces
<<interface>>IMainView
+ BindPersonHeads(List: TPersonHeadList)
<<interface>>IDetailView
+ ShowPerson(APerson: TPerson)+ EditPerson(APerson: TPerson): Boolean
#4 neue Person hinzufügen
Beim Klick auf den „Neu“-Button soll einem neuen Fenster die Daten zu einer neuen Person eingegeben werden können. Nach dem Klick auf Speichern soll die Person in die Datenbank geschrieben werden.
MVC mit Lazarus78
Interfaces
<<interface>>IMainView
+ BindPersonHeads(List: TPersonHeadList)
<<interface>>IDetailView
+ ShowPerson(APerson: TPerson)+ EditPerson(APerson: TPerson): Boolean+ NewPerson(APerson: TPerson): Boolean
#4 neue Person hinzufügen
Beim Klick auf den „Neu“-Button soll einem neuen Fenster die Daten zu einer neuen Person eingegeben werden können. Nach dem Klick auf Speichern soll die Person in die Datenbank geschrieben werden.
MVC mit Lazarus79
Interfaces
<<interface>>IMainView
+ BindPersonHeads(List: TPersonHeadList)
<<interface>>IDetailView
+ ShowPerson(APerson: TPerson)+ EditPerson(APerson: TPerson): Boolean+ NewPerson(APerson: TPerson): Boolean
<<interface>>IPersistence
+ GetAllPersonHeads: TPersonHeadList+ GetPerson(Id: LongInt): TPerson+ InsertPerson(APerson: TPerson)+ UpdatePerson(APerson: TPerson)
MVC mit Lazarus80
Interfaces
Analyse Design Implementierung
<<interface>>IMainView
+ BindPersonHeads(List: TPersonHeadList)
<<interface>>IDetailView
+ ShowPerson(APerson: TPerson)+ EditPerson(APerson: TPerson): Boolean+ NewPerson(APerson: TPerson): Boolean
<<interface>>IPersistence
+ GetAllPersonHeads: TPersonHeadList+ GetPerson(Id: LongInt): TPerson+ InsertPerson(APerson: TPerson)+ UpdatePerson(APerson: TPerson)
MVC mit Lazarus81
Controller
Analyse Design Implementierung
MVC mit Lazarus82
Controller
TMainController
+ <<constructor>> Create(ADao: IPersistence; AMainView: IMainView; ADetailView: IDetailView)
MVC mit Lazarus83
Controller
TMainController
+ <<constructor>> Create(ADao: IPersistence; AMainView: IMainView; ADetailView: IDetailView)+ CreatePerson+ EditPerson(PersonHead: TPersonHead)+ ShowDetails(PersonHead: TPersonHead)+ SyncMainview
MVC mit Lazarus84
Controller
Analyse Design Implementierung
TMainController
+ <<constructor>> Create(ADao: IPersistence; AMainView: IMainView; ADetailView: IDetailView)+ CreatePerson+ EditPerson(PersonHead: TPersonHead)+ ShowDetails(PersonHead: TPersonHead)+ SyncMainview
MVC mit Lazarus85
Analyse Design Implementierung
MVC mit Lazarus86
Analyse Design Implementierung
MVC mit Lazarus87
FragenFragenFragenFragen
??
MVC mit Lazarus88
Vortragsfolien zum DownloadVortragsfolien zum DownloadVortragsfolien zum DownloadVortragsfolien zum Download
http://go.michael-fuchs.net/156
top related