Assoziation und Aggregation

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
der Universität Oldenburg
DES-Simulator in JAVA, objektorientiert
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Listen Richard Göbel.
FH-Hof Java Packages Richard Göbel. FH-Hof Das Modulkonzept für Java Packages dienen zur Strukturierung größerer Java- Programme Ein Package kann: eigene.
Java: Grundlagen der Objektorientierung
Ein Beispiel in Java.
Konstruktoren.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Assoziationen (Beziehungen). Zwischen Objekten kann es eine Beziehung geben.
Polymorphie (Vielgestaltigkeit)
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
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.
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Datensammlung
© 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.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
6. Vorlesung: Statische Konzepte
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Entwurfs- und Implementationsdiagramme
Grundlagen der Programmierung
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Programmbereich, zu dem eine Deklaration gehört Arten von Gültigkeitsbereichen -Namespace : Deklarationen von Klassen, Interfaces, Structs, Enums, Delegates.
EPROG Tutorium #3 Philipp Effenberger
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Objektorientierte Modellierung mit UML
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Robuste Programme durch Ausnahmebehandlung
Vererbung Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
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.
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Konstruktoren.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
OOP II.
Einführung in die Programmierung mit Java
Einführung in die Programmierung mit Java
Die Struktur einer Java-Klasse
Reihungen Prof. Dr. Christian Böhm In Zusammenarbeit mit Gefei Zhang
November 18 Informatik Kurse
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Michael Barth, Fabian Birzele und Gefei Zhang
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Definition Felder Konstruktor Methoden Beispiel
1. Die rekursive Datenstruktur Liste 1
Implementieren von Klassen
Grundkurs Informatik 11-13
 Präsentation transkript:

Assoziation und Aggregation Prof. Dr. Christian Böhm in Zusammenarbeit mit Michael Eckert und Gefei Zhang http://www.dbs.ifi.lmu.de/Lehre/NFInfoWS

Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben lernen Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while-- Programme

Assoziation und Aggregation Assoziation ist eine Beziehung zwischen zwei oder mehr Klassen Assoziation: Die Klassen C und D stehen in Beziehung C D Aggregation: Jedes Objekt von C enthält Objekte von D C D Vererbung: Die Klasse C ist Erbe der Klasse D C D Abhängigkeit: Die Klasse C benützt Elemente der Klasse D (i.a. Methoden) C D

Assoziation Die Assoziation ist die allgemeinste Art einer Beziehung C D name  role mult Das Diagramm drückt aus, daß jedes Objekt o von C mit „mult“-vielen Objekten von D im Beziehung steht, die die Rolle „role“ für o spielen. Dabei ist role ein Name und mult entweder eine natürliche Zahl, ein Stern „*“ für beliebig viele Objekte oder ein Intervall der Form a..b mit a  N, b  N  {*} Der Name name gibt den Namen der Assoziation an. Das ausgefüllte Dreieck  bezeichnet die Leserichtung. Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while-- Programme

Assoziation und Aggregation Beispiele: Assoziation 1. Professor 1 liest 0..* Vorlesung Jedes Hypertext-Buch ist gekennzeichnet durch seine Kapitel, d.h. Kapitel spielt die Rolle “chapter” für Hypertext-Buch. 2. Hypertext-Buch Titel Erscheinungsjahr Kapitel Autor AnzahlSeiten chapter * Schwache Aggregation Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while-- Programme

Assoziation und Aggregation Beispiele: starke Aggregation (Komposition) 3. Customer BankAccount account 0..* 1 owner Jeder Bankkunde besitzt 0 oder mehrere Konten, die die Rolle “account” spielen. Jedes Bankkonto hat genau einen Besitzer (“owner”). Die Lebensdauer eines Bankkontos ist durch die des Kunden beschränkt. Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while-- Programme

Schwache Aggregation Schwache Aggregation Beispiel: Unternehmen Abteilung besteht aus 1..* 1 Mitarbeiter Schwache Aggregation ist eine „Teile-Ganzes“ Relation, die Lebensdauer der Teile hängt aber nicht von der Lebensdauer des Ganzen ab. Es gilt aber, dass die Objekte der schwachen Aggregation einen gerichteten azyklischen Graphen bilden. (Wenn B Teil von A, dann ist A nicht Teil von B). Ein Teil darf jedoch auch einem anderen Ganzen zugeordnet werden. Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while-- Programme

Starke Aggregation Ganzes Teil besteht aus * 0..1 Die Teile existieren nur innerhalb des Aggregats “Ganzes”; d.h. die Lebensdauer eines “Teil”-Objekts wird durch die Lebensdauer des zugehörigen Aggregats beschränkt. Objekte der Aggregation bilden einen Baum. (Wenn A ein Objekt B enthält, dann enthält B nicht A.) Jedes Objekt der Teilklasse kann - zu einem Zeitpunkt - nur Komponente eines einzigen Objekts der Aggregatklasse sein, d.h., die bei der Aggregatklasse angetragene Kardinalität darf nicht größer als eins sein (unshared aggregation, strong ownership). Die dynamische Semantik des Ganzen gilt auch für seine Teile (propagation semantics). Wird beispielweise das Ganze kopiert, so werden auch seine Teile kopiert. Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while-- Programme

