Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Ableitung UML  XML Schema

Ähnliche Präsentationen


Präsentation zum Thema: "Ableitung UML  XML Schema"—  Präsentation transkript:

1 Ableitung UML  XML Schema
Geoinformation III Vorlesung 14 Ableitung UML  XML Schema

2 12 UML  XML U M L A 1x

3 12 UML  XML U M L A 1x

4 12 UML  XML M L A 1x

5 12 UML  XML X M L A 1x

6 13 Von UML zu XML (I) Objektorientierte Modellierung von Systemen und Datenstrukturen erfolgt heutzutage zumeist mittels UML-Diagrammen (graphisch) Für den Datenaustausch oder die Speicherung der Anwendungsdateien ist die Verwendung von XML sinnvoll zugrundeliegendes Konzept: Model-driven architecture: Modellierung in UML automatische Ableitung von implementierungsspezifischen Formalismen (Java, Tabellen einer relationalen Datenbank, XML, ...) aus UML Probleme: Keine 1:1-Abbildung von UML auf XML-Schema-Strukturen Abbildung von UML nach XML nicht eindeutig (mehrere Möglichkeiten) Festlegung auf Abbildungsvarianten sind sog. Entwurfsentscheidungen

7 Von UML zu XML (II) Gegeben: UML-Klassendiagramm
13 Von UML zu XML (II) Gegeben: UML-Klassendiagramm Gesucht: XML-Schema zu dem UML-Klassendiagramm Konvertierung durch Regeln für: Klassen mit Stereotyp Enumeration oder CodeList Klassen Klassen mit Oberklasse (Vererbung) Attribute von Klassen Kompositionen Assoziationen/Aggregationen Methoden werden in XML ignoriert

8 Von UML zu XML (III): Vereinfachungen
13 Von UML zu XML (III): Vereinfachungen im folgenden werden werden aus Gründen der Übersichtlichkeit folgende Konzepte von XML-Schema nicht berücksichtigt: Namespaces. Der Namespace für Schema-Elemente ist z.B. xs.

9 Konvertierung von Klassen mit Stereotyp Enumeration oder CodeList
UMLKLASSENNAME + wert_1 + wert_2 ... + wert_n <simpleType name="UMLKLASSENNAMEType> <restriction base="string"> <enumeration value="wert_1" /> <enumeration value="wert_2" /> .... <enumeration value="wert_n" /> </restriction> </simpleType> Beispiel: <CodeList> Dachform + Satteldach + Walmdach + Flachdach +Krüppelwalmdach

10 Konvertierung von Klassen
7 Konvertierung von Klassen <complexType name="KlassennameTyp"> <sequence> <element name="Attribut1" type="string"/> <element name="Attribut2" type="string"/> </sequence> </complexType> <element name="Klassename" type="KlassennameTyp"/> Klassenname + Attribut1:String + Attribut2:String jede Klasse wird zu komplexem Typen (complexType) Attribute der Klasse werden zu Kindelementen dieses komplexen Typs, geklammert durch <sequence> Zu jedem komplexen Typ (Klasse) muss Element erzeugt werden

11 Konvertierung von Klassen mit Oberklasse
7 Konvertierung von Klassen mit Oberklasse <complexType name="OberklasseTyp"> <sequence> <element name="Attribut_Ober" type="string"/> </sequence> </complexType> <complexType name="UnterklasseTyp"> <complexContent> <extension base="OberklasseTyp" <element name="Attribut_Unter" type="String"/> </extension> </complexContent> <element name="Oberklasse" type="OberklasseTyp"/> <element name="Unterklasse" type="UnterklasseTyp" substitutionGroup="Oberklasse"/> Oberklasse Attribut_Ober:String Unterklasse Attribut_Unter:String

