Slide 1

Slide 1 text

Objektorientierte Techniken und UML

Slide 2

Slide 2 text

Unter Objektorientierung, kurz OO, versteht man eine Sichtweise auf komplexe Systeme, bei der ein System durch das Zusammenspiel kooperierender Objekte beschrieben wird. Wikipedia

Slide 3

Slide 3 text

Vorgehensmodelle der Softwareentwicklung

Slide 4

Slide 4 text

Wasserfallmodell linear / nicht-iterative

Slide 5

Slide 5 text

Agile Softwareentwicklung iterativ und inkrementell

Slide 6

Slide 6 text

Phasen

Slide 7

Slide 7 text

Anforderungsanalyse

Slide 8

Slide 8 text

Design

Slide 9

Slide 9 text

Implementierung

Slide 10

Slide 10 text

Notationsformen

Slide 11

Slide 11 text

ER-Modell

Slide 12

Slide 12 text

UML Klassendiagramm

Slide 13

Slide 13 text

Elemente der Objektorientierung

Slide 14

Slide 14 text

Eine Klasse ist die Definition der Attribute, Operationen und der Semantik für eine Menge von Objekten. Alle Objekte einer Klasse entsprechen dieser Definition. Bernd Oestereich

Slide 15

Slide 15 text

Klassen

Slide 16

Slide 16 text

Objekte

Slide 17

Slide 17 text

Attribute

Slide 18

Slide 18 text

Methoden

Slide 19

Slide 19 text

Konstruktoren

Slide 20

Slide 20 text

Konzepte der Objektorientierung

Slide 21

Slide 21 text

Code Daten Code Daten Kapselung

Slide 22

Slide 22 text

Abstraktion Kuh Elsa Frida Vera

Slide 23

Slide 23 text

Assoziation Kuh Wiese steht auf

Slide 24

Slide 24 text

Aggregation Kuh Herde ist Mitglied

Slide 25

Slide 25 text

Komposition Rechnung Positionen besteht aus

Slide 26

Slide 26 text

Vererbung Figur Rechteck Quadrat Kreis Generalisierung Spezialisierung

Slide 27

Slide 27 text

Schnittstelle List LinkedList ArrayList

Slide 28

Slide 28 text

Polymorphie Figur Rechteck Quadrat a Figur

Slide 29

Slide 29 text

Benennung von Bezeichnern

Slide 30

Slide 30 text

Variable = Substantiv

Slide 31

Slide 31 text

Methode = Verb

Slide 32

Slide 32 text

Objektorientierte Analyse

Slide 33

Slide 33 text

Verstehen der fachlichen Domäne

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

Ein Anwendungsfall beschreibt eine Menge von Aktivitäten eines Systems aus der Sicht seiner Akteure, die für die Akteure zu einem wahrnehmbaren Ergebnis führen. Bernd Oesterreich

Slide 36

Slide 36 text

Use Cases

Slide 37

Slide 37 text

Bei der statischen Analyse werden die Geschäftsklassen und deren Beziehungen untereinander identifiziert. Weiterhin findet eine Spezifikation der Attribute und Operationen statt. Sebastian Hempel

Slide 38

Slide 38 text

Statische Analyse

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

Bei der dynamischen Analyse werden die Interaktionen der erkannten Geschäftsklassen untereinander identifiziert und die dabei verwendeten Operationen beschrieben. Sebastian Hempel

Slide 41

Slide 41 text

Dynamische Analyse

Slide 42

Slide 42 text

Analysemodell

Slide 43

Slide 43 text

Modell für Check-In

Slide 44

Slide 44 text

Objektorientiertes Design

Slide 45

Slide 45 text

Konkretisierung des Analysemodells mit der Erweiterung um nicht-fachliche Klassen. Integration der Klassen in eine Laufzeitumgebung / Framework. Sebastian Hempel

Slide 46

Slide 46 text

Komponenten

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

Klassebibliotheken

Slide 49

Slide 49 text

Frameworks

Slide 50

Slide 50 text

Objektorientierte Programmierung

Slide 51

Slide 51 text

Implementierung

Slide 52

Slide 52 text

Favour Composition over Inheritance Mitarbeiter Mitarbeiter Lehrgangsteilnehmer Lehrgangsteilnehmer

Slide 53

Slide 53 text

Das Liskov Substitution Principle besagt, dass Subtypen sich wie ihre Basistypen verhalten müssen.

Slide 54

Slide 54 text

Lehrgangsteilnehmer Mitarbeiter - SollStunden: long + berechneUeberstunden() …

Slide 55

Slide 55 text

Das Open Closed Principle (OCP) besagt, dass eine Klasse offen für Erweiterungen sein muss, jedoch geschlossen gegenüber Modifikationen.

Slide 56

Slide 56 text

public double Preis() { const decimal StammkundenRabatt = 0.95m; switch(kundenart) { case Kundenart.Einmalkunde: return menge * einzelpreis; case Kundenart.Stammkunde: return menge * einzelpreis * StammkundenRabatt; default: throw new ArgumentOutOfRangeException(); } }

Slide 57

Slide 57 text

Bestellposition + berechnePreis() : double «interface» PreisRechner + berechnePreis() : double Einmalkunde Stammkunde

Slide 58

Slide 58 text

Interface Segregation bedeutet Schnittstellen klein zu halten. Teilen Sie nicht zusammengehörende Methoden auf mehrere Schnittstellen auf.

Slide 59

Slide 59 text

Nach dem Law of Demeter soll eine Methode nur folgende andere Methoden verwenden: ● Methoden der eigenen Klasse ● Methoden der Parameter ● Methoden assoziierter Klassen ● Methoden selbst erzeugter Objekte

Slide 60

Slide 60 text

Bei der Dependency Inversion wird darauf geachtet, dass Klassen Abhängigkeit zu Schnittstellen und nicht zu anderen (Low-Level) Klassen haben. Dies verbessert die Testbarkeit.

Slide 61

Slide 61 text

Objektorientierte Programmmier- Sprachen

Slide 62

Slide 62 text

C++ (Bjarne Stroustrup)

Slide 63

Slide 63 text

Java (James Gosling)

Slide 64

Slide 64 text

C# (Anders Hejlsberg)

Slide 65

Slide 65 text

UML (unified modelling language)

Slide 66

Slide 66 text

Grady Booch Ivar Jacobson James Rumbaugh The Three Amigos

Slide 67

Slide 67 text

Anwendungsfalldiagram Klassendiagram Verhaltendiagramme Implementierungsdiagramme

Slide 68

Slide 68 text

Mit dem Anwendungsfall- diagramm wird beschrieben was das System leisten soll.

Slide 69

Slide 69 text

Ein Klassendiagramm besteht aus Klassen, Attributen, Methode und Interfaces.

Slide 70

Slide 70 text

Ein Klassendiagramm beschreibt die Beziehungen von Klassen.

Slide 71

Slide 71 text

Das Aktivitätsdiagramm beschreibt einen Ablauf in einem System.

Slide 72

Slide 72 text

Das Kollaborationsdiag ramm beschreibt Interaktionen zwischen Objekten.

Slide 73

Slide 73 text

Mit dem Sequenzdiagramm wird der Austausch von Nachrichten von Objekten im zeitlichen Zusammenhang beschrieben.

Slide 74

Slide 74 text

CASE Computer Aided Software Engineering

Slide 75

Slide 75 text

NClass (OpenSource)

Slide 76

Slide 76 text

ArgoUML (OS)

Slide 77

Slide 77 text

Borland Together

Slide 78

Slide 78 text

Rational Rose

Slide 79

Slide 79 text

Bildnachweis 1. Modellbahn - Elbbrücken / Pieter & Renée Lanser / Flickr 4. Krka Wasserfälle / Karl-Hermann Loges / Flickr 5. The Zombie Attack project plan / Jez Nicholson / Flickr 7. Old couple analyzing Railway timetable / Pedro Ribeiro Simões / Flickr 8. Sketching a System / Ben and Kaz Askins / Flickr 9. Pat on his Mac / Kevin Galens / Flickr 11. Minmax_Notation_Mannschaft_Spieler / PhilippWeissenbacher / Wikipedia 15. Waffle Recipe / Brian Kelley / Flickr 16. Light Waffeln / sushiina / Flickr 17. ALFA ROMEO Giulia 1964 / Will Will / Flickr 18. Alfa Romeo Giulia Sprint GT RUD66 / Flickr 19. Ich liebe Waffeln! / Tine Steiss Flickr 30. Flohmarkt / cbronziski / Flickr 30. The Point Is im Studio der SAE Leipzig / Andre Lademann / Flickr 33. J&W Autos - Mechanic At Work 2 / Emyr Jones / Flickr 36. Self check-in at BOS / Karl Baron / Flickr 38. Everyone getting in on macroinvertebrate identification / External Affairs / Flickr 41. Marius Zierold / Marius Zierold / Flickr 42. Dresden bei VW / Dierk Schäfer / Flickr 46. highend-96 / noeffred / Flickr 48. Dombücherei Linz, 3 / Monika Bargmann / Flickr 49. Framework / jphilipg / Flickr 64. Anders Hejlsberg / D. Begley / Flickr

Slide 80

Slide 80 text

Sebastian Hempel Staatlich geprüfter Informatiker Selbständiger Software- Entwickler und Dozent in den Bereichen Java und OpenSource Clean Code Developer shempel@it-hempel http://www.it-hempel.de/