Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus...

24
Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung in Java, Mark Giereth, www.iis.uni-stuttgart.de/lehre/ws03-04/info3/java.pdf

Transcript of Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus...

Page 1: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Objektorientierte Programmierung am

Beispiel von Java

Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung in Java, Mark Giereth,

www.iis.uni-stuttgart.de/lehre/ws03-04/info3/java.pdf

Page 2: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Was ist Objektorientierung?

Datenorientierte Sichtweise Gruppierung von Daten zu komplexen Typen

(Strukturierung) Definition von Operationen, die Daten

verarbeiten Daten vor inkonsistenten Veränderungen

schützen, indem Zugriff beschränkt wird Daten und Funktionen bilden Einheit (Klasse

bzw. Objekt)

Page 3: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Warum Objektorientierung?Softwarekrise I

1994: Eröffnung des Denver International Airport um 9 Monate verzögert wegen Softwareproblemen im Gepäcktransport-System

1989-1998: Entwicklung eines Systems zur Unterstützung der Polizeiarbeit in Hamburg abgebrochen (120 Mio. DM)

1996: Verlust der Ariane 5 (>1,65 Mrd. DM) 2003-2006: Toll Collect (> 1 Mrd. EUR)

Page 4: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Warum Objektorientierung?Softwarekrise II

Studie der Standish Group International 1999: 26 % aller Software-Projekte werden

erfolgreich abgeschlossen 46 % leiden unter erheblicher Kosten- und

Terminüberschreitung oder reduzierter Funktionalität.

28 % aller Software-Projekte endet ohne Auslieferung eines Produkts

Page 5: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Warum Objektorientierung?Softwarekrise III

Software ist fehlerhaft Laut INTEL: 80-90 Bugs in Pentium Normale Software: 25 Fehler pro 1000

Programmzeilen. Gute Software: 2-3 Fehler pro 1000 Zeilen. Space Shuttle Software: weniger als 0.1 Fehler pro

1000 Zeilen (laut NASA) Handy: 200 000 Zeilen Programm ca. 500 Fehler Windows 2000: 27 Mio. Zeilen ca. 50 000 Fehler

Page 6: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Warum Objektorientierung?Softwarekrise IV

Ursachen der Softwarekrise Wachsende Komplexität technische Ressourcen

und Möglichkeiten wachsen sehr schnell

Mooresches Gesetz

Page 7: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

OOP mit Java: Objekte (Software-)Objekte besitzen einen internen Zustand und

haben ein festgelegtes Verhalten Ein Objekt • verwaltet seinen Zustand durch Variablen, Attribute genannt • implementiert sein Verhalten durch Funktionen, Methoden

genannt

Page 8: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

UML Notation

Die Unified Modeling Language (UML) ist eine Notation zur Spezifikation und Visualisierung von Modellen für Softwaresysteme

In den folgenden Folien werden Klassen- diagramme zur Beschreibung von Klassen und deren Beziehungen untereinander verwendet

Page 9: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Klassen und Objekte (Instanzen)

Klassen sind Vorlagen für die Erzeugung von Objekten Jedes Objekt gehört einer Klasse an. Die Attribute und Methoden der Objekte werden in der

zugehörigen Klasse definiert Alle Objekte einer Klasse besitzen dasselbe Verhalten, da sie

dieselbe Implementierung der Methoden besitzen Objekte einer Klasse werden auch als Instanzen (instance) oder

Exemplare bezeichnet Klassen können auch Methoden und Attribute besitzen, die für

die Klasse selbst und nicht für jede Instanz gelten. Diese werden als Klassen-Methoden/-Attribute bezeichnet (im Gegensatz zu Instanz-Methoden/-Attribute)

Page 10: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Erzeugung von Objekten

Es wird Speicherplatz für das Objekt auf dem Heap allokiert (abhängig von den Datentypen der Attribute)

Bei der Erzeugung wird ein Konstruktor (spezielle Methode) ausgeführt, der die Initialisierung des Objekts vornimmt

Es werden den Attributen Werte zugeordnet, wodurch der Zustand des Objekts definiert wird• entweder definiert durch den Konstruktor• oder Default-Werte (0 für Zahlen, null für Referenzen, etc.)

Die Erzeugung eines Objekts erfolgt in den meisten Programmiersprachen mit dem new-Operator

