Fliegengewicht Ein objektbasiertes Strukturmuster.

Slides:



Advertisements
Ähnliche Präsentationen
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
Advertisements

Objektorientierte Programmierung
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Objekt – Relationales – Modell Tomasz Makowski IN
Christian A. Kopf Institut für Informatik FU Berlin Episode Recognizer Framework - Rahmenwerk zur Episodenerkennung.
Objektorientierte Programmierung Definition von Klassen
Konzeption und Realisierung eines Text- Analysesystems zur Automatisierung der Bewerberauswahl von diesem Datenformat jede beliebige Anwendung adaptieren.
Java: Objektorientierte Programmierung
FH-Hof Geometrie Richard Göbel. FH-Hof Aufbau des virtuellen Universums.
Java: Dynamische Datentypen
Listen Richard Göbel.
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Sebastian Grahn Sebastian Kühn
Das Strukturmuster Kompositum von C. Günther, T. Hammerschmidt und D. Kuhn.
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
Access 2000 Datenbanken.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Entwurfsmuster – Iterator
Command Pattern Karola Schäuble,
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Die Persistenzschicht
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. M. Thaller AM1: Re-usable Content in 3D und Simulationssystemen.
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/ /23.1.
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.
UML-Kurzüberblick Peter Brusten.
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Die Klasse String und ihre Methoden
Advanced Portlets Jens Hahn Stefan Reich Stefan Westerfeld Projekt KVS - Universität Hanburg.
Klassen und Klassenstruktur
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
HG13_ Herzgen, Jung & Lorkowski1 Java Programmierung BlueJ Workshop.
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
Delphi Chars und Strings
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Folie 1 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel LABORPRAKTIKUM- SOMMERSEMESTER 2005 „Umsetzung von Pattern“ Muster:
Objektorientierte Programmierung (OOP)
Abstrakte Klassen und das Interface-Konzept
Tutorium Software-Engineering SS14 Florian Manghofer.
C++ FÜR cOMPUTERSPIELENTWICKLER
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Konstruktoren.
Die Klasse Vielfrass in Java
verkettete Strukturen
Ein schematischer Kirschbaum in Java
Einführung in die Programmierung mit Java
Grundkurs Informatik 11-13
1. Die rekursive Datenstruktur Liste 1
Grundkurs Informatik 11-13
 Präsentation transkript:

Fliegengewicht Ein objektbasiertes Strukturmuster

FLIEGENGEWICHT - Objektbasiertes Strukturmuster - Zweck: - effektive Nutzung von Objekten kleinster Granularität --> dadurch Senkung von Speicherkosten - extrahieren kontextabhängiger Informationen Verringerung der absoluten Anzahl von Objektinstanzen - Vergl.: Kompositionsmuster Baumstruktur von kleineren Objekten

FLIEGENGEWICHT - intrinsischer / extrinsischer Zustand: - intrinsischer Zustand wird im Fliegengewicht gespeichert - er besteht ausschließlich aus der vom Kontext des Fliegen- gewichtes unabhängigen Information --> dadurch wird Fliegengewicht gemeinsam nutzbar - extrinsischer Zustand abhängig vom Kontext des Fliegen- gewichts und wechselt mit ihm - Fliegengewicht wird durch Klientobjekte mit benötigtem extrinsischem Zustand versorgt

FLIEGENGEWICHT - Beispiel: Dokumenteditor - intrinsischer Zustand: Zeichencode eines jeweiligen Buchstabens im Alphabet - extrinsischer Zustand: graphische Positionierung, typographischer Stil ausgehend von den Layout-Algorithmen des Editors --> jedes Auftreten eines Zeichens zu einem bestimmten Kontext verweist auf eine gemeinsam genutzte Menge von Fliegen- gewichtobjekten

