Objektorientierte Softwareentwicklung

Größe: px
Ab Seite anzeigen:

Download "Objektorientierte Softwareentwicklung"

Transkript

1 Objektorientierte Softwareentwicklung Analyse, Design und Programmierung Ralf Pichocki 15. Auflage 2002

2

3

4 15. Auflage, by PiSoftware Ralf Pichocki Bahnhofstraße 190 D Marl-Sinsen Tel Fax Bearbeitung: Gestaltung: Druck:

5 Inhaltsverzeichnis EINFÜHRUNG... 9 OBJEKTORIENTIERTE VORGEHENSWEISE... 9 ÜBERBLICK GRUNDLAGEN DER SOFTWAREENTWICKLUNG Software-Entwicklung im Spannungsfeld von Qualität Kosten Zeit Qualitätskriterien Probleme der Software-Entwicklung Prinzip der Wiederverwendbarkeit Vorgehensmodelle OBJEKTORIENTIERTE VORGEHENSWEISE EIGENSCHAFTEN UND ZIELE Eigenschaften Ziele OBJEKTORIENTIERTER LEBENSZYKLUS KONZEPTE DER OBJEKTORIENTIERTEN ENTWICKLUNG OBJEKTE KLASSEN VERERBUNG ASSOZIATION AGGREGATION KOMPOSITION NACHRICHTEN POLYMORPHIE GENERIZITÄT SUBSYSTEME SCHNITTSTELLEN OBJEKTORIENTIERTE ANALYSE ZIELE VORGEHENSWEISE ERGEBNISSE Statische Sicht: Dynamische Sicht: Funktionale Sicht: STATISCHES MODELL Vorgehensweise zur Modellierung Identifizieren von Objekten und Klassen Identifizieren von Attributen und Verantwortlichkeiten Identifizieren von Klassen- und Objektbeziehungen Identifizieren von Strukturen Vererbungstrukturen Mehrfachvererbung Aggregationsstruktur Assoziationsstruktur Identifizieren von Methoden Konzept... 29

6 Arten von Methoden Implizite Methoden Explizite Methoden Spezifikation von Methoden Identifizieren von Nachrichtenverbindungen Klassenspezifikation DYNAMISCHES MODELL DES SYSTEMS Allgemeines Ereignisse Zustände Szenarios Ereignisfolgen Zustandsdiagramme FUNKTIONALES MODELL DES SYSTEMS OBJEKTORIENTIERTES DESIGN VORGEHENSWEISE PRÜFFRAGEN: ERGEBNISSE DER DESIGNPHASE Beschreibung der Architektur Beschreibung der gemeinsamen taktischen Vorgehensweise...36 Entwicklungsplan ELEMENTARE SYSTEMBAUSTEINE Problembereichskomponente Kommunikationskomponente Datenmanagementkomponente Taskmanagementkomponente ABKAPSELUNG VON SYSTEMTEILEN UND DEFINITION VON SCHNITTSTELLEN OBJEKTORIENTIERTE PROGRAMMENTWICKLUNG WARTBARKEIT Formen von Wartung Bessere Wartbarkeit durch Objektorientierung WIEDERVERWENDBARKEIT Formen allgemeiner Wiederverwendbarkeit Formen objektorientierter Wiederverwendbarkeit KOMPONENTEN UND TOOLS FÜR OBJEKTORIENTIERTE ENTWICKLUNG KLASSENBIBLIOTHEKEN ENTWICKLUNGS-TOOLS PROJEKTMANAGEMENT-TOOLS METHODENÜBERBLICK OBJEKTORIENTIERTE ANALYSE UND OBJEKTORIENTIERTES DESIGN PETER COAD, EDWARD YOURDON, Ziele Objektorientierte Analyse Objektorientiertes Design OBJEKTORIENTIERTES MODELLIEREN UND ENTWERFEN RUMBAUGH UND ANDERE, Modelle Objektmodell Dynamisches Modell Funktionalitätsmodell OBJEKTORIENTIERTES SOFTWARE-ENGINEERING JACOBSON UND ANDERE,

7 Modelle Anforderungsmodell Analysemodell OBJEKTORIENTIERTE ANALYSE UND DESIGN GRADY BOOCH, Macro Development Process Micro Development Process Dreidimensionales Modell ANHANG: ANFORDERUNGSANALYSE ANWENDUNGSFALLDIAGRAMME AKTIVITÄTSDIAGRAMME BEISPIEL: VERSICHERUNGSVERTRAG ANWENDUNGSFALLANALYSE AKTIVITÄTENMODELLIERUNG BEISPIEL: GETRÄNKEAUTOMAT SYSTEMBESCHREIBUNG ANWENDUNGSFALLDIAGRAMM KANDIDATEN FÜR OBJEKTE, ERSTER ANSATZ KOLLABORATIONSDIAGRAMM KANDIDATEN FÜR OBJEKTE, ZWEITER ANSATZ ENTWURF DER KLASSE LAGER KLASSENDIAGRAMM DER KLASSE LAGER UND IHRER HILFSKLASSEN KLASSENDIAGRAMM DER ALLGEMEINEN KLASSE LAGER UND IHRER HILFSKLASSEN OBJEKTDIAGRAMM FÜR DAS LAGER DES GETRÄNKEAUTOMATEN SEQUENZDIAGRAMM FÜR DIE NACHRICHT MÖGLICHKAFFEE() AN DEN MIXER ZUSTANDSDIAGRAMM FÜR DEN GETRÄNKEAUTOMATEN UNIFIED MODELLING LANGUAGE LITERATURVERZEICHNIS STICHWORTVERZEICHNIS

8 8

9 Einführung Der Objektorientierte Ansatz nimmt in der Analyse- und Designphase von Software-Projekten rasch an Bedeutung zu. Zur Beschreibung objektorientierter Systeme ist die mittlerweile genormte Unified Modeling Language (UML) geeignet, eine grafische Notationsweise, mit der alle Phasen, nämlich Analyse, Design und Programmierung, abgedeckt werden können. Objektorientierte Vorgehensweise Problembeschreibung Analyse: Objekte des Problembereiches sowie ihre Beziehungen untereinander als konzeptionelles Modell der Anwendung Beispiel: Kraftfahrzeug ist ein Fahrzeug, hat einen Motor und nutzt eine Straße Fahrzeug Motor Kraftfahrzeug Straße Design: DV-technische Umsetzung, insbesondere mit den Zielen Wiederverwendbarkeit und Wartbarkeit Beispiel: : Fahrrad ist ein Fahrzeug und nutzt einen Weg (Straße oder Radweg) Fahrzeug Kraftfahrzeug Fahrrad Motor Weg Straße Radweg 9

