Interface in C++

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Ich versteh deine Frage nicht ganz.
    Was meinst du mit Interface? Meinste damit die Grafische Oberfläche oder meinst du die diveresen integrierten Bibliotheken die man verwenden kann, oder meinst du was komplett anderes?

    Evtl. liegt es daran dass C/++ universel eingeetzt wird und nicht spezialiesert auf etwas ist, deswegen gibt es diverse Bibliotheken dafür.

    Mfg Rushh0ur
  • Rushh0ur schrieb:

    Ich versteh deine Frage nicht ganz.
    Was meinst du mit Interface? Meinste damit die Grafische Oberfläche oder meinst du die diveresen integrierten Bibliotheken die man verwenden kann, oder meinst du was komplett anderes?

    Evtl. liegt es daran dass C/++ universel eingeetzt wird und nicht spezialiesert auf etwas ist, deswegen gibt es diverse Bibliotheken dafür.

    Mfg Rushh0ur

    Er meint genau das, was er geschrieben hat: Java Interfaces. Und die haben mit deinem ziemlich ahnungslosen Gerede von GUIs und einer angeblichen "universell vs. spezialisiert"-Kategorisierung herzlich wenig zu tun. Sie sind ein zentrales Konzept der Art, wie in Java die Objektorientierung umgesetzt wurde. Warum muss ich nur grad wieder an Dieter Nuhr denken ...
  • steveT schrieb:

    Er meint genau das, was er geschrieben hat: Java Interfaces. Und die haben mit deinem ziemlich ahnungslosen Gerede von GUIs und einer angeblichen "universell vs. spezialisiert"-Kategorisierung herzlich wenig zu tun. Sie sind ein zentrales Konzept der Art, wie in Java die Objektorientierung umgesetzt wurde. Warum muss ich nur grad wieder an Dieter Nuhr denken ...

    Tut mir leid für mein unwissenheit, dann stell das doch mal klar, um was es da geht, oder bist du zu schlau um dein Wissen mit anderen zu teilen? Wenn dies der Fall ist dann poste das nächste mal erst gar nicht!

    Mit ein wenig googeln findet man auch was Brauchbares:
    Das Interface-Konzept wurde zum ersten mal in Java präsentiert, auf die Frage warum es dies in C++ nicht gibt wird dir kaum jemand Antworten können, eventuell weil Java erst viel später Entwickelt wurde als C/++.

    Btw. wenn ich es Richtig Interpretiert habe entprischt das Interface-Konzept in C# exakt dem Interface-Konzept in Java, von daher wurde es wohl mit C# auch eingeführt.

    Mfg Rushh0ur
  • Ich geh davon aus, dass Interfaces nur eingeführt wurden, weil Java keine Mehrfachvererbung unterstützt. Alles was du mit Interfaces machen kannst, kannst du auch mit abstrakten Klassen und eben Mehrfachvererbung machen. Daher macht es auch nicht wirklich Sinn Interfaces in C++ einzuführen.

    Das Gleiche gilt auch für C#: Keine Mehrfachvererbung, daher Interfaces.

    Aber das ist nur meine Meinung, ich hab selbst nichts über die Gründe gelesen, warum das so und nicht anders gemacht wurde.
  • Interfaces sind ein bisschen mehr als nur ein schwacher Ersatz für Mehrfachvererbung. Interfaces trennen u.a. die Schnittstelle einer Klasse von ihrer Implementierung. Auch ist richtige Mehrfachvererbung zwar ein mächtiges Konzept, es ist aber auch mit ein paar konzeptionellen Problemen behaftet (Stichwort: Diamantenproblem). Eine bessere Alternative, welche in vielen modernen Sprachen enthalten sind, stellen Traits oder Mixins dar. Diese ergänzen Klassen und Objekte um zusätzliches Verhalten und enthalten im Gegensatz zu Interfaces bereits ihre Implementierung. Grob gesagt behältst du eine Vererbungshierarchie, in der du jedes Element aber mit zusätzlichen Fähigkeiten ausstatten kannst.

    @Rushh0ur

    Wenn mein Beitrag arrogant rüberkam, dann liegt das daran, dass es irgendwie schon nervt, wenn Fachfragen regelmäßig von Leuten, die noch nicht mal die Fragestellung verstehen können weil sich ihre Kenntnisse weit unter dem Niveau der Frage bewegen, mit sinnlosem "versteh ich nicht!!!" zugespammt werden. Denn mal ganz ehrlich: selbst wenn ich dir jetzt Java Interfaces lang und breit erklären würde, könntest du dem TE dann helfen? Mehr, als das was ich dir gesagt habe zu wiederholen, garniert mit Kaffeesatzleserei, würde da wohl kaum rauskommen.
  • steveT schrieb:

    Interfaces sind ein bisschen mehr als nur ein schwacher Ersatz für Mehrfachvererbung. Interfaces trennen u.a. die Schnittstelle einer Klasse von ihrer Implementierung.

    Ich hab nicht gesagt, dass sie ein schwacher Ersatz sind, sondern ein Weg sie auf andere Weise bereitzustellen.

    Und die Schnittstelle ohne jegliche Implementierung bereitstellen kann man auch in einer abstrakten Klasse, die nur abstrakte Methoden besitzt. Ich sag nicht, dass das ganze mit Mehrfachvererbung schöner geht (ganz im Gegenteil), aber man kann sie auf gleiche Weise verwenden. Letztendlich sind Interfaces das "modernere" Konzept und ich ziehe sie der Mehrfachvererbung jederzeit vor...
  • Hallo,


    danke für die Antworten! Ich hab mir schon gedacht das es irgendwie auch teils an der Mehrfachvererbung liegt. In C++ wird ja dann die abstrakte Klasse als Erbklasse genutzt, das ist mir ganz entfallen und in Java kann man ja von mehreren Interfaces eine Klasse implementieren ist mir auch heute mal aufgefallen (als ich das im API gesehen habe ^^).


    @steveT raste nicht unbedingt aus wenn jemand etwas falsches dazu antwortet....ich hätte früher geantwortet aber hatte keine Zeit sonst hätte ich noch was dazu gesagt das ich nicht die GUI meine.
  • "Illidan" schrieb:

    Aus welchem Grund hat C++ kein eigenes Interface-Konzept?


    Also entgegen der anderen Antworten, bin ich der Meinung, dass C++ sehr wohl schon ein Interface-Konzept hatte.
    Es war bloss nicht so sprechend in die Sprache eingebaut,
    aber ist folgender C++ Code nicht semantisch ein Java-Interface Pendant ??

    Quellcode

    1. class IConnector {
    2. public:
    3. virtual void waitForConnection() = 0;
    4. }
    5. class VPNConnector : public virtual IConnector { ... }