GEF-Tutorial Kapitel 3


Aus Wirthi's Wiki

Wechseln zu: Navigation, Suche
GEF-Tutorial
Eclipse Graphical Editor Framework
Allgemeines
Kapitel 1 (Überblick)
Kapitel 2 (Model-View-Controller)
Kapitel 3 (Model)
Kapitel 4 (Controller)
Kapitel 5 (View)
Kapitel 6 (Editor-Hauptklasse)
Kapitel 7 (Einsatz und Zusammenfassung)

Inhaltsverzeichnis

Im Kapitel 3 des GEF-Tutorials behandeln wir das Model, das der Editor darstellen soll.

[bearbeiten] Aufgaben

Das Model soll die anzuzeigenden Daten abspeichern, den Zugriff auf die Daten erlauben und meist auch die Manipulation der Daten ermöglichen.

GEF eigent sich zur Darstellung von stukturierten Daten. Das Model bildet diese Struktur ab und enthält alle Informationen über die gespeicherten Daten. Typisch sind dabei baumförmige Hierarchien. Denkbar sind allerdings auch netzförmige Strukturen.

[bearbeiten] Implementierung

GEF stellt keinerlei Anforderungen an das verwendete Model. Die Implementierung der Model-Klassen unterliegt der freien Wahl des Programmierers. Es ist - für GEF - unerheblich, ob das Model manuell geschrieben oder generiert wurde, etwa mittels EMF (Eclipse Modeling Framework). Auch müssen sich die Daten nicht vollständig im Speicher befinden. Es ist ebenso möglich, das Model erst im Zeitpunkt der Benutzung "on the fly" aufzubauen. Dies könnte etwa sinnvoll sein, wenn Daten aus einer Datenbank ausgelesen werde.

Unerheblich ist weiters, von welcher Klasse die Model-Klassen abgeleitet sind; auch das Implementieren von Interfaces ist nicht vorgeschrieben. Einzige naturgemäße Vorgabe ist, dass die Model-Klassen Zugriffsfunktionen (getter) zu den Daten bereitstellen.

[bearbeiten] Beispiel

Für das erste Beispielprogramm dieses Tutorials wählen wählen wir folgende simple Datenstruktur: Ein Objekt vom Typ Parent kann beliebig viele Objekte vom Typ Child als Kindelemente haben. Beide speichern sonst nur ein String-Attribut name.

Parent.java
public class Parent {
	private String name;
	private List<Child> children;

Die Klasse Parent enthält zwei Variablen: zum einen den String name, zum anderen einen Liste von Objekten des Types Child.

	public Parent(String name) {
		this.name = name;
		this.children = new ArrayList<Child>();
	}

Im Konstruktor wird der name initialisiert und eine leere child-Liste angelegt.

	public void addChild(Child child) {
		this.children.add(child);
	}

Die Methode addChild() erlaubt das Hinzufügen eines neuesn Kindelements.

	public List<Child> getChildren() {
		return children;
	}

	public String getName() {
		return this.name;
	}

Die Funktionen getName() und getChildren erlauben das Abfragen der Daten des Objektes. Diese Funktionen werden wir im Controller und in der View nutzen, um auf die Daten im Model zugreifen zu können.

Child.java
public class Child {
	private String name;

	public Child(String name) {
		this.name = name;
	}
	
	public String getName() {
		return this.name;
	}
}

Die Klasse Child erlaubt nur das Speichern eines Namens und besitzt keine weiteren Kindelemente.

GEF-Tutorial: Allgemeines - Kapitel 1 - Kapitel 2 - Kapitel 3 - Kapitel 4 - Kapitel 5 - Kapitel 6 - Kapitel 7

Persönliche Werkzeuge