10 Programmierung: Umsetzung der Ergebnisse von Analyse und Design mit Hilfe objektorientierter oder objektbasierter Programmiersprachen, -tools und systeme Quellcodebeispiel in Programmiersprache JAVA public class Radweg extends Weg { //... } public class Fahrrad extends Fahrzeug { Weg fahrtstrecke = null; //... } Verschiedene Methoden: Peter Coad/Edward Yourdon, Grady Booch und andere Überblick Objektorientierte Vorgehensweise in Analyse und Design, Methodenüberblick Prinzipien der objektorientierten Analyse L Identifikation von Objekten und Klassen L Identifikation ihrer Beziehungen untereinander (Vererbung, Assoziation, Aggregation) L Finden und Festlegen dynamischer und kommunikativer Objektbeziehungen L Beschreibung von Funktionen und Attributen der Objekte und Klassen Prinzipien des objektorientierten Designs L Modellierung elementarer Systembausteine L Abkapselung von Systemteilen, Definition von Schnittstellen L Wartbarkeit und Wiederverwendbarkeit Beispiele und Übungen 10

11 Grundlagen der Softwareentwicklung Software-Entwicklung im Spannungsfeld von Qualität Kosten Zeit Qualität Software Kosten Zeit Qualitätskriterien L Funktionserfüllung L Zuverlässigkeit L Robustheit L Erweiterbarkeit L Wiederverwendbarkeit L Kompatibilität L Portabilität L Benutzerfreundlichkeit L Effizienz L Wartbarkeit Probleme der Software-Entwicklung L Ende der 60er Jahre: GOTO-Krise, Lösung: strukturierte Programmierung L Ende der 80er Jahre: Wiederverwendbarkeits-Krise, Lösung: Objektorientierung Prinzip der Wiederverwendbarkeit L Prozedurale Pogrammierung: Standarfunktionen und Module L Objektorientierte Pogrammierung: Klassen und Klassenbibliotheken 11

12 Vorgehensmodelle L Wasserfallmodell Analyse Design Implementation Test Wartung L Baseballmodell OOA OOP OOD L 4-Phasen-Modell Anforderungsphase (Analyse) Festlegungsphase (Design) Erstellungsphase (Programmierung) Übergabephase (Abschluß) L Spiral-Modell Analys Analys Desig Analys Desig Desig Program Program Program L Anwendungsfallgetriebene architekturzentrierte iterativ-inkrementelle Entwicklung 12

13 Objektorientierte Vorgehensweise L Neue Art Probleme zu verstehen und Lösungen zu finden L Blick auf Objekte als Einheit von Funktionen und Daten Beispiel Auto.heizen() und Haus.heizen() sind verschieden L Softwaresysteme als Menge miteinander kommunizierender Objekte, wobei auch Klassen Objekte sein können L Betonung auf Datenabstraktion, Informationskapselung und Wiederverwendbarkeit L Neue Methoden für Analyse, Design und Programmierung Eigenschaften und Ziele Eigenschaften L Bessere Abbildung der realen Welt L Wiederverwendbarkeit bereits entwickelter Module L Einfache Modifikation und Wartung (Kapselung, Schnittstellen) L Schnell verfügbare Prototypen, Entwicklung inkrementell und iterativ L Besonders geeignet für offene Client/Server-Lösungen Ziele L Reduktion des Aufwandes bei Entwicklung und Wartung L Wiederverwendbare Software-Bausteine und -Bibliotheken Objektorientierter Lebenszyklus L Analyse: Objekte im Problembereich L Design: Objekte im Lösungsbereich L Programmierung: Objekte im Programmcode Objektorientierte Analyse Objekte im Problembereich Objektorientiertes Design Objekte im Lösungsbereich Objektorientierte Programmierung Objekte im Programmcode L Beschreibung aller Phasen mit Hilfe der UML ist möglich 13

14 Konzepte der objektorientierten Entwicklung Objekte L Funktionen L Eigenschaften L Eigenschaftswerte L Identität Klassen Objekte Klassen L Gemeinsamkeiten L Baupläne L Datenabstraktion und Kapselung L Klassifizierungsproblematik Kraftfahrzeug momentgeschw : float innentemp : float beschleunige(zielgesch : float) heize(zieltemp : float) Haus innentemp : float heize(zieltemp : float) 14

15 L Darstellung in der der UML mit Hilfe von Rational Rose 98 Klassenname Attribute Methoden Vererbung L spezielle Klassen Kraftfahrzeug momentgeschw : float = 0 innentemp : float getgeschw() : float beschleunige(speed:float): float Initialwert Typ Rückgabewert Parameter und Typ L erweiterte Funktionalität Konto kontonummer kontostand eroeffnen() aufloesen() Girokonto sollzins kreditlimit einzahlen() auszahlen() aufloesen() Festgeldkonto habenzins restlaufzeit verlaengern() aufloesen() L abstrakte Klassen überschriebene Methode Assoziation L Nutzt -Eigenschaft L Kardinalität L Rolle Firma 2..* Auftrag 0..* FreierMitarbeiter 15

16 Aggregation L Hat -Eigenschaft L Kardinalität L Kann- oder Muß-Beziehung L Komponenten auch allein existenzfähig Firma 0..1 Anstellung 0..* Arbeiter Komposition L Form der Aggregation L Besteht aus -Eigenschaft L Kardinalität L Muß-Beziehung L Komponenten allein nicht existenzfähig Gebäude besteht aus 1 1..* Etage Nachrichten L Senden entspricht Methodenaufruf L Kommunikationspfad (Link) ist notwendig L Sender kennt und sieht den Empfänger L Entspricht Einschreiben mit Rückantwort aber ohne Absender :BankKraft :BankKunde :Sparkonto auszahlen(float) true/false auszahlen(float) true/false 16

17 Polymorphie L Statische Polymorphie L Dynamische Polymorphie BankKunde name : String adresse : String 1 hat 0..* KontoPaket inhaber alleaufloesen() 1 0..* <<Abstract>> Konto kontonummer kontostand eroeffnen() aufloesen() Girokonto sollzins kreditlimit einzahlen() auszahlen() aufloesen() Festgeldkonto habenzins restlaufzeit verlaengern() aufloesen() Sparkonto habenzins einzahlen() auszahlen() aufloesen() L Senden derselben Nachricht an Objekte verschiedener Klassen derselben Basisklasse L trotzdem Aufruf der richtigen Methode Generizität L anderer Weg zur Wiederverwendbarkeit kundekalli : BankKunde kalliskonten : KontoPaket kalliskonto_1 : Konto kalliskonto_2 : Konto alleaufloesen( ) aufloesen( ) ttrue aufloesen( ) ttrue ttrue 17

18 L hauptsächlich Collection-Klassen Liste anhaengen() loeschen() sortieren() groesserals() Liste<Konto> groesserals() Liste<Auto> groesserals() L aber auch andere Klassen, die Objekte als Ganzes bearbeiten Subsysteme L benannte, logische Zusammenfassungen zu Bibliotheken oder Modulen Verkehr Firmen Bankenwelt Schnittstellen L Bereitstellung von Verhaltensmustern, die erst später implementiert werden L Beispiel: Schnittstelle, für einheitlichen Zugriff auf Objekte verschiedener Klassen Kraftfahrzeug momentangeschw : float momentantemp : float Konto kontonummer : int kontostand : float <<Interface>> Anzeigbar benutzt AusgabeDialog beschleunige() heize() anzeigen() eroeffnen() aufloesen() anzeigen() anzeigen() 18

19 L Beispiel: Schnittstelle zum eingeschränkten Zugriff auf Objekte einer Klasse Kraftfahrzeug <<Interface>> Einsteigbar <<Interface>> Lenkbar <<Interface>> Reparierbar <<Interface>> Versteuerbar einsteigen() aussteigen() wobinich() links() rechts() beschleunigen() anhalten() wobinich() klappeauf() reparieren() klappezu() kassieren() Fahrgast Busfahrer Mechaniker Finanzbeamter L Beispiel: Dieselbe Schnittstelle bietet einheitlichen Zugriff auf verschiedene Klassen Kraftfahrzeug A rbeitsvertrag Umsatz <<Interface>> Versteuerbar kassieren() Finanzbeamter 19

20 L Beispiel: Schnittstelle Sortierbar statt Verwendung einer generischen Klasse Kraftfahrzeug Konto <<Interface>> Sortierbar getgroesse() SortierListe einfuegenelement() loeschenelement() sortieren() L Beispiel: Schnittstelle zur Simulation von Mehrfachvererbung Vertrag Kaufvertrag Ratenkauf summe zins <<Interface>> IKredit setsumme() getsumme() setzins() getzins() setsumme() getsumme() setzins() getzins() opname() L Beispiel: Dieselbe Schnittstelle bietet einheitlichen Zugriff auf verschiedene Klassen Ratenkauf summe zins setsumme() getsumme() setzins() getzins() opname() Hypothek leihwert nominalzins setsumme() getsumme() setzins() getzins() <<Interface>> IKredit setsumme() getsumme() setzins() getzins() Bankangestellter summiereallekredite() 20

21 Objektorientierte Analyse Ziele L Probleme verstehen, Organisation aufdecken L Komplexität auflösen, Dekomposition einer Anwendung L Anforderungen beschreiben Vorgehensweise L Vollständig dokumentiertes logisches Modell des relevanten Realweltausschnittes L Darstellung des Anforderungsverhaltens in verschiedenen Modellen und Diagrammen L Ermittlung der Abstraktionen, die den Anforderungen zugrunde liegen L Objekte und Objektverhalten finden und beschreiben L Statische Zusammenhänge zwischen Objekten finden (Beispiel: Bus Motor) L Dynamische Zusammenhänge zwischen Objekten finden (Beispiel: Bus Fahrgast) Ergebnisse Statische Sicht: L Objekte L Klassen L Strukturen L Nachrichtenvebrindungen L Darstellungsmittel: Anwendungsfalldiagramme führt durch Linienfahrt Kraftfahrer <<include>> Fahrgast teilt ein Fahrkartenverkauf Schichtleiter 21

22 L Darstellungsmittel: Objektdiagramme L Darstellungsmittel: Klassendiagramme L Darstellungsmittel: Kollaborationsdiagramme fahrerfritz : Kraftfahrer türenschließen() losfahren() L Darstellungsmittel: Moduldiagramme derbus : Kraftfahrzeug beschleunigen(50) diesel_200_ps : Motor Dynamische Sicht: L Objektverhalten L Kommunikation L Folgen von Methodenaufrufen L Kontrollfluß L Darstellungsmittel: Sequenzdiagramme fahrerfritz : Kraftfahrer derbus : Kraftfahrzeug diesel_200_ps : Motor tuerenschliessen() true losfahren(50) drehzahlerhoehen() Warten bis 50 km/h ASYNCHRON! geschwkonstanthalten() drehzahlkonstanthalten() 22

23 L Darstellungsmittel: Zustandsdiagramme Funktionale Sicht: L Algorithmen Algorithmus Bushaltestelle anfahren : Erreiche Haltebucht der Haltestelle, dabei verringere Geschwindigkeit auf Null, gib alle Türen frei, warte bis niemand mehr ein- oder aussteigt, schließe die Türen. L Realisierung der Methoden L Darstellungsmittel: Ablaufdiagramme Geschw verringern Geschw = 0 UND Ort = Haltpkt? nein ja ja Steigt noch jemand aus oder ein? Türen freigeben nein Türen schließen L Darstellungsmittel: Struktogramme L Darstellungsmittel: Pseudocode Pseudocode Bushaltestelle anfahren : WHILE ( Geschw > 0 ) AND ( NOT ishaltestelleerreicht() ) DO Geschw = MAX( Geschw 10, 0 ) gibfreitueren() WHILE ( jemandsteigtein() OR jemandsteigtaus() ) DO warte( 1 ) schliessetüren() 23

24 Statisches Modell Vorgehensweise zur Modellierung L Identifizieren von Objekten und Klassen L Identifizieren von Verantwortlichkeiten und Attributen L Identifizieren von Klassen- und Objektbeziehungen L Identifizieren von Strukturen L Identifizieren von Methoden und Nachrichtenverbindungen L Zerlegen in Teilsysteme Identifizieren von Objekten und Klassen L Personen, Rollen, Orte, Dinge, Geräte, Einrichtungen L Beschreibungen, Konzepte L Ereignisse, Interaktionen L Organisationen, Einheiten, Systemstrukturen L Relevanz für das zu modellierende System (Realweltausschnitt!) L Klassen stellen Dienste bereit, die für die Gesamtfunktionalität benötigt werden L Klassen enthalten Infomationen, deren Speicherung innerhalb des Systems erforderlich ist L Klassen werden durch mehr als ein Attribut beschrieben L Klassen bilden zunächst nur den Problembereich ab L Klassen enthalten zunächst keine Design- oder Implementierungskonstrukte Identifizieren von Attributen und Verantwortlichkeiten L Objekte einer Klasse haben gemeinsames Verhalten und Menge von Zuständen L Objektverhalten definiert durch Methoden, die für Objekte aufgerufen werden können L Zustand ist bestimmt durch die Werte seiner Eigenschaften L Eigenschaften sind Attribute, aber auch Beziehungen zu anderen Objekten 24

25 L Prüffrage: Wie wird das Objekt allgemein und wie im Problembereich beschrieben? L Prüffrage: Wie ist die Systemverantwortlichkeit des Objektes? L Prüffrage: Welche Informationen werden von den Methoden innerhalb des Objektes benötigt? L Attributspezifikation: Name, Datentyp und Wertebereich, Kurzbeschreibung Identifizieren von Klassen- und Objektbeziehungen L Spezifikation: Name der Klasse, beteiligte Klassen, Kardinalitäten. Kurzbeschreibung L Objekte sind zur Erfüllung ihrer Aufgaben auf die Kommunikation mit anderen Objekten angewiesen L Kommunikationspfad ist Verbindung (Link) zwischen zwei Objekten L Kardinalität der Beziehungen L Beispiele für Klassenbeziehungen: Dozent - Gehaltskonto Dozent name : String anschrift : String 1 1 Gehaltskonto kontonummer : int Kurstyp - Kurs Kurstyp bezeichnung : String dauer : int 1 0..* Kurs kursnummer : int datum : Date Kurs - Teilnehmer Kurs kursnummer : int datum : Date 1..* 0..* Teilnehmer name : String anschrift : String alter : int 25

26 L Beispiele für Objektbeziehungen: dozentdieter dieterskonto, dozentpaul paulskonto dozentdieter : Dozent dieterskonto : Gehaltskonto dozentpaul : Dozent paulskonto : Gehaltskonto typookurs montagoo, dienstagoo, typjava dienstagjava typoo : Kurstyp dienstagoo : Kurs montagoo : Kurs typjava : Kurstyp dienstagjava : Kurs Teilnehmer Kurse tinateilnehmer : Teilnehmer thomasteilnehmer : Teilnehmer mitwochjava : Kurs montagoo : Kurs dienstagjava : Kurs paulparticipant : Teilnehmer dienstagoo : Kurs 26

27 Identifizieren von Strukturen Vererbungstrukturen L Objekte der abgeleiteten Klasse erben alle Attribute, Objektverbindungen und Methoden der Basisklasse L Überall kann statt eines Objektes der Basisklasse auch eines der abgeleiteten Klasse verwendet werden. (Die Umkehrung gilt nicht!) L Alle Nachrichten an Basisklassenobjekte können auch von Objekten einer abgeleiteten Klasse bearbeitet werden: da jedes Konto die Nachricht gibstand() verarbeiten kann, kann auch ein davon abgeleitetes Sparkonto diese Nachricht verarbeiten. L Ein abgeleitetes Objekt kann die Objektverbindungen der Basisklasse nutzen, um selbst Nachrichten zu versenden: da jeder Bus einen Link zu seinem Motor hat, kann auch ein davon abgeleiteter Linienbus diesem die Nachricht beschleunige() senden. L Beispiel: kundekalli : BankKunde kalliskonto : Sparkonto aufloesen( ) true 27

28 Mehrfachvererbung L Eine abgeleitete Klasse erbt von mehreren direkten Basisklassen L Problem: Verschiedene Basisklassen haben gemeinsame Basisklasse, Doppelerbschaft L Beispiel: Vertrag partner : String datum : Date Kaufvertrag produkt : String preis : float Kreditvertrag betrag : float zins : float laufzeit : int Ratenkauf anzahlung : float rate : float Aggregationsstruktur L Ein Objekt enthält ein anderes Objekt oder mehrere andere Objekte L Typen: Gesamtheit-Teil, Container-Inhalt, Gruppe-Mitglied, Verwendung L Beispiele: Gesamtheit-Teil Fuhrpark 1 1..* Bus Container-Inhalt Bus * Fahrgast Gruppe-Mitglied Rezeptur Chemikalie 0..* 1..* 28

29 Assoziationsstruktur L Prüffrage: In welche Teile kann die Klasse im Problembereich zerlegt werden? L Prüffrage: Werden die Komponenten innerhalb der Systemveatwortlichkeit benötigt? L Prüffrage: Erfüllen diese die Kriterien an Klassen, die in das Modell gehören? L Prüffrage: Haben die Teile keine ihrer Aufgaben an die Gesamtheit abgetreten? L Beispiel: steuert Bus Kraftfahrer Identifizieren von Methoden Konzept L Sämtliche Aktivitäten eines objektorientierten Systems basieren auf der Kommunikation zwischen Objekten L Ein Objekt fordert als Client die Dienste eines anderen Objektes als Server mittels Aussenden einer Nachricht an. L Details über Methoden, Nachrichtenverbindungen und Reihenfolgen werden erst später festgelegt. L Eine Nachricht kann auch als Broadcast an alle Objekte einer Klasse gesendet werden L Notwendig für Kommunikation: Objektbeziehung oder Gesamtheit-Teil-Verhältnis L Allgemein kennt der Sender den Empfänger, nicht aber der Empfänger den Sender L Nachrichtenversendung an sich selbst ist möglich und üblich: der Bus, der die Nachricht anhalten() empfängt, wird sich selbst die Nachricht bremsen(0) senden Arten von Methoden L Unterscheide implizite und explizite Methoden L Implizite Methoden in der Analysephase nicht dargestellt, damit überschaubar L Explizite Methoden stellen die echte Funktionalität dar, berechnen Werte 29

30 L In Klassen die Realwelt-Schnittstellen darstellen werden Methoden definiert die auf Eingaben oder Nachrichten externer Systeme warten Konto kontonummer : int kontostand : float Konto() finalize() getkontonummer() setkontonummer() getkontostand() eroeffnen() aufloesen() berechnezins() Kraftfahrzeug momentangeschw : float inntntemp : float Kraftfahrzeug() finalize() getmomentangesch() getinnentemp() beschleunige() heize() Implizite Methoden L Konstruktoren: Erzeugung von Objekten L Destruktoren: Zerstörung von Objekten L Zugriffsfunktionen: setattribut(), getattribut, isattribut(), hasattribut() L Verbindungsfunktionen Explizite Methoden L Beschreiben spezifische Verantwortlichkeiten einer Klasse L Dienste, die ein Objekt dieser Klasse anbietet und zur Verfügung stellt L Prüffragen: Welche Berechnungen sollen die Objekte bereitstellen? Gibt es Überwachungsaufgaben, die wahrgenommen werden müssen? PreisListe preisprotonne : float liest Fracht gewicht : float Rechnung getpreisprotonne() berechnepreis() berechnegesamtpreis() Spezifikation von Methoden L Spezifikation einer Methode wird beim Empfänger bzw. Server vorgenommen L Spezifikation: Name der Methode Typen und Namen der Argumente 30

31 Typ des Wertes Beschreibung L Beispiel: Methoden der Klasse Fracht Methode berechnepreis() Argumente: keine Rückgabewert: Fließkommazahl (float) Beschreibung: Sendet die Nachricht getpreisprotonne() an das Objekt vom Typ PreisListe. Berechnet den Preis als Produkt von gewicht und dem erhaltenen PreisProTonne und gibt diesen Wert zurück. Methode... Identifizieren von Nachrichtenverbindungen L Nachrichtenverbindung setzt einen Kommunikationspfad (Link) voraus L Jede Verbindung (Pfeil vom Sender zum Empfänger) repräsentiert: angeforderte Methode, Argumente (Werte oder Referenzen), Resultat (Rückgabepfeil) L Für einen Link können mehrere verschiedene Nachrichten angegeben werden L Sequenzen von Nachrichten werden durch Nummern geordnet L Spezifikation wird in der Klasse des Senders bzw. Clients vorgenommen L Spezifikation: Name benötigte Methode Typen und Namen der Argumente Typ des Wertes Beschreibung L Beispiel: Nachrichtenenverbindungen der Klasse Fracht Verbindung zur Klasse PreisListe Benötigte Methode getpreisprotonne() Argumente: keine Rückgabewert: Fließkommazahl (float) Beschreibung: Die Anforderung eines Fracht-Objektes an das PreisListe Objekt fordert den Tonnagepreis an, um daraus den Preis für dieses Fracht-Objekt zu berechnen. Verbindung zur Klasse... 31

32 Klassenspezifikation L Klasse: Name, Spezialisierungen, Generalisierungen, Beschreibung L Teile: Namen, Kardinalitäten, Strukturtypen, Beschreibungen L Attribute: Namen, Datentypen, Beschreibungen L Objektverbindungen: Beteiligte Objekte, Kardinalitäten, Beschreibungen L Methoden: Name, Argumente (Namen/Typen), Werte, Beschreibungen L Nachrichtenverbindungen: Beteiligte Objekte, Methoden, Argumente (Namen/Typen), Werte, Beschreibungen Dynamisches Modell des Systems Allgemeines L Modelliert das Verhalten der Objekte L Veränderungen der Attributwerte und Beziehungen im Zeitablauf L Zustandsdiagramme modellieren Lebenszyklen von Objekten L Zustandsübergänge sind immer Reaktionen auf Nachrichten Ereignisse L Ereignis ist Vorfall, der Attributwerte verändert und Zustandsänderung bewirken kann L Ereignis ist immer mit einem Methodenaufruf verknüpft L Externe Ereignisse treten auf bei Schnittstellenobjekt oder von externem System z.b. Taste wurde gedrückt, Timer-Objekt hat externes Ereignis erzeugt L Interne Ereignisse treten auf bei Nachrichtenaustausch innerhalb des Systems z.b. Erzeugen und Löschen von Objekten Zustände L Zustand eines Objektes wird bestimmt durch seine Attributwerte L Zustände, die ein Objekt annehmen kann, werden in Zustandsspezifikation beschrieben L Objekte ändern meistens ihren Zustand, um ihre Aufgaben erfüllen zu können 32

33 Szenarios L Hypothetische Aufeinanderfolge von Ereignissen zur Darstellung der kausalen Zusammenhänge L Jedes vorstellbare Ereignis, das eintreten kann, in mindestens einem Szenario erfasst L Szenarios können als Skript formuliert werden. Ereignisfolgen L Formalere und detailliertere Darstellung der Objektinteraktionen aus den Szenarios L Erleichtern die Validierung der modellierten Struktur- und Verhaltensaspekte L Pro Szenario ein Ereignisfolgediagramm L Objekte durch vertikale Linien, Nachrichten durch Pfeile vom Sender zum Empfänger L Beispiel: Vollständiges Sequenzdiagramm für die Methode berechnegesamtpreis() der Klasse Rechnung diebuchhaltung dierechnung : fracht_1 : Rechnung Fracht fracht_n : Fracht diepreise : Prei sliste berechnegesamtpreis( ) berechnepreis( ) Gewicht g * p getpreisprotonne( ) Preis p summiere alle Einzelpreise in w für alle Frachten 1 bis N Gesamtpreis w berechnepreis( ) Gewicht g * p getpreisprotonne( ) Preis p 33

34 Zustandsdiagramme L Darstellung von Ereignissen, Zuständen, Aktivitäten und ihre Aufeinanderfolge für eine Klasse, für ein Teilsystem oder das ganze System L Jeder Weg durch das Diagramm beschreibt ein Verhaltensmuster für ein Objekt L Dem Verhalten in einem Szenario oder Ereignisfolgediagramm entspricht genau ein Weg durch das Zustandsdiagramm L Zustandsdiagramme entstehen aufbauend auf die Ereignisfolgediagramme L Beispiel Zustandsdiagramm auszahlung/einzahlung einzahlung / auszahlung+limit Haben oder Null auszahlung + limit einzahlung Soll einrichten ausgleichen + aufloesen Funktionales Modell des Systems L Algorithmische Beschreibung der identifizierten Methoden und Aktivitäten L Entwurf erfolgt auf Klassenebene L Hilfsmittel zur Spezifikation: Strukturierte Sprachen, Entscheidungsbäume und tabellen, Ablaufpläne, Struktogramme, Pseudocode, mathematische Gleichungen 34

35 Objektorientiertes Design L Nahtloser Übergang L OOA: Modell zur Beschreibung der Systemverantwortlichkeiten L OOD: Architekturmodell des zu implementierenden Systems L Allgemeine taktische Vorgehensweise Vorgehensweise L Modellierung spezifischer Implementierung unter Berücksichtigung von Hard- und Softwareumgebung L Statisches Modell wird erweitert um lösungsspezifische Attribute, Objektverbindungen, Methoden oder Klassen L Iteration zwischen Problembereich (OOA) und Lösungsbereich (OOD) Prüffragen: L Welche Attribute sind nötig um Objektverbindungen zu implementieren? L Welche Attribute sind nötig um Gesamtheit-Teil-Beziehungen zu implementieren? L Sollen zur Effizienzsteigerung ableitbare Attribute modelliert werden? L Welche zusätzlichen Klassen sind notwendig: Hilfsklassen, Benutzerschnittstelle? L Sind persistente Objekte gefordert? Wenn ja, für welche Klassen? L Findet Kommunikation nur synchron oder auch asynchron statt? L Ist das System zentral oder verteilt zu realisieren? Wie werden im verteilten Fall Nachrichten weitergeleitet? Welche Architektur ist geeignet? Plattformunabhängigkeit: RMI, Beans Sprachenunabhängigkeit: COM, DCOM, ActiveX Plattform- und Sprachenunabhängigkeit: RPC, DCE, CORBA L Fehlermöglichkeiten, Ausnahmebehandlungen insbesondere bei verteilten Systemen L Datenschutz: Authentisierung, Authorisierung, Verschlüsselung L Datensicherheit: Redundanz, Transaktionsverfahren 35

36 Ergebnisse der Designphase Beschreibung der Architektur L Klassen und Objektdiagramme der logischen Architektur L Moduldiagramme der physikalischen Architektur L Einteilung der Klassen in Klassenkategorien L Einteilung der Module in Subsysteme Beschreibung der gemeinsamen taktischen Vorgehensweise L Fehlerbehandlung L Speicherverwaltung L Datenspeicherung L Taskmanagement L Transaktionskonzept L Sicherheitskonzept Entwicklungsplan L Versionsplanung L Einordnung der Szenarios und Funktionspunkte in Versionsfolge L Aufgabenverteilung L Risikoeinschätzung und Terminplanung L Verifizierung der Architektur mit Hilfe von Prototypen Elementare Systembausteine Problembereichskomponente L Klassen und Strukturen gemäß der Analysephase L Fortgeschrieben und ergänzt in der Designphase Vertrag partner : String datum : Date String FTDatum isfeiertg() 36

37 Kommunikationskomponente L Bedienung des Systems durch den Benutzer L Präsentation von Resultaten und Informationen L Klassen und Objekte auf der Systemgrenze, stark werkzeug- und bibliotheksabhängig Component Container Panel Applet paint() L eigenständiges, klar abgegrenztes Subsystem L Beispiel: Vertrag partner : String datum : Date Kaufvertrag produkt : String preis : float <interface> Anzeigbar Panel (from JAVA) Container (from JAVA) Component (from JAVA) anzeige() paint() Anzvertrag 0..* 1 VertragsDialog anzeige() 37

38 Datenmanagementkomponente L Datenaspekte, Voraussetzung für Speicherung und Wiederauffinden von Objekten L Einfluß haben Integrität und Konsistenz, aber auch Zugriffsgeschwindigkeit L Ebenfalls isoliert zu betrachtendes Subsystem L Technik Textdatei: unstrukturiertes Speichern in Datei in der Regel proprietäres Format zusätzliche abstrakte Basisklasse oder Schnittstelle (JAVA) für persistente Objekte PersistentesObjekt (from Datenmanagement) bereitespeicherungvor() schreibeobjekt() liesobjekt() Vertrag (from Banken) partner : String datum : Date Fracht (from Verkehr) gewicht : float berechnepreis() PersistenterVertrag (from Banken) schreibeobjekt() liesobjekt() PersistenteFracht (from Verkehr) schreibeobjekt() liesobjekt() 38

39 L Technik Relationale Datenbank: Speicherung in einer oder mehreren Tabellen Schutzmechanismen werden genutzt generische Klasse für Datenbankcollection Abbildung in die Relationen eines Datenbankschemas Verschiedene Verfahren: für jede Klasse eine Tabelle (ObjID, Attribut,...) für jedes Attribut jeder Klasse eine Tabelle (ObjID, Attribut) insgesamt nur eine Tabelle (Klasse, ObjID, Attributname, Attribut) L Technik Objektorientierte Datenbank: Nutzung der entsprechenden Erweiterung einer objektorientierten Programmiersprache Persistente Objekte unterscheiden sich nicht mehr von transienten Objekten Taskmanagementkomponente L Koordination der Problembereichsobjekte und ihrer Methoden L Modellierung des nebenläufigen Verhaltens verschiedener Objekte sowie der asynchronen Objektkommunikation L Klassen zum Starten und Beenden von Tasks und Prozessen L Aktivitäten und Aktionen, Interprozesskommunikation und Prioritäten Abkapselung von Systemteilen und Definition von Schnittstellen L Modularisierung hat als Ziel kohäsive und lose gekoppelte Module L Komplexität durch Modularisierung wesentlich verringert L Module als Klassengruppen unter dem Aspekt der Wiederverwendbarkeit 39

40 Objektorientierte Programmentwicklung Wartbarkeit Formen von Wartung L Fehlerbehebung und Mängelbeseitigung L Weiterentwicklung und Erweiterung der Funktionalität Bessere Wartbarkeit durch Objektorientierung L Robustheit L Erweiterbarkeit L Wiederverwendbarkeit L Abbildung ähnlich der realen Welt L Verflechtung von Analyse und Design L Kompatibilität Wiederverwendbarkeit Formen allgemeiner Wiederverwendbarkeit L Code L Komponenten aus Bibliothek L Design-Muster L Anforderungsspezifikationen Formen objektorientierter Wiederverwendbarkeit L Basisklassen L Spezialisierte Klassen L Mechanismen, sog. Design-Patterns L Application-Frameworks L Business-Objekte L Dokumentkomponenten 40

41 Komponenten und Tools für objektorientierte Entwicklung Klassenbibliotheken L Problembezogen wiederverwendbare Klassen, z.b. Business-Objekte L Anwendungsbezogen wiederverwendbare Klassen, z.b. Framework-Objekte L Erweiterte Basisklassen, z.b. Grafikklassen, Bedienelemente L Basisklassen, z.b. Datenstrukturen Entwicklungs-Tools L Standardisierte Notation, z.b. Unified Modelling Language (UML) L Unterstützung des gesamten Entwicklungsprozesses (OOA OOD OOP) L Grafisches Entwicklungssystem, textueller Editor mit Sprachenunterstützung L Browser für Klassen- und Modulhierarchien L Quellcodegenerator für die Zielsprache L Reverse Engineering für Round-Trip-Entwicklung L GUI-Builder, Compiler, Debugger L Klassenbibliothekar für Verwaltung eigener und vorgefertigter Bibliotheken Projektmanagement-Tools L Konfigurationsmanagement mit Quelltext- und Versionskontrolle L Projektübergreifende Informationen L Projektplanung und steuerung 41

42 Methodenüberblick L Objektorientierte Analyse und objektorientiertes Design Peter Coad, Edward Yourdon, 1991 L Objektorientiertes Modellieren und Entwerfen Rumbaugh und andere, 1991 L Objektorientiertes Software-Engineering Jacobson und andere, 1992 L Objektorientierte Analyse und Design Grady Booch, 1994 Objektorientierte Analyse und objektorientiertes Design Peter Coad, Edward Yourdon, 1991 Ziele L Objektorientierte Analyse L Objektorientiertes Design L Top-down-Ansatz L Integrierte Vorgehensweise durch objektorientierten Systementwurf L Schließen der Lücke zwischen Analyse und Design Objektorientierte Analyse L Identifikation von Klassen und Objekten des abzubildenden Realweltausschnittes L Identifikation von Strukturen Generalisierung Spezialisierung Vererbungsprinzip L Definition von Subjekten als Zusammenfassung von Objekten L Attribute und Instanzenverbindungen definieren Beachtung von Generalisierung und Spezialisierung Attribute nur in der kleinsten gemeinsamen Oberklasse notieren Instanzenverbindungen bedeuten, dass ein Objekt ein anders benötigt, um seine Aufgabe erfüllen zu können 42

43 L Definition von Methoden und Nachrichtenverbindungen Erzeugen und Löschen eines Objektes Lesen und Schreiben der Daten eines Objektes Berechnungen Objektorientiertes Design L Problembereichskomponente Verfeinerung der Ergebnisse der Analyse, z.b. im Hinblick auf Speicherverwaltung und Wiederverwendbarkeit L Kommunikationskomponente Schnittstelle zwischen DV-System und Anwender erarbeiten L Taskmanagement-Komponente Berücksichtigung zeitkritischer Vorgänge Hardwareeinsatz L Datenmanagement-Komponente Zugriff auf und Manipulation von Daten datenbankunabhängiger Entwurf 43

44 Objektorientiertes Modellieren und Entwerfen Rumbaugh und andere, 1991 Modelle L Objektmodell L Dynamisches Modell L Funktionalitätsmodell Objektmodell L Identifizieren von Klassen und Objekten L Anfertigen eines Data Dictionary L Identifizieren von Beziehungen und Aggregationen L Identifizieren der Attribute von Objekten und Beziehungen L Einführung von Vererbungshierarchien zur Vereinfachung L Sicherstellung von Zugriffpfaden für gewöhnliche Anfragen L Wiederholung der bisherigen Schritte und Verfeinerung des Modells L Gruppierung von Klassen in Modulen Dynamisches Modell L Entwerfen von Szenarien typischer Interaktionsfolgen L Identifizieren von Ereignissen L Entwurf einer Ereignisfolge für jedes Szenario L Erstellen von Zustandsdiagrammen für jede Objektklasse L Zuordnen von Ereignissen, Zuständen und Zustandsübergängen Funktionalitätsmodell L Identifikation der Ein- und Ausgabedaten L Entwerfen von Datenflußdiagrammen L Spezifikation der benötigten Funktionen L Identifizieren von Beschränkungen L Spezifizieren von Optimierungskriterien 44

45 Objektorientiertes Software-Engineering Jacobson und andere, 1992 Modelle L Anforderungsmodell L Analysemodell Anforderungsmodell L Funktionale Anforderungen Statische Struktur und statisches Verhalten Dynamisches Verhalten L Darstellungsform Anwendungsfälle Schnittstellenbeschreibungen Problemdomäne L Inhalte Akteure Anwendungsfälle Systemabgrenzungen Domänen-Objekte und Beziehungen Analysemodell L Fachliche Systemstruktur Statische Struktur und statisches Verhalten L Darstellungsform Anwendungsfälle Schnittstellenbeschreibungen Problemdomäne L Inhalte Entity-Objekte Interface-Objekte 45

46 Control-Objekte Beziehungen zwsichen diesen Objekten Objektorientierte Analyse und Design Grady Booch, 1994 Macro Development Process L Konzeptualisierung: Festlegen der Kernanforderungen L Analyse: Entwicklung eines Modells für das gewünschte Sytemverhalten L Design: Erzeugung einer Architektur für die Implementierung L Evolution: Implementierung mit schrittweiser Verfeinerung L Wartung: Verwalten der Entwicklung nach der Auslieferung Micro Development Process L Identifizieren von Klassen und Objekten einer bestimmten Abstraktionsebene L Festlegen der Semantik dieser Klassen und Objekte L Festlegen der Beziehungen zwischen diesen Klassen und Objekten L Spezifizieren der Schnittstellen und Implementierung dieser Klassen und Objekte Dreidimensionales Modell Dynamisches Modell Statisches Modell Logisches Modell Klassenstruktur Objektstruktur Physikalisches Modell Modul-Architektur Prozeß-Architektur 46

47 Anhang: Anforderungsanalyse Anwendungsfalldiagramme L Beschreibung einer typischen Interaktion eines Anwenders mit dem System L Anwendungsfall entspricht etwa einem Geschäftsvorfall L Keine Beschreibung des internen Verhaltens, keine funktionale Zerlegung L Kein Designhilfsmittel sondern nur für die Anforderungsanalyse L Textuelle Beschreibung zusätzlich zum Anwendungsfalldiagramm Nummer und Name des Anwendungsfalles sowie eine Kurzbeschreibung Auslöser sowie Vorbedingungen: Erwarteter Systemzustand vor dem Eintreten Ergebnisse und Nachbedingungen: Erwarteter Systemzustand nach dem Durchlaufen Nicht-funktionale Anforderungen: Design, Plattformfragen, Entwicklungsprioritäten Ablaufbeschreibung, gegliedert in Einzelschritte, jeder davon separat beschrieben Ausnahmen und Varianten: Abweichungen vom Normalfall, alternatives Verhalten Offene Punkte, Fragen, Dokumente, Referenzen L Daumenregel: Pro Aufwandsjahr etwa fünf Anwendungsfälle L Anwendungsfälle beschreiben, was das System leisten soll, nicht wie es das macht L Prinzipiell auch nicht-softwareunterstützte Aktivitäten möglich 47

48 Aktivitätsdiagramme L Verfeinerung der Anforderungen durch Modellierung von Einzelaktivitäten L Einzelschritte der Anwendungsfälle sind Kandidaten für Einzelaktivitäten L Zusätzliche Zuweisung der Verantwortlichkeiten L Aufteilung in verschiedene Swim Lanes 48

49 Beispiel: Versicherungsvertrag Anwendungsfallanalyse L Anwendungsfalldiagramm L Beschreibung des Anwendungsfalles Vertrag schließen Beschreibung 1. Beginn der Vertragslaufzeit eingeben 2. Produkt auswählen Der Anwender wählt ein Produkt aus, um es dem Vertrag zuzuordnen. Zur Auswahl werden ihm alle Produkte angeboten, die zum eingegebenen Vertragsbeginn gültig sind. 3. Vertrags-Nr. wird erzeugt Die Vertragsnummer wird automatisch erzeugt und eingeblendet. 4. include Anwendungsfall Versicherungsnehmer zuordnen 5. Beitragszahler, Postempfänger und Leistungsempfänger festlegen [...] 6. [...] 7. include Anwendungsfall Deckungen anlegen 8. Vollständigkeit und Plausibilität prüfen sowie berechnen 9. Freigeben Variationen 4. Statt einen vorhandenen Versicherungsnehmer zu suchen und auszuwählen, wird ein neuer Versicherungsnehmer angelegt. 8. Ist die berechnete Prämie >500, muß der Vertrag speziell geprüft und autorisiert werden. extend Anwendungsfall Vertrag autorisieren 49

50 Aktivitätenmodellierung L Aktivitätsdiagramm L Transitionen L Synchronisation L Darstellung von Objektzuständen 50

51 Beispiel: Getränkeautomat Systembeschreibung Das System beschreibt die Funktionsweise eines Getränkeautomaten für Warmgetränke (Kaffee und Kakao) einschließlich seiner Wartung (Nachfüllen von Zutaten) L Münzeinwurf und rückgabe L Getränkeauswahl und zubereitung L Getränkeausgabe L Leeren der Kasse und Auffüllen von Zutaten Anwendungsfalldiagramm Durstige Kehle <<include>> Getränk zubereiten und ausgeben Geld nehmen und wechseln <<include>> Zutaten überprüfen Automatenwart Kasse leeren <<include>> Zutaten nachfüllen 51

52 Kandidaten für Objekte, erster Ansatz L Durstige Kehle, Automatenwart L Rohstoffe, Becher, Wasser, Milch, Kaffepulver, Kakaopulver L Geld, Groschen, Fuffziger, Markstücke L Preisliste L Automat, Kasse, Getränk L Auswahlknöpfe L Mixer, Lager, Geldzähler Kollaborationsdiagramm :Mixer mixegetränk( ) :Auswahlpanel gibpreis( ) genugrohstoffe( ) :Preisliste gibeinwurf( ) :Lager genuggeld( ) :Geldzähler Kandidaten für Objekte, zweiter Ansatz L Rohstofflager Attribute: Becher, Wasser, Milch, Kaffepulver, Kakaopulver L Geldzähler Attribute: Groschen, Fuffziger, Markstücke L Preisliste L Auswahlknöpfe L Mixer 52

53 Entwurf der Klasse Lager L Attribut: Becher, Ganzzahl, Zahl der vorhandenen Becher L Attribut: Wasser, Fließkommazahl, Menge des vorhandenen Wassers L Attribut: Milch, Fließkommazahl, Menge der vorhandenen Milch L Attribut: Kaffepulver, Fließkommazahl, Menge des vorhandenen Kaffepulvers L Attribut: Kakaopulver, Fließkommazahl, Menge des vorhandenen Kakaopulvers L Methode: gibmengezahl, Parameter: Typ, Rückgabe: Ganzzahl, liefert die Zahl der vorhandenen Becher L Methode: gibmengegramm, Parameter: Tyü, Rückgabe: Fließkommazahl, liefert die vorhandene Menge der als Typ gewählten Zutat Klassendiagramm der Klasse Lager und ihrer Hilfsklassen Flüssigkeitsbestand flüssigkeitstyp : String menge : float 4 Lager 1 genugrohstoffe() genuggeld() Becherbestand anzahl : int Geldeinwurf münztyp : {10er,50er,100er} anzahl : int L Strenggenommen unterscheiden sich Becherbestand und Geldeinwurf nur sehr wenig L Führe daher für beide eine gemeinsame Basisklasse ein L Modelliere diese sofort so, daß sie später auch für andere Anwendungen nutzbar ist L Modelliere enstprechend eine Basisklasse für den Flüssigkeitsbestand 53

54 Klassendiagramm der allgemeinen Klasse Lager und ihrer Hilfsklassen AllgemeinesLager entnehmestück(was : String) : boolean einfügestück(was : String) entnehmemenge(was : String, wieviel : float) : boolean einfügemenge(was : String, wieviel : float) * Stückbestand typ : String menge : int entnehme() : boolean einfüge() gibbestand() : int 0..* Mengenbestand typ : String menge : float entnehme(wieviel : float) : boolean einfüge(wieviel : float) gibbestand() : float Objektdiagramm für das Lager des Getränkeautomaten 54

55 Sequenzdiagramm für die Nachricht möglichkaffee() an den Mixer durstiger : Mixer : Allgemeines Lager möglichkaffee( ) gibbestandstück("becher") false false false [z==0] [z<90] [z<10] z gibbestandmenge("wasser") z gibbestandmenge("kaffepulver") z true 55

56 Zustandsdiagramm für den Getränkeautomaten zubereitung & bechertest!ok bechertest!ok einschalten & bechertest ok aktiv genauere Erklärung siehe weiter unten zubereitung & bechertest!ok aktiv - genauer defekt/wartung Geldeinwurf wartend auf Geld Geldeinwurf wartend auf Auswahl Zubereitung beendet Auswahl bei der Zubereitung 56

57 Unified Modelling Language Notationsübersicht Unified Modelling Language (UML), entnommen aus [13] 57

58 58

59 59

60 60

61 Literaturverzeichnis [1] Ken Barclay et al., Objektorientiertes Design mit C++, Prentice Hall, 1997 [2] Daniel J. Berg et al., Advanced Techniques for Java Developers, Wiley & Sons, 1999 [3] Grady Booch, Object-oriented Design, Benjamin/Cummings, 1991 [4] Rainer Burkhardt, UML Unified Modeling Language, Addison-Wesley, 1998 [5] Peter Coad, Edward Yourdon, Object-orientied Design, Yourdon-Press, 1991 [6] Mark Coats et al., Using the CMOSpecification, Dr. Dobb s Journal, June 99 [7] Klaus-Peter Eckert, Objekt-Orientiertheit in offenen Systemen, Thomson, 1995 [8] Igor T. Hawryszkiewycz, Systemanalyse und Design, Prentice Hall, 1995 [9] Gerti Kappel, Michael Schrefl, Objektorientierte Informationssysteme, Springer, 1996 [10] Robert C. Martin. Objektorientierte C++-Anwendungen, Prentice Hall, 1996 [11] Bertrand Meyer, Objektorientierte Softwareentwicklung, Hanser, 1988 [12] Udo Müller, C++-Implementierungstechniken, Thomson, 1997 [13] Bernd Oesterreich, Objektorientierte Softwareentwicklung, Oldenbourg, 1998 [14] Bernd Oesterreich, Erfolgreich mit Objektorientierung, Oldenbourg, 1999 [15] Objektorientierte Analyse und Design, Siemens Nixdorf Trainings Center, 1996 [16] Objektorientierte Programmierung, Siemens Nixdorf Trainings Center, 1996 [17] Dirk Riehle, Entwurfsmuster für Softwarewerkzeuge, Addison-Wesley, 1997 [18] Jeremy Rosenberger, CORBA, SAMS/Markt&Technik, 1998 [19] Günther Wahl, UML kompakt, OBJEKTspektrum 2/1998 [20] Rebecca Wirfs-Brock et al., Objektorientiertes Software-Design, Hanser,

62 62

63 Stichwortverzeichnis 4 4-Phasen-Modell A Aggregation... 17, 29 Analyse... 9, 22 Assoziation... 16, 30 B Baseballmodell D Design... 9 E Eigenschaft Eigenschaftswert F Funktion G Generizität I Identität K Klasse Komposition L Lebenszyklus M Methoden Arten explizite implizite Spezifikation N Nachricht Nachrichten O Objekt P Polymorphie Programmierung Q Qualitätskriterien S Schnittstelle Sicht Dynamische Funktionale Statische Spiral-Modell Subsystem V Vererbung... 16, 28 mehrfache Vorgehensweise... 9, 13 W Wasserfallmodell

64

65

66

Unified Modeling Language (UML)

Unified Modeling Language (UML) Kirsten Berkenkötter Was ist ein Modell? Warum Modellieren? Warum UML? Viele, viele Diagramme UML am Beispiel Was ist ein Modell? Ein Modell: ist eine abstrakte Repräsentation eines Systems, bzw. ist eine

Mehr

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

Softwaretechnik (Allgemeine Informatik) Überblick

Softwaretechnik (Allgemeine Informatik) Überblick Softwaretechnik (Allgemeine Informatik) Überblick 1 Einführung und Überblick 2 Abstraktion 3 Objektorientiertes Vorgehensmodell 4 Methoden der Anforderungs- und Problembereichsanalyse 5 UML-Diagramme 6

Mehr

Kapitelübersicht. Was ist So#waretechnik? Historische Entwicklung der So9waretechnik Prinzipien, Methoden, Werkzeuge. Was bedeutet Objektorien+erung?

Kapitelübersicht. Was ist So#waretechnik? Historische Entwicklung der So9waretechnik Prinzipien, Methoden, Werkzeuge. Was bedeutet Objektorien+erung? Kapitelübersicht Was ist So#waretechnik? Historische Entwicklung der So9waretechnik Prinzipien, Methoden, Werkzeuge Was bedeutet Objektorien+erung? ObjektorienCerte Analyse und Design die Objektmodellierung

Mehr

Klassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla

Klassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla BlaBla Diese Kennzeichnungen sind nur Erläuterungen und nicht Bestandteil des Diagramms Quelle: P.Grässle, H.Baumann, P.Baumann, UML projektorientiert, Galileo Verlag, 2003 21 Primäre Begriffe Kapselung

Mehr

SEQUENZDIAGRAMM. Christoph Süsens

SEQUENZDIAGRAMM. Christoph Süsens SEQUENZDIAGRAMM Christoph Süsens DEFINITION Das Sequenzdiagramm gibt Auskunft darüber: Welche Methoden für die Kommunikation zwischen ausgewählten Objekten zuständig sind. Wie der zeitliche Ablauf von

Mehr

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

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny 3. UML Klassendiagramm Nachtrag 3.1 Einführung UML UML ist eine standardisierte Sprache zur Modellierung von Systemen. In UML werden graphische

Mehr

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

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7 Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck

Mehr

Orientierte Modellierung mit der Unified Modeling Language

Orientierte Modellierung mit der Unified Modeling Language UML-Basics: Einführung in Objekt- Orientierte Modellierung mit der Unified Modeling Language Michael Hahsler Ziel dieses Seminars Verständnis von Objekt-Orientierung Was sind Klassen? Was ist Vererbung?

Mehr

Kapitel 2: Der Software-Entwicklungsprozess

Kapitel 2: Der Software-Entwicklungsprozess Wie konstruiert man Software? Kapitel 2: Der Software-Entwicklungsprozess SoPra 2008 Kap. 2: Der Software-Entwicklungsprozess (1/10) Der Software-Entwicklungs-Prozess Historisches 1960JJ adhoc Techniken

Mehr

RUP Analyse und Design: Überblick

RUP Analyse und Design: Überblick Inhaltsverzeichnis Übersicht [, 2, 8] 3. Vorgehensweise............................... 5 2 Planungsmethoden 37 2. Definitionsphase.............................. 6 3 Rational Unified Process [5, 6] und

Mehr

Use Cases. Die Sicht des Nutzers. Fortgeschrittenenpraktikum SS 2004

Use Cases. Die Sicht des Nutzers. Fortgeschrittenenpraktikum SS 2004 Use Cases Die Sicht des Nutzers Fortgeschrittenenpraktikum SS 2004 Gunar Fiedler Lehrstuhl für Technologie der Informationssysteme Kontakt: fiedler@is.informatik.uni-kiel.de Use Cases 2 Was ist ein Use

Mehr

09.01.14. Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

09.01.14. Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML) Vorlesung Programmieren Unified Modeling Language (UML) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Unified Modeling Language (UML)

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Unified Modeling Language (UML) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Unified Modeling Language (UML)

