Software Engineering Klassendiagramme Einführung



Ähnliche Dokumente
Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme weiterführende Konzepte

Software Engineering Interaktionsdiagramme

Java: Vererbung. Teil 3: super()

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Programmieren in Java

Java Kurs für Anfänger Einheit 5 Methoden

Probeklausur Softwareengineering SS 15

Objektorientierte Programmierung

Grundlagen von Python

Übungen zur Softwaretechnik

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Vorkurs C++ Programmierung

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die Java- Programmierung

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

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

Programmierkurs Java

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Software Entwicklung II (SS12)

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

SWE5 Übungen zu Software-Engineering

Praktikum Software Engineering

Klassendiagramm. (class diagram)

Einführung in die Java- Programmierung

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

3 Objektorientierte Konzepte in Java

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

SS Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1. Übungsblatt. 1 Übung - Probeklausur SS 2010 Typ Prof.

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Einführung in die Programmierung

IAWWeb PDFManager. - Kurzanleitung -

Online-Bestellung Tageskarten für Mitglieder des FC St. Pauli, die nicht im Besitz einer Dauer- oder Saisonkarte sind.

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Zählen von Objekten einer bestimmten Klasse

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Professionelle Seminare im Bereich MS-Office

Kostenstellen verwalten. Tipps & Tricks

Programmieren Tutorium

1. Einführung. 2. Die Abschlagsdefinition

trivum Multiroom System Konfigurations- Anleitung Erstellen eines RS232 Protokolls am Bespiel eines Marantz SR7005

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Objektorientierte Programmierung

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Objektorientierte Programmierung. Kapitel 12: Interfaces

Softwaretechnologie -Wintersemester 2013/ Dr. Günter Kniesel

Nachklausur Programmieren / Algorithmen und Datenstrukturen 1

5. Abstrakte Klassen

Software Engineering Analyse und Analysemuster

Java Virtual Machine (JVM) Bytecode

Grundfunktionen und Bedienung

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

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

Das Handbuch zu KNetAttach. Orville Bennett Übersetzung: Thomas Bögel

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

5. Tutorium zu Programmieren

Darstellung von Assoziationen

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

SEPA-Anleitung zum Release 3.09

Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

UserManual. Handbuch zur Konfiguration einer FRITZ!Box. Autor: Version: Hansruedi Steiner 2.0, November 2014

Prüfung Software Engineering I (IB)

Einführung in die Informatik Tools

Beschreibung Regeln z.b. Abwesenheitsmeldung und Weiterleitung

Auf der linken Seite wählen Sie nun den Punkt Personen bearbeiten.

So erstellen Sie nützliche Beschreibungen zu Ihren Tradingdaten

ERSTE SCHRITTE.

Java Einführung Methoden in Klassen

Arbeiten mit UMLed und Delphi

teischl.com Software Design & Services e.u. office@teischl.com

Einführung in die Programmierung für Wirtschaftsinformatik

WhiteStarUML Tutorial

Erstellen einer digitalen Signatur für Adobe-Formulare

WordPress. Dokumentation

Anleitung Typo3-Extension - Raumbuchungssystem

Anlegen eines SendAs/RecieveAs Benutzer unter Exchange 2003, 2007 und 2010

Typumwandlungen bei Referenztypen

AUTOMATISCHE -ARCHIVIERUNG. 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!

Qt-Projekte mit Visual Studio 2005

Schritt 1 - Registrierung und Anmeldung

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Computeranwendung und Programmierung (CuP)

Unified Modeling Language (UML)

Kapitel 6. Vererbung

Adminer: Installationsanleitung

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof

Online Bestellsystem Bedienungsanleitung

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Transkript:

Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1

Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt über Vorname und Nachname Es gibt einen Konstruktor mit Vor- und Nachname als Parameter Außerdem gibt es eine Methode getname( ), die einen String aus Vor- und Nachname (getrennt durch ein Leerzeichen) zurückgibt. 2

