OOSE 13 Objektorientierter Entwurf (OOD) (Hörsaalübung)

Ähnliche Dokumente
OOSE_05 MODELLIERUNG MIT DER UML

OOSE 9 OOA: Klassen und Objektdiagramme (Hörsaalübung)

Kapitel 2: OO Grundlagen

Schnittstellen und. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

OOSE 01 JAVA MIT BLUEJ UND UML-BY-EXAMPLE

Objektorientierte Analyse

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

Objektorientierte Softwareentwicklung

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober Klausur II

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1

Teil III der Vorlesung Objektorientierte Analyse (OOA) 30) Überblick über die OOA

Lehrbuch der Objektmodellierung

OOSE11 OOA: Klassen- und Objektdiagramme

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Praxis der Softwareentwicklung

Programmieren 2 Java Überblick

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Objektmodellierung. Grundkurs C++

Wiederholung. Klassenhierarchie:

Objektorientierte und Funktionale Programmierung SS 2014

Verteidigung Großer Beleg

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Analyse

Programmierung Nachklausurtutorium

Design Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff

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

Testen nebenläufiger Objekte

Einführung in die Objektorientierung

Einführung in die Objektorientierung

Software Engineering. 5. Architektur

Decorator Pattern. Analyse- und Design-Pattern CAS SWE FS14. Roland Müller Samuel Schärer

Praxis der Softwareentwicklung

Modellierungstipps für die Anwendungsfallmodellierung

Software Design basierend auf dem Plug-In Konzept

Objektorientierteund FunktionaleProgrammierung

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

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

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

Seite Architektur interaktiver Systeme. 7. Architektur interaktiver Systeme. 7.1 Entkopplung durch Sichten. Schichtenarchitektur

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

Softwaretechnik SS Vorlesungseinheit

Methodische objektorientierte Softwareentwicklung

Einführung in die Programmierung

Einführung in die Informatik II

Softwaretechnik 2015/2016

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

Inhaltsverzeichnis. Teil 1 Grundlagen der Objektorientierung 29

Praxis der Softwareentwicklung WS 2015/16

Teil II Objektorientierte Programmierung (OOP) 20. Objektnetze

OOSE 2 Vererbung und Polymorphie mit BlueJ & CRC Kartenmethode (Hörsaalübung)

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

Einführung in die Programmiersprache Java II

Medientechnik Sommersemester 2016

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces

7. Objektorientierung. Informatik II für Verkehrsingenieure

U08 Entwurfsmuster (II)

Einführung in die Programmierung

Informatik II. Semesterklausur

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Objektmodellierung

Softwareentwicklung OOD Videothek

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Objektmodellierung

Objektorientierte und Funktionale Programmierung

Taxi-Simulation. Objektorientierte Analyse. Verb-Substantiv-Methode

Teil II Objektorientierte Programmierung (OOP) 20. Objektnetze

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich

JavaFX Beispiel Lights Out (Teil 1: Ansicht)

Übung Einführung in die Softwaretechnik

3. Objektorientierte Analyse

Vererbung, Polymorphie

Software-Engineering im Sommersemester 2014

1 Abstrakte Klassen, finale Klassen und Interfaces

Prinzipien Objektorientierter Programmierung

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

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

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

Auf einen Blick. 1 Einleitung Die Basis der Objektorientierung Die Prinzipien des objektorientierten Entwurfs...

14 Abstrakte Klassen, finale Klassen, Interfaces

Einführung in die Objektorientierung

Alternative Architekturkonzepte

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

Klausur: Java (Liste P)

Theorie zu Übung 8 Implementierung in Java

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

Einstieg in die Informatik mit Java

14 Abstrakte Klassen, finale Klassen, Interfaces

Vorlesung Informatik II

Objektorientierte Analyse und Design mit der Unified Modelling Language (UML) Sandra Meißl

Einstieg in die Informatik mit Java

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Teil III der Vorlesung Objektorientierte Analyse (OOA) 30) Überblick über die OOA

Requirements Engineering I

Enhanced Collection API

Programmierkurs C++ Abstrakte Klassen und Methoden

Programmieren in Java

Programmierkurs Java

Transkript:

OOSE 13 Objektorientierter Entwurf (OOD) (Hörsaalübung) SS 2015 Birgit Demuth

Analyse Anforderungs- Ermittlung Von der Analyse zum Entwurf System- Modelierung Anforderungs- Spezifikation (Pflichtenheft) Architektur- Entwurf Klassen- bzw. Modul- Spezifikationen Entwurf Detail- Entwurf Entwurf

