Objekt über Klasse x einer Unterklasse y erstellen, obwohl x nur Oberklasse von y bekannt ist



  • Hallo,

    Bin gerade dabei eine kleine Fernbedienung zu programmieren.
    Habe eine Klasse Geräte, und von der Klasse Gerät Erben 3 Klassen(z.b. TV,Stereoanlage usw).
    Jetzt will ich die Methoden meiner Klasse Fernbedienung(die mit der Oberklasse Geräte inkludiert hat) testen. Habe mit in Netbeans mit CPPUNIT einen Testfall erstellt. Jetzt will ich erstmal Objekte erstellen.

    Remote remote("Fernbedienung");
    Herd herd("Herd");
    Radio radio("Radio");
    Radiator radiator("Heizung");

    Da ich das im Testfile von meiner Fernbedienung tue kennt sie Herd,Radio und radiator leider nicht. Ich muss die Unterklassen in meine Fernbedienung inkludieren damit es funktioniert ( dann funzt auch das ganze Programm) aber weil ich alles über Die OBerklasse steuern will, würde ich die Objekte auch gerne erstellen ohne die Unterklassen in meine Fernbedienung inkludieren zu müssen.

    Geht das irgendwie ? Hoffe ich habe mich einigermaßen ok ausgedrückt 😉

    lg

    Jolle



  • Jolle schrieb:

    Hoffe ich habe mich einigermaßen ok ausgedrückt 😉

    Nicht wirklich. Was meinst Du mit inkludiert? #include? Aggregation? Wieso
    "hat Fernbedienung mit der Oberklasse Geräte inkludiert"?

    Etwas Code sagt im Übrigen mehr als 1000 Worte 😉



  • Mit inkludieren meine ich #include "Radiator.h" , #include "Radio.h" , #include "Herd.h".

    Hier mal ein kleines Beispiel:

    habe einen CPPUNIT von Remote erstellt. Darin will ich objekte von meinen Geräten erstellen.
    So wie der Code oben steht geht das auch. Aber will eigentlich nur "#include "Device.h"" inkludieren nicht die einzelnen geräte 😛



  • Damit wird das Problem immernoch nicht klarer.

    Was ich verstehe: Du möchtest in einem "Testfile" Objekte der Klassen Remote, Herd, Radio und Radiator erstellen, kannst dies aber nicht, weil die Klassen nicht bekannt sind. Antwort: Dann inkludiere die Header dieser Klassen in Dein Testfile.

    EDIT zum EDIT:
    In der Remote.h brauchst Du auch nur Device.h. Aber in der Testfunktion brauchst Du auch Radio.h, Herd.h und Radiator.h



  • Sagt dir CPPUNIT was ? Also Unittests für meine Klasse Remote.

    Ja genau ich will die Objekte, Remote,Radio,Radiator und Herd erstellen. Remote ist ja kein ding, weil Remote sich selbst ja kennt. Für die anderen muss ich wie du richtig gesagt hast ja die einzelnen Klassen inkludieren.

    Mir wurde vom Aufgabensteller aber gesagt meine Fernbedienung soll NUR mit Devicec verbunden sein und keine Verbindung zu den eerbenen Klassen haben.



  • Achso, also klappt so nur der Test nicht ? Dann ist ja alles gut 😃



  • Genau. Ich kenne zwar CPPUNIT nicht, vermute aber mal, die Tests sind auch in irgendeiner (Quell-)Datei formuliert. In dieser Datei benötigst Du die anderen Header.

    Falls der Test in Remote.h formuliert ist, würde ich ihn einfach in eine andere (neue) Datei auslagern 😉



  • Ja genau CPPUNIT ist ein c++ unittesting framework mit dem man dann bestimmte funktionen testen kann


Anmelden zum Antworten