Einführung in die OOP mit Java Unterlagen zum Modul OOP mit Java V 3.0 2007 by WBR1/HTI 2011 by MOU2/TI Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI
Beziehungen zwischen Klassen, Packages, UML Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-2
Beziehungen zwischen Klassen Vererbung Beziehung: "Ist ein" ("est un") Beschreibung: Die Beziehung entsteht durch Vererbung. Man sagt, B ist ein A wenn B von A abgeleitet wird. Beispiele: Ein Kreis ist ein geometrisches Objekt. A B Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-3
Codebeispiel Vererbung public class Circle extends GeomObj { Beispiele: Circle cir = new Circle(); GeomObj gobj = new GeomObj(); GeomObj Circle cir instanceof GeomObj == true ABER: gobj instanceof Circle!= true GeomObj gobj = new Circle(); Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-4
Beziehungen zwischen Klassen Aggregation Beziehung: "hat ein" ("contient") Ein Objekt der Klasse B ist Teil eines Objektes der Klasse A, existiert aber unabhängig vom Objekt der Klasse A. Beispiel: Ein Student hat einen Taschenrechner. A B Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-5
public class A { protected B myb; Codebeispiel Aggregation A B A(B attb){ // Konstruktor System.out.println("Konstruktor Klasse A"); myb = attb; // Aggregation protected void Method_A(){ System.out.println("Method_A aufgerufen"); myb.method_b(); Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-6
Codebeispiel Aggregation.. B b = new B(); A a = new A(b);.. a = null;.. A B Objekt b existiert weiter, auch wenn Objekt a zerstört wird! Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-7
Beziehungen zwischen Klassen Komposition Beziehung: "hat ein" ( possède") Ein Objekt der Klasse B ist Teil eines Objektes der Klasse A und existiert nur solange das Objekt der Klasse A existiert. Beispiel: Ein Baum hat eine Wurzel und einen Stamm. A B Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-8
public class A { protected B myb; Berner Fachhochschule Codebeispiel Komposition A(){ // Konstruktor System.out.println("Konstruktor Klasse A"); myb = new B(); // Komposition protected void Method_A(){ System.out.println("Method_A aufgerufen"); myb.method_b(); Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-9
Codebeispiel Komposition.. A a = new A();.. a = null;.. A B Objekt b wird innerhalb von A instanziert und existiert solange wie Objekt a lebt. Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-10
Beziehungen zwischen Klassen Assoziation Beziehung: "benutz ein" ("utilise") Eine Assoziation ist eine lockere, inhaltliche Beziehung zweier Klassen. Beispiel: Die Klasse GrafischesObjekt kann die Methode print() der Klasse Printer benutzen, um die Grafik auszudrucken. A B Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-11
public class A { A(){ Berner Fachhochschule Codebeispiel Assoziation // Konstruktor System.out.println("Konstruktor Klasse A"); protected void Method_A(){ System.out.println("Method_A aufgerufen"); B be = new B(); // Assoziation be.method_b(); Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-12
Übung Klassendiagramm Beziehungen zwischen Klassen Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-13
public class Animal { protected Chien chien; Codebeispiel Klasse Animal Animal(Chien chien) { this.chien = chien; // Aggregation protected void dormir() { Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-14
public class Chien { protected Berger berger; Chien (Berger berger) Codebeispiel Klasse Chien { this.berger = berger; // Aggregation public void occuper() { Ecuelle ecuelle = new Ecuelle(); // Association ecuelle.verser("viande"); Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-15
public class Berger { Codebeispiel Klasse Berger protected Mouton mouton; protected Chien chien; Berger() { chien = new Chien(this); mouton = new Mouton(chien); public void garder() { // Komposition // Komposition public static void main(string[] args) { Berger berger = new Berger(); Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-16
Codebeispiel Klasse Mouton public class Mouton extends Animal { Mouton(Chien chien) { super(chien); public void brouter() { Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-17
public class Ecuelle { Ecuelle() { Codebeispiel Klasse Ecuelle public void verser() { Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-18
UML Unified Modelling Language (UML) Methode um beliebige Systeme (nicht nur Softwaresysteme) formal zu beschreiben verschiedene Sichten (Blickwinkel) auf ein System: Sicht auf die statische Programmstruktur Klassendiagramme, Paket-Diagramme Sicht auf das dynamische System Zustandsdiagramme, Sequenzdiagramme Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-19
UML Elemente - Klassen Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-20
UML Elemente - Objekte Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-21
UML Elemente - Notizen Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-22
UML Elemente - Vererbung Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-23
UML Elemente - Assoziationen Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-24
UML Elemente - Assoziationen Beispiel: Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-25
UML Elemente - Multiplizität Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-26
UML Elemente - Aggregation Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-27
UML Elemente - Komposition Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-28
Objekt-Diagramme Ein Objektdiagramm zeigt die Beziehungen und den Zustand einer Menge von Objekten zu einen bestimmten Zeitpunkt Ein Objektdiagramm wird verwendet, um eine statische Momentaufnahme (Instanz) eines Klassendiagramms darzustellen Für ein allgemeines Klassendiagramm existieren beliebig viele Objektdiagramme, deshalb werden meist nur besonders interessante oder prototypische dargestellt Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-29
Objekt-Diagramm Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-30
Paket-Diagramme Ein Paketdiagramm zeigt die verschiedenen Pakete (Subsysteme, Module) eines Systems und ihre Abhängigkeit untereinander Paketdiagramme werden häufig für eine Übersichts- darstellung in einer Architekturbeschreibung verwendet Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-31
Package-Diagramme Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-32
Sequenz- und Kollaborationsdiagramme Ein Sequenzdiagramm zeigt die Interaktionen zwischen einer Anzahl von Objekten, wobei die zeitliche Abfolge der ausgetauschten Nachrichten hervorgehoben wird Ein Kollaborationsdiagramm zeigt, wie das Sequenzdiagramm, die Interaktionen zwischen einer Anzahl von Objekten, wobei die Organisation der beteiligten Objekte hervorgehoben wird Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-33
Sequenzdiagramme Objekt 1 Konstruktion des Objekts Beschreibung kann hier am Rand erfolgen new() nachricht() Objekt 2 Objekt ist aktiv antwort() Lebenslinie delete() Destruktion des Objekts Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-34
Sequenzdiagramme Kollaborationsdiagramme Module Students Prof Room 1.1: getaddress() Students getmoduleinfo() getaddress() 1: getmoduleinfo() Module 1.2: getname() Prof getname() getinfo() 1.3: getinfo() Room Zeitlicher Verlauf steht im Vordergrund. Zusammenarbeit der Objekte steht im Vordergrund. Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-35
Für die Prüfung: UML im Kurs OOP mit Java Klassendiagramme inkl. Assoziationen und Multiplizitäten Für das Projekt: Klassendiagramme inkl. Assoziationen und Multiplizitäten Ev. Sequenzdiagramme Ev. Paketdiagramme UML-Editoren: AgroUML (http://argouml.tigris.org) Violet UML Editor (http://sourceforge.net/projects/violet/) Einführung in die OOP V3.0 2011 by WBR1/MOU2 BFH-TI Folie 3-36