25.04.2014 Aufrufe

Übersicht Objektorientierte System - Lab4Inf

Übersicht Objektorientierte System - Lab4Inf

Übersicht Objektorientierte System - Lab4Inf

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!