12 Konvertierung von Klassen mit Oberklasse
jede Klasse wird zu komplexem Typen (complexType) Attribute der Klasse werden zu Kindelementen dieses komplexen Typs der komplexe Typ einer Unterklasse erhält einen complex content und darin als extension base den Typ der Oberklasse. Zu jedem komplexen Typ (Klasse) muss Element erzeugt werden Element der Unterklasse erhält eine substitution group mit Element der Oberklasse wegen Ersetzbarkeit von Elementen der Oberklasse durch Elemente der Unterklasse

13 Vererbung: Beispiel-XML-Datei
Person name:String <Person> <name>Schmitz</name> </Person> <Student> <matrikelnr> </matrikelnr> </Student> Student matrikelnr:String

14 Mehrfachvererbung UML erlaubt Mehrfachvererbung (eine Klasse hat mehr als eine Oberklasse) XML Schema erlaubt Mehrfachvererbung nicht Wenn Mehrfachvererbung in UML vorliegt: eine Vererbung auswählen und in XML Schema umsetzen die andere(n) Vererbungsbeziehungen durch Kopieren von Attributen/Elementen von Ober- zu Unterklasse realisieren Ein Element kann mehrere substitution groups haben

15 Konvertierung von Attributen
Beispiel: <complexType name="PersonTyp"> <sequence> <element name="name" type="string"/> <element name="alter" type="integer"/> <element name="maennlich" type="boolean"/> <element name="groesse" type="decimal"/> <element name="adresse" type="AdressTyp"/> </sequence> </complexType> <complexType name="AdressTyp"> <element name="Strasse" type="string"/> <element name="hausnummer" type="string"/> Person + name:CharacterString + alter:integer + maennlich:boolean + groesse: real + adresse:AdressTyp

16 Konvertierung von Attributen
Attribute einer werden zu Kindelementen des Typs der Klasse geklammert durch <sequence> Ist Typ des Attributs ein einfacher Datentyp, so wird dieser ersetzt und zum Typ des Kindelements: CharacterString -> string Integer -> integer Boolean -> boolean Real -> decimal Ist Typ des Attributs eine Klasse, so wird ein neuer Typ für diese Klasse erzeugt und zum Typen des Kindelements Alternative: anonymer Datentyp für Attribut...

17 Konvertierung von Attributen: Anonyme Typen
<complexType name="PersonTyp"> <sequence> <element name="name" type="string"/> <element name="alter" type="integer"/> <element name="maennlich" type="boolean"/> <element name="groesse" type="decimal"/> <element name="adresse"> <complexType> <element name="Strasse" type="string"/> <element name="hausnummer" type="string"/> </sequence> </complexType> </element> Person + name:CharacterString + alter:integer + maennlich:boolean + groesse: real + adresse:AdressTyp

18 Konvertierung von Assoziationen (Aggregationen, Kompositionen)
Assoziationen in UML können ungerichtet (beidseitig) sein Assoziationen in XML-Schema sind gerichtet Ersetzen der ungerichteten durch zwei gerichtete Assoziationen (falls beide notwendig, i. d. R. nur eine Richtung erforderlich)

19 Konvertierung von Kompositionen
Komposition (vgl. GIS I): Existenz des Teils hängt vom Ganzen ab jedes Teil gehört zu genau einem Ganzen Beispiel: Existenz der Linie hängt vom Polygon ab jede Linie gehört zu genau einem Polygon eine Linie kann nicht von zwei Polygonen benutzt werden (keine Topologie) zu einem Polygon können alle Linien aufgezählt werden (keine Verweise nötig) Beispiel: Polygon Ganzes 1 besteht AusLinie 3..* Linie Teil

20 Konvertierung von Kompositionen
Beispiel: <complexType name="LinieTyp"> </complexType> <element name="Linie" type="LinieTyp"/> <complexType name="PolygonTyp"> <sequence> <element name="bestehtAusLinie" type="LinienPropertyType" minOccurs="3" maxOccurs="unbounded"/> </sequence> <complexType name="LinienPropertyType"> <element ref="Linie"/> Polygon Ganzes 1 besteht AusLinie 3..* Linie Teil

