ich war hier: ObjProg02Kapselung

Version [22757]

Dies ist eine alte Version von ObjProg02Kapselung erstellt von RonnyGertler am 2013-03-28 23:13:19.

 

 (image: http://wdb.fh-sm.de/uploads/QualipaktLehre/BMBF_Logo_klein.jpg)

Objektorientierte Programmierung - Kapitel 2 - Datenabstraktion und Datenkapselung


Inhalte von Dr. E. Nadobnyh

2.1. Klasse


Datentyp und Klasse


Ein Datentyp ist eine Zusammenfassung von Wertebereichen und der darauf anwendbaren Operationen.

Ein Typ stellt das Muster dar, nach dem beliebig viele Variablen (Instanzen, Exemplaren, Objekten) erzeugt werden können.

Es gibt in C++ eingebaute Datentypen (z.B. int, float usw.) und benutzerdefinierte Datentypen. Eine Klasse ist ein benutzerdefinierter Datentyp.

Eine Klasse ist eine Typbeschreibung, die folgende Merkmale enthält: ´

1) Daten (auch Attribute und Eigenschaften genannt),
2) Operationen (auch Methoden, Elementfunktionen und Fähigkeiten genannt).


Datenabstraktion


Die Abstraktion ist ein gängiges Mittel, Komplexität zu reduzieren. Die komplexen Dinge werden auf das Wesentliche reduziert und mit einem Oberbegriff versehen.Die Sprache C++ unterstützt die Datenabstraktion durch den Begriff Klasse.

Eine Klasse ermöglicht:

1) mehrere zusammengehörige Daten (Attribute) in einen Datentyp zu bündeln und
2) den Zugriff auf die Attribute nicht direkt, sondern über die Methoden durchzuführen.


Vorteile der Datenabstraktion


1) Die interne Darstellung der Daten braucht das Anwendungsprogramm nicht zu kennen.

2) Der Zugriff auf die Daten erfolgt in kontrollierter Weise über die Methoden.

3) Bei Bedarf kann die interne Darstellung der Daten auch geändert werden, ohne das Anwendungsprogramm davon betroffen wird.


Datenkapselung


Attribute und Methoden der Klasse können als geschützt oder öffentlich deklariert werden. Normaleweise werden Attribute als private und Methoden als public d.h. öffentlich deklariert.

Ohne Datenkapselung können die Vorteile der Datenabstraktion durch das sogenannte Vorbeiprogrammieren an Methoden zerstört werden.


Beispiel: Ein Element auf Stack legen


Prozedurale Lösung

 (image: https://ife.erdaxo.de/uploads/ObjProg02Kapselung/oop3.gif)


Prozedurale Lösung mit Datenabstraktion


 (image: https://ife.erdaxo.de/uploads/ObjProg02Kapselung/oop4.gif)


Lösung mit Datenabstraktion und Datenkapselung


 (image: https://ife.erdaxo.de/uploads/ObjProg02Kapselung/oop5.gif)


Schnittstelle einer Klasse


Die Deklarationen von allen public- Methoden bilden die öffentliche Schnittstelle (Interface). Durch die öffentliche Schnittstelle kommuniziert ein Objekt mit der Umgebung.

Die Schnittstelle sagt nichts über die Implementierung (über die interne Darstellung der Daten) aus. Die Datenabstraktion realisiert das Prinzip der Trennung von Schnittstelle und Implementierung.

Das Anwendungsprogramm merkt keine Veränderungen in der Implementierung, wenn die Schnittstelle dieselbe bleibt.


ADT


Der abstrakten Datentyp (ADT) ist ein Konzept der Entwurfsphase.

Als ADT bezeichnet man spezielle Datentypen:

1) deren Operationen und das korrekten Zusammenspiel der Operationen genau spezifiziert sind,
2) die jedoch nicht an einen konkreten Wertebereich gebunden sind.

Die Spezifikation des ADT kann:

1) durch natürliche Sprache,
2) durch eine Reihe von Axiomen,
3) durch Methodendeklaration mit Kommentaren usw. beschrieben werden.

Vorsicht: Ein benutzerdefinierter Typ wird häufig als ADT bezeichnet.


2.2. Definition von Klassen und Objekten


Deklaration, Definition und Verwendung


Eine Deklaration bestimmt, welche Bedeutung ein Bezeichner im Programmtext besitzt.

Jede Definition stellt auch eine Deklaration dar.

Bei der Definition:

1) einer Variable (eines Objektes) wird Speicherplatz reserviert.

2) einer Funktion (Methode) wird der Rumpf festgelegt.

3) eines Typs(Klasse) werden alle Merkmale festgelegt.

Vor der Verwendung muss jede Variable(Objekt), jede Funktion(Methode), jeder Typ(Klasse) definiert werden.


Beispiele für Deklaration, Definition, Verwendung


Deklaration Definition Verwendung
Typ //Vorwärtsdeklaration
class A;
class A{…}; A a1, a3;
Variable, Objekt extern A a1;

class B
{ A a1;
};
A a1; // Zugriff
f(a1);

a1 = a3;
Funktion, Methode //Prototyp
extern void f(A a2);

class B
{ void m (A a2);
};
void f(A a2){…}

void B::m(A a2){…}
//Aufruf
f(a3);

a1.m(a3);










CategoryObjProg
Diese Seite wurde noch nicht kommentiert.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki