FACHHOCHSCHULE MANNHEIM

Ähnliche Dokumente
FACHHOCHSCHULE MANNHEIM

Objektorientiertes Software-Engineering

Java Schulung. Objektorientierte Programmierung in Java. Prof. Dr. Nikolaus Wulff

1.3 Geschichte der Programmiersprachen

Praktische Softwaretechnologie

Analyse und Modellierung von Informationssystemen

Inhaltsverzeichnis. Literatur. 4 Rational Unified Process [JBR98, Kru03] und UML [BRJ02, FS00, Bal01]

Softwaretechnik. Wesentliche Inhalte der Vorlesung

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen

Software-Architektur-Modellierung mit UML

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Objektorientierte Systeme

UML (Unified Modelling Language) von Christian Bartl

Software Engineering

Software-Entwicklung

UML-Basics: Einführung in Objekt- Orientierte Modellierung mit der Unified Modeling Language

Methodische Softwareentwicklung (Programmiermethodik)

Objektorientierte Analyse

Prof. Dr. Jürgen Giesl Lehr- und Forschungsgebiet Informatik 2. Proseminar - 1 -

Moderne Analyse-Methoden

In den weiterführenden Vorlesungen

Guido de Melo Fachvortrag, Uni Ulm UML 2.0. Für den Einsatz in der Praxis

Requirements Management mit RequisitePro. Rational in der IBM Software Group. Der Rational Unified Process als Basis für die Projektarbeit

Fachhochschule Wiesbaden, FB Design Informatik Medien Studiengang Allgemeine Informatik Vorlesung im SS 2007

Aufbau betrieblicher Informationssyteme

Grundlagen der Informatik für Ingenieure I

Funktions- versus Objektorientierter Entwurf

Grundlagen des Software Engineering

Requirements Engineering I

Einführung in das objektorientierte Programmieren

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

Informationswirtschaft II Rational Unified Process (RUP)

Informationswirtschaft II

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

Objektorientierte Programmierung. 1. Einführung. Dresden, 10. April 2008

Objektorientierter Software-Entwurf Die Unified Modeling Language 4 1

Modellierungstechniken im Softwaredesign. Praxisprojekt [ai] Control WS 2011/2012 Lara Baschour und Anne Heiting

Stichworte zur Ideengeschichte der Programmiersprachen

Einführung in die Programmiertechnik

J.2 Objektorientiertes Modellieren mit UML

Analyse und Modellierung von Informationssystemen

Java Einführung Objektorientierte Grundkonzepte

Grundlagen der Programmierung UE

Funktionale Programmierung (in Clojure)

Oracle JDeveloper 10 g

Ein Streifzug durch die Programmiersprachenlandschaft in der Schule. Gerald Futschek TU Wien Informatiktag 2013

wenige Konzepte, keine Adressen, Anlehnung an C++ -Syntax Vererbung, Polymorphie/dynamisches Binden, umfangreiche Klassenbibliotheken

Grundlagen der Programmierung UE

Prof. Dr.-Ing. Dietrich Schröder GIS und Programmiersprachen: Wohin geht die Reise?

Übersicht. Softwarearchitektur. Softwarearchitektur, UML, Design Patterns und Unit Tests. Softwarearchitektur

4 Ausklang. ALP 2, Hannes Federrath, Sommersemester 2001

OOAD Richtlinien & Tips

Softwaretechnik (Medieninformatik) Überblick

Einführung in die Programmierung WS 2014/ Algorithmus, Berechenbarkeit und Programmiersprachen 2-1

Vorlesung Programmieren

Objektorientierte Analyse und Design

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

Softwareentwicklung und Projektmanagement Teil 2: Objektorientierte Softwareentwicklung WS 05/06

Unified Modeling Language (UML )

Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker

4. Komponentenarten. Java-Beispiele:

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

Grundlagen der Informatik

Literaturliste zur Vorlesung Modellierung betrieblicher Informationssysteme WS 2006/07

Selda Garip MatrikelNr.: Kennzahl: 533

Modellierung und Programmierung 1

Funktionale Programmiersprachen

1. Einführung Grundlagen der Programmierung 1 (Java)

1 Einleitung. 1.1 Definition und Geschichte. Holger Vogelsang und Peter A. Henning

2. Java Schnellkurs Advanced Programming Techniques. Wintersemester 2009/10 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Liste Programmieren - Java

im WiSe 2010/11 mit ODEMx Prof. Dr. Joachim Fischer Dr. Klaus Ahrens Dipl.-Inf. Ingmar Eveslage fischer ahrens

Objektorientierte Softwareentwicklung

Grundlagen der UML-Modellierung. Modellierung. Elena Paslaru Seminar Praktische Modellierung SS

Software Factories SS Prof. Dr. Dirk Müller. 3 Modellgetriebene Softwareentwicklung

Einführung in die Informationsverarbeitung Teil Thaller. Stunde VII: Planen und Realisieren

0 Allgemeines. Prof. Dr. Rolf Dornberger

Einführung in die objektorientierte Programmierung. mit Squeak

Organisatorisches/Einstieg

6.2 Literatur. Anhang Literatur

Organisatorisches. Einführung in die Programmierung in C Hochschule Regensburg Universitätsstraße 31, Regensburg

2 Grundlagen der Programmierung

Programmiersprachen und Programmierkonzepte

Grundlagen Internet-Technologien. Clientseitige Web-Programmierung

Kapitel 2: Der Software-Entwicklungsprozess

Einführung in die Informatik

SS / 16 schrittweise Verfeinerung -> Wirth, 1971, Programm Development by Stepwise Refinement

Software-Entwicklung: Konzepte der Objektorientierung

Java-Programmierung mit NetBeans

Einführung in die Programmierung mit Java

Model Driven Development im Überblick

Das objektorientierte Projekt

Informatik ist viel mehr als Delphi-Programmierung!

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

C.8 Object-oriented Software Development

5.1 Algorithmen Der Algorithmenbegriff

Grundlagen der Modellierung und Programmierung, Übung

IT-Projekt-Management

ALGOL 68 im Aspekt einer modernen Programmiersprache???

Model Driven Architecture Praxisbeispiel

Transkript:

Objektorientierte Programmierung 2. Vorlesung Prof. Dr. Peter Knauber Email: P.Knauber@fh-mannheim.de FACHHOCHSCHULE MANNHEIM Hochschule für Technik und Gestaltung Kurzer Vor der Objektorientierung Programmierstile Sprachen Probleme Objektorientierung Begriffe Grundlegende Ideen Notationen Nach der Objektorientierung Literatur Folie 1

Folie 2 The Big Picture: Warum ist Software-Entwicklung ein Thema? Folie 3

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 4 Objektorientierung ein neues Entwicklungsparadigma 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 5

Folie 6 Sprachen vor der Objektorientierung 1/2 Beispiele für imperative / strukturierte Programmiersprachen Maschinensprache, Assembler Fortran I 95 Algol PL/I Cobol Basic Pascal C Modula-2... Folie 7

Sprachen vor der Objektorientierung 2/2 Beispiele für funktionale / deklarative Programmiersprachen Common Lisp Scheme Haskell Prolog... Folie 8 Exkurs: Abstammung von Programmiersprachen 1957 1960 1965 1970 Lisp Cobol Algol 60 PL/I Algol-W Algol 68 Pascal C Fortran I Fortran IV Basic BCPL 1975 1980 1985 Common Lisp Modula-2 Ada Fortran 77 1990 1995 Ansi-C Fortran 90 Fortran 95 Folie 9

Stile vor der Objektorientierung 1/2 Probleme mit strukturierter Programmierung Anweisungs-orientiert Algorithmus-orientiert Spaghetti-Code Der Problemstellung nicht angemessen, Beispiel: Simulation Bruch zwischen Anforderungsmodellierung (Problemraum) und Realisierung (Lösungsraum)... Folie 10 Stile vor der Objektorientierung 2/2 Probleme mit funktionaler / deklarativer Programmierung Zu wenig Ablaufkontrolle, oft zu langsam Extrem nicht-anweisungs-orientiert Teilweise unverständlich (durch komplexe Konstrukte) Der Problemstellung nicht angemessen... Folie 11

Folie 12 Begriffe der Objektorientierung (nicht vollständig!) Objekte Klassen Instanziierung Vererbung / Inheritance Attribute Polymorphismus Dynamische Bindung Initialisierung Methoden Operationen Mitteilungen / Messages Sichtbarkeit Kapselung Identität von Objekten Struktur und Verhalten Delegation Objektorientierte Analyse (OOA) Objektorientiertes Design (OOD) Objektorientierte Programmierung (OOP) Objektorientiertes Testen Objektorientierte Wartung Folie 13

Ideen der Objektorientierung Software wird gesehen als eine Sammlung diskreter Objekte (entsprechend denen aus der realen Welt) inklusive ihrer (Daten-) Struktur und ihres Verhaltens Das führt zu Datenorientierung (im Unterschied zum imperativen Stil) Programm / Algorithmen sind um Daten gruppiert Daten sind oft Zustandsdaten, das ist sehr gut geeignet für Simulationen: Ursprung von Simula 67 (mehr dazu später) Folie 14 Notationen (und Methoden) für Objektorientierung 1/3 Object-Oriented Specification (OOS), Sidney Bailin, NASA, CACM 1989 Responsibility Driven Design (RDD), Rebecca Wirfs-Brock, Brian Wilkerson, Lauren Wiener, Tektronix, Buch 1990 Object-Oriented Design (OOD), Grady Booch, Rational, Buch 1991 Object-Oriented Analysis (OOA), Peter Coad, Ed Yourdon, Object International, Buch 1990 und 1991 Object-Modeling Technique (OMT), James Rumbaugh, Michael Blaha, Wiliam Premerlani, Frederick Eddy, Wiliam Lorenson, General Electric Research and Development Center, Buch 1991 Object-Oriented System Analysis (OOSA), Sally Shlaer, Stephen Mellor, Project Technology, Bücher 1988 und 1991 Object-Oriented Systems Analysis (OSA), David Emblem, Barry Kurz, Schot Woodfield, Hewlett Packard, Buch 1992 Folie 15