Mehr

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

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,

Mehr

Use Cases. Use Cases

Use Cases. Use Cases Use Cases Eigenschaften: Ein Use Case beschreibt einen Teil des Verhaltens eines Systems aus externer Sicht (Formuliert in der der Fachsprache der Anwendung) Dies geschieht, indem ein Systemdialog beschrieben

Mehr

SWE5 Übungen zu Software-Engineering

SWE5 Übungen zu Software-Engineering 1 Übungen zu Software-Engineering 1) Klassen und Objekte 2) Telefonanlage 3) Objekt- und Klassendiagramme 4) Assoziationen 5) Telefonanlage (Erweiterung) 6) Fahrzeuge 7) Familien 2 Aufgabe 1: Klassen und

Mehr

Software Engineering Interaktionsdiagramme

Software Engineering Interaktionsdiagramme Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Informationswirtschaft II Rational Unified Process (RUP)

Informationswirtschaft II Rational Unified Process (RUP) Informationswirtschaft II Rational Unified Process (RUP) Wolfgang H. Janko, Michael Hahsler und Stefan Koch Inhalt Historische Entwicklung Kennzeichen von RUP Lebenszyklus und Phasen Arbeitsabläufe Das

Mehr

Informationswirtschaft II

Informationswirtschaft II Rational Unified Process (RUP) Informationswirtschaft II Wolfgang H. Janko, Michael Hahsler und Stefan Koch Seite 1 Inhalt Historische Entwicklung Kennzeichen von RUP Lebenszyklus und Phasen Arbeitsabläufe

