also, hab mich schlau gemacht (sps-messe in nürnberg) :
objektorientierte programmierkonzepte in der sps (=anlagen) - technik arbeiten mit globalen variablen, entsprechend dem "prozessabbild".
-> alle prozesswichtigen werte werden im hauptprogramm (hier main) als variable definiert. alle objekte können damit (und so auch "darüber") kommunizieren.
(wird als übersichtlicher und weniger syntaxintensiv beschrieben, ist auch kompatibler zu "alten" konzepten)
ich denke, diese argumente treffen auch für so kleine controller-applikationen wie meinen quadrocopter zu. alle prozessvariablen werden in main deklariert, und entweder als parameter für methoden benutzt oder (auch bei mehr als einem rückgabewert) direkt um den methodenaufruf rum übergeben. wird sehr übersichtlich !
so etwa :
nickregler.acc = sensor_4; //variable in attribut (eingänge, könnten auch parameter sein..)
nickregler.gyro = sensor_7;
nickregler.stabilisieren(); //methode
nickkorrektur = nickregler.stellwert //attribut in variable (ausgänge, bei nur einem ging's auch als rückgabewert)
die attribute sind, soweit sie kommunizieren müssen, public. ist ne m2m-kommunikation, die bei einem fehler (sensorausfall) sowieso das ende bedeutet. also, so what, private bringt nix.
(weiter : konstruktor wird im normalfall nicht benutzt (=default), außer wenn anfangswerte (höhe=0 oder ähnliches...) zu setzen sind)