Notationen (und Methoden) für Objektorientierung 2/3 Object-Behavior Analysis (OBA), Keneth Rubin, Adele Goldberg, Parc Place Systems, CACM, 1992 Better Object Notation (BON), Jean-Marc Nerson, Societe des outils du logiciel, CACM 1992 Object-Oriented Software Engineering (OOSE, Objectory), Ivar Jacobson, Schweden, Buch 1992 Object-Oriented Analysis & Design (OOA&D), James Martin, James Odell, USA, Buch 1992 Object-Oriented Analysis, Design & Implementation (OOO), Brian Henderson-Sellers, Julian Edwards, University of New South Wales, CACM 1990, Buch 1992 Folie 16 Notationen (und Methoden) für Objektorientierung 3/3 OMG Unified Modeling Language (UML) Specification, Object Management Group, Version 1.4, 2000 Fusion, Coleman, Arnold, Bodoff, Dollin, Gilchrist, Hayes, Jeremaes, Buch, 1994 Real-Time Object-Oriented Modeling (ROOM), Selic, Gullekson, Ward, Buch 1994Hierarchical Object-Oriented Design (HOOD), Robinson, Buch 1992 OORAM, Reenskaug, Wold, Lehne, Buch 1996 Rational Unified Process (RUP), Jacobson, Booch, Rumbaugh, Buch, 1999 Object-Oriented, Process, Environment, and Notation (OPEN), Graham, Henderson-Sellers, Younessi, Buch 1995 Und natürlich: entsprechende Programmiersprachen! Folie 17

Folie 18 Objektorientierte / hybride Programmiersprachen Simula 67 Smalltalk 80 (aus Simula) CLOS (aus Common Lisp) Oberon-2 (aus Modula-2) C++ (aus C) ObjectPascal (aus Pascal) Delphi (aus Pascal) Ada (aus Pascal und anderen) Eiffel Java (aus C++/C) C# (aus Java) Folie 19

1957 1960 1965 1970 Lisp Exkurs: Abstammung von Programmiersprachen Fortran I Cobol Algol 60 Algol-W Pascal PL/I Algol 68 C Basic BCPL Fortran IV Simula 67 1975 1980 1985 1990 1995 2000 Common Lisp CLOS Modula-2 Ada Delphi Oberon-2 Ada 9x ObjectPascal Folie 20 Ansi-C Java C# C++ Smalltalk 80 Fortran 77 Fortran 90 Fortran 95 Die erste oo Sprache: Simula Simula = SIMUlation LAnguage Simula 67 entstand aus Simula I, um für allgemeine Programmierzwecke tauglich zu werden Ursprung: Für die Simulation wurden unterbrechbare Unterprogramme benötigt, die am Ort der Unterbrechung wieder fortgesetzt werden konnten. Das wurde realisiert in Form von Klassen mit: Hierarchisierung, Vererbung, Initialwerten, Instanziierung Objekten, deren Eigenschaften von Klassen festgelegt werden, mit: lokalen, statischen Daten (bleiben zwischen Zugriffen erhalten) Methoden realisierten die verschiedenen Teile der Unterprogramme Damals waren Abstrakte Datentypen noch kein Begriff (erst ab '72), aber die Mechanismen waren bereits vorhanden! Folie 21

Und was kommt nach der Objektorientierung? Design Pattern Komponenten Architekturen Produktlinien Generierung... Folie 22 Folie 23

Literatur Atkinson, Bayer, Bunse, Kamsties, Laitenberger, Laqua, Muthig, Paech, Wüst, Zettel: Component-based Product Line Engineering with UML ("KobrA"), Addison Wesley Heide Balzert: UML kompakt mit Checklisten, Spektrum Bruce Eckel: Thinking in Java, 2nd Edition, Prentice Hall; http://www.mindview.net/books/tij/ David Flanagan: Java in a Nutshell: A Desktop Quick Reference, 2nd Edition, O Reilly Ivar Jacobsen, Grady Booch, James Rumbaugh: The Unified Software Development Process ("RUP"), Addison-Wesley http://java.sun.com: Java Development Kit 1.4 Dokumentation (API) dazu Tutorials etc. Folie 24