Mehr

Software Engineering

Software Engineering Literatur Gliederung Software Engineering Herbert Kuchen Universität Münster Di+Fr 14:15-15:45, M2 Wintersemester 2009/2010 1 Literatur Gliederung Basis-Literatur H. Balzert: Lehrbuch der Software-Technik,

Mehr

Grundlagen Software Engineering

Grundlagen Software Engineering Grundlagen Software Engineering Rational Unified Process () GSE: Prof. Dr. Liggesmeyer, 1 Rational Unified Process () Software Entwicklungsprozess Anpassbares und erweiterbares Grundgerüst Sprache der

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

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

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Übungsklausur vom 7. Dez. 2007

Übungsklausur vom 7. Dez. 2007 Übungsklausur vom 7. Dez. 2007 Ein Lösungsmuster Teilbereiche der Softwaretechnik Software Anforderungen Software Entwurf Software Konstruktion Software Test Software Wartung Software Konfigurationsmanagement

Mehr

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

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2 EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0 EDV Kurs 13/2 Inhaltsverzeichnis 1 Objekte... 1 2 Klassen... 3 2.1 Beziehungen zwischen Klassen... 4 2.1.1 Vererbung... 4 2.1.2

Mehr

ActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0

ActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0 Jens Kohlmeyer 05. März 2007 Institut für Programmiermethodik und Compilerbau ActiveCharts Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0 Seite 2 Übersicht

