Frage zu Klassen und deren Objekte



  • Hallo liebe Community,

    ich befasse mich seit paar Monaten mit C++ und habe nun eine Aufgabe zum üben gefunden. Brauche aber doch etwas Hilfe.

    - Definieren und implementieren Sie den abstrakten Datentyp (ADT) Binärer Suchbaum (Klasse BinarySortTree mit Objekten der Klasse SortTreeElement). Implementieren Sie die Operationen insertNode (für das Einstellen/Einfügen einer Person in den Suchbaum) und searchNode (für das Auffinden einer Person im Suchbaum).
    - Optional: Implementieren Sie die Operation deleteNode (für das Entlassen/Löschen einer Person aus dem Suchbaum).

    Also ich muss sagen die Aufgabenstellung ist schon recht schwer zu verstehen..
    Aber was ich bis jetzt verstanden habe:

    - zwei Klassen: BinarySortTree & SortTreeElement
    - die zwei Klassen haben irgendwie eine Relation zueinander.
    - es sollen 3 Funktionen implementiert werden: insertNode, searchNode & deleteNode.

    Nun zu meinen Fragen:

    - Liege ich bis jetzt richtig?
    - Ist ein abstrakter Datentyp das selbe wie eine Klasse?
    - Wie verbindet man den zwei Klassen?
    - In welcher Klasse sollen die Funktionen implementiert werden?

    Hoffe ihr könnt mir da helfen und ich lerne so nach und nach mehr über C++..

    mfg
    Ace'X



  • Ace'x schrieb:

    - Ist ein abstrakter Datentyp das selbe wie eine Klasse?

    Ein abstrakter Datentyp ist mehr ein Konzept. Eine Klasse ist dann sehr spezifisch eine Möglichkeit einen abstrakten Datentyp zu implementieren.

    Ace'x schrieb:

    - Wie verbindet man den zwei Klassen?

    Hier gibts natürlich viele Möglichkeiten aber hier ist es wohl so gemeint, dass BinarySortTree Objekte oder Pointer auf SortTreeElement speichert, um den Baum aufzubauen. Also würde ein SortTreeElement z.B. zwei Pointer auf den linken/rechten Knoten und eine Person (scheinbar noch eine Klasse) plus eventuell noch einen Schlüssel (Personen kann man erstmal nicht vergleichen und daher auch nicht sortieren). Die Aufgabenstellung ist auch für mich nicht ganz klar aber so könnte man es auf jeden fall programmieren.

    Ace'x schrieb:

    - In welcher Klasse sollen die Funktionen implementiert werden?

    Wenn du es so wie oben vorgeschlagen implementierst, dann kriegt man die SortTreeElement Klasse eigentlich nie zu Gesicht und macht alles über die BinarySortTree Klasse. Dort würde man dann auch die Funktionen implementieren. Mit den Personen als Objekten könnte es dann irgendwie so aussehen:

    class BinarySortTree
    {
      ...
      void insertNode(const Person& p);
      void deleteNode(const Person& p);
      bool searchNode(const Person& p); // Gibt true zurück wenn p im Baum ist
    };
    

    Oder mit Schlüssel:

    class BinarySortTree
    {
      ...
      void insertNode(int key, const Person& p);
      void deleteNode(int key);
      Person* searchNode(int key); // Gibt nullptr zurück wenn es keine Person mit dem Schlüssel gibt
    };
    

    Ist jetzt sicher nicht ausgereift das Interface aber hilft dir hoffentlich etwas auf die Sprünge.


Anmelden zum Antworten