Page 11: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Beispiel: Eine Klasse und zwei Instanzen (Objekte) der Klasse

Page 12: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Vererbung

Vererbung (inheritance) ist ein Konzept, wodurch Attribute und Methoden der Oberklasse auch den Unterklassen zugänglich gemacht werden

Vererbungsbeziehungen zwischen Klassen stellen Generalisierungs- bzw. Spezialisierungsbeziehungen dar

Page 13: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Vererbung

Page 14: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Vererbung: Die Klasse Square

Die Klasse Square soll nun durch Vererbung von der Klasse GeomFigure abgeleitet werden.

Wir benötigen einen Konstruktor, der neben der x- und y-Koordinate die Seitenlänge des Quadrates erhält.

Weiterhin solle eine Methode zur Berechnung des Flächeninhaltes implementiert werden sowie die toString-Methode überschrieben werden.

Page 15: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Überschreiben von Methoden

Hat eine Methode einer Subklasse die gleiche Signatur einer Methode der Superklasse, so wird die Superklassenmethode überschrieben (overriding)

GeomFigure definiert eine Methode toString():String tmp="[“ + myX + ",“ + myY + "]"; return tmp;

Square überschreibt die Methode toString():String tmp=super.toString();tmp=tmp+" "+seitenL;return tmp;

Page 16: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Überladen von Methoden

Gibt es mehrere Methoden mit demselben Namen aber mit unterschiedlichen Signaturen, so spricht man von Überladen (overloading).

Beispiel: void println() ...void println (String s) ...void println (int i) ...

Page 17: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Abstrakte Klassen

Abstrakte Klassen sind Klassen, die mindestens eine abstrakte Methode haben

Abstrakte Methoden besitzen keine Implementierung.

Von abstrakten Klassen können keine Instanzen erzeugt werden

Unterklassen müssen entweder die abstrakten Methoden implementieren oder sind ebenfalls abstrakt

Page 18: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Beispiel: Abstrakte Klassen

Page 19: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Zusammenfassung

Objekte besitzen Attribute und Methoden gehören einer Klasse anKlassen legen Methoden und Attribute der Objekte fest (Bauplan) können Klassen-Methoden/-Attribute besitzen können abstrakt sein Objekte werden auf dem Heap erzeugt den Attributen werden Werte zugeordnet Konstruktoren werden ausgeführt Vererbung: Attribute und Methoden der Oberklasse werden den

Unterklassen zugänglich gemacht

Page 20: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Vorteile von OOP

Wiederverwendung von Code Einfachere Anpassbarkeit von Code, damit

auch bessere Wartbarkeit Objektorientierte Systeme ermöglichen einen

strukturierten Systementwurf Software Engineering: OOA, OOD, OOP Nachteile: Lernaufwand, bei einfachen

Programmen evt. mehr Code

Page 21: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Eigenschaften von Java (1)Java ist plattformunabhängig Java-Code wird mit einem Java-Compiler (javac) in

plattformunabhängigen Bytecode überführt Bytecode wird von einer Java Virtual Machine (JVM) teils

interpretiert teils zur Laufzeit in Maschinencode kompiliert (Just-In-Time-Compiler in JVM integriert)

Für jede unterstützte Plattform muss es eine JVM geben

Page 22: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Eigenschaften von Java (2)

Java wurde auf Sicherheit und Robustheit hin entwickelt: Fehleranfällige Sprachkonstrukte fehlen:

• keine Pointer und Pointerarithmetik• keine Destruktoren sondern automatische Garbage Collection• keine Mehrfachvererbung• kein Operator-Overloading

Bytecode Verification Exception Handling Thread-Sicherheit in die Sprache integriert

Page 23: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Ohne Kommentar ...

Page 24: Objektorientierte Programmierung am Beispiel von Java Wesentliche Teile zur OOP mit Java sind aus dem folgenden Dokument entnommen: Objektorientierte Programmierung.

Quellen

Objektorientierte Programmierung in Java, Mark Giereth (wesentliche Teile), www.iis.uni-stuttgart.de/lehre/ws03-04/info3/java.pdf

Softwaretechnik für Ingenieure, Dr. Michaela Huhn, winf5.in.tu-clausthal.de/winf/ss05/SEfI/SEfI1.pdf