Ich bin es doch noch einmal mit ein paar Fragen zu OOP.
Bislang bin ich zeitlich noch nicht dazu gekommen mir SimpleOOP anzusehen.
Die Installation ist soweit fertig, es existiert also eine PureBasic 5.00 OOP Umgebung und ich habe mir bereits einige der OOP-Beispiele angesehen.
So langsam bekomme ich eine Ahnung welch potential in OOP liegt... ich weiß aber auch, dass das ein kontrovers diskutiertes Thema ist und OOP auch Nachteile hat. Man braucht ja nur diesen Thread hier durchzulesen oder nach OOP-Themen in den PureBasic-Foren zu suchen.
Wie dem auch sei, rein theoretisch habe ich Blut geleckt. Ich kann mir bereits ohne konkret damit programmiert zu haben gut vorstellen welche Teile meiner Programme
ich effektiv besser mit OOP-Mitteln realisieren und vor allen Dingen pflegen und verstehen kann.
Ich muss dazu sagen, dass ich zwar zeitlebens ein prozedural-Programmierer war, ich dabei aber auch sehr gut meine Schwächen kenne.
Komplexe Funktionen oder Workflows in eigenen Programmen werden mir zum Verhängnis, wenn ich die Arbeit am Code eine Weile unterbrechen muss. Da nützt auch das Aufbröseln des codes in immer kleinere Problemhäppchen nichts. Gerade nachträgliche Änderungen oder die Fehlersuche in komplexen Funktionen können eine Menge und Hirnwindungen Zeit kosten.
Ich tue mich mit manchen Dingen eh etwas schwer, weil ich mich nicht Vollzeit mit der PureBasic-Programmierung beschäftigen kann. Teilweise bin ich tage-, wochen- oder monatelang mit völlig anderen Dingen beschäftigt (PureBasic ist für mich noch immer ein Hobby und ich habe nebenbei einen Job, der viel Aufmerksamkeit und "freien Speicher" im Kopf erfordert).
Gerade unter diesen Umständen sehe ich den Nutzen für mich in der Benutzung von SimpelOOP.
Jetzt habe ich über 25 Jahre lang immer schön prozedural programmiert, mir meinen eigenen Stil angeeignet, da ich meist mit "Nischenprodukten" (so will ich es mal nennen - hauptsächlich auf dem Amiga) gearbeitet habe, und stehe vor der OOP-Welt wie die Ochse vor'm Scheunentor.
Ich habe keinen blassen Schimmer, ob es in der OOP-Welt neben den anderen syntaktischen Regeln (die man sich anlesen und aus den SimpleOOP-Beispielen extrahieren kann) auch eine völlig andere Herangehensweise an bekannte Probleme gibt. Das lässt sich auch schwer aus den SimpleOOP-Beispielen herauslesen.
Hätte ich mir beizeiten mal C++, C# oder eine andere objektorientierte Sprache angeeignet, dann würde mir der Umgang und das Verstehen der Zusammenhänge sicherlich leichter fallen, aber so bin ich aus den Zeiten von Assembler, KickPascal und diversen Basicdialekten völlig anders eingenordet.
Die Gliederung von Sourcecode bzw. Projekten geschieht bislang nur auf Basis von "funktioneller Trennung". So trenne ich z.B. logische Funktionsbereiche eines Projektes in unterschiedliche Inkludedateien (Hauptfenster, Einstellungsfenster, Dateioperationen, Serialportkommunikation, usw.). Zusätzlich werden noch mein Eventsystem inkludiert und ggf. selbstgestrickte Gadgets als jeweils eigene Inkludedatei. Lang lebe die Projektverwaltung, über die ich mich echt riesig gefreut habe.
Das ganze wird in bekannter PureBasic-Manier alles in einem Rutsch durchkompiliert.
Zaghafte Blicke in Richtung C/C++ (die ich aber nie richtig verstanden habe) zeigten mir, dass in diesen Bereichen teilweise andere Workflows herrschen und viel Dinge in mitgelieferten Dateien definiert sind. Die Bezeichnung "Objektdatei" lief mir über den Weg oder Dateien, in denen nur irgendwelche Konstanten definiert sind. Auch scheint man in der C/C++/C# Welt nicht immer wieder alle Funktionsgruppen neu kompilieren zu müssen, es gibt eine Art "Zwischencode", der einfach nur in die Exe gelinkt wird.
Okay, das hat alles wenig mit der OOP-Problematik zu tun, ich schweife ab.

Eigentlich wollte ich auch nur zeigen, dass ich von diesen Dingen wirklich keine Ahnung habe. Ich könnte vermutlich nicht mal einen fertigen "Hello World"-Code mit einem C-Compiler zum laufen bringen.
Daher meine erste Frage: Macht es Sinn als so unvorbelasteter OOP-Programmierer SimpleOOP ohne weitere Informationsquelle nutzen zu wollen? Besteht die Gefahr, dass man sich falsche Abläufe und Benutzung aneignet, weil man irgendwelche OOP-Paradigmen nicht verinnerlicht hat?
Unabhängig von dieser Antwort würde mich trotzdem interessieren, ob es für jemanden mit meinem Kenntnisstand frei verfügbare Lektüre gibt, die einem das Thema näher bringen. Lektüre, deren Wissen ich auch in SimpleOOP anwenden kann und die nicht nur andere mainstream OOP-Dialekte voraussetzen.
Als dritte Frage brennt mir auf den Nägeln, ob sich im Bereich SimpleOOP eine gewisse Struktur (bzgl. Auslagerung von Code in Includedateien) als hilfreich herausgestellt hat. Also, ob man seine Klassendefinitionen alle in einer einzigen Datei halten sollte oder doch lieber nach logischer Funktion getrennt. Oder eben doch gar nicht auslagert und im Kopf des jeweiligen Quellcodes platziert (Main.pb, Berechnungen.pbi, Preferences.pbi, usw.). Die Frage können mir vermutlich nur eine handvoll SimpleOOP Nutzer beantworten.
Und als letzte Frage: Sollte man ein kommerzielles Produkt, welches mit PureBasic programmiert wurde besser nicht auf SimpleOOP umstellen? Es geht mir hier nicht um emotional geladene Ratschläge von OOP- bzw. Prozedural-Verfechtern, sondern um echte Hinweise, falls der Einsatz eines 3rd-partie AddOns wie SimpleOOP eine Gefahr für das kommerzielle Produkt darstellen könnte.
SimpleOOP wird zwar vollkommen quelloffen geliefert (an dieser Stelle meine Hochachtung dafür! Das ist nicht selbstverständlich), aber ich sehe mich derzeit noch völlig außerstande an SimpleOOP selbst etwas zu korrigieren, wenn es in zukünftigen PureBasic-Versionen zu Inkompatibilitäten kommen sollte.
Über Feedback würde ich mich freuen.