Software Entwicklung 2. UML umgesetzt

Ähnliche Dokumente
! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Algorithmen und Datenstrukturen

Java Einführung Abstrakte Klassen und Interfaces

4. Vererbung Die Klasse Object. Die Klasse Object

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

II.4.5 Generische Datentypen - 1 -

VU Objektorientierte Modellierung Übung 2

Vergleich verschiedener OO-Programmiersprachen

Algorithmen und Datenstrukturen 07

Software Entwicklung II (SS12)

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Einstieg in die Informatik mit Java

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

UML 1.4 Referenz. Matthias Niete Dirk M. Sohn Orientation in Objects GmbH Weinheimer Str Mannheim

UML -Klassendiagramme

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

6. Globalübung (zu Übungsblatt 8)

Java für Computerlinguisten

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Algorithmen und Datenstrukturen

Java-Schulung Grundlagen

Informatik I Eprog HS12

Software Engineering Klassendiagramme Einführung

Theorie zu Übung 8 Implementierung in Java

Programmierkurs Java

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete

Java für Bauingenieure

Sommersemester Implementierung I: Struktur

Java - Programmierung - Objektorientierte Programmierung 1

12 Abstrakte Klassen, finale Klassen und Interfaces

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen

Innere Klassen in Java

Objektorientierte Programmierung Studiengang Medieninformatik

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Einstieg in die Informatik mit Java

Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell

3. Konzepte der objektorientierten Programmierung

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung

Algorithmen und Datenstrukturen 06

Objektorientierte Programmierung

Factory Method (Virtual Constructor)

Große Übung Praktische Informatik 1

OPP II Klausuraufgaben - Schnittstellen

Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell

Grundlagen der Objektorientierung

Programmieren in Java

1 Polymorphie (Vielgestaltigkeit)

Matrikelnummer:

4. AuD Tafelübung T-C3

Institut für Informatik. Endterm Klausur zu Informatik I 20. Februar 2010

Sind Kühe Tiere? oder Was lehrt uns die Objektorientierung? Prof. Dr. Th. Letschert

Softwaretechnologie - Wintersemester 2012/ Dr. Günter Kniesel

3 Objektorientierte Konzepte in Java

Musterlösungen zur Klausur Informatik 3

Programmieren 2 Java Überblick

Programmiertechnik Objektorientierung

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

14 Abstrakte Klassen, finale Klassen, Interfaces

UML Klassendiagramm. Igor Karlinskiy, Mikhail Gavrish

Klausur Software-Entwicklung März 01

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

Programmieren in Java -Eingangstest-

Von der UML nach C++

Mobile und Verteilte Datenbanken

Klausur: Java (Liste P)

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

Programmierkurs Java

Vererbung, Polymorphie

Objektorientierte Programmierung Studiengang Medieninformatik

3 Objektorientierte Konzepte in Java

14. Java Klassen. Klassen (Java) vs. Records (Pascal) Klassen - Konzeptuell. Klassen - Technisch

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Einführung in die Informatik

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Informatik II Übung 6 Gruppe 7

Transkript:

Software Entwicklung 2 UML umgesetzt