Mehr

Grundlagen der Softwaretechnik

Grundlagen der Softwaretechnik Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner PRÜFUNG Grundlagen der Softwaretechnik Musterlösung Name: Matrikelnummer: Note: Prüfungstag:

Mehr

Vgl. Oestereich Kap 2.7 Seiten 134-147

Vgl. Oestereich Kap 2.7 Seiten 134-147 Vgl. Oestereich Kap 2.7 Seiten 134-147 1 Sequenzdiagramme beschreiben die Kommunikation/Interaktion zwischen den Objekten (bzw. verschiedenen Rollen) eines Szenarios. Es wird beschrieben, welche Objekte

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

Software Engineering. 3. Anforderungsanalyse. Franz-Josef Elmer, Universität Basel, WS 2006/07

Software Engineering. 3. Anforderungsanalyse. Franz-Josef Elmer, Universität Basel, WS 2006/07 Software Engineering 3. Anforderungsanalyse Franz-Josef Elmer, Universität Basel, WS 2006/07 Software Engineering: 3. Anforderungsanalyse 2 Definitionen Anforderungen (Requirements): Beschreibung aller

Mehr

Software-Engineering

Software-Engineering FH Wedel Prof. Dr. Sebastian Iwanowski SWE2 Folie 1 Software-Engineering Sebastian Iwanowski FH Wedel Kapitel 2: Grundbegriffe und Prinzipien FH Wedel Prof. Dr. Sebastian Iwanowski SWE2 Folie 2 Grundbegriffe

