anwendungen des oodm auf die adb ndb
Download
Skip this Video
Download Presentation
Anwendungen des OODM auf die ADB / NDB

Loading in 2 Seconds...

play fullscreen
1 / 32

Anwendungen des OODM auf die ADB / NDB - PowerPoint PPT Presentation


  • 52 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Anwendungen des OODM auf die ADB / NDB' - clive


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2
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 person1
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 person2
Klasse Person
  • publicclass Person {
  • private String geschlecht;
  • privateint geburtsDatum;
  • privateint todesDatum;
  • private String geburtsOrt;
  • private String sterbeOrt;
  • privateint id;
  • publicclass Name {//innere Klasse
  • private String nachname;
  • private String vorname;
  • privateArrayList pseudonym = new ArrayList ();
  • privateArrayList namensVariation = new ArrayList (); }//Ende der Inneren Klasse
  • {
klasse person3
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
Konstruktor von Person
  • publicclass Person {
  • private int id;
  • privatestatic ArrayList personenIDListe = newArrayList();
  • public Person(){
  • id=(int)(100*Math.random()*Math.random()*10);
  • while(personenIDListe.contains(id)){
  • id=(int)(100*Math.random()*Math.random()*10);
  • }personenIDListe.add(id);
    • }
  • publicint getId() {
  • return id; }
  • }
eltern und kinder
Eltern und Kinder
  • Verbindung mit Eltern über Referenzvariable
  • Kinder werden in ArrayList gespeichert
  • Beim verbinden der Eltern auch automatischer Eintrag in der Kinder-ArrayList
  • Get-Methoden für Mutter, Vater und Kinder
eltern und kinder1
Eltern und Kinder
  • publicclass Person {
  • private ArrayList kinder = new ArrayList();
  • private Person vater;
  • private Person mutter;
  • public void setKinder(Person kind) {
  • If(!kinder.conatins(kind)){
  • kinder.add(kind);}
  • }
  • publicvoid setMutter(Person mutter) {
  • this.mutter = mutter;
  • mutter.setKinder(this);
  • }
  • public Person getMutter() {
  • return mutter;
  • }
personen und studium
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
Attribute von Klasse Studiert
  • publicclass Studiert {
  • privateint studiumsId;
  • privateint anfang;
  • privateint ende;
  • privatefloat anzahlInMonaten;
  • }
konstruktor der klasse studiert
Konstruktor der Klasse Studiert
  • publicclass Studiert {
  • privateint studiumsId;
  • privateint anfang;
  • privateint ende;
  • privatefloat anzahlInMonaten;
  • private ArrayList studiumsIDListe = new ArrayList();
  • public Studiert(){//Konstruktor
  • studiumsId=(int)(100*Math.random()*Math.random()*10);
  • while(studiumsIDListe.contains(studiumsId)){
  • studiumsId=(int)(100*Math.random()*Math.random()*10);
  • }studiumsIDListe.add(studiumsId);
  • }
  • }
studierende personen
Studierende Personen
  • public class Studiert {
  • private HashMap> personMap = new HashMap>();
  • publicvoid setPersonenMap(Person p, ArrayList iL){
  • personMap.put(p,iL);
  • }
  • //überladene set-methode für Personen(Key) Institutionen(Value)
  • publicvoid setPersonenMap( Person p, Institution iL){
  • ArrayList i = personMap.get(p);
  • i.add(iL);
  • personMap.clear();
  • personMap.put(p,i);
  • }
  • }
studiert und person
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 person1
Studiert und Person
  • publicclass Person {
  • Studiert student =new Studiert();
  • publicvoid 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);
  • }
slide18
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
Verschiedene Fächer einer Person
  • publicclass Studiert {
  • private HashMap> personFaecherKombi= newHashMap>();
  • publicvoidsetPersonFaecherKombi( Person p, Fach f) {
  • ArrayList a = personFaecherKombi.get(f);
  • a.add(f);
  • personFaecherKombi.clear();
  • personFaecherKombi.put(p,a);
  • }

}

slide20
publicclass Fach {
  • Studiert studium = new Studiert();
  • publicvoid 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
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
Klasse Werk
  • publicclass Werk{
  • private String titel;
  • privateint jahr;
  • privateint artId;
  • private String artTyp;
  • }
konstruktor der klasse werk
Konstruktor der Klasse Werk
  • publicclass Werk{
  • privateint artId;
  • private static ArrayList artIDListe = new ArrayList();
  • publicvoid 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
Liste von Werken einer Person

publicclass Person {

  • private ArrayList werke =new ArrayList();

}

slide28
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
Leeres Interface Fundstelle
  • public interface Fundstelle {
  • }
klasse protr t mit 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 titelListe = new ArrayList();
  • public Protraet(String titel){
  • this.titel= titel;
  • titelListe.add(titel);
  • }
  • }
referenz und interface fundstelle
Referenz und Interface Fundstelle
  • public class Referenz implements Fundstelle {
  • private int referenzID;
  • private String autor;
  • private String titel;
  • private String verlag;
  • private ArrayList seiter;
  • private static ArrayList referenzIDListe = new ArrayList();
  • public Referenz(){
  • referenzID=(int)(100*Math.random()*Math.random());
  • while(referenzIDListe.contains(referenzID)){
  • referenzID=(int)(100*Math.random()*Math.random());
  • }
  • referenzIDListe.add(referenzID);
  • }
fundstellen in der klasse person
Fundstellen in der Klasse Person
  • public class Person {
  • private ArrayList fundstellen = new ArrayList();
  • }
ad