Starke Aggregation Beispiel: Name Erstellung letzte Änderung Aggregation (Komposition) Verzeichnis Name Erstellung Datei letzte Änderung letzter Zugriff

Java Implementierung von Assoziationen C D name  role mult In Java repräsentiert man Assoziationen durch Attribute. Jede Rolle role vom Typ D wird als Attribut von C implementiert. Ist die Multiplizität 0, 1 oder 0..1 erhält man ein Attribut D role . Ist die Multiplizität >1 oder * verwendet man eine Reihung oder eine ArrayList von D-Objekten. Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while-- Programme

Java Implementierung von Assoziationen multD C D myD multB = 0..1 induziert das Schema: class C { D myD; … } multB = * induziert das Schema: class C { ArrayList<D> myD; … } Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while-- Programme

Implementierung von starker Aggregation Erzeugung der Komponenten durch Konstruktor des Aggregats Beispiel Circle double radius ... Point 1 center class Circle { private double radius; private Point center; public Circle(double rad, double x, double y) radius = rad; center = new Point(x,y); } ... Das Point Objekt wird durch den Konstruktor von Circle erzeugt und sollte keine Beziehungen zu “äußeren” Objekten besitzen. Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while-- Programme

Implementierung von starker Aggregation Beispiel Assoziation mit Multiplizität 1: Kunde, der genau ein Bankkonto besitzen muss. Customer name getBalance () deposit (x) withdraw (x) BankAccount 1 account Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while-- Programme

Implementierung von starker Aggregation class Customer { private String name; private BankAccount account; public Customer(String cname, double initialBalance) name = cname; account = new BankAccount(initialBalance); } public String getName() return name; public double getBalance() return account.getBalance(); public void transferTo(BankAccount other, double amount) account.transferTo(other, amount); public void withdraw(double x) account.withdraw(x); public void deposit(double x) account.deposit(x); Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while-- Programme

Implementierung von Assoziationen mit Multiplizität * Beispiel: Kunden mit 0 oder mehreren Bankkonten Customer name getBalance () deposit (x) withdraw (x) 1 0..* BankAccount accounts Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while-- Programme

Die Klasse ArrayList class ArrayList<T> { public ArrayList() //Constructs an empty list with an initial capacity of ten. public ArrayList(int initialCapacity) //Constructs an empty list with the specified initial capacity. public T get(int index) //Returns the element at the specified position in this list. public T set(int index, T element) //Replaces the element at the specified position //in this list with the specified element. public boolean add(T element) //Appends the specified element to the end of this list. public int size() //Returns the number of elements in this list. } Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while-- Programme

Implementierung von Assoziationen mit Multiplizität * import java.util.ArrayList; class Customer { private String name; private ArrayList<BankAccount> accounts; public Customer(String cname) { name = cname; accounts = new ArrayList<BankAccount>(); } public void createAccount(double initialBalance) { BankAccount a = new BankAccount(initialBalance); accounts.add(a); public String getName() { return name; Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while-- Programme fügt neues Element an das Ende der ArrayList an.

Implementierung von starker Aggregation . . . public double getBalance(int i) { BankAccount a = accounts.get(i); return a.getBalance(); } public void transferTo(int i, BankAccount other, double amount) a.transferTo(other, amount); public void withdraw(int i, double x) a.withdraw(x); public void deposit(int i, double x) a.deposit(x); Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while-- Programme

Zusammenfassung Eine Assoziation ist eine Relation (Beziehung) zwischen Klassen. Eine Aggregation ist eine Teile-Ganzes-Beziehung und damit eine spezielle Assoziation. Bei einer starken Aggregation sind die Teile existenzabhängig vom Ganzen. Insbesondere kann jedes Teil nur zu einem Aggregat gehören. Eine Rolle myB (vom Typ B) mit Multiplizität 1 oder 0..1 wird durch ein Attribut myB vom Typ B implementiert, bei Multiplizität * bekommt es den Typ ArrayList. Bei der starken Aggregation werden die abhängigen Objekte im Konstruktor des Aggregats erzeugt, um die Lebensdauerabhängigkeit zu garantieren. Verstehen der Grunddatentypen von Java item Verstehen von Typkonversion in Java item Lernen lokale Variablen und Konstanten zu initialisieren item Verstehen der Speicherorganisation von lokalen Variablen item Lernen Fallunterscheidungen zu bilden und iterative Programme zu schreiben item Lernen Kontrollflußdiagramme als Entwurfsnotation einzusetzen item Wiederholen der Regeln des Hoare-Kalkül für while-- Programme