Mehr

7. Analyse-Phase: Datenmodellierung Software Engineering

7. Analyse-Phase: Datenmodellierung Software Engineering 7. Analyse-Phase: Datenmodellierung Software Engineering Hochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm Hochschule Darmstadt, 20. November 2006 Einordnung in den Kontext

Mehr

Grundzüge der Programmierung. Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN

Grundzüge der Programmierung. Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN Grundzüge der Programmierung Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN Inhalt dieser Einheit JAVA ist objektorientiert! Grundbegriffe der objektorientierten Programmierung:

Mehr

OOD. Objektorientiertes Design. Peter Coad und Edward Yourdon. Prentice Hall Verlag

OOD. Objektorientiertes Design. Peter Coad und Edward Yourdon. Prentice Hall Verlag OOD Objektorientiertes Design Peter Coad und Edward Yourdon Prentice Hall Verlag New York, London, Toronto, Sidney, Tokio, Singapur, München, Mexiko Vorwort 9 Vorwort der Übersetzer 11 Danksagungen 13

Mehr

Java lernen mit BlueJ

Java lernen mit BlueJ Java lernen mit BlueJ Eine Einführung in die objektorientierte Programmierung David J. Barnes Michael Kölling 4.0 Lernen in Eigenregiegi Vorlesungen Seminare Übungen Bücher Webseiten Diskussionslisten

