Hallo!
Ich schreibe am Donnerstag in Informatik eine Kursarbeit.
Wir sollen Defintionen lernen. Darunter ist auch der Konstruktor. Meine Frage ist: was ist das?
Die Defintion unseres Lehrers ist leider (für mich) nicht verständlich.
KAnn mir das jemand für Dummys erklären?
Lim_Dul
15.03.2004, 16:57
Was eine Klasse ist, weißt du hoffentlich.
Ein Konstruktur ist eine spezielle Klassenmethode, die genau dann aufgerufen, wenn man ein Objekt dieser Klasse erzeugt. (konstruiert).
Ein Konstruktur heißt immer genau so wie die Klasse und hat keinen Rückgabewert.
Beispiel:
public class Beispiel {
public int X;
// Konstruktor
public Beispiel() {
X = 32;
}
}
public class Programm {
public static void main(String args[]) {
Beispiel einObjekt = new Beispiel(); // Hier wird der Konstruktor aufgerufen
System.out.println(einObjekt.X); // Gibt 32 aus.
}
}
Jetzt was klarer?
MaSTaH
15.03.2004, 16:58
@Limdul: main soll static sein, nicht die Klasse ;).
Lim_Dul
15.03.2004, 17:02
@Limdul: main soll static sein, nicht die Klasse ;).
Ist doch *pfeif*
Das passiert wenn man sich diese Konstrukte immer von Entwicklungsumgebungen erzeugen lässt :D
DeFianT
15.03.2004, 22:22
allgemein sind Konstruktoren zur Abstraktion von Daten. Damit erzeugst du die Abstraktionen über eine Schnittstelle.
(Entsprechend brauchst noch Selektoren um auf deine abstrahierten Daten zuzugreifen)
MaSTaH
16.03.2004, 11:35
Also irgendwie sehe ich den Zusammenhang nicht. Du sprichst von Abstraktion. Klar, in der OOP wird abstrahiert, um Codestücke intuitiver und vielseitiger einsetzbar zu machen. Aber wo siehst du bitte den Zusammenhang zwischen Konstruktor, Schnittstelle und Selektoren? Der Konstruktor initialisiert das Objekt, die Schnittstelle ist in gewissem Sinne für die Interaktion mit dem Objekt zuständig und die Selektoren regeln den Zugriff auf Member des Objektes.
btw: Selektoren sollten in der OOP möglichst vermieden werden (ich weiß, geht nicht immer), da sie, genau wie public-Variablen, zuviel von der Implementierung preisgeben und die Kapselung damit einreißen lassen.
DeFianT
16.03.2004, 21:40
z.B. du brauchst nen neuen Typ von Daten... sagen wir mal die Darstellung von Brüchen.
Als abstrahierst das ganze und führst einen neuen Datentyp ein.
Das machst du indem du Konstruktoren verwedenst (oder besser: schreibst), die dir den Datentyp erzeugt.
Mit Selektoren greifst du auf diesen Datentyp über zuvor vereinbarte Schnittstellen zu. (Bei meinem Bsp: seperat auf Nenner und Zähler). Darüber haust du dann ne Abstraktionsbarriere mit den oben erwähnten Schnittstellen.
Ok... ich muss gestehen, dass ich die Begriffe im Laufe eines Semesters über Lisp (oder genauer: Scheme) in der Form kennengelernt habe. OOP verwendet diese Begriffe sicherlich in seinem Rahmen etwas differenzierter.
Anm: Konstruktoren kann man tatsächlich auch bei Lisp zur Erzeugung von (pseudo) Objekten verwenden - da ja auch Objekte eine gewisse Datenabstraktion darstellen...
Da machen Selektoren in dem Sinne tatsächlich auch nur wenig Sinn.. denn den dispatcher kann man besser anders füttern.