Aggregation und Komposition

Werbung
Zu Beginn eine kurze
Wiederholung und Vertiefung
der Themen der letzten Stunde:
Assoziation
Aggregation, Komposition,
Generalisierung
1
Neue Themen:
Objekte und Datenbanken
Abbildung von Objekten auf
Tabellen
Praxis: ArcView
2
Assoziation von Klassen
Multiplizität
Name
Kante
Grundstück
3..*
begrenzt
2
-Besitzer : Person
+getFläche() : Zahl
+getBesitzer() : Person
3
Aggregation und Komposition
Ganzes
Ganzes
1..1
n
Teil
Teil
4
Generalisierung und
Spezialisierung
GeomFigur
Dreieck
Kreis
Rechteck
5
Anwendungsregeln: Assoziation
versus Aggregation
• Eine Aggregation ist ein Spezialfall der Assoziation. Er
liegt dann vor, wenn mindestens eine der folgenden
Bedingungen erfüllt ist:
• die umgangssprachliche Verwendung der Bezeichnungen
„Bestandteil“, „Teil“ - „Ganzes“ ist angemessen
• Operationen werden sinnvollerweise automatisch auf alle Teile
eines Ganzen angewendet (anzeigen)
• es liegt eine systematische Asymmetrie vor, die eine Klasse
der anderen unterordnet
Übung: 1.) Wende diese Regeln auf das Beispiel der vorigen Stunde an.
2.) Lassen sich Grundstücke als Aggregationen von Kanten und
Knoten modellieren?
6
Anwendungsregeln (II):
Aggregation und Komposition
• Eine Komposition ist eine spezielle Aggregation, bei der die
Existenz des Teils von der Existenz des Ganzen abhängig ist.
• Die Anwendung ist insbesondere dann angebracht, wenn die
Löschung des Ganzen die automatische Löschung aller Teile
hervorrufen soll
• Wenn ein Teil zu mehreren Ganzen gehören kann, liegt keine
Komposition vor.
Übung: Diskutiere den Unterschied zwischen Komposition und
Aggregation an den vorausgegangenen Beispielen.
7
Aggregation und Generalisierung
Beachte:
• Aggregation und Generalisierung bilden Hierarchien
aber:
• Aggregation bezieht Objekte aufeinander
• Generalisierung bezieht Klassen aufeinander
• beachte den systematischen Unterschied zwischen
folgenden Beziehungen:
Gemeinde - Kreis
Rechteck - Figur
(Aggregation zwischen 2 Objekten)
(Generalisierung desselben Objekts)
8
Ober- und Unterklassen
GeomFigur
-Mittelpunkt : Punkt
-sichtbar : Boolean
+anzeigen()
+entfernen()
+verschieben()
Dreieck
-a : Zahl
-b : Zahl
-c : Zahl
+anzeigen()
+entfernen()
Kreis
-radius : Zahl
anzeigen()
entfernen()
Rechteck
-a : Zahl
-b : Zahl
anzeigen()
entfernen()
Eine Oberklasse repräsentiert ein
Konzept. Eine Unterklasse
spezialisiert dieses Konzept,
indem sie
• neue Attribute definiert
• neue Methoden definiert
• und dabei Attribute oder
Methoden der Oberklasse
explizit verwendet oder
überschreibt.
• Unterklassen unterscheiden sich
systematisch voneinander.
• Attribute und Methoden einer
Klasse bilden jeweils ein in sich
geschlossenes Konzept.
Übung: Diskutieren Sie
a) obiges Beispiel
b) eine mögliche Zerlegung
der Klasse Punkt in Ober- und Unterklasse
9
Von Objekten zu Tabellen
Grundstück
-Besitzer : Person
-Fläche : Zahl
+getFläche() : Zahl
+getBesitzer() : Person
n
Land
-Bezeichnung : Text
-Einwohner : Zahl
-Fläche : Zahl
+getBezeichnung() : Name
+getEinwohner() : Zahl
+getFläche() : Zahl
Kreis
1..1
n
-Bezeichnung : Text
-Einwohner : Zahl
-Fläche : Zahl
+getBezeichnung() : Name
+getEinwohner() : Zahl
+getFläche() : Zahl
1..1
Gemeinde
1..1
n
-Bezeichnung : Text
-Einwohner : Zahl
-Fläche : Zahl
+getBezeichnung() : Name
+getEinwohner() : Zahl
+getFläche() : Zahl
10
Datenbanken
typisierte Attribute
• Eine relationale
Datenbank besteht aus
einer oder mehreren
Tabellen
• Die Spalten einer
Tabelle heißen AttributeTupel
und sind typisiert
• Die Zeilen einer Tabelle
heißen Tupel
• Anfragen:
SELECT Attribut(e)
FROM Tabelle(n)
WHERE Bedingung
Beispiel:
SELECT Einwohner, Fläche
FROM Gemeinde
WHERE Bezeichnung = Alfter
11
Abbildungsvorschriften: Objekte
• Jeder Klasse entspricht
(mindestens) eine Tabelle
• Der Name der Tabelle
entspricht dem Namen der
Klasse
• Jedem Objektattribut
entspricht ein Tabellenattribut
• Hinzukommt in der Regel
eine zusätzliches
Tabellenattribut „Identifier“,
welches die Identität des
Objekts repräsentiert
• Methoden werden nicht
berücksichtigt
Gemeinde
-Bezeichnung : Text
-Einwohner : Zahl
-Fläche : Zahl
+getBezeichnung() : Name
+getEinwohner() : Zahl
+getFläche() : Zahl
GEMEINDE(
Bezeichnung: Text,
Einwohner: Zahl,
Fläche: Zahl)
12
Abbildungsvorschriften für
Assoziationen - allgemeiner Fall
Allgemeiner Fall
• Jede Beziehung wird durch eine eigene Relation
repräsentiert
• Der Name der Beziehung wird zum Namen der
Relation.
• Die Attribute der Beziehung werden aus den
Identifiern der beteiligten Klassen gebildet
• Auf diese Weise können Beziehungen zwischen zwei
oder mehr Klassen gebildet und zusätzlich mit
Attributen versehen werden.
• Beispiel folgt unten
13
Spezialfälle:
1:n-Beziehungen, insb. Aggregationen)
statt:
KREIS(
KreisId,
KreisBezeichnung,
KreisEinwohner,
KreisFläche)
GEMEINDE(
GemeindeId,
GemeindeBezeichnung,
GemeindeEinwohner,
GemeindeFläche)
AGGKREISGEMEINDE(
GemeindeId,
KreisId)
geht es auch so:
KREIS(
KreisId,
KreisBezeichnung,
KreisEinwohner,
KreisFläche)
GEMEINDE(
GemeindeId,
GemeindeBezeichnung,
GemeindeEinwohner,
GemeindeFläche
KreisId)
14
Land
-Bezeichnung : Text
-Einwohner : Zahl
-Fläche : Zahl
+getBezeichnung() : Name
+getEinwohner() : Zahl
+getFläche() : Zahl
Kreis
-Bezeichnung : Text
-Einwohner : Zahl
-Fläche : Zahl
+getBezeichnung() : Name
+getEinwohner() : Zahl
+getFläche() : Zahl
Gemeinde
-Bezeichnung : Text
-Einwohner : Zahl
-Fläche : Zahl
+getBezeichnung() : Name
+getEinwohner() : Zahl
+getFläche() : Zahl
Anfragen
KREIS(
KreisId,
KreisBezeichnung,
KreisEinwohner,
KreisFläche)
GEMEINDE(
GemeindeId,
GemeindeBezeichnung,
GemeindeEinwohner,
GemeindeFläche
KreisId)
Die Namen der Gemeinden
in Rhein-Sieg mit mehr als
50 000 Einwohnern
SELECT
GemeindeBezeichung
FROM GEMEINDE
WHERE
GemeindeEinwohner
> 50 000
AND
GEMEINDE.KreisId
= KREIS.Kreisid
AND
KreisBezeichnung =
„Rhein-Sieg“
15
Regel zur Abbildung von 1:nBeziehung auf Tabellen
• Die Beziehung wird der Relation, die die Teilklasse (n-Klasse)
repräsentiert, als weiteres Attribut hinzugefügt.
• Beispiel:
Der Name des (übergeordneten) Kreises erscheint als Attribut
der (untergeordneten) Gemeinde
• Vorteil: Einsparung einer zusätzlichen Tabelle
• Integritätsannahme: Existenz des zugeordneten Tupels
• Fehlerfall: Ein „Zeiger“ auf ein Objekt, der ins Leere führt
(„Dangling Pointer“)
ID3
ID17
ID3
16
Regel zur Abbildung der
Generalisierung auf Tabellen
• Beachte: eine Generalisierung ist ein 1:1-Beziehung
• Option 1:
• Ergänze die Oberklasse und alle Unterklassen durch ein
zusätzliches Attribut ObjektID, welches die Verknüpfung
zwischen Ober- und Unterklasse realisiert
• Option 2:
• Fasse Ober- und Unterklasse in einer Tabelle zusammen
17
Option 1:
GEOMFIGUR(
Mittelpunkt,Sichtbar,
ObjektId)
DREIECK(
a,b,c,
ObjektId)
GeomFigur
-Mittelpunkt : Punkt
-sichtbar : Boolean
+anzeigen()
+entfernen()
+verschieben()
Dreieck
-a : Zahl
-b : Zahl
-c : Zahl
+anzeigen()
+entfernen()
Kreis
-radius : Zahl
anzeigen()
entfernen()
Option 2:
DREIECK(
Mittelpunkt,Sichtbar,
a,b,c)
Rechteck
-a : Zahl
-b : Zahl
anzeigen()
entfernen()
18
Zusätzliche Überlegungen
führen gelegentlich
zu noch
einfacheren Tabellenstrukturen
Beispiel Landkarte
19
Knoten
2..*
2
1
Kante
begrenzt
Grundstück
3..*
begrenzt
2
-Besitzer : Person
+getFläche() : Zahl
+getBesitzer() : Person
Grundstücke:
Geometrie
1
Punkt
-X : Zahl
-Y : Zahl
kleine
Änderung
GRUNDSTUECK(Id, Besitzer)
KANTE(Id,Grundstueck1, Grundstueck2, Knoten1, Knoten2)
KNOTEN(Id, X, Y)
Übung: Diskutieren Sie, inwiefern dieses Schema das UMLDiagramm korrekt wiedergibt, obwohl es nicht gemäß der o.g.
Regeln hergeleitet wurde.
Anfrage: Welches sind die Nachbargrundstücke von X?
SELECT Grundstueck1
FROM Kante
WHERE Grundstueck2 = X
SELECT Grundstueck2
FROM Kante
WHERE Grundstueck1 = X
20
Projekt
View
Thema
Strukturen von ArcView
• Ein Thema ist in ArcView eine Menge
von Objekten des gleichen
Geometrietyps (Punkt, Polygon oder
Polyline)
• Die Thematik dieser Geoobjekte wird
durch eine zugeordnete Tabelle
dargestellt
• jedem Geoobjekt entspricht eine Zeile
der zugeordneten Tabelle
• Aggregation ist implizit (über den
Bezeichner)
• Anfragen an die Tabelle in SQL
Tabelle
21
Herunterladen