Mehr

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords 4.0 Proinformatik III Objektorientierte Programmierung Michael Kölling University of Kent Canterbury, UK Selbstbestimmtes Lernen Vorlesung Tutorium Übungen Buch Web-Seite Üben, üben, üben! Format Vorlesung:

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Systemanalyse I Software-Entwicklung. Die Phase Design.? Prof. Dr. Susann Kowalski

Systemanalyse I Software-Entwicklung. Die Phase Design.? Prof. Dr. Susann Kowalski Die Phase Design Design Entwerfen der Benutzeroberfläche, des Bedienablaufs und der Softwarearchitektur Umsetzen des fachlichen Modells auf technische Möglichkeiten; Spezifikation der Systemkomponenten

Mehr

Klausur Software-Engineering SS 2005 Iwanowski 23.08.2005

Klausur Software-Engineering SS 2005 Iwanowski 23.08.2005 Klausur Software-Engineering SS 2005 Iwanowski 23.08.2005 Hinweise: Bearbeitungszeit: 90 Minuten Erlaubte Hilfsmittel: im Anhang, sonst keine Bitte notieren Sie Ihre Antworten ausschließlich auf dem Aufgabenblatt!

Mehr

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch Ein Blick voraus des Autors von C++: Bjarne Stroustrup 04.06.2005 Conrad Kobsch Inhalt Einleitung Rückblick Nur eine Übergangslösung? Was würde C++ effektiver machen? Quelle 2 Einleitung Wo steht C++,

Mehr

Klassendiagramm. (class diagram)

Klassendiagramm. (class diagram) : Klassendiagramm http:///topic95.html Klassendiagramm (class diagram) Klassendiagramm Objektdiagramm Komponentendiagramm Kompositionsstrukturdiagramm Verteilungsdiagramm Einstieg Paketdiagramm Aufbau

Mehr

a) In der Aufgabenstellung war ein möglichst einfaches Klassendiagramm gefordert. Abb. 1 zeigt eine mögliche Lösung. * * * Aufbau 1..

a) In der Aufgabenstellung war ein möglichst einfaches Klassendiagramm gefordert. Abb. 1 zeigt eine mögliche Lösung. * * * Aufbau 1.. Software Engineering I Musterlösungen zur Klausur vom 3.7.2004 Aufgabe a) In der Aufgabenstellung war ein möglichst einfaches Klassendiagramm gefordert. Abb. zeigt eine mögliche Lösung. Turnier sportart

Mehr

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

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

Mehr

Projektmodell Softwareentwicklung: Unified Software Development Process / Unified Process (Teil I)

Projektmodell Softwareentwicklung: Unified Software Development Process / Unified Process (Teil I) Projektmodell Softwareentwicklung: Unified Software Development Process / Unified Process (Teil I) Historisch Kulturelle Informationsverarbeitung Hauptseminar: KLIPS 2.0 Dozent: Prof. Dr. Thaller Referent:

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Software Engineering in der Praxis

Software Engineering in der Praxis Inhalt Nachlese Aufgaben Literatur Software Engineering in der Praxis Praktische Übungen Inhalt Nachlese Aufgaben Literatur Marc Spisländer Dirk Wischermann Lehrstuhl für Software Engineering Friedrich-Alexander-Universität

Mehr

Abschnitt 16: Objektorientiertes Design

Abschnitt 16: Objektorientiertes Design Abschnitt 16: Objektorientiertes Design 16. Objektorientiertes Design 16 Objektorientiertes Design Informatik 2 (SS 07) 610 Software-Entwicklung Zur Software-Entwicklung existiert eine Vielfalt von Vorgehensweisen

