Vorstellung meinerseits und Fragen zum Aufbau einer eigenen Bibliothek



  • @MaikHo sagte in Vorstellung meinerseits und Fragen zum Aufbau einer eigenen Bibliothek:

    musste ich mit PHP erlernen, ist im Gegensatz zu C/C++ viel einfacher

    okay......

    Bin dabei es hinzubekommen, muss mich nur noch an die Pointer gewöhnen

    allgemein brauchst du keine pointer bzw. erstmal reicht es zu wissen, dass '*' und '->' irgendwas mit pointern sind. bei c++ benutzt man pointer eher selten.

    Mist, hab ich schon gelesen! Nicht das ich die jetzt auch noch auswendig lernen muss 😱

    nein du musst dir das schnell durchlesen und dich dann irgendwann daran erinnern, dass du mal was gelesen hast und dann nachgucken und abschreiben.

    Verstanden hab ich das ich nur das includieren soll was auch gebraucht wird, Richtig?

    naja wenn du einen kuchen backen willst, guckst du ja auch im rezept nach, was du brauchst und stellst dir dann die benötigten zutaten hin. also zumindest ich würde mir da keine lagerhalle mit "allem" in die küche stellen.

    Ist ja gut, muss ich fauler Hund halt arbeiten

    nicht auswendig lernen!

    das zählt zu "umsetzung objektorientierter programmierung in c++"
    Hab nochmal darüber nachgedacht, wenn schon mit objektorientierter programmierung dann sollte auch keine Ausnahme sein.

    nein das zählt zu "allgemeine grundlagen objektorientierter programmierung" bzw. genauer gesagt zu "objektorientierter modellierung"

    Werde mal meinen Lehrmeister am WE besuchen und mich über seine OOP Kentnisse informieren. Denn warum sollte es in PHP nicht genauso laufen?

    ich kann jetzt kein php, aber so wie es für mich aussieht (wikipedia...) musst du nicht objektorientiert mit php programmieren (musst du mit c++ auch nicht).



  • @Wade1234 sagte in Vorstellung meinerseits und Fragen zum Aufbau einer eigenen Bibliothek:

    nein das zählt zu "allgemeine grundlagen objektorientierter programmierung" bzw. genauer gesagt zu "objektorientierter modellierung"

    ☑ OK, die Schelle hat gesessen
    ☑ Schämen müsste ich mich dafür
    ☑ Nochmal das gute Buch in die Hand nehmen

    Ich sags ja, wer nicht fragt verliert!



  • @MaikHo sagte in Vorstellung meinerseits und Fragen zum Aufbau einer eigenen Bibliothek:

    Denn warum sollte es in PHP nicht genauso laufen?

    Was? Versteh nicht so ganz, was du sagen willst...
    Im Grunde funktioniert OOP in C++ schon ziemlich anders, als in den meisten anderen Programmiersprachen. u.a. deswegen, weil C++ eine der wenigen (zumindest verbreiteten) Sprachen ist, die value semantics unterstützt und fördert. Das eröffnet sehr viele Möglichkeiten, die es in anderen Sprachen in der Form nicht gibt. Deswegen wäre es in C++ meist ganz schlechter Stil, wenn man versucht Java oder PHP oder sonstigen Code ähnlich umzusetzen.



  • Grüß Dich Maik,

    Mein Tipp: Lege Deinen Fokus erstmal auf das Erlernen von C++ und kopier einfach die relevanten Quelldateien bzw. den relevanten Code vom einen ins nächste Projekt rüber. Git ist toll, CMake ist toll, Unit-Tests etc. auch, sind jedoch alles andere als trivial zu verstehen und richtig zu benutzen. Ich glaube, Du hast mehr davon Dich mit C++ und der Standardbibliothek zu beschäftigen, als Dich mit CMake rumzuschlagen (versteh mich nicht falsch, ich find CMake super).

    Ein weiterer guter Tipp (inspiriert von Deinem PHP Codeschnipsel): Wenn Du irgendwo in C++ new tippst, machst Du höchstwahrscheinlich etwas falsch. Besser wäre es, sich mit std::string, std::vector und "RAII" im Allgemeinen zu befassen.

    was wäre der beste Weg mit den "sonstigen Funktionen" (hatte ich sonst unter /snippet in PHP)

    Schreib eine utility.hpp und utility.cpp (o. Ä.) und pack da Deine paar Funktionen rein. Kommt drauf an wie viel Code das ist, diese "sonstigen Funktionen". Noch besser: Schau, ob es die Funktionalität nicht schon in der Standardbibliothek gibt.

    sollte man auf structs verzichten?

    Nein. Verwende struct, um verwandte Daten miteinander zu gruppieren. Zum Beispiel:

    struct Vec3f {
        float x;
        float y;
        float z;
    };
    std::vector<Vec3f> points;    
    

    Wann solltest Du class verwenden und nicht struct? Diese (semantische) Frage ist nicht so einfach zu beantworten...

    class Foo {
    
    };
    
    struct Foo {
    private:
    
    };
    
    // oder
    class Foo {
    public:
    
    };
    
    struct Foo {
    
    };
    

    ist das gleiche. Soll heißen struct ist standardmäßig public und class ist standardmäßig private. Der praktische Unterschied ist rein semantisch.

    Ich hoffe ich konnte Dir zumindest teilweise weiterhelfen. Falls Du noch Fragen hast, nur zu 🙂

    P.S.: Die Frage ist, ob dieses Referenzprojekt eine Bibliothek sein muss?



  • Danke für die vielen Tipps 🙂

    Diese Bibliothek ist nicht das Referensprojekt, nur eine Sammlung meiner erstellten Klassen und so weiter

    Mein Referenzprojekt ist ein Programm zur Verwaltung einer regionalen Dartliga.
    Vorgaben von der IBB:

    • C++ (ist ja Logisch)
    • WindowsForms (hätte gerne xwidget benutzt 😒 )
    • portabel
    • Datenbankanbindung (hab mich für SQLite enschieden)
    • einzelne Datensätze versendbar an die Homepage (Diesen Punkt konnte ich auswählen!)

    Bin grad dabei mich in C++/CLI mit .NET reinzufinden. Hab auch schon etwas geschafft.
    Aber dafür eröffne ich einen anderen Thread.
    Denke, dafür ist https://www.c-plusplus.net/forum/category/20/projekte wohl geeignet, oder soll ich unter "C++ (alle ISO-Standards)" posten?



  • @HarteWare sagte in Vorstellung meinerseits und Fragen zum Aufbau einer eigenen Bibliothek:

    Schreib eine utility.hpp und utility.cpp (o. Ä.)

    Ich habe das auch öfter in Ermangelung eines besseren Namens. Ich ärgere mich selbst immer darüber und kritisiere alle, die "utils.cpp" oder "helpers.cpp" oder "generischer-name-für-sammelsurium-unterschiedlichster-dinge.cpp" erstellen. Wenn möglich, versuche auf eine Datei dieses Namens zu verzichten und gib der Datei einen aussagekräftigeren Namen. Ich weiß, dass das alles andere als leicht ist und manchmal möchte man einfach schnell weiterkommen und die Funktion "irgendwo" parken. Aber im Allgemeinen würde ich versuchen, möglichst wenig in "utils" zu haben. Und dass es <utility> gibt, macht es auch nicht besser...



  • @MaikHo sagte in Vorstellung meinerseits und Fragen zum Aufbau einer eigenen Bibliothek:

    Bin grad dabei mich in C++/CLI mit .NET reinzufinden.

    Ganz schlechte Idee. Gibt hier auch einen längeren Thread, der das erklärt, hab grad keine Lust, den rauszusuchen.
    Das ist nur eine Glue-Sprache, um native mit .NET Anwendungen zu verbinden, zum "Programmieren" ist die nicht geeignet.



  • @wob
    Mein Vorschlag mit dem einzigen .hpp/.cpp war praktisch der minimalste Aufwand, der mir eingefallen ist. Ich würde das selbst auch nicht so machen. Im Nachhinein sehe ich, dass das in meinem Post nicht so richtig rüberkommt... Also Danke für den Hinweis 👍



  • @Mechanics sagte in Vorstellung meinerseits und Fragen zum Aufbau einer eigenen Bibliothek:

    Ganz schlechte Idee. Gibt hier auch einen längeren Thread, der das erklärt, hab grad keine Lust, den rauszusuchen.
    Das ist nur eine Glue-Sprache, um native mit .NET Anwendungen zu verbinden, zum "Programmieren" ist die nicht geeignet.

    Habe ich bestimmt schon 3 mal gelesen 😁



  • @MaikHo Aber noch nicht verinnerlicht 😉



  • @Mechanics sagte in Vorstellung meinerseits und Fragen zum Aufbau einer eigenen Bibliothek:

    @MaikHo Aber noch nicht verinnerlicht 😉

    Hier in der IBB muss ich mich leider fügen ☹ und mit Windof und C++/CLI arbeiten. Aber Privat benutze ich Debian (Server), Ubuntu (Desktop) und da läuft Code::Blocks drauf. wxwidges ist da meine erste Wahl für ne Gui 😁

    Also nix mit: "nicht verinnerlicht"


  • Administrator

    @MaikHo sagte in Vorstellung meinerseits und Fragen zum Aufbau einer eigenen Bibliothek:

    @Mechanics sagte in Vorstellung meinerseits und Fragen zum Aufbau einer eigenen Bibliothek:

    @MaikHo Aber noch nicht verinnerlicht 😉

    wxwidges ist da meine erste Wahl für ne Gui 😁

    Hättest du doch nur wxWdigets nicht erwähnt 😉

    Einfach bewusst sein, dass wxWidgets ein sehr veraltetes C++ verwendet. Ich glaube, die sind immer noch kompatibel zu C++98 und die ganze Bibliothek ist mit ziemlich alten Ideen aufgebaut. Die Version 3 hat leider nicht die ersehnte Modernisierung gebracht, auf welche so viele gehofft hatten.



  • @Dravere
    Das ist wuste ich schon wieder nicht, aber ganz ehrlich gesagt, wxwidges macht genau das was ich bis jetzt wollte. Und ich komme komischerweise damit besser klar wie mit QT.
    Ich bin sowieso ein Typ der auf alte Sache abfährt. mein Wohnzimmer ist z.B von 1912 😃 , zum zocken habe ich einen 386er mit MS-DOS 6.22 stehen 😉
    Und dies werde ich mir auch noch kaufen:
    Mercedes-Benz-280-SE



  • Das kommt drauf an... Retro Ausstattung ist Geschmackssache, aber modernes C++ ist deutlich angenehmer zu benutzen, als altes C++. Außerdem sicherer, bei weitem nicht so fehleranfällig usw.



  • Ich komm mal auf „XY basiert auf veraltetes C++“ zurück, weil ich es hier des Öfteren lese.

    Da klingt häufig Abfälligkeit durch, auch wenn es evt. nur Enttäuschung ist.

    Ich bin der Meinung, dass fast alles schon lange auf dem Markt befindliches, auf etwas Veraltetes basiert. Besonders wenn es sich durch Freiwillige getriebene Software handelt.
    Wer soll denn bei jeder neuen C++ Version den gesamten Code portieren. Was sagt man den Nutzern, welche die Portierung nicht kompilieren können. Wie verkauft man „wir beheben keine Fehler mehr, wir sind mit der Portierung auf C++ 17 beschäftigt“. U.s.w.

    Es ist leicht geurteilt, aber ein lauffähiges System ändert man nicht ständig, sondern ist ggf. mit Erweiterungen und Fehlern beschäftigt.

    Wollte einfach mal ne‘ Lanze brechen für die (häufig OpenSource )Entwickler.

    Gruß Helmut


  • Administrator

    @Helmut-Jakoby Und trotzdem schafft es z.B. gtkmm auf C++11 zu wechseln, während wxWidgets noch bei C++98 rumdümpelt. Niemand sagt, dass man gleich auf C++17 wechseln muss. Auch nicht, dass man gleich die ganze Bibliothek umschreibt. Nur dass man erlaubt, die neuen Features einer Sprache zu nutzen und die Rückwärtskompatibilität etwas modernisiert und nicht immernoch an einen Standard bindet, welcher vor 21 Jahren rauskam.


Anmelden zum Antworten