OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden

Slides:



Advertisements
Ähnliche Präsentationen
Objektorientierte Programmierung
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Kritische Betrachtung
Kapselung , toString , equals , Java API
der Universität Oldenburg
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Abstrakte Klassen.
Ein Beispiel in Java.
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Programmieren mit JAVA
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
Einführung in die Programmierung Vererbung
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Einführung in die Programmierung
Objektorientiertes Programmieren
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
ObjektOrientiertes Programmieren
Objektorientiertes Konstruieren
Objektorientierte Programmierung
EPROG Tutorium #4 Philipp Effenberger
EPROG Tutorium #5 Philipp Effenberger
EPROG Tutorium #3 Philipp Effenberger
Objektorientierung.
Programmiervorkurs WS 2014/15 Instanzmethoden
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Einführung Blue J. Inhaltsverzeichnis  Definition  Vokabeln.
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Java-Kurs - 9. Übung Besprechung der Hausaufgabe
Sichtbarkeit einschränken
Objektorientierte Programmierung (OOP)
Abstrakte Klassen und das Interface-Konzept
Objektorientierte Programmierung (OOP)
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
© Tenbusch Oberstufenzentrum Informations- und Medizintechnik Objektorientierte Programmierung mit Java.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
OOP II.
Grundkurs Informatik 11-13
November 18 Informatik Kurse
1. Die rekursive Datenstruktur Liste 1
Implementieren von Klassen
 Präsentation transkript:

OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan für Objekte Objekt Konkrete Realisierung (Instanziierung) einer Klasse Attribute Eigenschaften von Objekten Methoden Fähigkeiten von Objekten Instanz ein bestimmtes Objekt Instanzvariable Attribut eines Objekts

Konzepte des OOP Im Gegensatz zum prozeduralen Programmieren Datenkapselung Vererbung Überschreiben Überladen Polymorphie Im Gegensatz zum prozeduralen Programmieren

Datenkapselung ist eines der wichtigsten Grundprinzipien des OOP. bezeichnet den kontrollierten/eingeschränkten Zugriff auf Methoden bzw. Attribute von Klassen wird in JAVA durch Zugriffsmodifizierer umgesetzt, die die Sichtbarkeit (und damit Aufrufbarkeit) für externe Klassen kontrollieren: public (öffentlich)  von außen für jeden sichtbar private (privat)  nur intern (in der Klasse) sichtbar

Datenkapselung Das Ziel eines sauberen Klassendesigns ist es zu erreichen, dass Klassen bzw. Objekte nur über wenige, wohl-definierte Schnittstellen (= öffentliche Methoden) mit anderen Klassen interagieren. Vom Innenleben einer Klasse soll der Verwender (Client-Klassen bzw. auch der Programmierer) möglichst wenig wissen müssen (Geheimnisprinzip). So kann Software maximal modularisiert werden  überschaubar, flexibel & erweiterbar

Regeln für Zugriffsmodifizierer: Der Zugriff auf Bestandteile einer Klasse sollte immer maximal eingeschränkt werden ("so privat wie möglich"). Instanzvariablen (d.h. Attribute) werden private deklariert. Zugriff von ausserhalb der Klasse erfolgt über getter- und setter- Methoden. so kann man zwischen Lese- und Schreibrechten unterscheiden Konstruktoren werden public deklariert.

Vorteile der Datenkapselung Weniger unerwünschten Interaktionen zwischen Programmteilen Erhöhte Übersichtlichkeit, da oft nur die öffentliche Schnittstelle einer Klasse betrachtet werden muss Erhöhte Flexibilität durch Modularität, einzelne Klassen oder Methoden können verändert oder ausgetauscht werden ohne den Rest des Programms zu beeinflussen.

Vererbung in Java Eine Unterklasse erbt alle Eigenschaften (Attribute und Methoden) einer Oberklasse. IST-Beziehung

Buntstift erweitert die Funktionalität von Stift Beispiel Vererbung + ! zeichneKreis Buntstift erweitert die Funktionalität von Stift (Spezialisierung)

Beispiel Vererbung (3) class Figurstift extends Buntstift { public Figurstift() super(); //Konstruktor der Elternklasse benutzen } public void zeichneQuadrat(double s) zeichneRechteck(s, s); //muss auch in Figurstift sein

Vererbungshierarchie Wenn man dieselbe Methode in verschiedene Klassen kopiert, ergeben sich Probleme – spätestens wenn man die multiplen Kopien ändern will Meist hätte man das besser mit Vererbung gelöst, also nur eine Version der Methode in einer gemeinsamen Elternklasse.

Vererbungshierarchie (3) Alle Klassen erben von Object

"super" Methode der Oberklasse aufrufen: super.methodenName(); Normalerweise werden Methoden in Oberklassen automatisch gefunden. super braucht man nur, wenn dieselbe Methode in der eigenen Klasse (this) auch existiert (also überschrieben wurde), man aber diejenige der Oberklasse aufrufen will Konstruktor der Oberklasse aufrufen: super(); Da es in allen Klassen immer einen Konstruktor gibt (er also immer überschrieben ist), benötigt man das super() oft, um denn Konstruktor der Oberklasse aufzurufen

"this" this wird gebraucht, wenn eine Instanz einen Auftrag an sich selber schickt (kann man meist weg lassen), oder wenn die Instanz sich selbst als Parameter übergeben will onMousePressed(this);

Vorteile der Vererbung Erhöhte Übersicht in einem Klassendesign Durch die Vererbung lassen sich logische Hierarchien abbilden Weniger Quellcode nötig Code der Oberklasse wird in Unterklassen wiederverwendet Einfachere Wartung Änderungen müssen nur an einer Stelle durchgeführt werden

Vorteile der Vererbung (Beispiel) - name, adresse, telefon müssen nur einmal programmiert werden. - Ein neues Attribut alter muss nur an einer Stelle eingefügt werden.

Überschreiben wenn Methoden oder Attribute in Kind- UND Elternklasse definiert sind (die überschriebene Methode kann mit super.f() noch immer aufgerufen werden)

Vorteile des Überschreibens Im Unterschied zur Vererbung (Erweiterung der Elternklasse) kann man durch Überschreiben Teile des Verhaltens der Elternklasse verändern Ein Beispiel ist die Methode toString(), die bereits in der grundlegendsten aller Java- Klassen (Object) definiert ist, dann aber in fast allen Unterklassen erneut definiert wird um einen String zu erzeugen, der das Wichtigste über diese Instanz in druckbarer Form angibt

Überladen mehrere Versionen einer Methode, die sich nur in Typ und/oder Anzahl der Übergabeparameter unterscheiden häufig beim Konstruktor eingesetzt die zum Aufruf passende Version wird vom Compiler automatisch erkannt

Beispiel class Figurstift { Color col; public Figurstift() { col = new Color(255, 0, 0); //default-Wert für col } public Figurstift(Color initcol) col = initcol; //bei Erschaffung übergebener Wert //für col, z.B. new Figurstift(new Color(, , 0))

Vorteile des Überladens Implementierung von optionalen Übergabeparametern (default values) Zeit- und Tipparbeitersparnis beim Gebrauch einer Klasse durch die Definition mehrerer Konstruktoren. Setzen von Attributen beim Erschaffen der Instanz

Polymorphie (griechisch: Vielgestaltigkeit) beschreibt die Fähigkeit eines Bezeichners, abhängig von seiner Verwendung unterschiedliche Datentypen anzunehmen. Jedes Objekt kann auch den Typ seiner Elternklasse(n) annehmen jedes Java-Objekt hat die Grundklasse Object Objekte können in kompatible Typen gecastet werden, z.B. int i = 1; double d = (double) i;

Beispiel public class Polymorphie { double flaeche = 0; Rechteck re1 = new Rechteck( 3, 4 ); Figur re2 = new Rechteck( 5, 6 ); Kreis kr1 = new Kreis( 7 ); Figur kr2 = new Kreis( 8 ); Vector vec = new Vector(re1, re2, kr1, kr2); // Berechne die Summe der Flaechen aller Figuren: for( int i=0; i<vec.size(); i++ ) { Figur f = (Figur)(vec.get( i )); flaeche += f.getFlaeche(); //benutzt die (evtl. über- //schriebene) Methode getFlaeche der jeweiligen Unterklasse } System.out.println( "Gesamtflaeche ist: " + flaeche ); }

Vorteile von Polymorphie einheitlicher Aufruf von überschriebenen Methoden (z.B. toString()) dynamische Typumwandlung macht Vererbung erst effizient nutzbar insgesamt spart man dadurch Tipp- und Organisationsaufwand und bekommt übersichtlicheren Sourcecode