(Beziehungen zwischen Objekten)

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Assoziationen Verbindungen zwischen Objekten einer Klasse
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Listen Richard Göbel.
Abstrakte Klassen.
Ein Beispiel in Java.
Erweiterte Zuweisungskompatibilität
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.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Assoziationen (Beziehungen) 1 : n. Zu einem Auto gibt es mehrere Fahrer (2) und zu diesen 2 Fahrern gibt es genau dieses Auto.
Polymorphie (Vielgestaltigkeit)
Assoziationen (Beziehungen). Zwischen Objekten kann es eine Beziehung geben.
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Objektorientierte Konzepte und Notation in UML
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Programmieren mit JAVA
Programmieren mit JAVA
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.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Buch S70ff (Informatik I, Oldenbourg-Verlag)
Einführung in die Programmierung Datensammlung
6. Vorlesung: Statische Konzepte
10. Vorlesung: Dynamische Konzepte
Entwurfs- und Implementationsdiagramme
UML WS 09/10: Datenbanken vs MarkUp Dozent: Prof. Dr. Manfred Thaller
Objektorientiertes Konstruieren
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Variablenkonzept Klassisch, in Java Basistyp
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Parameterübergabemechanismen für den Methodenaufruf
EPROG Tutorium #4 Philipp Effenberger
Objektorientierte Modellierung mit UML
Programmiervorkurs WS 2014/15 Instanzmethoden
Programmiervorkurs WS 2014 Referenzdatentypen
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Java-Kurs Übung Besprechung der Hausaufgabe
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Abstrakte Klassen und das Interface-Konzept
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
Objektorientierte Datenbanken
Tutorium Software-Engineering SS14 Florian Manghofer.
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Anforderungen an die neue Datenstruktur
Konstruktoren.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
November 18 Informatik Kurse
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
1. Die rekursive Datenstruktur Liste 1.5 Das Entwurfsmuster Kompositum
2. Vererbung und Kapselung
1. Die rekursive Datenstruktur Liste 1
Felder in der Informatik
 Präsentation transkript:

(Beziehungen zwischen Objekten) Assoziationen (Beziehungen zwischen Objekten) Walther-Rathenau-Gewerbeschule Nazar 1

Identifizieren Sie die Objekte im Bild Ein Auto-Objekt Ein Person-Objekt Vier Reifen-Objekte? Ein Lenkrad-Objekt Zwei Scheinwerfer-Objekte Zwei Tür-Objekte? ... Offensichtlich stehen die verschiedenen Objekte zu einander in Beziehung! Walther-Rathenau-Gewerbeschule Nazar 2

Eine Person hat ein Auto UML: name:String marke:String alter:int baujahr:int Walther-Rathenau-Gewerbeschule Nazar 3

Eine Person hat ein Auto UML: name:String marke:String alter:int baujahr:int auto:Auto class Person{ String name; int alter; Auto auto; } class Auto{ String marke; int baujahr; } Java: In Java werden hat-Beziehungen durch Referenzvariablen realisiert. Im obigen Beispiel kann von Auto nicht zu Person navigiert werden, da nur die Klasse Person eine Instanzvariable von Auto besitzt aber nicht umgekehrt! Walther-Rathenau-Gewerbeschule Nazar 4

