Download C/C++ Skriptum
Transcript
TU-Wien Institut E114 Prof. DDr. F. Rattay Zur Veranschaulichung wird im folgenden, anhand des einfachen Beispiels eines Bankkontos, eine Klasse entworfen. Anschließend werden einige Objekte dieser Klasse erzeugt und manipuliert. Der Status des Bankkontos soll vereinfachend durch seine Kontonummer und seinen aktuellen Kontostand beschrieben sein. Zusätzlich hat ein Kontoobjekt die Fähigkeit seinen Kontostand zu ändern, d.h. Geld abzuheben oder einzuzahlen. Abgesehen davon muß sich ein Kontoobjekt auf einen definierten Startzustand bringen (Konto anlegen) und gegebenenfalls auch wieder korrekt löschen können (Konto kündigen). Man sieht an dieser Beschreibung bereits, daß in der objektorientierten Programmierung immer vom Objekt ausgegangen wird, dem bestimmte Eigenschaften und Fähigkeiten zugeschrieben werden. In einer fiktiven, umgangssprachlichen Klassendeklaration, die eine Anzahl von Kontoobjekten beschreibt, sähe das etwa so aus: Objekte der Klasse "Konto" bestehen aus: Statusbeschreibung: Kontonummer (Lange Ganze Zahl) Aktueller Kontostand (Reelle Zahl) Fähigkeiten: Konto initialisieren (Parameter: Betrag (Reelle Zahl)) Konto löschen (Parameter: -) Geld einzahlen (Parameter: Betrag (Reelle Zahl)) Geld abheben (Parameter: Betrag (Reelle Zahl)) Kontonummer ausgeben (Parameter: Kontonummer (Lange Ganze Zahl) Ende der Deklaration Man erkennt bereits an dieser Beschreibung einige wesentliche Eigenschaften einer Klassendeklaration. Die Beschreibung des Status, bzw der "Attribute" durch sogenannte "Member-Variablen" erfolgt durch Variablendeklarationen innerhalb der Klassendeklaration. Die Fähigkeiten der Objekte einer Klasse werden durch Funktionsdeklarationen innerhalb der Klassendeklaration festgelegt, wobei diese Funktionen "Member-Funktionen" oder "Methoden" genannt werden. Genau hier liegt die zentrale Erweiterung zu den "structs" in C. "Structs" können lediglich Variablen verschiedener Typen enthalten (vgl. Kapitel 0 des C-Kurses) und fassen diese zusammen. In diesem Zusammenhangt ist der Begriff der Kapselung ebenfalls sehr wichtig. Er beschreibt das "Verschwinden" von internen Informationen in einer Klasse, ein Konzept das als "Information Hiding" bekannt ist und auf das weiter unten erneut eingegangen wird (vgl. nächstes Kapitel). Eine Klasse in C++ Kommen wir zur programmtechnischen Umsetzung dieser Konzepte in C++. Das Programm besteht aus drei Sourcefiles, wobei zwei die Endung ".cpp" tragen und eines die Endung ".h" trägt. Im File "konto.h" befindet sich die Klassendeklaration (auch Schnittstellen-, Interface- oder Headerdatei genannt). Sie sieht folgendermaßen aus: // Headerfile zur Klasse Konto #ifndef _KONTO_H_ #define _KONTO_H_ Die Programmiersprachen C und C++ Klassen und Objekte 45