Variable Objektanzahl ohne objektorientierte Programmierung

Hallo,

ich habe schon einige erfolgreiche Arduino-Projekte hinter mir und möchte mich nun an ein Projekt ranwagen, welches ich von Anfang sehr skalierbar und klar programmiert aufziehen möchte.

Bzgl. der Programmierung soll es einen Teil geben, über den eine zum Systemstart noch nicht definierte Menge an Objekten mit jeweils identischen Eigenschaften und Funktionen erstellt werden kann. Einfach gesprochen sollen diese Objekte Werte entgegennehmen, mit ihnen arbeiten, oder auch Berechnungen ausführen können.

Von der Art und Weise ist das, was ich machen möchte (aus meiner Sicht momentan) genau das, was ich in einem Kapitel eines Buches las, in dem es eben um objektorientierte Programmierung ging.

In einem älteren Thread las ich, dass man bzgl. der Arduino-Plattform von einer objektorientierten Programmierung jedoch besser Abstand nehmen sollte. Was wäre denn die Alternative hierzu? Lange for-Schleifen-Konstrukte?

Gruß Chris

Chris72622:
Von der Art und Weise ist das, was ich machen möchte (aus meiner Sicht momentan) genau das, was ich in einem Kapitel eines Buches las, in dem es eben um objektorientierte Programmierung ging.

Dann mache es doch in OOP! Im Thema Wieder bewässerung habe ich OOP auf einem UNO realisiert. Sieht zumindest für mich ganz gut aus. Daher wüste ich nicht, warum man OOP grundsätzlich für einen Arduino ausschließen sollte. Daß Du Dich mit einem an Resourcen armen Prozessor beschäftigst, ist Dir sicherlich bewußt.

In einem älteren Thread las ich, dass man bzgl. der Arduino-Plattform von einer objektorientierten Programmierung jedoch besser Abstand nehmen sollte

Wenn du dem glaubst, dann musst du auch auf Serial, Wire, SPI, EEPROM und viele weitere verzichten.

Mich deucht, der-/diejenige hat irgendwas falsch verstanden.(oder du)

Wobei:
"Beliebige Mengen an Objekten", sowieso ein Problem darstellt.
Egal von welcher Seite man es angeht.

Die Arduino Software selbst ist OOP

Bei dir ist das Problem eher dass man für sowas normal dynamischen Speicher verwendet. Das kann Schwierigkeiten bereiten. Was eventuell geht ist dass man die Objekte einmal erstellt und nicht löscht.
Wenn eine maximale Anzahl an Objekten bekannt ist kann man auch einfach ein Array nehmen und sich merken wie viele Objekte tatsächlich existieren

agmue, kannst Du mir diese Zeile Deines Beispielcodes evtl. genauer erklären?

for (Blumen &b : blumen) b.init();

Ich vermute, sie soll unter Verwendung eines Zeigers in allen Strukturen die Methode init aufrufen.

Woher kommt jedoch das einzelne b und was hat der Doppelpunkt zu bedeuten?

Gruß Chris

Ich vermute, sie soll unter Verwendung eines Zeigers in allen Strukturen die Methode init aufrufen.

Zeigers
Referenz


Dieses lesen

Nicht wirklich aber mal ein Versuch: b ist eine Referenz vom Typ Blumen, die alle Elemente vom Feld blumen durchgeht, um die Methode init aufzurufen. Dadurch überläßt man die Berechnung der Elementeanzahl dem Compiler.

Ich bin OOP-Anfänger und habe das von combie übernommen, der Deine Frage sicherlich besser beantworten kann :-[

Ich danke Euch vielmals. Habe es nun auch in meinem schlauen Buch unter "Container und Schleifen" gefunden.

Gruß Chris

Allgemein nennt sich das "for each". Gibt es in C++ "erst" seit C++11, daher sieht man das in Standard Tutorials nicht oft. Ist aber bei Arrays wesentlich besser als eine normale for-Schleife, da man weniger Fehler machen kann