• Keine Ergebnisse gefunden

Objektorientierte Modellierung

N/A
N/A
Protected

Academic year: 2022

Aktie "Objektorientierte Modellierung"

Copied!
32
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Objektorientierte Datenbanken

Beim vorigen Mal:

Anfragesprachen: SQL (kurz)

Mehrbenutzerbetrieb und Sperren

Transaktionen

Anbindung an Programmiersprachen

Probleme der relationalen Datenbanktechnologie

 Heute:

Objektorientierte Modellierung

Ralf Möller, FH-Wedel

(2)

Probleme relationaler Datenbanktechnologie

Zwar methodisch saubere aber schwierig zu lernende manuelle Umsetzung des Entwurfsmodells (ERM) in das Implementierungsmodell

Zersplitterung von „zusammengehörigen Daten“ durch Normalisierung

Joins bei navigierendem Zugriff sehr aufwendig

Probleme bei Änderung des Datenmodells wegen fehlender Kapselung

Impedance Mismatch

Sprache für Integritätsbedingungen meist schwach (hier nicht vertieft)

(3)

„Zersplitterung“: Pointierte Darstellung

 Relationale Modellierung bedingt folgende Sicht:

 Bevor ein Auto in der Garage abgestellt werden kann, muß es in seine tausend Einzelteile zerlegt und in den dafür vorgesehenen Fächern ablegt

werden. Bevor es wieder benutzt werden kann, ist ein komplizierter Zusammenbau erforderlich.

(4)

Impedance Mismatch

 Datenmodellierungsform in Programmiersprachen paßt nicht zu Form in Datenbanken

 Programmiersprachen:

Record/Tupelorientiert

Mit hoher Frequenz einfache Operationen durchführen

 Datenbanksysteme: Mengenorientiert

Mit niedriger Frequenz komplexe Operationen durchführen

[F. Matthes, J.W. Schmidt]

(5)

Objektorientierte Modellierung (1)

Was ist ein Objekt?

Zusammensetzung von Daten und Operationen

Teile der Zusammensetzung sind durch Attribute gekennzeichnet

Objekte haben einen Zustand

Zugriff nur über wohldefinierte Schnittstellen (Kapselung)

Objektspezifische Operatoren

Objekte bekommen automatisch eine Identifikation (OID)

Orthogonalitätsprinzip

Zusammengesetzte Daten wie Elementardaten behandeln soweit sinnvoll

Teile (Attributwerte) können wieder Objekte sein

(6)

Objektorientierte Modellierung (2)

Setze- und Erfragefunktionen für Attributwerte als Spezialfall objektspezifischer Operationen

Aktivierung von Operationen durch Nachrichten

Software-Engineering-Prinzipien

Kapselungsprinzip: Wer darf welche Attribute wo sehen/ändern?

Wer darf welche Nachricht an wen senden?

Interne Sicht (Attribute) vs. Externe Sicht (Nachrichten)

Externe Sicht bedingt höheren Ressourcenverbrauch

Festlegung der Attribute und Operatoren nicht für genau ein Objekt, sondern für eine Menge von Objekten gleicher Art

Eine solche Menge von Objekten gleicher Art heißt Klasse (vgl. Entity in ERM)

(7)

Unified Modeling Language (UML)

 Der UML-Teil dieser Vorlesung enthält Material von Eckhardt Holz, Humboldt-Universität Berlin

 Als detaillierter Referenz sei auch

„The Unified Modeling Language – Reference Manual“ empfohlen

(8)

UML Konzepte

Objekte / Instanzen einer Klasse

Klassen beschreiben die statische Struktur von Objekten / Instanzen

Klassen sind gekennzeichnet durch:

Name (aus dem Vokabular der Problemdomäne gewählt)

Attribute (beschreiben die Struktur der Instanzen einer Klasse)

Operationen

(beschreiben das Verhalten der Instanzen einer Klasse)

Objekte erzeugen: Instantiieren

Automatische Vergabe einer OID

(9)

Statische Strukturdiagramme (1)

(10)

Basis-Datentypen

 Beschreibung des Wertebereich von Attributen

Integer, short, ...

Real

String

...

(11)

Funktionalität ohne Struktur: Interfaces

 Nur Beschreibung der Nachrichten die an Objekte gesandt werden können, die das Interface

implementieren (d.h. des Protokolls, das die Objekte unterstützen)

 Keine Beschreibung der Struktur der Objekte

 Auswahl der konkreten Struktur nach

pragmatischen Gesichtspunkten zur Erzeugungszeit einer Instanz

(12)

Statische Strukturdiagramme (2)

(13)

Relationen: Graphische Notation

Komposition

Vgl. Relationships in ERM

(14)

Relationen: Beispiel für Komposition

(15)

Relationen in Strukturdiagrammen:

Bedeutung

 Assoziationen, Aggregationen und Komposition modellieren auf Klassenebene Beziehungen

zwischen Instanzen (der beteiligten Klassen)

 Generalisierungen modellieren Beziehungen zwischen Klassen (d.h. Mengen von Instanzen)

 Abhängigkeiten haben keine wohldefinierte Semantik

(16)

Relationen: detailliertere Beschreibung

 Multiplizität gibt an, wieviel Objekte an der Relation beteiligt sind

 Navigierbarkeit beschränkt den bidirektionalen Charakter von Relationen

 Constraints beschränken den Gültigkeitsbereich von Relationen

 Rollennamen beschreiben die Endpunkte der Relation

(17)

Relationen: Multiplizitäten

(18)

Klassen und Objektdiagramme (Beispiel)

Erbringt

Erbringt

Kostet

(19)

Multiplizität

Jedes Element von Klasse A steht mit mindestens i Elementen der Klasse B in Beziehung

... und mit maximal j vielen Klasse-B-Elementen

Analoges gilt für das Intervall k..l

Multiplizitätsangabe ist analog zur Funktionalitätsangabe im ER-Modell

Nicht zur (min,max)-Angabe: Vorsicht!

+op() +Att1 +Att2 KlasseA

1 1..*

Assoziation

i..j

k..l +op()

+Att1 +Att2 KlasseB

(20)

Klassen und Assoziationen

+Notenschnitt() : float

+SummeWochenstunden() : short +MatrNr : int

+Name : String +Semester : int

Studenten

+AnzHörer() : int +DurchfallQuote() : float

+VorlNr : int +Titel : String

+SWS : int Vorlesungen +Hörer

1..*

*

+Nachfolger * hören *

voraussetzen

(21)

Aggregation

+Notenschnitt() : float

+SummeWochenstunden() : short +MatrNr : int

+Name : String +Semester : int

Studenten

+verschieben() +Note : Decimal

+Datum : Date Prüfungen +Prüfling

1 *

+Prüfungsstoff 1

*

*

+Prüfer

...

1

...

absolviert

(22)

Begrenzungsflächenmodellierung von Polyedern

+Gewicht() : float +Volumen() : float

+skalieren() +verschieben()

+rotieren() +PolyID : int

+...

Polyeder

+Umfang() : float +Volumen() : float

+FlächenID : int +...

Flächen

+Länge() : float +KantenID : int

+...

Kanten

+rotieren() +verschieben()

+skalieren() +X : float +Y : float +Z : float Punkte

1 1..* * * * *

Hülle Begrenzung StartEnde

4..* 2 3..* 3..* 2

1

(23)

+Notenschnitt() : float

+SummeWochenstunden() : short +MatrNr : int

+Name : String +Semester : int

Studenten

+AnzHörer() : int +DurchfallQuote() : float

+VorlNr : int +Titel : String

+SWS : int Vorlesungen +Hörer

1..*

*

+verschieben() +Note : Decimal

+Datum : Date Prüfungen +Prüfling 1

*

+Prüfungsstoff

* 1

+Notenschnitt() : float +Gehalt() : short +Lehrstundenzahl() : short

+Rang : String Professoren

* 1 +Prüfer

*

+Dozent 1

+Gehalt() : short +Fachgebiet : String

Assistenten

*

+Boss 1

+Gehalt() : short +PersNr : int +Name : String

Angestellte

+Nachfolger * hören *

voraussetzen

gelesenVon

arbeitenFür

(24)

Mehrstellige Relationen

(25)

Generalisierung

 Generalisierung ist eine Relation zwischen einer Superklasse und ihren Subklassen.

 Zwei Mechanismen:

Generalisierung

Spezialisierung

 Gemeinsame Attribute, Operationen und

Relationen werden auf dem höchsten anwendbaren Hierarchieniveau gezeigt

 Generalisierungen können Namen haben (!)

(26)

Generalisierung (Beispiel)

(27)

Abstrakte Klassen

 Dienen auf Modellierungsebene zur Beschreibung gemeinsamer Eigenschaften (Attribute und

Operationen)

 Werden nicht instantiiert

(28)

Generalisierung: Constraints

 overlapping, disjoint

 complete, incomplete

(29)

Generalisierung und Vererbung

 Attribute

Vererbung „nach unten“

Sichtbarkeit steuerbar (public, protected, private)

 Operationen

Vererbung „nach unten“

Dynamisches Binden bei Operationen mit gleichem Namen in Unterklasssen

speziellste Operation (zuerst) anwenden

(30)

Assoziationen: Constraints

 Subset

 ...

(31)

Zusammenfassung, Kernpunkte

 UML-Objektbegriff, statische Struktur

 Objektorientierte Modellierung auf Entwurfsebene

Klassen und Instanzen

Attribute (inkl. Sichtbarkeit)

Methoden

Klassenbeziehungen

Generalisierung, Zerlegung

Auf Klassenebene beschriebene Instanzenbeziehungen

Relationen: Komposition, Aggregate, Assoziationen

(32)

Was kommt beim nächsten Mal?

 Objektorientierte Modellierung, Teil 2

 Umsetzung in Implementierungsmodell: Java

Referenzen

ÄHNLICHE DOKUMENTE

15 »Es ist aber nichts Ungerechtes an den größeren Vorteilen weniger, falls es dadurch auch den nicht so Begünstigten besser geht.« Dieser Grundsatz sowie der einer formalen

beschreiben die Eigenschaften einer Klasse beschreiben das Verhalten einer Klasse Beschreiben das Verhalten einer Klasse sind die konkreten Ausprägungen von In- stanz-variablen.

Im ersten Teil des Rechtecks steht der Name der Klasse, im zweiten Teil sind die Attribute/Instanzvariablen aufgeführt, die ein Objekt der Klasse beschreiben. Von jedem

Im ersten Teil des Rechtecks steht der Name der Klasse, im zweiten Teil sind die Attribute/Instanzva- riablen aufgeführt, die ein Objekt der Klasse beschreiben. Von jedem

Endliche Mengen kann man, sofern sie nicht zuviele Elemente enthalten, durch Aufzählung ihrer Elemente angeben, üblicher- weise in geschweiften Klammern wie etwa {3, 7, 2, 4}.. Sie

Wenn ihr diese Methode in der Klasse eines Objektes aufruft, liefert diese euch eine Liste der Objekte zurück, welche sich grafisch mit eurem überschneiden (hier reicht bereits

Pr ¨adiktion durch zeitliche Modellierung der Bewegung Nachf ¨uhrung der Kamera bei großen Bewegungsradien der Objekte: ”Halte Objekt m ¨oglichst im

Noch mehr, diese daß man nicht etliche blumenliebhaber rathen an jähr aufeinander gleiche art von blumzwiebeln in die nemliche erde pflanze, fondern diefelbe untereinander