Ãbersicht Objektorientierte System - Lab4Inf
Ãbersicht Objektorientierte System - Lab4Inf
Ãbersicht Objektorientierte System - Lab4Inf
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Objektorientierte</strong><br />
<strong>System</strong>e<br />
Einführung: Was ist Objektorientierung?<br />
Prof. Dr. Nikolaus Wulff
Agenda<br />
• Was ist Objektorientierung?<br />
• <strong>Objektorientierte</strong> Modelbildung<br />
• Komponenten<br />
• Verteilte <strong>System</strong>e<br />
• Ein Blick in die Zukunft<br />
Prof. Dr. Nikolaus Wulff 2
Begriffsbestimmung<br />
• Objektorientierung ist der Ansatz die<br />
Abstraktionen und Begriffe des Problembereiches<br />
direkt in entsprechende Konstrukte des<br />
Lösungsbereiches zu überführen.<br />
Aktenkoffer<br />
Vorlagemappe<br />
Terminplaner<br />
Konto<br />
Kurs<br />
Brief<br />
Stapel<br />
Vertrag<br />
Währung<br />
Eingangskorb<br />
Aktenordner<br />
Notiz<br />
Rechner<br />
Kalkulation<br />
Dokument<br />
Prof. Dr. Nikolaus Wulff 3
Objektorientierung<br />
• Alan Kay, einer der Väter der Objektorientierung,<br />
formulierte Ende der sechziger Jahre<br />
seine „biologische Analogie“:<br />
»...the ideal computer would function like a living<br />
organism; each „cell“ would behave in accord with<br />
others to accomplish an end goal but would also be<br />
able to function autonomously. „Cells“ could also<br />
regroup themselves in order to attack another<br />
problem or handle another function... «<br />
Prof. Dr. Nikolaus Wulff 4
Alan Kay‘s fünf OO-Regeln<br />
1. Alles ist ein Objekt.<br />
2. Ein Programm ist eine Ansammlung von Objekten, die<br />
sich gegenseitig Nachrichten senden, um zu sagen was zu<br />
tun ist.<br />
3. Jedes Objekt hat seinen eigenen Speicherbereich, der<br />
wiederum aus anderen Objekten besteht.<br />
4. Jedes Objekt hat einen Typ.<br />
5. Alle Objekte des gleichen Typ können die selben<br />
Nachrichten bekommen und verstehen.<br />
Prof. Dr. Nikolaus Wulff 5
Definition der Objektorientierung<br />
• <strong>Objektorientierte</strong> Programmierung ist eine Implementierungsmethode,<br />
bei der Programme als kooperierende<br />
Ansammlungen von Objekten angeordnet sind.<br />
• Jedes Objekt stellt eine Instanz einer Klasse dar, alle<br />
Klassen sind Elemente einer Klassenhierarchie, die<br />
durch Vererbungsbeziehungen gekennzeichnet sind.<br />
Grady Booch (1994)<br />
Prof. Dr. Nikolaus Wulff 6
Gegenstand und Abstraktion<br />
Typ Name<br />
Schnittstelle<br />
Light<br />
on()<br />
off()<br />
dim()<br />
brighten()<br />
Light lt = new Light(); // Objekt Erzeugung<br />
lt.on();<br />
// Objekt verwenden<br />
Prof. Dr. Nikolaus Wulff 7
Software und Modellbildung<br />
• Wir bilden Modelle damit wir lernen das zu<br />
entwickelnde <strong>System</strong> besser zu verstehen.<br />
• Ein Modell ist eine Vereinfachung der Realität.<br />
• Als Notation hat sich hierzu die Unified Modeling<br />
Language (UML) etabliert.<br />
Prof. Dr. Nikolaus Wulff 8
Modellierung, wozu?<br />
• Wir können komplexen <strong>System</strong>e in ihrer<br />
Gesamtheit nicht überschauen und verstehen,<br />
daher bilden wir vereinfachende Modelle.<br />
• Jedes komplexe <strong>System</strong> setzt sich aus kleineren<br />
funktionalen Subsystemen zusammen, die wir evt.<br />
getrennt modellieren und bauen können.<br />
Prof. Dr. Nikolaus Wulff 9
Eigenschaften komplexer <strong>System</strong>e<br />
1) Komplexität nimmt die Form einer Hierarchie an.<br />
– Komplexe <strong>System</strong>e bestehen aus einem Verband von<br />
Subsystemen, die ihrerseits aus eigene Subsystemen bestehen,<br />
bis die unterste Ebene elementarer Komponenten erreicht ist.<br />
– Häufig ist diese hierarchische Struktur zerlegbar in seine<br />
einzelnen Subsysteme, die einzeln verstanden werden<br />
können.<br />
2) Die Wahl der elementaren Komponenten, die als<br />
Primitive angesehen werden, ist relativ willkürlich und<br />
hängt vom Ermessen des Beobachters ab.<br />
– Was für den einen elementar ist, ist für den anderen bereits<br />
eine hohe Abstraktionsebene.<br />
Prof. Dr. Nikolaus Wulff 10
Komplexe <strong>System</strong>e (2)<br />
3) Die Beziehungen innerhalb einer Komponente sind im<br />
allgemeinen stärker als die Beziehungen zwischen den<br />
Komponenten.<br />
– Die hochfrequente Dynamik der Komponenten – dies betrifft<br />
die innere Struktur der Komponente – lässt sich trennen von<br />
der niederfrequenten Dynamik – dies betrifft die Beziehungen<br />
zwischen den Komponenten.<br />
4) Hierarchische <strong>System</strong>e setzen sich typischerweise aus<br />
nur wenigen Arten von Subsystemen zusammen, in<br />
zahlreichen Kombinationen und Anordnungen.<br />
– Beispiel: DNA besteht aus nur vier Grundbausteinen.<br />
Prof. Dr. Nikolaus Wulff 11
Komplexe <strong>System</strong>e (3)<br />
5) Ein komplexes <strong>System</strong>, das funktioniert, hat sich mit<br />
Sicherheit aus einem einfachen <strong>System</strong> entwickelt, das<br />
funktionierte ...<br />
– Evolutionäre Entwicklung von <strong>System</strong>en, komplexe <strong>System</strong>e<br />
entwickeln sich aus schon vorher existierenden<br />
Zwischenformen.<br />
– Ein komplexes <strong>System</strong> lässt sich nicht in einem Wurf<br />
komplett neu entwickeln ...<br />
Prof. Dr. Nikolaus Wulff 12
Objektkomposition<br />
Interne Details<br />
Status des Objekts<br />
Schnittstelle<br />
Car<br />
engine : V6Cylinder<br />
wheel[4] : GoodYear<br />
door[5] : Door<br />
start()<br />
drive()<br />
stop()<br />
• Objektkomposition: Erzeuge neue Objekte durch<br />
Kombination bestehender Objekte.<br />
Prof. Dr. Nikolaus Wulff 13
divede et impera<br />
• Dieser Zusammenbau von OO-<strong>System</strong>en per<br />
Komposition aus Subsystemen ermöglicht eine<br />
„teile und herrsche“ Strategie.<br />
• OO-<strong>System</strong> bilden zur Laufzeit eine komplexe<br />
hierarchische Struktur von Objekten.<br />
• Seine gegenwärtige Ausprägung findet dieser<br />
Ansatz in den Komponententechnologien .Net und<br />
J2EE.<br />
Prof. Dr. Nikolaus Wulff 14
Programmiersprachen<br />
Assembler<br />
Cobol<br />
Fortran<br />
BCPL<br />
PL/1<br />
Simula<br />
Algol<br />
Pascal<br />
Lisp<br />
C<br />
C++<br />
beta<br />
Eiffel<br />
Smalltalk-72 CLU<br />
Smalltalk-76<br />
Smalltalk<br />
Ada<br />
Turbo-Pascal<br />
Modula2<br />
Oberon<br />
Lisp<br />
Flavors<br />
Lisp<br />
CLOS<br />
C#<br />
Java<br />
Modula3<br />
Prof. Dr. Nikolaus Wulff 15
Evolution der Programmierung<br />
• Die Programmierung hat eine ähnliche<br />
Entwicklung durchgemacht, wie der Fortschritt in<br />
der Elektrotechnik:<br />
• freie Verdrahtung<br />
• Platinen<br />
• Transistoren<br />
• IC‘s<br />
• Module<br />
• Assembler<br />
• Klassische Sprachen<br />
• Klassen & Objekte<br />
• Komponenten<br />
• Services und Agenten<br />
Prof. Dr. Nikolaus Wulff 16
UML als Beschreibung<br />
• Die Unified Modelling Language (UML) ist das Analogon<br />
zu den Schaltbildern.<br />
• Softwaresysteme besitzen meist keine<br />
mathematisch/physikalischen Gesetzmäßigkeiten, wie z.B.<br />
das Ohmsches Gesetz, die Knoten- und Maschenregel, etc.<br />
• Bei Softwaresystemen müssen diese daher immer künstlich<br />
erschlossen und definiert werden.<br />
Prof. Dr. Nikolaus Wulff 17
Beispiel: Analoge Subtraktion<br />
Komponente<br />
Mathe.<br />
Beschreibung<br />
Prof. Dr. Nikolaus Wulff 18
Das Innere der Komponente<br />
Design Pattern<br />
Prof. Dr. Nikolaus Wulff 19
Top Down OO-Modelbildung<br />
• Ermittlung der Szenarien / Use Cases<br />
• Ableiten der zentralen Schnittstellen und<br />
Highlevel Abstraktionen.<br />
• Überführung in Module und Komponenten<br />
• Entwicklung der Komponenten mit Design<br />
Mustern.<br />
• Implementierung und Testen der Klassen.<br />
• Bottom Up Zusammenbau der Komponenten.<br />
Prof. Dr. Nikolaus Wulff 20
Use Case Diagramm<br />
<strong>System</strong>grenze<br />
ext. <strong>System</strong> als<br />
Akteur modelliert<br />
Akteure<br />
«include»<br />
«uses»<br />
«include»<br />
«uses»<br />
Prof. Dr. Nikolaus Wulff 21
Design Muster<br />
• Mitte der 90er Jahre wurden einige erprobte<br />
„Gesetzmäßigkeiten“ als Design Muster beschrieben.<br />
• Sie stellen allgemeine immer wieder vorkommende<br />
Lösungsmuster dar.<br />
Prof. Dr. Nikolaus Wulff 22
Das Composite Pattern<br />
• Ein Composite bildet<br />
eine Teile-Ganzes<br />
Hierarchie bestehend<br />
aus Knoten und<br />
Blättern.<br />
• Der Client merkt dies<br />
im Prinzip nicht.<br />
Prof. Dr. Nikolaus Wulff 23
Anwendung des Composite Pattern<br />
Der augenblickliche Wert des Depot wird rekursiv über<br />
alle Konten ermittelt.<br />
Prof. Dr. Nikolaus Wulff 24
Flexibilität des Composite Patterns<br />
Die Erweiterung des Modells um eine neue Wertpapierart ist einfach.<br />
Prof. Dr. Nikolaus Wulff 25
Muster und Komponenten<br />
• Die nächst höhere Stufe der OO-Entwicklung sind<br />
die Komponenten.<br />
• Komponenten kommen in größeren<br />
architektonischen Strukturen vor.<br />
• Meistens sind sie ihrerseits aus kleineren<br />
Subsystemen mit Hilfe von Design Mustern<br />
gebaut.<br />
• Das Zusammenspiel von Komponenten wird dann<br />
mit Architektur Mustern beschrieben.<br />
Prof. Dr. Nikolaus Wulff 26
Zusammenfassung<br />
• Software ist inhärent komplex.<br />
• Ihre Komplexität überschreitet oft die intellektuelle<br />
Kapazität eines einzelnen Menschen.<br />
• Die Aufgabe des Design(teams) ist es, die Illusion der<br />
Einfachheit zu vermitteln.<br />
• Komplexität nimmt oft die Form einer Hierarchie an.<br />
• Komplexe <strong>System</strong>e entstehen aus stabileren, kleineren<br />
Zwischenformen.<br />
• Objektorientierung ist die Methode zur Strukturierung<br />
derartiger Softwarelösungen.<br />
Prof. Dr. Nikolaus Wulff 27