Ohne Objektorientierung möglich? Stehe voll auf dem Schlauch

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo zusammen,

    Ich will mir auf dem Raspberry ein Programm bauen, was verschiedene Sachen verwaltet und ggf. mit Arduinos kommuniziert, aber das ist gerade gar nicht entscheidend.


    Mein Problem ist, dass ich mehrere Dinge unterschiedlichen Typs steuern möchte, bspw. Funksteckdosen/Relais/Sensoren, es kann aber natürlich mehrere gleichartige geben. Mein Gedanke war, dafür entsprechende Klassen zu erstellen, sodass ich für jedes Einzelteil ein eigenes Objekt der entsprechenden Klasse erzeugen. Die Objekte könnten dann in einer Datenbank gespeichert werden, sodass ich nach einem Neustart alles ohne Probleme wieder einlesen kann.
    Eigentlich würde ich das ganze aber am liebsten in C machen, da ich ewig nicht programmiert habe und ich da viel mehr passende Tutorials finde und mich mit der Syntax bis jetzt irgendwie wohler fühle.

    Daher meine Frage: Ist das in C so überhaupt möglich? Weil Objekte fallen dann ja weg und gibt es da einen anderen Weg auf den ich jetzt einfach nicht komme?

    Vielen Dank im Voraus
    Karl

  • Ohne Objektorientierung möglich? Stehe voll auf dem Schlauch? Schau mal ob du hier fündig wirst!

  • Servus,
    klar kann man das auch ohne Objekte machen. Wie Jörg schon schrieb, z.B. über structs und/oder unions.
    Die "privaten" Funktionen zum Behandeln der Strukturen kannst Du dann static im jeweiligen Sourcefile defininieren. Dann sind diese Funktionen nicht nach aussen sichtbar. Die "public" Funktionen sind dann ganz "normal" definiert.

    Ob es sich nur dafür lohnt, sich in C++ einzuarbeiten, da habe ich so meine Zweifel ...

    cu,
    -ds-

  • Der gute Bjarne hat C++ damals als Erweiterung von C erfunden und war deswegen nicht frei in seiner Syntax- und Semantikdefinition. Deshalb ist C++ nicht gerade einfach zu lernen - selbst wenn man C kann und sich auch mit OO auskennt.

    Muss es denn unbedingt C/C++ sein? Auf der Raspberry läuft Python sehr gut und Python kann auch OO. Die OO Syntax und -Semantik Ist zwar auch aus Backwardcompatibilitygründen teilweise etwas krude - aber wesentlich leichter zu lernen und zu benutzen als C++ ;)

  • Nach meinem Eindruck ist hier ein objektorientierter Ansatz zu viel des guten, ich würde bei klassischem C bleiben.
    Selbst wenn Du n gleiche Funksteckdosen kontrollieren willst, unterscheiden sie sich doch mindestens durch den Namen/ID/Kennzeichnung. Einer der Vorschreiber hat m.E. mit dem Hinweis auf struct die Richtung aufgezeigt, in die es gehen könnte.

    P.S.: mir geht es mit C bzw. C++ ähnlich: gelernt habe ich vor Jahrzehnten C und dann habe ich mal in C++ reingeschnuppert und nun - nach rund 15 Jahren Pause - habe ich wieder mit C angefangen.

    Viel Erfolg und Hackingspaß bei Deinem Projekt!

  • Prinzipiell ist OO etwas, dass man in (fast) allen Sprachen betreiben kann - zB von mir schon anno dunsemal in M68K-Assembler. Beispiele, in denen man sich OO in C anschauen kann sind zB die ganzen gnome-Libraries, mit ihrem entsprechend benannten GObject. Auch Python Extension-Module zeigen, wie man OO machen kann.

    Wenn du aber mit im Programmieren eher noch nicht so bewandert bist - und so klingt das ein bisschen - ist der Wechsel zu dem deutlich maechtigeren Python zu empfehlen. Auch und gerade wenn du mit Datenbanken und spaeter vielleicht einer Oberflaeche arbeiten willst. Machen kann man das alles in C. Wird aber dann wirklich muehselig.

  • Nicht so bewandert trifft es wohl leider besser als ich dachte.

    Ich habe vor bestimmt 10 Jahren mal mit VBasic (damals glaube ich 6.0) angefangen und musste mich dann in Schule und Studium mit Java befassen. Das möchte ich allerdings nicht verwenden. C nutze ich sowieso für den Arduino und bleibt da ja auch in eher geringem Rahmen. Ich habe mich jetzt zwecks Netzwerksteuerung auch schon mal in Sockets eingelesen und das hat mir ganz klar aufgezeigt, dass ich da doch sehr viel Hirnschmalz werde reinstecken müssen. Aber macht mir ja auch Spaß.

    Da ich den Arduino ohnehin in C programmieren muss, würde ich gerne bei C bleiben und mich nicht auch noch in Python einarbeiten, wobei ich daran gerade Zweifel, denn zumindest für ein Webinterface brauche ich das gegebenenfalls dann ja eh.

    OO nur für Funktsteckdosen ist tatsächlich ein bisschen mit Kanonen auf Spatzen, aber ich möchte das ganze später Erweitern mit einigen anderen Dingen wie Steuerung für Poolpumpen über Relais inkl. der Möglichkeit von Statusabfragen usw. Daher mache ich mit lieber direkt viel Arbeit statt später bei der Erweiterung noch mehr Arbeit zu haben.


    Vielen Dank erstmal für die vielen guten Ideen! Ich werde mich mal weiter einarbeiten und mir auch mal Python in Verbindung mit Websteuerung angucken.

  • Ich würde mir überlegen, ob Du nicht besser Hirnschmalz in Content statt in die Hülle steckst. Soll heißen, anstatt erst einmal eine Basis zu schaffen, in die Du dann Deine Details einbaust, wärst Du meinem Framework wie FHEM vielleicht besser aufgehoben. Und darin tobst Du Dich dann aus.
    Betreff der Programmiersprache: Wenn Du C kannst und magst, dann bleib dabei. Ich würde mich lieber in C verbessern anstatt eine neue Sprache zu lernen.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!