Hier wird die Beziehung zwischen Person und Auto class Person{ String name; int alter; Auto auto; } class Auto{ String marke; int baujahr; } Hier wird die Beziehung zwischen Person und Auto gesetzt. Wichtig: Das Auto- Objekt muss natürlich vorher angelegt sein. class Hauptprogramm{ public static void main(String[] args){ } Auto a = new Auto(); a.marke = ''VW''; a.baujahr = 2014; Person p = new Person(); p.name = ''Monika''; p.alter = 21; p.auto = a; Walther-Rathenau-Gewerbeschule Nazar 5

Multiplizität Die Multiplizität 0..1 legt fest, dass eine Person keinen oder einen Privatwagen besitzen Kann. Person Auto privatAuto name:String marke:String 0..1 alter:int baujahr:int geschäftsAuto 1 Mit der Angabe der Multiplizität wird die Anzahl der an einer Beziehung beteiligten Objekte angegeben. Die Multiplizität 1 bedeutet, dass eine Persin genau einen Geschäftswagen besitzen muss. Walther-Rathenau-Gewerbeschule Nazar 6

Person Auto Person Auto name:String marke:String alter:int baujahr:int Das obige Diagramm ohne Angabe von Multiplizitäten ist gleichbedeutend mit dem folgenden Diagramm: Person Auto 0..1 * name:String marke:String alter:int baujahr:int Die Multiplizität * bedeutet, dass ein Auto beliebig vielen (0 bis unendlich) Personen gehören kann. Walther-Rathenau-Gewerbeschule Nazar 7

Beziehungen sind Referenzen a Auto a = new Auto(); a.marke = ''VW''; a.baujahr = 2008; marke baujahr = 2008 ''VW'' Person p = new Person(); p.name = ''Mu''; p.alter = 40; p.auto = a; p name alter = 40 auto ''Mu'' Walther-Rathenau-Gewerbeschule Nazar 8

Aufgabe 1 Erstellen Sie eine Person mit den Daten Ihrer Wahl. Verwenden Sie die folgende Person-Klasse bzw. den Konstruktor der Klasse Person, die Beziehung zwischen einem Person- und einem Auto- Objekt zu setzen. Geben Sie weitere Möglichkeiten an, um Beziehungen zwischen Person- und Auto-Objekten zu setzen. Programmieren Sie ggf. die Klassen um. Walther-Rathenau-Gewerbeschule Nazar 9

Aufgabe 2 Entwerfen Sie ein UML-Diagramm für das folgende Szenario: Ein Kraftfahrzeugfahrer hat eine Personalnummer, einen Vor- und Nachnamen, eine Adresse sowie einen Führerschein. Der Führerschein hat ein Ausstellungsdatum sowie eine Klasse (z. B. Klasse A, Klasse B usw..). Jede Adresse besteht aus einer Straße, einer Hausnummer, einem Postleitzahl und einem Ort. Beachten Sie die Datenkapselung! Überführen Sie das Diagramm in Java. Erstellen Sie die folgenden Objekte und geben Sie deren Daten aus: Fahrer Michael Anton hat die Personalnummer 1. Sein Führerschein der Klasse A ist am 13. April 2013 ausgestellt. Michael Anton wohnt am Leopoldring 3, in 79199 Kirchzarten. Fahrerin Michaela Antonella hat die Personalnummer 2. Ihr Führerschein der Klasse B ist am 13.01.2009 ausgestellt. Sie wohnt in der Bahnhofstr. 7, in 79108 Kenzingen. Walther-Rathenau-Gewerbeschule Nazar 10

Aufgabe 3 Überführen Sie das folgende Diagramm in Java und erstellen Sie eine Person mit zwei Autos.. Person Auto privatAuto name:String marke:String alter:int baujahr:int geschäftsAuto Walther-Rathenau-Gewerbeschule Nazar 11

Walther-Rathenau-Gewerbeschule Nazar 12

Eine Person kann auch beliebig viele Autos besitzen name:String * marke:String alter:int baujahr:int Die Frage ist aber: Wo soll er alle die ganzen Autos parken?? In der Realität vielleicht in vielen gemieteten Garagen... Walther-Rathenau-Gewerbeschule Nazar 13

In Java jedenfalls kann er die Autos im Speicher 1 In Java jedenfalls kann er die Autos im Speicher parken wo er will. Er muss sich nur die Adressen der Autos z. B. in einer Liste merken... 2 3 ... Walther-Rathenau-Gewerbeschule Nazar 14

Kurzer Ausflug zur ArrayList-Klasse Walther-Rathenau-Gewerbeschule Nazar 15

Die ArrayList-Klasse ArrayList ist eine von vielen Klassen, die Oracle-Programmierer uns bereitstellen. Eine Dokumentation dieser Klasse finden Sie unter: Objekte dieser Klasse verhalten sich wie Listen. Listen sind besondere Datenstrukturen, in denen Daten (Objekte) über spezielle Methoden bequem hinzugefügt, geändert oder gelöscht werden können. Der Zugriff auf die Daten erfolgt über ihre Position in der Liste. Das erste Element bekommt den Index 0, das zweite den Index 1 usw. Über die Methode size() kann die aktuelle Größe der Liste abgefragt werden. Die Größe wächst im Gegensatz zu normalen Arrays dynamisch. Der letzte Index in der Liste ist size – 1, da die Indexierung bei 0 beginnt. Walther-Rathenau-Gewerbeschule Nazar 16

ArrayList<String> myList = new ArrayList<String>(); myList.add(''Ahmad Nessar''); myList.add(''Nazar''); ''Ahmad Nessar'' myList.add(''Ottbert''); ''Nazar'' myList.add(''Nimmersatt''); 1 Vorteile von ArrayList: - schneller Zugriff - dynamische Länge ''Ottbert'' 2 Nachteile von ArrayList: - Einfügen und Löschen hat eine Verschiebung der übrigen Elemente zur Folge. ''Nimmersatt'' 3 ... Walther-Rathenau-Gewerbeschule Nazar 17

In spitzen Klammern wird angegeben, Objekte welcher Klasse in der ArrayList gespeichert werden dürfen. In diesem Beispiel werden String-Objekte in die Liste aufgenommen. Walther-Rathenau-Gewerbeschule Nazar 18

0, 1 oder mehr Beziehungen Person Auto name:String * marke:String alter:int baujahr:int autos:ArrayList<Auto> ArrayList<Auto> ist eine Datenstruktur (eine Liste) in der Verweise auf die Autos, die eine Person besitzt, gespeichert werden. Es können aber auch statt ArrayList andere Daten- strukturen verwendet werden, um die Beziehung darzustellen. Wir werden uns aber vorerst auf die ArrayList-Klasse beschränken. Walther-Rathenau-Gewerbeschule Nazar 19

0, 1 oder mehr Beziehungen in Java Person Auto UML: name:String * marke:String alter:int baujahr:int autos:ArrayList<Auto> class Person{ String name; int alter; ArrayList<Auto> autos; } class Auto{ String marke; int baujahr; } Java: Der Pfeil deutet es auch hier an, dass die Beziehung unidirektional ist. D.h. es kann nur in eine Richtung, nämlich von Person zu seinen Autos, navigiert werden. Ein Auto kennt in der Regel seinen Besitzer nicht. Walther-Rathenau-Gewerbeschule Nazar 20

Die Klasse Auto ... Walther-Rathenau-Gewerbeschule Nazar 21

Die Klasse Person ... Walther-Rathenau-Gewerbeschule Nazar 22

0, 1 oder mehr Beziehungen erstellen Hier wird eine ganze Liste von Autos für Hans „übergeben“. Walther-Rathenau-Gewerbeschule Nazar 23

Walther-Rathenau-Gewerbeschule Nazar 24

Aufgabe 3 Verwenden Sie die folgenden Klassen (ohne sie zu erweitern), um eine Person mit ein paar Autos zu erstellen... Geben Sie weitere Möglichkeiten an, um Beziehungen zwischen Person- und Auto-Objekten zu setzen. Programmieren Sie ggf. die Klassen um. Weitere Übungen: Siehe separates Übungsblatt! class Person{ String name; int alter; ArrayList<Auto> autos; } class Auto{ String marke; int baujahr; } Walther-Rathenau-Gewerbeschule Nazar 25

Bidirektionale Beziehungen Person Auto name:String marke:String 0..1 * alter:int baujahr:int autos:ArrayList<Auto> person:Person … oder man lässt die Pfeile ganz weg ... Person Auto name:String 0..1 * marke:String alter:int baujahr:int autos:ArrayList<Auto> person:Person Walther-Rathenau-Gewerbeschule Nazar 26

Aufgabe 4 Überführen Sie das folgende Diagramm in Java und erstellen Sie eine Person mit ein paar Autos. Setzen Sie die Beziehungen in beiden Richtungen! Person Auto name:String 0..1 0..1 marke:String alter:int baujahr:int Walther-Rathenau-Gewerbeschule Nazar 27

Bidirektionale Beziehungen Auto a = new Auto(); a.marke = ''VW''; a.baujahr = 2008; marke baujahr = 2008 person ''VW'' Person p = new Person(); p.name = ''Mu''; p.alter = 40; p name alter = 40 auto ''Mu'' p.auto = a; a.person = p; Walther-Rathenau-Gewerbeschule Nazar 28

Aufgabe 5 Überführen Sie das folgende Diagramm in Java und erstellen Sie eine Person mit ein paar Autos. Setzen Sie die Beziehungen in beiden Richtungen! Person Auto name:String 0..1 * marke:String alter:int baujahr:int autos:ArrayList<Auto> person:Person Walther-Rathenau-Gewerbeschule Nazar 29

Wiederholung Ein wesentlicher Bestandteil der objektorientierter Programme ist der Austausch von Nachrichten untereinander. Dazu kennt ein Objekt ein anderes Objekt und sendet diesem eine Nachricht zu. Dieses Kennen ist eine Art von Assoziation (Beziehung oder Verbindung) zwischen zwei Objekten. Assoziationen werden in UML durch Verbindungslinien zwischen den einzelnen Klassen dargestellt. Kunde Zahlungsverzug name:String adresse:String 1 betrag:double stichtag:String * Walther-Rathenau-Gewerbeschule Nazar 30

Wiederholung Im obigen Beispiel ist die Assoziation bidirektional, d.h. der Kunde kann seine Zahlungsverzüge kennen. Auch von Zahlungsverzug kann zum Kunden navigiert werden. In der Regel benötigt ein Zahlungsverzug keine Kenntnisse über seine Kunden. Es soll nur in eine Richtung (unidirektional), nämlich nur von Kunde zu Zahlungsverzug navigiert werden: Kunde Zahlungsverzug name:String adresse:String 1 betrag:double stichtag:String * Kunde Zahlungsverzug name:String adresse:String 1 betrag:double stichtag:String * Walther-Rathenau-Gewerbeschule Nazar 31

Multiplizitäten Kunden können beliebig viele (null oder mehrere) Zahlungsverzüge haben. Ein Zahlungsverzug gehört zu genau einem Kunden. 1 und * werden auch als Multiplizität der Beziehungen bezeichnet. Man unterscheidet Kann- und Muss-Beziehungen. Kunde Zahlungsverzug name:String adresse:String 1 betrag:double stichtag:String * Jeder Zahlungsverzug gehört genau einem Kunden. Jeder Kunde hat keinen, einen oder mehr Zahlungsverzüge. Walther-Rathenau-Gewerbeschule Nazar 32

Komposition Eine Komposition ist eine „ist Teil von“-Beziehung. Jedes Objekt der Klasse Lenkrad ist nur Komponente eines einzigen Objektes der Klasse Auto (Aggrregat-Klasse). Die Komposition verlangt: wird ein Gebäude gelöscht, so müssen auch alle Räume darin gelöscht werden! A B ist Teil von A B Auto Lenkrad Walther-Rathenau-Gewerbeschule Nazar 33

Beispiele für Komposition Buch Seite Gebäude Raum Bestellung Bestellposten Termin Notiz Walther-Rathenau-Gewerbeschule Nazar 34

Falsche Komposition in Java Termin Notiz datum:String titel:String titel:String text:String Walther-Rathenau-Gewerbeschule Nazar 35

Aufgabe 8 Überführen Sie das folgende Diagramm in Java. Auto Lenkrad marke:String art:String baujahr:int Walther-Rathenau-Gewerbeschule Nazar 36

Aggregation Eine Komposition ist ebenfalls eine „ist Teil von“-Beziehung. Jedes Objekt der Klasse Artikel ist nur Komponente eines einzigen Objektes der Klasse Zeitschrift (Aggrregat-Klasse). Die Aggregation verlangt im Gegensatz zu Komposition nicht, dass nach dem Entfernen einer Zeitschrift auch deren Artikel gelöscht werden. In der Implementierung unterscheidet sich eine Aggregation in Java nicht von der Implementierung einer normalen „hat-Beziehung“. Aggregation wird eher zum besseren Verständnis des Modell verwendet. Zeitschrift Artikel Walther-Rathenau-Gewerbeschule Nazar 37