Go Down

Topic: Objekt Orientiertes Programiern mit Arduino (Read 2666 times) previous topic - next topic

G00mba

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

Korman

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

Marcus W

#2
Feb 08, 2011, 10:25 am Last Edit: Feb 08, 2011, 10:28 am by Marcus W Reason: 1
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. ;)

Chris72622

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.  :smiley-lol:

Gruß Chris
"Blink Without Delay" ist die Lösung für Dein Problem.

combie

#4
Jan 29, 2015, 03:34 pm Last Edit: Jan 29, 2015, 03:34 pm by combie
Quote
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! :D

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.



Serenifly

Das nennt man "thread necromancy" :p

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.

jurs

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.

Chris72622

#7
Feb 04, 2015, 12:42 pm Last Edit: Feb 04, 2015, 12:43 pm by Chris72622
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
"Blink Without Delay" ist die Lösung für Dein Problem.

combie

#8
Feb 04, 2015, 12:49 pm Last Edit: Feb 04, 2015, 01:01 pm by combie
Quote
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....

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy