Anwendungen des OODM auf die ADB / NDB

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping (ORM). Objektmodell - Datenbankmodell.
Advertisements

M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
der Universität Oldenburg
der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Konzepte objektorientierter Systeme
Zusammenfassung des Kapitels 8
Ein Entity Relationship Diagramm zur ADB/NDB
Objektrelationales Mapping mit JPA Entity Mapping Jonas Bandi Simon Martinelli.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Listen Richard Göbel.
Java: Grundlagen der Objektorientierung
Klassenvariable (auch Klassendaten bzw. statische Attribute genannt) und statische Methoden.
Ein Beispiel in Java.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
3.1.4 Leser/Schreiber-Ausschluß (reader/writer exclusion)
Einführung in die OOP in Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
A. Zündorf, SE Group Reverse Engineering K2 1 Übersicht 1.Quelltextanalyse mit regulären Ausdrücken 2.Compilertechniken 3.Prozessanalyse 4.Dynamische Analyse.
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.
Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
04 - Actions Actions Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden.
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Informatikunterricht mit Java
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
FH-Hof Singleton Pattern Richard Göbel. FH-Hof Motivation Bestimmte Klassen sollen nur ein Objekt haben Nur ein Fabrikobjekt für eine Fabrikklasse Zentraler.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Entity Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Informatik Zustandsorientiertes Modellieren und Programmieren 2.4 Datenkapselung 2.4 Datenkapselung Objekte können miteinander kommunizieren, indem.
2. Zustandsorientiertes Modellieren 2.4 Datenkapselung
EPROG Tutorium #3 Philipp Effenberger
CuP - Java Zwölfte Vorlesung Klassen – Komposition und Vererbung Freitag, 15. November 2002.
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Instanzmethoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
, 1 / Javakurs 2012 – Objektorientierung Objektorientierte Programmierung I This work is licensed under the Creative Commons Attribution-ShareAlike 3.0.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Konstruktoren.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Zwei Denkansätze zur Klasse Schlange
Einführung in die Programmierung mit Java
1. Die rekursive Datenstruktur Liste 1
Implementieren von Klassen
Grundkurs Informatik 11-13
 Präsentation transkript:

Anwendungen des OODM auf die ADB / NDB

Umsetzung des Er Diagramms in ein Objektorientiertes Datenmodell Versuch möglichst nah am Konzept des Diagramms zu bleiben Entitäten als Objekte realisiert Für die Realisierung Java verwendet Ergebnis: 10 Klassen

Klasse Person

Klasse Person Atomare Attribute als elmentare Typen Attribut mit weiteren Attributen als innere Klasse Mehrwertige Attribute als ArrayList Kapselung der Attribute und daraus folgende Probleme

Klasse Person public class Person { private String geschlecht; private int geburtsDatum; private int todesDatum; private String geburtsOrt; private String sterbeOrt; private int id; public class Name {//innere Klasse private String nachname; private String vorname; private ArrayList<String> pseudonym = new ArrayList<String> (); private ArrayList<String> namensVariation = new ArrayList<String> (); }//Ende der Inneren Klasse {

Klasse Person Sicherstellung der Objektidentität. Jedes Objekt bekommt eine eindeutige Identifikation OID Einsatz des Konstruktor Automatische OID Erzeugung Speicherung der ID in einer statischen ArrayList ArrayList von außen nur über „get“-Methode erreichbar Keine Set-Methode für IDListe

Konstruktor von Person public class Person { private int id; private static ArrayList<Integer> personenIDListe = new ArrayList<Integer>(); public Person(){ id=(int)(100*Math.random()*Math.random()*10); while(personenIDListe.contains(id)){ }personenIDListe.add(id); } public int getId() { return id; }

Eltern und Kinder Verbindung mit Eltern über Referenzvariable Kinder werden in ArrayList<Person> gespeichert Beim verbinden der Eltern auch automatischer Eintrag in der Kinder-ArrayList Get-Methoden für Mutter, Vater und Kinder

Eltern und Kinder public class Person { private ArrayList<Person> kinder = new ArrayList<Person>(); private Person vater; private Person mutter; public void setKinder(Person kind) { If(!kinder.conatins(kind)){ kinder.add(kind);} } public void setMutter(Person mutter) { this.mutter = mutter; mutter.setKinder(this); public Person getMutter() { return mutter;

Personen und Studium Klasse Studiert Klasse Institution Klasse Fach Atomare Attribute wie vorher schon gezeigt OID wie bereits bei der Klasse Person gezeigt über Konstruktor Studiert als eigene Klasse, da eigene Attribute im Diagramm Person, Institution und Fach haben jeweils eine Referenz auf ein Objekt von Studiert Problem: zeigen nicht auf das gleiche Objekt. Entwurfsmuster Singelton-Objekt auch keine Lösung

Attribute von Klasse Studiert public class Studiert { private int studiumsId; private int anfang; private int ende; private float anzahlInMonaten; }

Konstruktor der Klasse Studiert public class Studiert { private int studiumsId; private int anfang; private int ende; private float anzahlInMonaten; private ArrayList<Integer> studiumsIDListe = new ArrayList<Integer>(); public Studiert(){//Konstruktor studiumsId=(int)(100*Math.random()*Math.random()*10); while(studiumsIDListe.contains(studiumsId)){ }studiumsIDListe.add(studiumsId); }

Studierende Personen public class Studiert { private HashMap<Person,ArrayList<Institution>> personMap = new HashMap<Person,ArrayList<Institution>>(); public void setPersonenMap(Person p, ArrayList<Institution> iL){ personMap.put(p,iL); } //überladene set-methode für Personen(Key) Institutionen(Value) public void setPersonenMap( Person p, Institution iL){ ArrayList<Institution> i = personMap.get(p); i.add(iL); personMap.clear(); personMap.put(p,i);

Studiert und Person Erstellung eines „Studium“ Objekts in der Klasse „Person“ Set-Methode greift über die Referenz auf die Objekt eigenen Setter-Methoden Wichtigsten Informationen werden übergeben

Studiert und Person public class Person { Studiert student =new Studiert(); public void setStudienInformationen(int a, int e, float f, Institution i,String fachName){ student.setAnfang(a); student.setEnde(e); student.setAnzahlinMonaten(f); student.setPersonenMap(this,i); Fach fach =new Fach(fachName); student.setPersonFaecherKombi(this, fach); }

Nach dem gleichen Prinzip greifen auch die Klassen Institution und Fach auf das Studiums Objekt zu. Unterschied: Fach speichert die Personen –Fächer Kombinationen ab. Institution wie viel Personen an einer Institution studieren

Verschiedene Fächer einer Person public class Studiert { private HashMap<Person,ArrayList<Fach>> personFaecherKombi = new HashMap<Person,ArrayList<Fach>>(); public void setPersonFaecherKombi( Person p, Fach f) { ArrayList<Fach> a = personFaecherKombi.get(f); a.add(f); personFaecherKombi.clear(); personFaecherKombi.put(p,a); }

public class Fach { Studiert studium = new Studiert(); public void setStudienInformationen(int a, int e, float f, Institution i, Person p){ studium.setAnfang(a); studium.setEnde(e); studium.setAnzahlinMonaten(f); studium.setPersonenMap(p,i); studium.setFachPersonenKombi(this,p); }

Werke einer Person Werk und Art_des_Werks zu einer Klasse zusammengefasst Werk schwache Entität Attribute wie voran gegangen umgesetzt Innerhalb der Klasse Person eine ArrayList welche nur Objekte vom Typ Werk aufnimmt Plus übliche Getter und Setter Methoden

Klasse Werk public class Werk{ private String titel; private int jahr; private int artId; private String artTyp; }

Konstruktor der Klasse Werk public class Werk{ private int artId; private static ArrayList<Integer> artIDListe = new ArrayList<Integer>(); public void Werk(){ artId=(int)(Math.random()*Math.random()*100); while(artIDListe.contains(artId)){ artId=(int)(100*Math.random()*Math.random()*10); }artIDListe.add(artId);} }

Liste von Werken einer Person public class Person { private ArrayList<Werk> werke =new ArrayList<Werk>(); }

Verbindung zwischen Person und Fundstelle per Interface gelöst Fundstelle fungiert als Interface für Referenz und Priorität In den Klassen Porträt und Referenz Attribute wie vorangegangen umgesetzt Mit Konstruktor OID automatisch erstellt In der Klasse Person eine ArrayListe vorhanden, welche nur Objekte vom Typ Fundstelle annimmt

Leeres Interface Fundstelle public interface Fundstelle { }

Klasse Proträt mit Interface Fundstelle public class Protraet implements Fundstelle { private String titel; private int jahr; private String autor; private String ausstellungsOrt; private static ArrayList<String> titelListe = new ArrayList<String>(); public Protraet(String titel){ this.titel= titel; titelListe.add(titel); }

Referenz und Interface Fundstelle public class Referenz implements Fundstelle { private int referenzID; private String autor; private String titel; private String verlag; private ArrayList<String> seiter; private static ArrayList<Integer> referenzIDListe = new ArrayList<Integer>(); public Referenz(){ referenzID=(int)(100*Math.random()*Math.random()); while(referenzIDListe.contains(referenzID)){ } referenzIDListe.add(referenzID);

Fundstellen in der Klasse Person public class Person { private ArrayList<Fundstelle> fundstellen = new ArrayList<Fundstelle>(); }