Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 21

Thema: "Java"-Klassen für C++

  1. #1
    Registrierter Benutzer Avatar von Flummi
    Registriert seit
    01.01.2006
    Beiträge
    31

    "Java"-Klassen für C++

    Hallo,

    weiß vielleicht jemand, ob es für C++ sowas wie Java-Klassen gibt?
    Was ich meine ist nicht eine Reimplementation der Java-Klassen in Java, sondern in C++. Also dass man quasi Klassen ala String, Object, Array, Integer, usw. hat.

    danke im Vorraus,
    Flummi.

  2. #2
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    ACDK dürfte dem recht nahe kommen.
    http://acdk.sourceforge.net/

    Was Containerklassen angeht, würde ich aber eher solche empfehlen, die dem "C++ Stil" entsprechen. Also z. B. die der Standardbibliothek.

  3. #3
    Registrierter Benutzer Avatar von Flummi
    Registriert seit
    01.01.2006
    Beiträge
    31
    Ok, danke. Was ich noch wissen wollte: Gibt es für C++ auch sowas wie eine API-Referenz, wo man nachschauen kann, welche Klassen es gibt und was sie können, sowas wie im Stil der Java-API unter http://java.sun.com/j2se/1.5.0/docs/api/ ?

  4. #4
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Gibt es für C++ auch sowas wie eine API-Referenz, wo man nachschauen kann, welche Klassen es gibt und was sie können, sowas wie im Stil der Java-API [...]
    Ja. Zur Libstdc++, das ist die Implementierung der C++ Standarbibliothek des GCC, gibt es eine ähnliche Referenz. Die empfinde ich aber als etwas unübersichtlich. Die Dinkumware-Referenz ist ebenfalls der Java-API Doku relativ ähnlich. Aber gerade für C++ würde ich auch immer ein Buch oder ein gutes Tuturial, oder allgemein Lehrmaterial empfehlen. Sprich, es ist vermutlich hilfreich auch solche Texte anzuschauen die weniger dem Stil einer reinen API-Doku wie von dir verlinkt entsprechen.

    Die angesprochenen Referenzen findest du jedenfalls hier.
    http://gcc.gnu.org/onlinedocs/libstd...mentation.html
    http://www.dinkumware.com/manuals/default.aspx?Page=

  5. #5
    Registrierter Benutzer Avatar von Flummi
    Registriert seit
    01.01.2006
    Beiträge
    31
    Ok, danke dir vielmals,
    schönen Abend wünsche ich,
    Flummi.

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Eine Klassenbibliothek, die auch vom Stil her eher Java-ähnlich ist, wäre Qt

    Ist auch von der API Dokumentation vergleichbar, wenn auch nicht ganz im Umfang

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Registrierter Benutzer Avatar von Flummi
    Registriert seit
    01.01.2006
    Beiträge
    31
    Ah, cool. Thanks

  8. #8
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Wennst aber net mehr brauchst als string, list, vector (resizeable array) und andere standard sachen, dann reicht ja die STL, und die is bei jedem C++ Compiler sowieso dabei.
    Eine von vielen Referenzen für die STL wäre jene:
    http://www.sgi.com/tech/stl/
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

  9. #9
    Registrierter Benutzer
    Registriert seit
    18.03.2005
    Beiträge
    211
    @anda_skoa

    Aehm QT, Java aehnlich ? das haam die Jungs von Trolltech nu wirklich ned verdient ^^

    @Flummi
    Gibt ne menge GUI- API's fuer windows z.b. oder fuer Linux. Wenn es plattformunabhaengig sein soll (wie Java) scheiden schon mal ne menge aus ...
    viele verwenden auch keine C++ (Klassen) sondern eher c schnittstellen, um ihre API's nicht nur fuer c++ sondern auch fuer andere sprachen zugaenglich zu machen. Ausserdem gibts beim exportieren von Klassen ueber dll/so grenzen hinweg immer wieder probleme (unter windows mehr als wie unter unix, besonders wenn man den quellcode ned offenlegen will)

    Also bleiben fuer plattformunabhaengige und klassenbasierte Libs nur noch ne Handvoll ueber.
    Auf Anhieb faellt mir da auch nur die QT und wxWidgets noch ein.

    Ciao ...

  10. #10
    Registrierter Benutzer Avatar von Flummi
    Registriert seit
    01.01.2006
    Beiträge
    31
    Danke für die zahlreichen Antworten. Eventuell hätte ich mein Anliegen, warum ich gerne java-ähnliche Klassen bei C++ hätte, erläutern sollen: Ich fand es einfach extrem angenehm, einer Referenz auf den Typ "Object" Objecte quasi jeder anderen Klasse zuteilen zu können, weil mehr oder weniger alle anderen davon abgeleitet sind.
    Ist das bei C++ überhaupt möglich? In einem meiner C++-Bücher las ich nämlich, dass dann ja die Member-Variablen und Methoden, die in der Unterklasse zwar existieren, in der Basisklasse aber nicht, unter den Tisch fallen. Das heißt wohl, dass man sie nicht mehr verwenden kann, ok, aber heißt das auch, wenn ich das Objekt wieder einer Referenz des richtigen Typs zuweise, dass die Daten/Metoden auch nicht mehr vorhanden sind? Oder "tauchen" die wieder auf?

  11. #11
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Du müsstest dann casten, am besten zur Laufzeit mit dynamic_cast<NeueKlasse>, der wirft dann eine Exception, wenn das Übergebene Objekt gar nicht die Klasse ist.

    Nennt sich RTTI (Run-Time Type Information), Google oder (sehr wahrscheinlich) der Stroustoup hilft weiter

  12. #12
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Ich fand es einfach extrem angenehm, einer Referenz auf den Typ "Object" Objecte quasi jeder anderen Klasse zuteilen zu können, weil mehr oder weniger alle anderen davon abgeleitet sind.
    Ist das bei C++ überhaupt möglich?
    In C++ sind klassen nicht implizit von einer gemeinsamen Oberklasse abgeleitet. Wenn du eine Klassenhierarchie entwirfst kannst du für diese aber eine gemeinsame Oberklasse benutzen. Das hilft dir natürlich nicht, wenn du fremde klassen hast. Allerdings kannst du mit Mehrfachvererbung arbeiten, d. h. du leitest eine neu Klasse sowohl von der Fremdklasse, als auch von deiner Oberklasse ab. Diese neu entstandene Klasse kann dann in deiner Klassenhierarchie mitspielen.

    In einem meiner C++-Bücher las ich nämlich, dass dann ja die Member-Variablen und Methoden, die in der Unterklasse zwar existieren, in der Basisklasse aber nicht, unter den Tisch fallen.
    Das ist korrekt, und nicht anders als bei Java.

    Das heißt wohl, dass man sie nicht mehr verwenden kann, ok, aber heißt das auch, wenn ich das Objekt wieder einer Referenz des richtigen Typs zuweise, dass die Daten/Metoden auch nicht mehr vorhanden sind? Oder "tauchen" die wieder auf?
    Hier kann ich nicht mehr ganz folgen. Wenn du eine Referenz (oder Pointer) vom Typ "Referenz auf Basisklasse" hast, die aber tatsächlich auf ein abgeleitetes Objekt zeigt, dann kannst du die Referenz auf den Typ "Referenz auf abgeleitete Klasse" casten, und über diese Referenz dann natürlich die Member der abgeleiteten Klasse ansprechen. Beantwortet das deine Frage?

  13. #13
    Registrierter Benutzer Avatar von Flummi
    Registriert seit
    01.01.2006
    Beiträge
    31
    Zitat Zitat von locus vivendi
    [...]
    Hier kann ich nicht mehr ganz folgen. Wenn du eine Referenz (oder Pointer) vom Typ "Referenz auf Basisklasse" hast, die aber tatsächlich auf ein abgeleitetes Objekt zeigt, dann kannst du die Referenz auf den Typ "Referenz auf abgeleitete Klasse" casten, und über diese Referenz dann natürlich die Member der abgeleiteten Klasse ansprechen. Beantwortet das deine Frage?
    Lol, ich bin auch schon ganz duselig , aber ja, das beantwortet meine Frage in der Tat. Danke.

  14. #14
    Registrierter Benutzer
    Registriert seit
    18.03.2005
    Beiträge
    211
    @Flummi

    Das was du so toll findest, ist eigentlich genau das, was eine typsichere Sprache verhindern will.
    Leider kommt man grad bei umfangreicheren bibliotheken nicht immer drumherum. Trotzdem sollte man downcasts immer zumindest 2 mal betrachten um sicherzustellen das es wirklich notwendig ist. DIverse fachbuecher bezeichnen das dann auch gleich als designtechnische Schwachstelle.

    Auch wenn es bequem ist, brauchst du es wirklich ?

    Ciao ...

  15. #15
    Registrierter Benutzer Avatar von Flummi
    Registriert seit
    01.01.2006
    Beiträge
    31
    @RHBaum:
    Ich denke nicht, dass man es unbedingt braucht, aber wie gesagt, es macht vieles einfacher. Zum Beispiel, wenn ich an eine doppelt-verkettete, lineare Liste denke, mit solchen Knoten:
    Code:
    ListenKnoten* next;
    ListenKnoten* prev;
    Object* value;
    Mit einem allumfassenden Basis-Objekt kann man den selben Knoten für alle Arten von Klassen verwenden, weil ich ja die Objekte immer casten kann.
    Wenn ich das nicht kann, müsste man zB ja für jede Art Value eine Subklasse der Basisklasse ListenKnoten machen, die dann fähig ist, die entsprechenden Objekte aufzunehmen. Oder irre ich da? (bin noch blutiger Anfänger, wie man wahrscheinlich erkennen kann ).

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •