Objektorientierte Programmierung 1. Vorlesung Prof. Dr. Peter Knauber Email: P.Knauber@fh-mannheim.de FACHHOCHSCHULE MANNHEIM Hochschule für Technik und Gestaltung Objektorientierung Was ist das? Warum braucht man das?, Folie 1
Zu meiner Person... Folie 2 Folie 3
Folie 4 Folie 5
Material zur Vorlesung Gibt es in Folienform, aber immer erst nach der Vorlesungsstunde! Grund: aktive Diskussion Viele Fragen sind unnötig / sinnlos, wenn auf der nächsten Folie (mögliche) Antworten stehen. Notizen / Kommentare während der Vorlesung können sich auf die jeweiligen Foliennummern beziehen. Beim Nachtragen der Notizen findet eine gewisse (Mindest-) Nachbereitung statt. Folie 6 The Big Picture: Warum ist Software-Entwicklung ein Thema? Folie 7
The Big Picture: Warum ist Software-Entwicklung ein Thema? Folie 8 The Big Picture: Warum ist Software-Entwicklung ein Thema? Folie 9
Phasen in der Automobil-Entwicklung Planung Entwicklung / Konstruktion Produktion Auslieferung Wartung Folie 10 Software-Entwicklung vs. Automobil-Entwicklung 1/3 Lebenszyklus im Automobilbau Planung Marktbedarf, Zielgruppe Aufwand, Kosten Preis Zeitpunkt der Auslieferung Lebenszyklus von Software Planung (Neue) Features Preis Zeitpunkt der Auslieferung Entwicklung / Konstruktion Technologie: was gibt es bereits, was muss entwickelt werden Wegwerf-Prototypen, Studien Design, Implementierung Anforderungen (genauer) Architektur / Design (meistens von Grund auf neu!) Evolutionäre Prototypen Codierung, Aufstocken der Prototypen Verallgemeinerte Codierung, Copy&Change Folie 11
Software-Entwicklung vs. Automobil-Entwicklung 2/3 Lebenszyklus im Automobilbau Produktion Just-In-Time-Produktion (verlässliche Zeitplanung) Montage aus (vormontierten) Komponenten Kundenspezifische Ausstattung Lebenszyklus von Software Produktion = Kopieren (auf CD oder Diskette) Last-Minute-Änderungen Folie 12 Software-Entwicklung vs. Automobil-Entwicklung 3/3 Lebenszyklus im Automobilbau Auslieferung Verschiffen etc., Händler Lebenszyklus von Software Auslieferung / Installation Verschicken, Upload Konfigurieren, Anpassen (Copy&Change) Wartung Regelmäßige Inspektion von Verschleißteilen Wartung Nachträgliche Änderungen, Anpassung, Weiterentwicklung Folie 13
Aufgaben für die Software-Entwicklung Mehr Aufwand in die Konzeption/Planung stecken und Verlässliche Schätzmodelle für Aufwand und Kosten entwickeln Auf erprobten und funktionierenden Lösungen (Konzepten) aufbauen: Architektur, Design Erprobte und funktionierende Komponenten wiederverwenden: Baugruppen, Komponenten, Module, Packages Bauklötze, Lego! Wiederverwendung Relation zur Objektorientierung: Die Objektorientierung enthält Konzepte, die als förderlich für Wiederverwendung angesehen werden Auf die Objektorientierung lassen sich relativ gut weiterführende Konzepte / Modelle aufbauen Folie 14 Folie 15
Folie 16 Objektorientierung was ist das? Ein Programmierstil Ein (neues) Programmier-Paradigma Ein (neues) Entwicklungs-Paradigma Eine realistische Darstellung der realen Welt Das Non-plus-Ultra der Computerprogrammierung Wieder mal eine neue Mode... Folie 17
Folie 18 Objektorientierung warum? Hoffnung auf besonders gutes Verhalten objektorientierter Programme Modularität Verständlichkeit ( das Programm ist die Dokumentation ) Wiederverwendbarkeit... Es gab Probleme mit früheren Programmierstilen dazu gleich mehr! Beispiele für frühere Programmierstile Imperative / strukturierte Programmierung Funktionale Programmierung Deklarative Programmierung Folie 19
Vorlesungsüberblick Objektorientierte Begriffe Objektorientierter Entwurf (Design) Eine Methode für die objektorientierte (und komponentenbasierte) Entwicklung von Software: KobrA UML Die KobrA-Modelle Objektorientierte Programmierung in Java Beispiele und Diskussion möglicher Lösungen Folie 20 Folie 21