Klasse (vereinfacht) attribut : int Klasse operation() : void public class Klasse { int attribut; void operation() { 2

Sichtbarkeit der ttribute public class Klasse { Klasse + publicttribut : int # protectedttribut : int - privatettribut : int ~ packagettribut : int public int publicttribut; protected int publicttribut; private int privatettribut; int packagettribut; 3

Sichtbarkeit der Operationen public class Klasse { Klasse + publicoperation() # protectedoperation() - privateoperation() ~ packageoperation() public void publicoperation(){ protected void publicoperation() { private void privateoperation() { void packageoperation() { 4

Beispiel - m : int + getm() : int + setm(m : int) : void public class { private int m; public int getm() { return m; public void setm(int m) { this.m = m; x: y: z: m = 42 m = 0 m = 0 x = new (); y = new (); z = new (); x.setm(42); 5

Statische ttribute - m : int public class { private static int m; public int getm() { return m; + getm() : int + setm(m : int) : void public void setm(int m) { this.m = m; entspricht:.m = m; x: y: z: m = 42 m = 42 m = 42 x = new (); y = new (); z = new (); x.setm(42); 6

ssoziationen: gerichtet - m : int + getm() : int + setm(m : int) : void public class { private int m; public int getm() { return m; public void setm(int m) { this.m = m; - ref B + getref() : + setref(ref : ) : void public class B { private ref; public getref() { return ref; public void setref( ref) { this.ref = ref; 7

ssoziationen: ungerichtet - m : int + getm() : int + setm(m : int) : void - ref public class { private int m; private B ref; public int getm() { return m; public void setm(int m) { this.m = m; - ref B + getref() : + setref(ref : ) : void public class B { private ref; public getref() { return ref; public void setref( ref) { this.ref = ref; 8

ssoziationen: ggregation (Java) - m : int + getm() : int + setm(m : int) : void public class { private int m; public int getm() { return m; public void setm(int m) { this.m = m; - ref B + getref() : + setref(ref : ) : void public class B { private ref; public getref() { return ref; public void setref( ref) { this.ref = ref; 9

ssoziationen: Komposition (Java) - m : int + getm() : int + setm(m : int) : void public class { private int m; public int getm() { return m; public void setm(int m) { this.m = m; - ref B + getref() : + setref(ref : ) : void public class B { private ref; public getref() { return ref; public void setref( ref) { this.ref = ref; 10

ssoziationen: ggregation (C++) - m : int + getm() : int + setm(m : int) : void class { private: int m; public: int getm() { return m; void setm(int m) { this->m = m; ; - ref B + getref() : + setref(ref : ) : void class B { private: * ref; public: B() { ~B() { getref() { return ref; void setref( ref) { this->ref = ref; ; 11

ssoziationen: Komposition (C++) - m : int + getm() : int + setm(m : int) : void class { private: int m; public: int getm() { return m; void setm(int m) { this->m = m; ; - ref B + getref() : + setref(ref : ) : void class B { private: * ref; public: B() { ~B() { delete ref; getref() { return ref; void setref( ref) { this->ref = ref; ; 12

ggregation vs. Komposition ggregation (Java) B typebobject = new B(); typebobject.setref(new ()); obj = typebobject.getref(); typebobject = null; int x = obj.getm(); ggregation (C++) B * typebobject = new B; typebobject->setref(new ); * obj = typebobject->getref(); delete typebobject; typebobject = NULL; int x = obj->getm(); Komposition (Java) B typebobject = new B(); typebobject.setref(new ()); obj = typebobject.getref(); typebobject = null; int x = obj.getm(); Vorsicht! Komposition (C++) B * typebobject = new B; typebobject->setref(new ); * obj = typebobject->getref(); delete typebobject; typebobject = NULL; int x = obj->getm(); Crash! 13

Kardinalitäten - ref B public class B { private ref; * - ref B public class B { private LinkedList<> ref; mögliche Realisierung 14

Vererbung - m : int + getm() : int + setm(m : int) : void public class { private int m; public int getm() { return m; public void setm(int m) { this.m = m; - n : int B + getn() : int + setn(n : int) : void public class B extends { private int n; public int getn() { return n; public void setn(int n) { this.n = n; 15

Vererbung - m : int obj = new (); obj.getm(); obj.getn(); + getm() : int + setm(m : int) : void obj = new B(); obj.getm(); obj.getn(); // ((B)obj).getN(); - n : int B B obj = new B(); obj.getm(); obj.getn(); + getn() : int + setn(n : int) : void B obj = new (); 16

Vererbung - a : int # b : int + dosomething() : void + set(a : int) : void public void dosomething() { a = 1; b = 2; c = 3; d = 4; + c : int ~ d : int B + dosomething() : void public void dosomething() { a = 1; // set(1); b = 2; c = 3; d = 4; 17

bstrakte Klassen - a : int + dosomething() : void + set(a : int) : void public abstract class { private int a; public abstract void dosomething(); public void set(int a) { this.a = a; obj = new (); B public class B extends { public void dosomething() { set(42); + dosomething() : void obj = new B(); 18

Interfaces + dosomething() : void public interface { void dosomething(); obj = new (); B public class B implements { public void dosomething() { System.out.println(42); + dosomething() : void obj = new B(); 19

us einem Kundengespräch und wie Sie sehen können, haben alle rtikel in unserem Lager einen festen Platz mit Lagerplatznummer. ußerdem soll zu jedem rtikel auch die Bezeichnung, der Preis und eine kurze Beschreibung angezeigt werden. Eine Rechnung enthält, neben den Rechnungsposten, eine eindeutige Rechnungsnummer, die Kundennummer, ein Rechnungsdatum und zwei dressen. Eine ist die Rechnungsadresse, die andere die Lieferadresse. Wir trennen beide selbst dann, wenn die dressen identisch sind. Wir unterscheiden zwischen Privatadressen und Firmenadressen. Bei Firmenadressen gibt es die Felder Vorname und Name nicht, dafür aber den Firmen- und bteilungsnamen. Die Kundennummer ist einfach eine Zahl. Vielleicht können wir sie in Zukunft nutzen um alle Bestellungen eines Kunden zu suchen. Ist es möglich, die Software bereits in 4 Wochen 20

Klassendiagramm 21

Klasse rtikel public class rtikel { private int lagerplatz; private String bezeichnung; private String beschreibung; private float preis; public String getbeschreibung() { return beschreibung; public void setbeschreibung(string beschreibung) { this.beschreibung = beschreibung; public String getbezeichnung() { return bezeichnung;... 22

(abstrakte) Klasse dresse public abstract class dresse { protected String strasse; protected int plz; protected String ort; public String getort() { return ort; public void setort(string ort) { this.ort = ort; public int getplz() { return plz;... 23

Klasse Privatadresse public class Privatadresse extends dresse { private String vorname; private String name; public String getname() { return name; public void setname(string name) { this.name = name;... 24

Klasse Firmenadresse public class Firmenadresse extends dresse { private String firmenname; private String abteilung; public String getbteilung() { return abteilung; public void setbteilung(string abteilung) { this.abteilung = abteilung;... 25

Klasse Rechnung public class Rechnung { private dresse rechnungsadresse; private dresse lieferadresse; private long rechnungsnr; private long kundennummer; private Date datum; private LinkedList<rtikel> posten; public Rechnung(rtikel a, dresse r, dresse l) { posten = new LinkedList<rtikel>(); posten.add(a); rechnungsadresse = r; lieferadresse = l; public Iterator<rtikel> posteniterator() { return posten.iterator(); public void addposten(rtikel posten) { this.posten.add(posten); public void removeposten(rtikel posten) { this.posten.remove(posten);... 26