Objekt Orientiertes Programiern mit Arduino

Hallo zusammen,

Ich hab in der Schule den auftrag "Objekt Orientiertes Programieren" bekommen und sonst keine Richtlinien
und da is mir dann recht schnell der Arduino eingefallen.

Jetzt wollt ich mal nach fragen ist OOP mit dem Arduino realisierbar?
und was für projekte KÖNNTE ich angehen

mein erfahrungsstand mit MC ist vorhanden aber DEFENETIV ausbaufähig,
java kenntnisse auch vorhanden aber ebenso wie mit dem MC

mfg G00mba

Ja, objektorientiertes Programmieren geht auch mit dem Arduino, schließlich und endlich ist es ja nur C++. Aber wegen der insgesamt sehr kleinen Projekte, den Einschränkungen durch die Hardware und der wichtigen Libraries im C-Stil wird das eine eher witzlose Angelegenheit. So etwa als würdest du deine Morgentoilette mittels MS-Project projektieren wollen. Insgesamt ist es keine gute Umgebung um ins objektorientierte Programmieren einzusteigen.

Korman

Auch auf die Gefahr hin, dass ich mir ein "bad Karma" einfang - dein Deutsch ist DEFINITIV ausbaufähig.
Zum Thema:
OOP mit Arduino geht - da die simplen OOP-Strukturen wie Klassen und Objekte unterstützt werden - die große Frage ist, ob es einen Anwendungsfall gibt, (Ausgenommmen einiger weniger Libraries) in denen nicht auf Objekte verzichtet werden kann. Der PAP des Arduino ist streng linear und prozedural ausgelegt. Eigene Objekte und Klassen machen da wenig Sinn, da man zusätzlichen Speicher verbraucht für Komfort, den niemand nutzt. Aber generell ist es möglich.

P.S: Die Programmiersprache ist eher C als C++ - eben wegen der oben genannten Gründe. :wink:

Was würde denn gegen den Einsatz von Klassen/Libraries sprechen, wenn es z.B. darum geht, seriell diverse Geräte anzusprechen die sich bzgl. ihrer Eigenschaften sehr ähnlich sind. Da will man das Rad doch nicht bei jedem Gerät neu erfinden, sondern objektorientiert arbeiten, oder?

Muss jedoch gestehn, dass mir der grundsätzliche Unterschied zwischen "Objektorientierter Programmierung" und "Erstellung einer Library unter Verwendung von Klassen" noch nicht so ganz klar ist.

Ja, es ist ein etwas älterer Thread. :grinning:

Gruß Chris

Muss jedoch gestehn, dass mir der grundsätzliche Unterschied zwischen "Objektorientierter Programmierung" und "Erstellung einer Library unter Verwendung von Klassen" noch nicht so ganz klar ist.

Mir auch nicht! :smiley:

Im Grunde gibts nichts gegen OOP auf dem Arduino einzuwenden.
Aber:
Der Ressourcenmangel hält einen davon ab, all die schönen "OOP Design Pattern" anzuwenden.
Schade, sehr schade....

Ich fummel auch viel mit Klassen/Objekten rum, lasse sie aber nicht mit new erzeugen. Arbeite also eher statisch. Was die OOP eigentlich wieder "ad absurdum" führt.

Das nennt man "thread necromancy" :stuck_out_tongue:

Chris72622:
Muss jedoch gestehn, dass mir der grundsätzliche Unterschied zwischen "Objektorientierter Programmierung" und "Erstellung einer Library unter Verwendung von Klassen" noch nicht so ganz klar ist.

OOP ist weit, weit mehr als nur einzelne Klassen zu erstellen. Da geht es auch darum wie man Klassen aufbaut und vor allem um die Abhängigkeit von Klassen untereinander, wie diese Daten austauschen und wie man reale Probleme in Klassen abbildet (Stichwort: Design Patterns, Entwurfsmuster)

Es gibt auch Libraries, die viel mehr als nur einzelne Klassen sind. SdFat z.B. hat mehr als ein Dutzend Klassen die aufeinander aufbauen und miteinander kooperieren.

Auch im Arduino Core sind ein paar Sachen stark auf OOP ausgelegt. Die print()/println() Funktionalität z.B. ist in der Print Klasse. Wenn dann eine Klasse print() verwenden soll, lässt man sie von Print erben und überschreibt die virtuelle write() Methode um eine Implementierung zu haben die spezifisch für die Hardware ist die man gerade hat. Darauf greifen dann die Formatierungs-Methoden zu um ein Zeichen zu schreiben.

Das ist ein Fall wo man den Umweg über eine virtuelle Methode gerne in Kauf nehmen kann.

G00mba:
Ich hab in der Schule den auftrag "Objekt Orientiertes Programieren" bekommen und sonst keine Richtlinien
und da is mir dann recht schnell der Arduino eingefallen.

Jetzt wollt ich mal nach fragen ist OOP mit dem Arduino realisierbar?
und was für projekte KÖNNTE ich angehen

In den Arduino-Libraries sind sehr viele Dinge als "Objekte" deklariert.

Sowohl in der Core-Library wo das "Serial" Objekt deklariert ist wie auch in vielen mitgelieferten Libraries Objekt-Klassen definiert sind, die Du in Programmen verwenden kannst.

Arduino-Programme selbst werden allerdings besser nach dem EVA-Prinzip (Eingabe, Verarbeitung, Ausgabe) sequentiell abgearbeitet. Es spricht allerdings nichts dagegen, in sequentiellen Programmen mit Objekten zu hantieren.

Also bedingt der Einsatz eines Objekts in keinster Weise die Erstellung einer Bibliothek?

Über 2500 Leute haben bereits auf diesen Thread geklickt- Wahnsinn!

Gruß Chris

Also bedingt der Einsatz eines Objekts in keinster Weise die Erstellung einer Bibliothek?

Nöö... bedingt nicht.
Zwecks Code Wiederverwendung sinnvoll, ja, aber einen Zwang gibt es nicht.

Ein Beispiel (mit einem Problem aus diesem Forum) im Anhang....

EndlicherDimAutomat.ino (2.68 KB)