HSG |
|
Die berühmten 'Gang of Four', Dr.Erich Gamma, Dr.Richard Helm, Dr. Ralph Johnson und Dr. John Vlissides schreiben in ihrem Buch 'Entwurfsmuster, Elemente wiederverwendbarer objektorientierter Software' auf Seite 5 und 6:
In Smalltalk-80 verwendet man zur Konstruktion von Benutzungsschnittstellen das MVC-Paradigma [KP88], das aus den drei Klassen Model, View und Controller besteht. Die Betrachtung der Entwurfsmuster innerhalb von MVC soll Ihnen helfen zu verstehen, was wir mit dem Begriff Muster meinen.
Das MVC-Paradigma wird durch drei Objekte umgesetzt. Das Modell-Objekt stellt das Anwendungsobjekt dar, das View-Objekt seine Bildschirmrepräsentation, und das Controller-Objekt bestimmt die Möglichkeiten, mit denen die Benutzungsschittstelle auf Benutzereingaben reagieren kann. In den Zeiten vor MVC tendierten Entwürfe von Benutzungsschnittstellen dazu, diese Objekte zusammenzuführen. Das MVC-Paradigma entkoppelt sie, um die Flexibilität und Wiederverwendbarkeit zu erhöhen.
Im MVC-Paradigma werden View- und Model-Objekte durch den Aufbau eines Protokolls zur Benachrichtigung entkoppelt. Ein View-Objekt muss sicherstellen, dass seine Darstellung den Zustand des Model-Objekts wiedergibt. Das Model benachrichtigt die von ihm abhängigen Views, wenn sich seine Daten ändern. Daraufhin erhält ein View die Möglichkeit, sich selbst in einen konsistenten Zustand zu bringen. Dieser Ansatz ermöglicht es Ihnen, mehrere Views an ein Model zu binden, um verschiedene Präsentationen anzubieten. Sie können ebenfalls neue Views für ein Model entwickeln, ohne es umschreiben zu müssen.
Abbildung 1.1 zeigt ein Model-Objekt und drei View-Objekte, wobei wir der Vereinfachung wegen die Controller-Objekte weggelassen haben. Das Model verwaltet einen einfachen Datensatz. Die Views stellen jeweils eine Tabelle, ein Histogramm und ein Kuchendiagramm dar und zeigen die Daten des Models auf verschiedene Weise an. Das Model benachrichtigt seine Views, wenn sich seine Werte ändern, und die Views kommunizieren mit dem Model, um auf diese Werte zuzugreifen.
Setze obiges berühmtes Beispiel in ein Delphi-Projekt um. Benutze dabei das Observer-Pattern. Erstelle ein UML-Klassendiagramm zu deiner Modellierung.