Programmierprojekt
Sommersemester 2015
Model View Controller
• Muster zur Strukturierung von Software
– Architekturmuster
– Entwurfsmuster
• Wiederverwendbarkeit von Komponenten
– Bsp.: Austausch der GUI-Implementierung für
andere Plattform
Konzept
Daten und evtl.
Programmlogik
Model
wird dargestellt in
View
Präsentation und
Benutzerinteraktion
verändert
Controller
Steuerung der View
und Bearbeitung der
Benutzeranfragen
Zuordnung von Funktionalität
• Geschäfts-/Programmlogik sollte Teil des Modells sein
– Testbarkeit!
• Validierung von Benutzereingaben
– Einfache Überprüfung des Formats: View
– Komplexe Überprüfungen: Model
• Daten-Formatierung (z.B. Datumsformat)
– Für unser Projekt: meistens View
• Bei GUI-Frameworks übernimmt View z.T.
Funktionalität des Controllers
– Event-Handling
Interaktion von Model und View:
Beobachter-Muster
Quelle: Wikipedia
Beobachtermuster in Java
• Klasse java.util.Observable
– Modell erbt von dieser Klasse
– Bei Veränderung: void setChanged()
– Methode void notifyObservers(Object arg)
benachrichtigt registrierte Beobachter
• Interface java.util.Observer
– Methode void update(Observable o, Object arg)
wird aufgerufen, wenn das observierte Objekt sich
verändert.
Beispiel
public class ObservingDemo {
MyView view;
MyModel model;
public ObservingDemo() {
view = new MyView();
model = new MyModel();
model.addObserver(view);
}
public static void main(String[] av) {
ObservingDemo demoObj = new ObservingDemo();
demoObj.demo();
}
public void demo() {
model.changeSomething();
}
Beispiel: View und Model
class MyView implements Observer {
public void update(Observable obs, Object x) {
System.out.println(“Bin über Update informiert worden!");
}
}
class MyModel extends Observable {
public void changeSomething() {
// Veränderung des Models
setChanged();
notifyObservers();
}
}
Entwurfsmuster
• Bewährte Muster aus der
Softwareentwicklung
• Gamma, Helm, Johnsohn, Vlissides: Design
Patterns – Elements of Reusable ObjectOriented Software
• Klassifizierung
– Erzeugungsmuster (Builder, Factory, Singleton,...)
– Strukturmuster (Adapter, Decorator,...)
– Verhaltensmuster (Observer, Visitor, Iterator,...)
JavaDoc
• Software-Dokumentierung
• Erstellt aus dem annotierten Java-Quelltext
HTML-Dokumentationsdateien
• Kommentare und Tags
/**
* Ein Hello-World-Programm in Java.
* @author John Doe
*/
public class Hello {
/**
* Hauptprogramm.
*
* @param args Kommandozeilenparameter
*/
public static void main(String[] args) {
System.out.println("Hallo Welt!");
}
}
Elemente von JavaDoc
Tag
Verwendung
@author John Smith
Autor
@param <Name> <Beschreibung>
Parameter
@return <Beschreibung>
Rückgabewert
@exception
@throws
Dokumentation von Exceptions
• JavaDoc Kommentare sind durch /** ..... */ markiert
• Tags enthalten Meta-Daten mit dokumentativem Charakter
• Zeilenumbruch im Kommentar mit <p>
Organisatorisches
• Deadline für den Code: 31. Juli 2015
• Präsentation der Ergebnisse: 27. August 2015,
14:00
– Gruppenpräsentation: je 25 min
– Dokumentation in Form von Präsentationsfolien
• Gewichtung der Benotung:
– 30% Präsentation
– 70% Code