PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Objektorientierung in C++, Anfängerfragen



xare
21-12-2002, 12:16
Hallo!

Ich hab in Java ein kleines Programm geschrieben (schreiben müssen ;) ) und will das ganze jetzt auch in C++ probieren. Das Teil sieht in Java so aus:

Es geht um eine Bibliotheksverwaltung. Ich habe eine Klasse Shell für die Ein- und Ausgaben, eine BinaryTree, die die Benutzer und Bücher speichert sowie Book und User. Die BinaryTree hat noch eine inner class BinTreeNode.

BinTreeNode speichert jeweils ein Objekt und einen Verweis auf den linken und rechten Sohn.

Nun meine Anfängerfragen: :D

1. In Java sind ja Klassen einfach verfügbar, solange sie im gleichen Verzeichnis liegen. Wie kann ich nun in c++ die beiden BinaryTree's users und books instantiieren?

In c++ unterteilt man die Klassen ja üblicherweise in header- und implementierungs-Dateien. Includen tu ich aber nur die header-Dateien, oder? Wie findet meine Shell dann die Implementierung von BinaryTree?

2. In Java steht an der Spitze der Objekt-Hierarchie "Object", deshalb sind die Inhalte von meinem BinTreeNode vom Typ Object. Gibt es auch in c++ so ein "Ober-Objekt"? Und wird das Probleme bei der Speicherzuweisung geben? Ich kann ja bei der Initialisierung meiner Benutzer- und Bücherbäume nicht wissen, wie groß diese werden.

Ich hoffe, das versteht einer. :)

MfG Xare

tuxipuxi
21-12-2002, 12:25
Original geschrieben von xare
Hallo!

Ich hab in Java ein kleines Programm geschrieben (schreiben müssen ;) ) und will das ganze jetzt auch in C++ probieren. Das Teil sieht in Java so aus:

Es geht um eine Bibliotheksverwaltung. Ich habe eine Klasse Shell für die Ein- und Ausgaben, eine BinaryTree, die die Benutzer und Bücher speichert sowie Book und User. Die BinaryTree hat noch eine inner class BinTreeNode.

BinTreeNode speichert jeweils ein Objekt und einen Verweis auf den linken und rechten Sohn.

Nun meine Anfängerfragen: :D

1. In Java sind ja Klassen einfach verfügbar, solange sie im gleichen Verzeichnis liegen. Wie kann ich nun in c++ die beiden BinaryTree's users und books instantiieren?

genauso

In c++ unterteilt man die Klassen ja üblicherweise in header- und implementierungs-Dateien. Includen tu ich aber nur die header-Dateien, oder? Wie findet meine Shell dann die Implementierung von BinaryTree?

in dem du in der implementierung den header inkludierst

2. In Java steht an der Spitze der Objekt-Hierarchie "Object", deshalb sind die Inhalte von meinem BinTreeNode vom Typ Object. Gibt es auch in c++ so ein "Ober-Objekt"? Und wird das Probleme bei der Speicherzuweisung geben? Ich kann ja bei der Initialisierung meiner Benutzer- und Bücherbäume nicht wissen, wie groß diese werden.

ne, ein oberobjekt gibts nur wenn du deine klassen von einer anderen ableitest

Ich hoffe, das versteht einer. :)
geht genauer

MfG Xare ;)

anda_skoa
21-12-2002, 14:36
Original geschrieben von xare

1. In Java sind ja Klassen einfach verfügbar, solange sie im gleichen Verzeichnis liegen. Wie kann ich nun in c++ die beiden BinaryTree's users und books instantiieren?

In c++ unterteilt man die Klassen ja üblicherweise in header- und implementierungs-Dateien. Includen tu ich aber nur die header-Dateien, oder? Wie findet meine Shell dann die Implementierung von BinaryTree?


Wenn die Header inkludiert sind, kann man die jeweilige Datei kompilieren.
Bim Linken werden die Implementationen der Klassen benutzt.



2. In Java steht an der Spitze der Objekt-Hierarchie "Object", deshalb sind die Inhalte von meinem BinTreeNode vom Typ Object. Gibt es auch in c++ so ein "Ober-Objekt"? Und wird das Probleme bei der Speicherzuweisung geben? Ich kann ja bei der Initialisierung meiner Benutzer- und Bücherbäume nicht wissen, wie groß diese werden.


Eine solche Basisklasse gibt es nicht.
Objekte mit dynamischen Speicherbedarf werden wie in Java mit


new Klassenname();

erzeugt, bzw. mit einem anderen Konstruktor der jeweiligen Klasse.

Anders als in Java muß du allerdings dafür sorgen, dass nicht benötigte Instanzen anschließen mit delete freigegeben werden.

Ciao,
_

xare
21-12-2002, 16:43
Danke für die Antworten, das sollte reichen.

MfG Xare