kramann.info
© Guido Kramann

Login: Passwort:










Informatik3
1 Vom_struct_zur_Klasse
..1.1 Vom_struct_zur_Klasse
..1.2 struct_Programm
..1.3 Klassen_Programm
..1.4 Offene_Fragen
..1.5 Historie
..1.6 Objektabstraktion
..1.7 OO_Kundenverwaltung
..1.8 Objektfaehigkeiten
..1.9 Formatierung
..1.10 Motivation
..1.11 Uebung1
..1.12 Uebung2
2 UML
..2.1 Volumenberechnung
..2.2 UML_Klassendiagramm
..2.3 Konstruktor
..2.4 Statische_Variable
3 Strings
..3.1 Klassenbibliotheken
..3.2 stringUML
..3.3 Uebung3
4 Initialisierungen
4 bluej
5 Zeiger_und_Arrays
..5.1 Zeiger
..5.2 Zeiger_und_Funktion
..5.3 Uebung4
6 Vererbung
..6.1 MesswerteUML
..6.2 MesswerteProgramm
..6.3 VererbungsProgramm
..6.4 Vector
..6.5 Uebung
7 Modifikatoren
..7.1 public_Vererbung
..7.2 protected_Vererbung
8 Listen_und_Templates
..8.1 Containertypen
....8.1.1 ListeUML
....8.1.2 ListeProgramm
..8.2 Templates
....8.2.1 Listentemplate
....8.2.2 STLvectorTemplate
..8.3 Uebung5
..8.4 Uebung6
..8.5 Uebung7
9 Java
..9.1 Uebung
..9.2 GettingStarted
..9.3 Animation
..9.4 Hybrid
..9.5 Threads
10 Delegation
11 LayoutProjekt
12 Fenster
13 Uebung
14 Zwischenprojekt
..14.1 Befehle
..14.2 Planung
..14.3 JNI
..14.4 JNIumsetzen
..14.5 Anwendungsklasse
..14.6 GUI01
..14.7 GUI02
15 Rasterlayout
..15.1 Bilder_Packages
..15.2 interfaces
..15.3 ArrayList
..15.4 clone
..15.5 Uebung
16 Nuetzliches
..16.1 Threads
..16.2 Animation
..16.3 RungeKutta
..16.4 Loesungsansatz
..16.5 Internetprogrammierung
....16.5.1 Codegenerierung
....16.5.2 PHP_Programmierung
....16.5.3 PHP_OOP
....16.5.4 Java
17 Algorithmen
..17.1 RungeKutta
..17.2 Loesungsansatz
..17.3 Evoopt
..17.4 Uebung12
..17.5 Uebung8_2014
..17.6 Ausdruecke
18 Uebung10
19 UML_ALT
..19.1 Flaechenberechnung
..19.2 UML_Flaechenberechnung
..19.3 Implementierung
..19.4 ListeUML
..19.5 ListenImplementierung
..19.6 Anwendung

2.3 Die Konstruktor-Methode

Wiederholung - Was sind Klassen, was Objekte?

Eine sichere Quelle für Verwirrung stellt für den Einsteiger in die OOP stets der Zusammenhang zwischen Klassen und Objekten dar. Das haben wir schon gelernt:

  • Klassen sind das, was man im Programmcode findet.
  • Mit ihnen werden neue Arten von Objekten beschrieben.
  • Klassen stellen also eine Art Bauplan für Objekte dar.
  • Sie sind vergleichbar mit dem selber definieren von neuen Datentypen, wie es in C mit structs möglich ist.
  • Allerdings mit der Ergänzung, dass Klassen für die von ihnen beschriebenen Objekte auch zugehörige Methoden, also Funktionen, vorsehen können.
  • Eine Klasse alleine kann noch kein lauffähiges Programm darstellen.
  • Ganz ohne Prozeduren kommt eine objektorientierte Programmiersprache nicht aus.
  • In der aus C bekannten main-Methode, die auch in C++ ausserhalb jeder Klasse steht, werden Befehle geschrieben, die veranlassen, dass auf Grundlage der einzelnen Klassen Objekte erzeugt werden und durch Aufruf der Objektmethoden ein Datenaustausch zwischen main-Methode und Objekten und den Objekten untereinander stattfindet.

Die Konstruktor Methode

  • Bisher war es sehr umständlich die Attribute eines Objektes mit bestimmten Werten zu belegen.
  • Wenn die Atrribute im public-Bereich standen, konnte man auf sie mit dem Punkt-Operator zugreifen (vergl. Beispiel in Kapitel 1.3).
  • Wenn die Atrribute im private-Bereich standen, benötigte man im public-Bereich spezielle Setz-Funktionen (set-Methods), mit denen die Attribute verändert werden konnten (vergl. Beispiel in Kapitel 3.1).
  • Nun werden wir eine Möglichkeit kennen lernen, mit der sich direkt bei der Erzeugung der Objekte die Belegung der Attribute einstellen läßt.
  • Nun werden wir eine Möglichkeit kennen lernen, mit der sich direkt bei der Erzeugung der Objekte die Belegung der Attribute einstellen läßt.
  • Wann werden die Objekte erzeugt?
  • Nehmen wir das Beispiel hier in Kapitel 3.1:
  • Das Zylinder-Objekt wird hier mit dem Befehl Zylinder z1; innerhalb der main-Methode erzeugt.
  • Bei Hinzufügen einer Konstruktor-Methode, könnten nun durch folgende Syntax in der main-Methode Radius und Höhe eines Zylinders direkt gesetzt werden:
  • Zylinder kleinerZylinder(0.1,0.2), grosserZylinder(1.0,2.0);
  • So würde das komplette zugehörige Programm aussehen, dass dies ermöglicht:
C++ Beispiel mit Konstruktor

Bild 2.3-1: Konstruktor-Methode und Aufruf der Konstruktor-Methode

Konsolenausgabe

Bild 2.3-2: Konsolen-Ausgabe nach Aufruf.

Beispiel konstruktor.cpp gezipt

Konstruktor Syntax

  • Eine Konstruktor-Methode heißt genauso wie die Klasse in der sie steht.
  • Eine Konstruktor-Methode hat keinen Rückgabetyp.
  • Eine Konstruktor-Methode kann beliebige Übergabeparameter haben.
  • Eine Konstruktor-Methode steht immer im public-Block.
  • Eine Konstruktor-Methode kann auf alle Objekt-Methoden und Objekt-Attribute, die innerhalb der Klasse definiert sind zugreifen
  • Eine Klasse kann beliebig viele Konstruktor-Methoden enthalten, die sich aber in ihren Übergabeparametern unterscheiden müssen.

Konstruktor im UML-Klassendiagramm

  • Der Konstruktor ist verwendbar noch bevor ein Objekt der Klasse erzeugt worden ist.
  • Somit ist er nicht den Objekten, sondern der Klasse zugehörend.
  • Alle anderen Attribute und Methoden in obigem Beispiel heißen auch Objekt-Attribut bzw. Objekt-Methode.
  • Der Konstruktor ist dagegen eine Klassen-Methode.
  • Klassen-Methoden werden auch statische Methoden genannt.
  • Statisch wird sie genannt, weil sie nicht erst verwendet werden kann, wenn ein Objekt "dynamisch" erzeugt wurde.
  • Statische Attribute und Methoden werden in UML mit einem Unterstrich dargestellt.
UML-Klassendiagramm

Bild 2.3-2: UML-KLassendiagramm der Klasse Zylinder mit Konstruktor.