Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Objektorientierte Techniken und UML
Search
Sebastian Hempel
October 19, 2010
Programming
0
1.8k
Objektorientierte Techniken und UML
Einführung in die Grundlagen von Objektorientierter Programmierung und Design
Sebastian Hempel
October 19, 2010
Tweet
Share
More Decks by Sebastian Hempel
See All by Sebastian Hempel
Wer spricht denn da? - Logging in Java (JCON 2022)
shempel
0
28
Kryptographie für Einsteiger
shempel
0
680
Jobs as Code - Jenkins Pipeline Jobs
shempel
0
800
Kryptogragire für Java-Entwickler
shempel
0
1.2k
Integration von MicroServices
shempel
0
1.6k
Dokumentation schreiben kann Spaß machen! (2017)
shempel
0
1.1k
Minifliegen im Schwarm
shempel
0
1.2k
Puppenspielerein
shempel
0
1.1k
Puppet für Entwickler
shempel
0
2k
Other Decks in Programming
See All in Programming
Rubyのパフォーマンスプロファイリングの改善 / Enhancing performance profiling for Ruby
osyoyu
1
410
From Spring Boot 2 to Spring Boot 3 with Java 22 and Jakarta EE
ivargrimstad
0
1.9k
CSC307 Lecture 07
javiergs
PRO
0
220
大規模マルチテナントを解決するYugabyteDBという選択肢
nnaka2992
1
250
Polarsの成長: v0.14からv1.0までの変遷と今後の展望
zerebom
1
350
AWSでゲームサーバーを運用! Amazon GameLiftのお話
iriikeita
0
200
Findy - エンジニア向け会社紹介 / Findy Letter for Engineers
findyinc
2
81k
君たちはどうコードをレビューする (される) か / 大吉祥寺.pm
utgwkk
15
8.5k
しくじり先生 Image Matching Challenge 2024 編
goosehaaan
0
810
入社1ヶ月でここまでやった!Findy Toolsインフラ支援の最適化
rvirus0817
6
1.4k
最近追加した型の紹介とその振り返り
aki19035vc
0
170
CSC307 Lecture 10
javiergs
PRO
0
310
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
34
1.9k
What the flash - Photography Introduction
edds
65
11k
KATA
mclloyd
20
13k
The Brand Is Dead. Long Live the Brand.
mthomps
52
36k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
662
120k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
353
29k
Design by the Numbers
sachag
277
18k
Into the Great Unknown - MozCon
thekraken
20
1.3k
Happy Clients
brianwarren
94
6.5k
Documentation Writing (for coders)
carmenintech
63
4.2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
155
14k
Typedesign – Prime Four
hannesfritz
37
2.2k
Transcript
Objektorientierte Techniken und UML
Unter Objektorientierung, kurz OO, versteht man eine Sichtweise auf komplexe
Systeme, bei der ein System durch das Zusammenspiel kooperierender Objekte beschrieben wird. Wikipedia
Vorgehensmodelle der Softwareentwicklung
Wasserfallmodell linear / nicht-iterative
Agile Softwareentwicklung iterativ und inkrementell
Phasen
Anforderungsanalyse
Design
Implementierung
Notationsformen
ER-Modell
UML Klassendiagramm
Elemente der Objektorientierung
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
Klassen
Objekte
Attribute
Methoden
Konstruktoren
Konzepte der Objektorientierung
Code Daten Code Daten Kapselung
Abstraktion Kuh Elsa Frida Vera
Assoziation Kuh Wiese steht auf
Aggregation Kuh Herde ist Mitglied
Komposition Rechnung Positionen besteht aus
Vererbung Figur Rechteck Quadrat Kreis Generalisierung Spezialisierung
Schnittstelle List LinkedList ArrayList
Polymorphie Figur Rechteck Quadrat a Figur
Benennung von Bezeichnern
Variable = Substantiv
Methode = Verb
Objektorientierte Analyse
Verstehen der fachlichen Domäne
None
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
Use Cases
Bei der statischen Analyse werden die Geschäftsklassen und deren Beziehungen
untereinander identifiziert. Weiterhin findet eine Spezifikation der Attribute und Operationen statt. Sebastian Hempel
Statische Analyse
None
Bei der dynamischen Analyse werden die Interaktionen der erkannten Geschäftsklassen
untereinander identifiziert und die dabei verwendeten Operationen beschrieben. Sebastian Hempel
Dynamische Analyse
Analysemodell
Modell für Check-In
Objektorientiertes Design
Konkretisierung des Analysemodells mit der Erweiterung um nicht-fachliche Klassen. Integration
der Klassen in eine Laufzeitumgebung / Framework. Sebastian Hempel
Komponenten
None
Klassebibliotheken
Frameworks
Objektorientierte Programmierung
Implementierung
Favour Composition over Inheritance Mitarbeiter Mitarbeiter Lehrgangsteilnehmer Lehrgangsteilnehmer
Das Liskov Substitution Principle besagt, dass Subtypen sich wie ihre
Basistypen verhalten müssen.
Lehrgangsteilnehmer Mitarbeiter - SollStunden: long + berechneUeberstunden() …
Das Open Closed Principle (OCP) besagt, dass eine Klasse offen
für Erweiterungen sein muss, jedoch geschlossen gegenüber Modifikationen.
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(); } }
Bestellposition + berechnePreis() : double «interface» PreisRechner + berechnePreis() :
double Einmalkunde Stammkunde
Interface Segregation bedeutet Schnittstellen klein zu halten. Teilen Sie nicht
zusammengehörende Methoden auf mehrere Schnittstellen auf.
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
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.
Objektorientierte Programmmier- Sprachen
C++ (Bjarne Stroustrup)
Java (James Gosling)
C# (Anders Hejlsberg)
UML (unified modelling language)
Grady Booch Ivar Jacobson James Rumbaugh The Three Amigos
Anwendungsfalldiagram Klassendiagram Verhaltendiagramme Implementierungsdiagramme
Mit dem Anwendungsfall- diagramm wird beschrieben was das System leisten
soll.
Ein Klassendiagramm besteht aus Klassen, Attributen, Methode und Interfaces.
Ein Klassendiagramm beschreibt die Beziehungen von Klassen.
Das Aktivitätsdiagramm beschreibt einen Ablauf in einem System.
Das Kollaborationsdiag ramm beschreibt Interaktionen zwischen Objekten.
Mit dem Sequenzdiagramm wird der Austausch von Nachrichten von Objekten
im zeitlichen Zusammenhang beschrieben.
CASE Computer Aided Software Engineering
NClass (OpenSource)
ArgoUML (OS)
Borland Together
Rational Rose
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
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/