21 Konvertierung von Kompositionen
jede Klasse wird zu komplexem Typ (wie bisher) Komposition wird zu komplexem Typ mit Bestandteil (z.B. Linie) mit als Kindelement Ganzes-Klasse erhält Kindelement vom Typ des Kompositions-Typen Multiplizitäten beachten (minOccurs/maxOccurs) Polygon Ganzes 1 besteht AusLinie 3..* Linie Teil

22 Kompositionen: Beispiel XML-Datei
<Polygon> <bestehtAusLinie> <Linie>...</Linie> </bestehtAusLinie> </Polygon> Polygon Ganzes 1 besteht AusLinie 3..* Linie Teil

23 Konvertierung von Aggregationen/Assoziationen
Beispiel: Ein Teil/ein Assoziationspartner kann zu mehreren Ganzen/Partner gehören Beispiel: eine Linie kann zu mehreren Polygonen gehören (Topologie) nicht möglich, zu einem Polygon alle Linien explizit aufzuzählen Verweise (Links) nötig Linien brauchen z.B. eine ID (um darauf zu verweisen) Assoziation bestehtAusLinien muss Verweise auf eine Linie (auf deren ID) verwalten können Konzept: XLink Polygon Ganzes 0..* besteht AusLinie 3..* Linie Teil

24 Verwenden des XLink-Schemas für Verweise
XLink/XPointer: Ergänzung zu XML Schema Zweck: Verweise zwischen Elementen Verwendet XML-Attribute für Identifier für Verweise auf Elemente (Identifier), z.B. xlink:href="#Lin22" Verweise innerhalb einer Datei (xlink:href beginnt mit #) auch Verweise auf Elemente in anderen Dateien möglich (wird hier nicht behandelt)

25 Konvertierung von Aggregationen/Assoziationen
Beispiel: <complexType name="LinieTyp"> <attribute name="id" type="ID"/> </complexType> <element name="Linie" type="LinieTyp"/> <complexType name="PolygonTyp"> <sequence> <element name="bestehtAusLinie" type="LinienPropertyType" minOccurs="3" maxOccurs="unbounded"/> </sequence> <complexType name="LinienPropertyType"> <element ref="Linie"/> <xs:attributeGroup ref="xlink:simpleLink"/> Polygon Ganzes 0..* besteht AusLinien 3..* Linie Teil

26 Aggregation: Beispiel-XML-Datei
<Polygon> <bestehtAusLinie> <Linie id="Lin21">...</Linie> </bestehtAusLinie> <Linie id="Lin22">...</Linie> <Linie id="Lin26">...</Linie> <Linie id="Lin28">...</Linie> </Polygon> <bestehtAusLinie xlink:href="#Lin22"/> <bestehtAusLinie xlink:href="#Lin26"/> <Linie id="Lin30">...</Linie> <Linie id="Lin34">...</Linie> Lin28 Lin21 Lin26 Lin22 Lin34 Lin32 Lin30 Lin33

27 Multiplizitäten von Assoziationen
Multiplizitäten können mit minOccurs oder maxOccurs angegeben werden Elemente ohne minOccurs und maxOccurs dürfen genau einmal vorkommen Beispiel: <complexType name="PolygonTyp"> <sequence> <element name="bestehtAusLinie" type="LinienPropertyType" minOccurs="3" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="LinienPropertyType"> <element ref="Linie"/> Ganzes Polygon besteht AusLinien 3..* Linie Teil

28 Übungsaufgabe: XML-Schema für UML-Diagramm
Bauliche Anlage <Codelist> Gebäudefunktion +Wohnen + Gewerbe +Mischgebiet +Verwaltung 0..* Gebäude + eigentümer: Eigentümer[1..*] 1 0..* benachbart 1..* Gebäudeteil + funktion: Gebäudefunktion[1..*] + baujahr:integer + höhe: real Eigentümer + Name: CharacterString + Vorname:CharacterString +Alter:integer 1 1..* Polygon


Herunterladen ppt "Ableitung UML  XML Schema"

Ähnliche Präsentationen


Google-Anzeigen