Einige Kriterien für guten Entwurf Korrektheit Erfüllung der Anforderungen Wiedergabe aller Funktionen des Systemmodells Sicherstellung der nichtfunktionalen Anforderungen Verständlichkeit Gute Dokumentation Anpassbarkeit Hohe Kohäsion innerhalb der Komponenten Schwache Kopplung der Komponenten Wiederverwendung Stabilität und Zuverlässigkeit Angemessene Ressourcenverwendung

Hohe Kohäsion + Schwache Kopplung Subsystem A (z.b. Benutzungsoberfläche) Subsystem B (z.b. fachlicher Kern) Subsystem B darf keine Information und Funktionalität enthalten, die zum Zuständigkeitsbereich von A gehört und umgekehrt. Es muss möglich sein, Subsystem A weitgehend auszutauschen oder zu verändern, ohne Subsystem B zu verändern. Die meisten Änderungen von Subsystem B sollten nur relativ einfache Änderungen in Subsystem A nach sich ziehen. Beispiele zur konkreten technischen Realisierung siehe MVC Architektur und Entwurfsmuster

FALLSTUDIE MARK IV COFFEEMAKER (FORTSETZUNG) (1), (2)

Teile und Funktionen von MarkIV Coffeemaker Heizung für den Boiler (boileron/boileroff) Heizung für die Wärmeplatte (warmeron/warmeroff) Sensor für die Wärmeplatte (warmerempty, potempty, potnotempty) Sensor für den Boiler (boilerempty, boilernotempty) Zubereitungsknopf (brew) Anzeigelampe (indicatoron/indicatoroff) leuchtet auf, wenn der Zubereitungsvorgang beendet und der Kaffee fertig ist. Druckventil (valveopen/valveclosed), das geöffnet wird, um den Druck im Boiler zu reduzieren; der Druckabfall unterbricht den Wasserzufluss zum Filter; das Ventil kann geöffnet oder geschlossen sein.

OOA: Analyseklassendiagramm

OOD

CoffeeMakerAPI Spezifikation der Hardwarefunktionen

Schnittstellen und abstrakte Klassen Abstrakte Klasse Schnittstelle Enthält Attribute und Operationen Kann Default Verhalten festlegen Default Verhalten kann in Unterklassen überdefiniert werden Java: Unterklasse kann nur von einer Klasse erben Enthält nur Operationen (und ggf. Konstante) Kann kein Default Verhalten festlegen Überdefinition unmöglich Java: Eine Klasse kann mehrere Schnittstellen implementieren

OOD: MarkIV CoffeeMaker public class CoffeeMaker { public static void main(string[] args) { CoffeeMakerAPI api = new M4CoffeeMakerAPIImplementation(); M4UserInterface ui = new M4UserInterface(api); M4HotWaterSource hws = new M4HotWaterSource(api); M4ContainmentVessel cv = new M4ContainmentVessel(api); ui.init(hws,cv); hws.init(ui,cv); cv.init(ui,hws); while(true) { ui.poll(); hws.poll(); cv.poll(); } } }

Implementierung Implementierung der Interfaces/Klassen des OOD Klassendiagramms Wie wird nun die Kaffeemaschine MarkIV zum ablauffähigen Programm? 1. Klasse CoffeeMaker also Kommandozeilenprogramm (aber da sieht man nichts : ( Endloszyklus) 2. GUI zur Simulation der Kaffeemaschine, d.h. etwas zum Spielen Erweiterung unserer Klasse CoffeeMaker um eine GUI Implementierung mit dem ObserverPattern MarkIVFinal.jar Nächster Schritt: MarkIV mit Threads für die einzelnen Sensoren

TELEFONBUCH

Analysemodell des Telefonbuches

Schichtenarchitektur Benutzungsoberfläche Window Button Menu Anwendungslogik PhoneBook Entry Ablaufsteuerung Datenhaltung

Entwurfsmodell des Telefonbuches (Anwendungslogik)

Literatur (1) Robert Martin: Designing Object Oriented C++ Applications Using the Booch Method. Prentice Hall, 1995 (2) Robert Martin: UML for Java Programmers. Prentice Hall, 2003 (3) Birgit Demuth (Hrsg.): Softwaretechnologie für Einsteiger. Pearson Studium, 2. geänderte Auflage, 2014