FLIEGENGEWICHT - Struktur: Fliegengewicht (Klasse) deklariert Schnittstelle, durch die Fliegengewichte einen extrinsischen Zustand erhalten und verarbeiten können KonkretesFliegengewicht (Zeichen) implementiert die Fliegengewicht-Schnittstelle und hält den intrinsischen Zustand FliegengewichtFabrik erzeugt und verwaltet Fliegengewicht-Objekte und stellt sicher, daß Fliegengewichte auf korrekte Weise gemeinsam genutzt werden Klient verwaltet eine Referenz auf Fliegengewichte und berechnet/speichert deren extrinsischen Zustand

FLIEGENGEWICHT - Implementierung: Fliegengewicht GLYPH – Schnittstelle für extrinsischen Zustand (als Verbindung von Zeichen und Formatierung) class Glyph { public: virtual void Zeichne (Fenster*,GlyphKontext&); virtual void SetzeZeichensatz (Zeichensatz*,GlyphKontext&); … } Glyphkontext – Abbildung zwischen Glyphobjekt und Zeichensatz (wird durch Glyph aktualisiert ; liefert Zeichensatz eines Glyphobjektes) class GlyphKontext { public: GlyphKontext(); … } Bsp.: GlyphKontext glyphKontext; glyphKontext.SetzeZeichensatz(timesKursiv 12,6); 6 ist dann der Index im BBaum, der auf den Zeichensatz timesKursiv12 verweist (konkretes) Fliegengewicht ZEICHEN – speichert Zeichencode class Zeichen { public: Zeichen(char); … }

FLIEGENGEWICHT - Implementierung: FliegengewichtFabrik – erzeugt Glyphobjekte (sichert gemeinsame Nutzung von Zeichen-Objekten) class GlyphFabrik { public: GlyphFabrik (); virtual Zeichen* ErzeugeZeichen (char); … } ErzeugeZeichen sucht ein Zeichen aus einem Array und gibt das entsprechende Glyphobjekt zurück. Falls dieses Zeichen nicht existiert wird das Glyphobjekt erzeugt, im Array abgelegt und zurückgegeben.

FLIEGENGEWICHT - Einsatzbedingungen: - eine Anwendung verwendet eine große Menge von Objekten - Speicherkosten allein aufgrund der Anzahl von Objekten groß - Großteil des Objektzustands kann extrinsisch gemacht (in den Kontext verlagert) werden - viele Gruppen von Objekten können durch relativ wenige gemeinsam genutzte Objekte ersetzt werden

FLIEGENGEWICHT - Konsequenzen: - mögliche Laufzeitkosten durch Transferieren, Aufsuchen oder Berechnen des extrinsischen Zustands - Speichergewinne abhängig von: + Reduzierung der Gesamtmenge an Objekten aufgrund möglicher gemeinsamer Nutzung + Größe des intrinsischen Zustands pro Objekt + Speicherung oder Berechnung des extrinsischen Zustands - Speicherplatz wird eingespart: + je mehr Fliegengewichte gemeinsam genutzt werden + wenn Objekte einen großen Teil sowohl intrinsischen als auch extrinsischen Zustands verwenden + wenn der extrinsische Zustand berechnet werden kann und nicht gespeichert werden muß

FLIEGENGEWICHT - bekannte Verwendungen: - Konzept der Fliegengewichtobjekte erstmals in InterViews 3.0 beschrieben und als Entwurfstechnik untersucht --> Entwicklung des Dokumenteditors Doc + Doc verwendete Glyphobjekte zur Representation jedes einzelnen Zeichens im Dokument + Erzeugung eines Glyphexemplars für jedes Zeichen eines bestimmten Stils, der seine graphischen Attribute definiert somit: intrinsisch = Zeichencode und Stilinformation (Index aus Stiltabelle) extrinsisch = nur die Position (dadurch hohe Geschwindigkeit) --> in einem typischen Anwendungsfall mussten für ein aus Zeichen bestehendes Dokument lediglich 480 Zeichenobjekte alloziert werden