Mehr

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen 9 3 Web Services 3.1 Überblick Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen mit Hilfe von XML über das Internet ermöglicht (siehe Abb.

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Requirements Engineering I

Requirements Engineering I Norbert Seyff Requirements Engineering I UML Unified Modeling Language! 2006-2012 Martin Glinz und Norbert Seyff. Alle Rechte vorbehalten. Speicherung und Wiedergabe für den persönlichen, nicht kommerziellen

Mehr

SWT II Projekt. Chat - Anwendung. Pflichtenheft 2000 SWT

SWT II Projekt. Chat - Anwendung. Pflichtenheft 2000 SWT SWT II Projekt Chat - Anwendung Pflichtenheft 2000 SWT i Versionen Datum Version Beschreibung Autor 3.11.2000 1.0 erste Version Dietmar Matthes ii Inhaltsverzeichnis 1. ZWECK... 1 1.1. RAHMEN... 1 1.2.

Mehr

EINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick mtr@is.informatik.uni-kiel.de www.is.informatik.uni-kiel.

EINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick mtr@is.informatik.uni-kiel.de www.is.informatik.uni-kiel. EINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick mtr@is.informatik.uni-kiel.de www.is.informatik.uni-kiel.de/~mtr FRAGEN / ANMERKUNGEN Vorlesung Neue Übungsaufgaben MODELLIERUNG

Mehr

Systemanalyse. - Folien zur Vorlesung für AI3 im Sommersemester 2010 - -Teil 4 -

Systemanalyse. - Folien zur Vorlesung für AI3 im Sommersemester 2010 - -Teil 4 - Systemanalyse - Folien zur Vorlesung für AI3 im Sommersemester 2010 - -Teil 4 - Hans-Jürgen Steffens (by courtesy of Prof. Dr. Thomas Allweyer) Fachbereich Informatik und Mikrosystemtechnik Fachhochschule

Mehr

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 CODESYS a trademark of 3S-Smart Software Solutions GmbH Agenda 1 Warum

Mehr

Gliederung des Vortrages

Gliederung des Vortrages Gliederung des Vortrages Unified Modeling Language Rational Rose Sergej Schwenk Oktober 1999 0. Einführung 1. Historie 2. Der Entwicklungsprozeß 3. UML 3.1 Anwendungsfalldiagramme 3.2 Klassendiagramme

Mehr

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter Prof. Dr. Dr. h.c. Manfred Broy Sommersemester Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter Einführung in die Softwaretechnik Übung 6: Feinentwurf Aufgabe 17: Entwurfsmuster

Mehr

Exkurs: Formatvorlage für Anforderungsanalyse-Dokument

Exkurs: Formatvorlage für Anforderungsanalyse-Dokument Exkurs zu Kapitel Anforderungserhebung und analyse Exkurs: Formatvorlage für Anforderungsanalyse-Dokument Folgendes entspricht im Wesentlichen IEEE-Standard 830-1998 R O O T S Formatvorlage Anforderungsanalyse

Mehr

Übungen zur Softwaretechnik

Übungen zur Softwaretechnik Technische Universität München Fakultät für Informatik Lehrstuhl IV: Software & Systems Engineering Markus Pister, Dr. Bernhard Rumpe WS 2002/2003 Lösungsblatt 9 17. Dezember 2002 www4.in.tum.de/~rumpe/se

Mehr

4. AuD Tafelübung T-C3

4. AuD Tafelübung T-C3 4. AuD Tafelübung T-C3 Simon Ruderich 17. November 2010 Arrays Unregelmäßige Arrays i n t [ ] [ ] x = new i n t [ 3 ] [ 4 ] ; x [ 2 ] = new i n t [ 2 ] ; for ( i n t i = 0; i < x. l e n g t h ; i ++) {

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

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

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

3.4 Unified Process. 1999 Ivar Jacobson, Grady Booch, James Rumbaugh: The Unified Software Development Process.

3.4 Unified Process. 1999 Ivar Jacobson, Grady Booch, James Rumbaugh: The Unified Software Development Process. 1999 Ivar Jacobson, Grady Booch, James Rumbaugh: The Unified Software Development Process. 1996 Philippe Kruchten: Rational Unified Process Produkt der Firma Seit 2002 Teil des IBM Konzerns Objektorientiertes

Mehr

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung

Mehr

Software Engineering in der Praxis

Software Engineering in der Praxis Software Engineering in der Praxis Praktische Übungen Meitner, Spisländer FAU Erlangen-Nürnberg Objektorientiertes Design 1 / 16 Objektorientiertes Design Matthias Meitner Marc Spisländer Lehrstuhl für

Mehr

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum C A R L V O N O S S I E T Z K Y Agile Vorgehensmodelle in der Softwareentwicklung: Scrum Johannes Diemke Vortrag im Rahmen der Projektgruppe Oldenburger Robot Soccer Team im Wintersemester 2009/2010 Was

Mehr

Informationssystemanalyse Use Cases 11 1

Informationssystemanalyse Use Cases 11 1 Informationssystemanalyse Use Cases 11 1 Use Cases Slide 1 Als ein populäres Mittel um Anforderungen zu erfassen und Systeme zu beschreiben, werden Use Cases benutzt. Sie bilden die Basis für eine umfassendere

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen. Datenbank-Verschlüsselung mit DbDefence und Webanwendungen. In diesem Artikel werden wir Ihnen zeigen, wie Sie eine Datenbank verschlüsseln können, um den Zugriff einzuschränken, aber trotzdem noch eine

Mehr

SDD System Design Document

SDD System Design Document SDD Software Konstruktion WS01/02 Gruppe 4 1. Einleitung Das vorliegende Dokument richtet sich vor allem an die Entwickler, aber auch an den Kunden, der das enstehende System verwenden wird. Es soll einen

Mehr

Datenbanken. Prof. Dr. Bernhard Schiefer. bernhard.schiefer@fh-kl.de http://www.fh-kl.de/~schiefer

Datenbanken. Prof. Dr. Bernhard Schiefer. bernhard.schiefer@fh-kl.de http://www.fh-kl.de/~schiefer Datenbanken Prof. Dr. Bernhard Schiefer bernhard.schiefer@fh-kl.de http://www.fh-kl.de/~schiefer Wesentliche Inhalte Begriff DBS Datenbankmodelle Datenbankentwurf konzeptionell, logisch und relational

Mehr

16 Architekturentwurf Einführung und Überblick

16 Architekturentwurf Einführung und Überblick Teil III: Software-Architekturentwurf 16 Architekturentwurf Einführung und Überblick 16.1 Software entwerfen Warum? Beim Arbeiten im Kleinen nicht oder nur ansatzweise (Detailentwurf) Größere Software

Mehr

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen Einleitende Bemerkungen Einleitende Bemerkungen Ideen hinter der objektorientierten Programmierung Objekte (/* Instanzen einer Klasse */) im Mittelpunkt Objekte bilden Einheit aus Daten (/* Attributen,

Mehr

Objektorientierte Softwareentwicklung

Objektorientierte Softwareentwicklung Objektorientierte Softwareentwicklung Analyse, Design und Programmierung mit der UML und Rational Rose Ralf Pichocki 16., völlig neu gestaltete Auflage 2003 für die Durchführung 30.06.-04.07.03 bei der

Mehr

Softwaretechnik. Fomuso Ekellem WS 2011/12

Softwaretechnik. Fomuso Ekellem WS 2011/12 WS 2011/12 Inhalt Projektvorstellung Übung 1 Wiederholung zusammengefasst Planungsphase Lernziele Ziele und Inhalt der Planungsphase Anlass und Aufgabestellung(Was ist dabei erförderlich) Requirement Engineering

Mehr

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

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007 Fachhochschule Bonn-Rhein-Sieg University of Applied Sciences Fachbereich Informatik Prof. Dr. Peter Becker Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Mehr

Einführung in Eclipse und Java

Einführung in Eclipse und Java Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski Einführung in Eclipse und Java Dipl.Inf. Manuel Götz Lehrstuhl für Angewandte Informatik

Mehr

Einstieg in Exact Online Buchungen erfassen. Stand 05/2014

Einstieg in Exact Online Buchungen erfassen. Stand 05/2014 Einstieg in Exact Online Buchungen erfassen Stand 05/2014 Einstieg und Grundprinzip... 2 Buchungen erfassen... 3 Neue Buchung eingeben... 4 Sonstige Buchungen erfassen... 8 Bestehende Buchungen bearbeiten

Mehr

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank

Mehr

Softwaretechnologie -Wintersemester 2013/2014 - Dr. Günter Kniesel

Softwaretechnologie -Wintersemester 2013/2014 - Dr. Günter Kniesel Übungen zur Vorlesung Softwaretechnologie -Wintersemester 2013/2014 - Dr. Günter Kniesel Übungsblatt 3 - Lösungshilfe Aufgabe 1. Klassendiagramme (9 Punkte) Sie haben den Auftrag, eine Online-Videothek

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Robot Karol für Delphi

Robot Karol für Delphi Robot Karol für Delphi Reinhard Nitzsche, OSZ Handel I Version 0.1 vom 24. Januar 2003 Zusammenfassung Nach der Einführung in die (variablenfreie) Programmierung mit Robot Karol von Freiberger und Krško

Mehr

Modellierung verteilter Systeme Grundlagen der Programm und Systementwicklung

Modellierung verteilter Systeme Grundlagen der Programm und Systementwicklung Modellierung verteilter Systeme Grundlagen der Programm und Systementwicklung Wintersemester 2009/10 Prof. Dr. Dr. h.c. Manfred Broy Unter Mitarbeit von Dr. K. Spies, Dr. M. Spichkova, L. Heinemann, P.

Mehr

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur

Mehr

Prüfung Software Engineering I (IB)

Prüfung Software Engineering I (IB) Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IB 3 A Wintersemester 2014/15 Prüfung Software Engineering I (IB) Datum : 21.01.2015, 14:30 Uhr Bearbeitungszeit

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Softwaretechnik. Fomuso Ekellem WS 2011/12

Softwaretechnik. Fomuso Ekellem WS 2011/12 WS 2011/12 Inhalt Wiederholung Weitere Begriffe Programmierung im Großem (Programmierung von Software als Ganzes) Prozess-Modelle 2 Wiederholung: Prozesse Prozesse sind hierarchische Gruppierungen von

Mehr

Einführung in die Programmierung mit Java. Hörsaalübung

Einführung in die Programmierung mit Java. Hörsaalübung Einführung in die Programmierung mit Java Hörsaalübung Folie 1 Grundlagen der Objektorientierung Seit Anfang der Neunzigerjahre Standardmethode der Softwareentwicklung. Die OOP Objektorientierte Programmierung

Mehr

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur UML-Klassendiagramme als Werkzeug im Unterricht Blitzlicht? In welcher Programmiersprache(n) unterrichten Sie?? In welchem Umfang unterrichten Sie Objektorientierung??

Mehr

Einstellungen für SEPA-Lastschriften oder SEPA Dauerlastschriften in der VR-NetWorld Software 5.0

Einstellungen für SEPA-Lastschriften oder SEPA Dauerlastschriften in der VR-NetWorld Software 5.0 Einstellungen für SEPA-Lastschriften oder SEPA Dauerlastschriften in der VR-NetWorld Software 5.0 Bitte beachten Sie diese Punkte wenn Sie in der VR-NetWorld Software 5.0 Lastschriften oder Dauerlastschriften

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4. Agenda für heute, 4. Mai, 2006 Programmierparadigmen Imperative Programmiersprachen In Prozeduren zusammengefasste, sequentiell ausgeführte Anweisungen Die Prozeduren werden ausgeführt, wenn sie als Teil

Mehr

Some Software Engineering Principles

Some Software Engineering Principles David L. Parnas: Some Software Engineering Principles Marco Oppel 30.06.2004 Seminar Software-Architektur Institut für Informatik Humboldt Universität zu Berlin 1 Problemstellung Software Engineering Multi-Personen

Mehr