24
OOP-Begriffe Abstraktion 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

OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

Embed Size (px)

Citation preview

Page 1: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

OOP-Begriffe

Abstraktion

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

Page 2: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

Konzepte des OOP

Datenkapselung

Vererbung

Überschreiben

Überladen

Polymorphie

Im Gegensatz

zum

prozeduralen

Programmiere

n

Page 3: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

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 protected (geschützt) nur für Unterklassen sichtbar private (privat)  nur intern (in der Klasse) sichtbar

Page 4: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

Datenkapselung

Das Ziel eines sauberen Klassendesigns ist es zu erreichen, dass Klassen bzw. Objekte nur über wenige wohl-definierte Schnittstellen 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

Page 5: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

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.

Methoden werden nur dann public deklariert, wenn man wirklich von beliebigen anderen Klassen (Programmen) darauf zugreifen können muss (zeugt von schlechtem Design).

Konstruktoren werden public deklariert.

Page 6: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

Vorteile der Datenkapselung

Weniger unerwünschten Interaktionen zwischen Programmteilen

Erhöhte Übersichtlichkeit, da 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.

Page 7: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

Vererbung in Java

Eine Unterklasse erbt alle Eigenschaften (Attribute und Methoden) einer Oberklasse.

IST-Beziehung

Page 8: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

Beispiel Vererbung

Buntstift erweitert die Funktionalität von Stift (Spezialisierung)

+ ! zeichneKreis

Page 9: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

Beispiel Vererbung (3)

class Figurstift extends Buntstift

{

public Figurstift()

{

super();

}

public void zeichneQuadrat(double s)

{

this.zeichneRechteck(s, s);

}

}

Page 10: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

Vererbungshierarchie

Page 11: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan
Page 12: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

Vererbungshierarchie (3)

Alle Klassen erben von Object

Page 13: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

"super"

Methode der Oberklasse aufrufen:

super.methodenName();

Konstruktor der Oberklasse aufrufen:

super();

Page 14: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

"this"

this wird gebraucht, wenn eine Klasse einen Auftrag an sich selber schickt.

public void zeichneQuadrat(double s)

{

this.zeichneRechteck();

}

Page 15: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

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

Page 16: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

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.

Page 17: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

Überschreiben

wenn Methoden oder Attribute in Kind- UND Elternklasse definiert sind

(die überschriebene Methode kann mit super.f() noch immer aufgerufen werden)

Page 18: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

Vorteile des Überschreibens

Im Unterschied zur Vererbung (Erweiterung der Elternklasse) kann man durch Überschreiben Teile des Verhaltens der Elternklasse verändern

Page 19: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

Ü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

Page 20: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

Beispiel

class Figurstift {

Color col;

public Figurstift()

{

col = new Color(255, 0, 0);

}

public Figurstift(Color initcol)

{

col = initcol;

}

}

Page 21: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

Vorteile des Überladens

Implementierung von optionalen Übergabeparametern (default values)

Zeit- und Tipparbeitersparnis beim Gebrauch einer Klasse durch die Definition mehrerer Konstruktoren.

Erhöhte Übersichtlichkeit und Flexibilität. Es ist naheliegend, Methoden, welche basierend auf unterschiedlichen Parametern zu gleichen Resultaten führen, gleich zu benennen.

Page 22: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

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) annehmenjedes Java-Objekt hat die Grundklasse Object

Objekte können in kompatible Typen gecastet werden, z.B.int i = 1;

double d = (double) i;

Page 23: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

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 ); }

}

Page 24: OOP-Begriffe Abstraktion Reduktion der Wirklichkeit auf das Wesentliche Modellieren Die Abstraktion in einem Software-Modell beschreiben Klasse Bauplan

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