Java: Klasse public class Person { private String vorname; private String nachname; public Person(String vorname, String nachname){ this.vorname = vorname; this.nachname = nachname; public String getname(){ return vorname + " " + nachname; 3

Klasse im UML- Klassendiagramm Name der Klasse Attribute Operationen (Methoden) 4

Darstellung von Attributen Name des Attributs Sichtbarkeit ( - steht für private ) Datentyp Auch Angabe eines Default-Wertes möglich, z. B. - alter: int = 20 5

Sichtbarkeiten in UML - private + public # protected Zugriff nur innerhalb der Klasse Zugriff von überall Zugriff nur aus der Klasse und ihren Unterklassen ~ package Zugriff nur innerhalb desselben Package 6

Datentypen in UML UML sieht keine bestimmten Datentypen vor Wenn das Diagramm in einer bestimmten Programmiersprache umgesetzt wird, verwendet man die Datentypen dieser Sprache Ansonsten: Allgemeine Datentypen verwenden, die es in jeder Sprache gibt (String, Integer, Datum, ) Datentypen weglassen, wenn Sie in dem Diagramm nicht von Bedeutung sind (z. B. in der Analyse) 7

Darstellung von Operationen (Methoden) Stereotyp <<Create>> zur Kennzeichnung einer Methode als Konstruktor (optional) Name der Methode Parameterliste Sichtbarkeit Name der Operation Rückgabe- Datentyp (wird weg gelassen, wenn void ) 8

Parameterliste Name des Parameters Datentyp des Parameters Übergaberichtung: in der Wert wird an die Methode übergeben 9

Übergaberichtungen bei Parametern Die UML sieht folgendes vor: in out Der Parameter dient ausschließlich zur Übergabe eines Wertes an die Methode Der Parameter dient ausschließlich dazu, einen Wert von der Methode entgegenzunehmen in/out Der Parameter übergibt einen Wert, und die Methode übergibt darin einen Wert zurück Meist durch die Programmiersprache vorgegeben z. B. in Java: Bei elementaren Datentypen ist die Richtung immer in (call by value) Bei Objekten und Arrays ist die Richtung immer in/out (call by reference) Die Übergaberichtung kann daher meist weg gelassen werden 10

Darstellungsmöglichkeiten (1) Details können je nach Darstellungszweck hinzugefügt oder weg gelassen werden Sichtbarkeit der Klasse (meist weggelassen) Sichtbarkeiten, Stereotypen (create u. ä.) und Methoden-signaturen weggelassen 11

Darstellungsmöglichkeiten (2) Datentypen weggelassen Nur Methoden dargestellt Nur Attribute dargestellt Nur die Klasse dargestellt 12

Welche Details sollte man darstellen? In der Analyse spielen die Implementierungsdetails keine Rolle Daher: Meist keine Sichtbarkeiten, Datentypen, Signaturen Im Entwurf und als Dokumentation des Codes sind diese Details häufig interessant Doch auch hier lässt man in Übersichtsdiagrammen oft Details weg, damit es übersichtlich bleibt Ggf. kann man ein Übersichtsdiagramm ohne Details erstellen und für einzelne Teile zusätzlich noch Detaildiagramme 13

Klasse und Objekte Klasse Objekte 16

Klassen und Objekte im Modell und im Programm Im Modell: Klasse Im Programm: Klassendefinition im Programmcode Objekte public class Person { // Objekte werden zur Laufzeit durch Aufruf des Konstruktors erstellt: Person p1 = new Person( George, Orwell ); 17

Darstellung von Objekten Objektbezeichnung Klasse, zu der das Objekt gehört Wichtig: Objektbezeichnung und Klassenname werden bei Objekten immer unterstrichen Attribut (wie in der Klasse definiert) Attributwert Datentyp (meist weg gelassen, da schon in der Klasse definiert) Normalerweise werden nur Klassen, keine Objekte modelliert Objekte werden ggf. exemplarisch zur Illustration bestimmter Sachverhalte dargestellt 18

Darstellungsmöglichkeiten Attribute weglassen, wenn nicht benötigt Objektbezeichnung weglassen, wenn nur ausgedrückt werden soll, dass es sich um ein Objekt der Klasse Person handelt. Wichtig zur Unterscheidung von einer Klasse: Doppelpunkt vor dem Klassennamen und unterstreichen. Klassennamen weglassen, wenn z. B. die Klasse noch nicht feststeht. 19

Fügen Sie eine Java-Klasse Buch hinzu Jedes Buch verfügt über einen Titel und eine Seitenzahl. Außerdem über ein Objekt der Klasse Person als Autor Es gibt einen Konstruktor mit Titel, Seitenzahl und Autor als Parameter Außerdem gibt es eine Methode print( ), die den Titel, die Seitenzahl und den über die Methode getname() ermittelten Namen des Autors ausgibt. Erweitern Sie die main-methode der Klasse Test Es sollen zusätzlich drei Bücher angelegt werden, von denen zwei denselben Autor haben. Anschließend wird für jedes Buch die Methode print() aufgerufen. public class Person { private String vorname; private String nachname; public Person(String vorname, String nachname this.vorname = vorname; this.nachname = nachname; public String getname(){ return vorname + " " + nachname; public class Test { public static void main(string[] args) { Person p1 = new Person("George", "Orwe Person p2 = new Person("Douglas", "Ada System.out.println(p1.getName()); System.out.println(p2.getName()); 20

Lösung public class Buch { private String titel; private int seitenzahl; private Person autor; public Buch(String titel, int seitenzahl, Person autor){ this.titel = titel; this.seitenzahl = seitenzahl; this.autor = autor; public void print(){ System.out.println(titel + ", " + seitenzahl + " S., Autor: " + autor.getname()); 21

Klassen mit Assoziation Rolle der beteiligten Klasse Assoziation Navigierbarkeit: Man kann vom Buch zur Person gelangen, umgekehrt nicht Multiplizität: Jedem Buch ist genau eine Person als Autor zugeordnet 23

Verbundene Objekte Klassen: Objekte: 24

Implementierung der Assoziation Sichtbarkeit, kann ebenfalls an der Rolle modelliert werden public class Buch { private String titel; private int seitenzahl; private Person autor; Verbundene Klasse als Typ verwendet Rollenname an der Assoziation als Attributname 25

Assoziation vs. Attribut Es wird immer dann eine Assoziation modelliert, wenn die als Typ verwendete Klasse ebenfalls im Modell auftaucht Attribute mit elementaren Datentypen (String, int, ) werden als gewöhnliche Attribute modelliert Wenn eine nicht modellierte Klasse, z. B. eine Systemklasse aus einer Java-Bibliothek, als Typ verwendet wird, wird ebenfalls ein gewöhnliches Attribut verwendet (z. B. java.util.date) Wichtig: Die Angaben werden immer am gegenüberliegenden Ende der Assoziation eingetragen: Gewöhnliche Attribute Assoziation autor ist ein Attribut der Klasse Buch Die Rolle autor wird auf der Seite der Klasse Person eingetragen public class Buch { private String titel; private int seitenzahl; private Person autor; 26

Navigationsrichtung public class Person { private String vorname; private String nachname; public class Buch { private String titel; private int seitenzahl; private Person autor; Über das Attribut autor kann man im Buch leicht auf das zugeordnete Personenobjekt zugreifen, also zu ihm navigieren, z. B. über eine entsprechende Methode: public Person getautor(){ return autor; In der Klasse Person ist kein Attribut vorhanden, über das man direkt auf die zugeordneten Bücher zugreifen könnte, daher gibt es keine Navigierbarkeit in die Gegenrichtung 27

Navigierbarkeit Ohne Pfeil: Keine Angabe über Navigierbarkeit auf dieser Seite Explizit keine Navigierbarkeit in diese Richtung 28

Multiplizität Zu jedem Buch gibt es immer genau eine Person als Autor. Falls es auch Bücher ohne Autor gibt, also der Wert null für das Attribut autor erlaubt ist, ist die Multiplizität 0 oder 1: Natürlich sollte es jetzt auch einen Konstruktor ohne Autor geben. 29

Was ist mit der Gegenrichtung? Wie viele Bücher kann eine Person geschrieben haben? Zu wie vielen Rechnungen gehört eine Zahlung? 30

Was ist mit der Gegenrichtung? Wie viele Bücher kann eine Person geschrieben haben? Beliebig viele! * steht für beliebig viele (null oder mehr) Zu wie vielen Rechnungen gehört eine Zahlung? Wir nehmen einmal an: eine. 31

Konsequenzen für die Implementierung (1) Die Assoziation ist nur eine Richtung navigierbar Man wird nicht daran gehindert, dieselbe Person bei mehreren Büchern in das Attribut autor einzutragen (hier: über den Konstruktor) 32

Konsequenzen für die Implementierung (2) Im anderen Beispiel wird man allerdings auch nicht daran gehindert, dieselbe Zahlung bei mehreren Rechnungen einzutragen Das würde die Mulitplizität 1 verletzen (eine Zahlung gehört immer zu genau einer Rechnung) Lösungsmöglichkeit: In der Klasse Rechnung wird dem Attribut zahlung immer eine neu angelegte Zahlung zugeordnet: private Zahlung zahlung; public void erfassezahlung( String zahlungsdatum, String zahlungsweise, String auftraggeber){ zahlung = new Zahlung(zahlungsdatum, zahlungsweise, auftraggeber); Anmerkung: War der Rechnung vorher schon eine Zahlung zugeordnet, so gehört diese anschließend keiner Rechnung mehr an, streng genommen wäre die Multiplizität also 0..1. Wenn allerdings keine Referenz mehr auf die Zahlung existiert, kann kein Zugriff mehr darauf erfolgen und sie kann als gelöscht betrachtet werden (sie wird sowieso irgendwann vom Garbage Collector gelöscht). 33

Angabe von Multiplizitäten und Navigationsrichtungen Angabe der Multiplizitäten an den nicht navigierbaren Enden: Nur eintragen, wenn sie von Bedeutung ist Wenn die genaue Implementierung nicht von Bedeutung ist insbesondere in der Analyse lässt man die Navigationsrichtungen weg und trägt nur die Multiplizitäten ein Dann trägt man auch nur die Rollen ein, die für das Verständnis wichtig sind: 34

Namensangaben an Assoziationen Falls es hilfreich ist, kann ein Name an einer Assoziation angegeben werden: Name Ggf. kann auch noch eine Leserichtung des Namens eingetragen werden: Leserichtung damit klar ist, dass hier der Hersteller an den Händler liefert, und nicht umgekehrt 35