Wenn alles so einfach wäre Einfach OO Wenn alles so einfach wäre
Wie gehen wir vor? Das Konzept Die Grundlagen Das Vorgehensmodell Einfach OO Wie gehen wir vor? Das Konzept Die Grundlagen Das Vorgehensmodell
Das Konzept Was heisst OO? Was will OO? Was war vor OO? Was kann OO? Einfach OO Was heisst OO? Was will OO? Was war vor OO? Was kann OO? Wo ist OO stark? Wo ist OO schwach?
Was heisst OO? ObjektOrientierte Softwareentwicklung Objekte (Dinge) Einfach OO / Konzept Was heisst OO? ObjektOrientierte Softwareentwicklung Objekte (Dinge) Auto besteht aus: Räder Fahrwerk Karosserie
Was will OO? Die Realität abbilden mit Hilfe von Objekten Einfach OO / Konzept Was will OO? Die Realität abbilden mit Hilfe von Objekten
Einfach OO / Konzept Was kann OO? Das Verhalten, den Zustand und die Identität eines Objektes der realen Welt nachbilden. Identität Zustand Verhalten Wecker 1 Wecker 2 Zeit 10:35 Zeit 14:45 Zeit anzeigen alarmieren Mich kennt man Ich habe Werte Ich habe Intelligenz und kann etwas
Wo ist OO stark? Kapselung (Information Hidding) Einfach OO / Konzept Wo ist OO stark? Kapselung (Information Hidding) Verteilung von Intelligenz (Delegation) Komponentenbildung (Services) Auftrag Privater Bereich Ergebnis Austauschbare Komponente Normierte Schnittstelle Öffentlicher Bereich
Wo ist OO schwach? Performance Einfach OO / Konzept Einbussen durch starke Nutzung der Delegation Ich bin nicht zuständig, mach du und liefere mir Ich bin nicht zuständig, mach du und liefere mir Ich bin zuständig, und liefere dir Auftrag Auftrag Ergebnis Ergebnis
Die Grundlagen Was ist ein Objekt? Was ist eine Klasse? Einfach OO / Grundlagen Die Grundlagen Was ist ein Objekt? Was ist eine Klasse? Was sind Beziehungen?
Was ist ein Objekt? Abbild aus der realen oder gedachten Welt Einfach OO / Grundlagen Was ist ein Objekt? Abbild aus der realen oder gedachten Welt Identität Zustand Verhalten Ferrari - farbe = rot - kennzeichen = SG 23 44 einWecker - Uhrzeit = 10:00 - weckzeit = 6:00
Was ist eine Klasse? Schablone eines Objektes Identität Zustand Einfach OO / Grundlagen Was ist eine Klasse? Schablone eines Objektes Identität Zustand Verhalten Auto - farbe: Color - kennzeichen: String + beschleunigen() + bremsen() Wecker - Uhrzeit: Time - weckzeit: Time + setzeWeckzeit(eineZeit: Time)
Was ist eine Klasse? Schablone eines Objektes bestehend aus: OO-Software-Entwicklung / Theorie / Class-Diagram Was ist eine Klasse? KlassenName attribut1 attribut2 attribut3 ... operation1() operation2() ... Schablone eines Objektes bestehend aus: Attribute - Ausprägung (Zustand) Operationen - Verhalten
attribut1: typ1 attribut2: typ2 attribut3: typ3 ... OO-Software-Entwicklung / Theorie / Class-Diagram Was ist eine Klasse? Attribute - name - type Operationen - name - parameter - name - type -return Value - type KlassenName attribut1: typ1 attribut2: typ2 attribut3: typ3 ... operation1(parName: partyp) : retval operation2(parName: partyp) : retval ...
Was ist eine Interface-Klasse? InterfaceName „Interface“ OO-Software-Entwicklung / Theorie / Class-Diagram Was ist eine Interface-Klasse? Abstrakte Klasse ohne Implementierung Protokolldefinition - Operationen -ohne -Implementierung Keine Attribute InterfaceName „Interface“ attribut1 attribut2 attribut3 ... operation1 operation2 ...
Was sind Klassen-Beziehungen? OO-Software-Entwicklung / Theorie / Class-Diagram Was sind Klassen-Beziehungen? Fahrzeug Auto Fahrrad Beziehungen zwischen Klassen Vererbung Aggregation Komposition Person Uhr Person Adresse
Was ist eine Vererbungs-Beziehungen? OO-Software-Entwicklung / Theorie / Class-Diagram Was ist eine Vererbungs-Beziehungen? Fahrzeug Auto Fahrrad Beschreibung - Spezialisierung Prüffrage - iskindof (Ist eine Art von)
Was ist eine Mehrfach-Vererbung? OO-Software-Entwicklung / Theorie / Class-Diagram Was ist eine Mehrfach-Vererbung? Amphibien fahrzeug Boot Auto Auto Drawable „Interface“ Fahrzeug Beschreibung - Spezialisierung Prüffrage - iskindof (Ist eine Art von)
Was ist eine Aggregation? OO-Software-Entwicklung / Theorie / Class-Diagram Was ist eine Aggregation? Person Uhr Beschreibung - Unidirektionale (einseitige) Besitzangabe Prüffrage - has-a (Hat ein)
Was ist eine Komposition? OO-Software-Entwicklung / Theorie / Class-Diagram Was ist eine Komposition? Person Adresse Beschreibung - Spezialfall der Aggregation -> Existenz-Abhängigkeit Prüffrage - part-of (Teil von)
Was ist der Unterschied? OO-Software-Entwicklung / Theorie / Class-Diagram Was ist der Unterschied? Person Adresse Komposition: Adresse kann ohne Person nicht existieren! Person Uhr Aggregation: Uhr kann ohne Person existieren!
Was ist eine Kardinalität? OO-Software-Entwicklung / Theorie / Class-Diagram Was ist eine Kardinalität? Spezifikation einer Klassenbeziehung Mengenangabe der Beziehung * -Null oder mehr 1 -exakt eins 0..1 -Null oder eins Person * Uhr 1 Person Geburtstag 0..1 Person Ehepartner
Was ist ein Klassendiagramm? OO-Software-Entwicklung / Theorie / Class-Diagram Was ist ein Klassendiagramm? Auto Drawable „Interface“ Fahrzeug Uhr Person * Statische Darstellung Beziehungen und Abhängigkeiten zwischen den Klassen
Was ist ein Vorgehensmodell? OO-Software-Entwicklung / Theorie / Vorgehensmodell Was ist ein Vorgehensmodell? Vorgehensmodell Phasen Kernprozess
OO-Software-Entwicklung / Theorie / Vorgehensmodell Prozess Ablauf - Modellierung - Anforderungen - Analyse & Design - Implementierung - Test - Einsatz Prozess Unterstützung - Konfigurationsmanagement - Projektmanagement - Entwicklungsumgebung
Alle Phasen erstrecken sich über den gesamten Workflow OO-Software-Entwicklung / Theorie / Vorgehensmodell Was sind die Phasen? Alle Phasen erstrecken sich über den gesamten Workflow
Was sind die Kernprozesse? OO-Software-Entwicklung / Theorie / Vorgehensmodell Was sind die Kernprozesse? Systemabgrenzung Anforderungen Systemdefinition Implementierung Testen Einsatz Konfigurationsmanagement Projektmanagement Entwicklungsumgebung
Vorstudie (Inception) OO-Software-Entwicklung / Theorie / Vorgehensmodell Vorstudie (Inception) Ziele - Systemabgrenzung - Kernanforderung - Projektplan (Meilensteine) - Projekt-Kosten / -Risiken Lieferobjekte - 10 - 20 % der Use Cases - Fachglossar - Prototyp
Hauptstudie (Elaboration) OO-Software-Entwicklung / Theorie / Vorgehensmodell Hauptstudie (Elaboration) Ziele - alle Anforderungen - Priorität - Systemarchitektur - Iterationsplan Lieferobjekte - 100 % der Use Cases - Klassendiagramme - techn. Prototyp
Systembau (Construction) OO-Software-Entwicklung / Theorie / Vorgehensmodell Systembau (Construction) Ziele - Lauffähiges Teilsystem Lieferobjekte - Software - Dokumentation
Einführung (Transition) OO-Software-Entwicklung / Theorie / Vorgehensmodell Einführung (Transition) Ziele - Einführung der SW Lieferobjekte - Schulungsunterlagen
OO-Software-Entwicklung / Theorie / UseCases Was ist ein Use Case? Buch an Kunde ausleihen Systemübersicht - Systemanforderungen - Was sind die Anforderungen? - System Benutzer - Wer sind die Benutzer? - Abhängigkeiten - Wer löst was auf? Buch zurücknehmen Bibliothekar
Was ist ein Actor? Systembenutzer Rolle OO-Software-Entwicklung / Theorie / UseCases Was ist ein Actor? Systembenutzer Rolle Beispiele - Bibliotheksverwaltung - Bibliothkar - Offertesystem - Agent Actor Name
Was ist ein Use-Case? Funktionelle Anforderung OO-Software-Entwicklung / Theorie / UseCases Was ist ein Use-Case? Funktionelle Anforderung Wird vom Actor ausgelöst und liefert ihm ein sinnvolles Ergebnis Beispiele - Bibliotheksverwaltung - Buch an Kunde ausleihen - Offertesystem - Offerte erstellen Use-Case-Name