Benutzer-Werkzeuge

Webseiten-Werkzeuge


techniken:objektorient

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
techniken:objektorient [2014/04/14 12:54]
fbonowski
techniken:objektorient [2016/01/21 12:45] (aktuell)
Zeile 39: Zeile 39:
 Das spart schon eine Menge Tipperei. Das spart schon eine Menge Tipperei.
  
-Aber eines stört immernoch: ​**Jedes Mal, wenn wir die Geschwindigkeit ändern wollen, müssen wir die //​Pinnummern//​ wissen!**+**Aber eines stört immernoch: Jedes Mal, wenn wir die Geschwindigkeit ändern wollen, müssen wir die //​Pinnummern//​ wissen!**
  
 Das ist besonders lästig, wenn die Funktionsaufrufe quer über das Programm verteilt sind, oder wir Programmmodule erstellen wollen, die auf beliebige Motoren zugreifen können sollen, ohne vorher zu wissen, welche dies sein werden. So könne es z.B. eine H-Brücke geben, die statt 3 nur 2 Pins als Eingänge (Richtung, PWM) hat. Wegen einer kleinen Hardwareänderung wie dieser an vielen Stellen Code ändern zu müssen, der sich mit ganz anderen Dingen (z.B. der Navigation in einem Labyrinth) beschäftigt,​ führt zu viel verschwendeter Zeit... Das ist besonders lästig, wenn die Funktionsaufrufe quer über das Programm verteilt sind, oder wir Programmmodule erstellen wollen, die auf beliebige Motoren zugreifen können sollen, ohne vorher zu wissen, welche dies sein werden. So könne es z.B. eine H-Brücke geben, die statt 3 nur 2 Pins als Eingänge (Richtung, PWM) hat. Wegen einer kleinen Hardwareänderung wie dieser an vielen Stellen Code ändern zu müssen, der sich mit ganz anderen Dingen (z.B. der Navigation in einem Labyrinth) beschäftigt,​ führt zu viel verschwendeter Zeit...
Zeile 49: Zeile 49:
 Die Sprache C++ und damit auch Arduino stellt dafür ein geeignetes Werzeug bereit: //Klassen// und //​Objekte//​. Die Sprache C++ und damit auch Arduino stellt dafür ein geeignetes Werzeug bereit: //Klassen// und //​Objekte//​.
  
-Eine Klasse legt die gemeinsamen Eigenschaften einer Gruppe von Objekten fest. In unserem Fall also ist darin z.B. festgelegt, dass alle Motoren die Möglichkeit haben, unterscheidlich viel Gas zu geben.+Eine Klasse legt die gemeinsamen Eigenschaften einer Gruppe von Objekten fest. In unserem Fall also ist darin z.B. festgelegt, dass alle Motoren die Möglichkeit haben, unterscheidlich viel Gas ('​throttle'​)zu geben.
 Im Programm sieht das dann z.B. so aus: Im Programm sieht das dann z.B. so aus:
  
Zeile 206: Zeile 206:
 <code c++>#​include "​MotorControl.h"​ </​code>​ <code c++>#​include "​MotorControl.h"​ </​code>​
 an den Anfang. an den Anfang.
 +===== Teil 2: Mehr Details zum Konzept =====
 ==== Klassen können aufeinander aufbauen (Vererbung) ==== ==== Klassen können aufeinander aufbauen (Vererbung) ====
 +Zu Beginn des Artikels hatten wir versprochen,​ dass es Möglich sein sollte, verschiedene Motortreibervarianten gegeneinander auszutauschen,​ ohne am Rest des Programmes etwas zu ändern.
 +
 +
 ==== Klassen können andere Objekte als Membervariablen enthalten ==== ==== Klassen können andere Objekte als Membervariablen enthalten ====
 ==== In C++ können Klassendeklarationen und der Code für die darin angekündigten Funktionen in unterschiedlichen Dateien liegen ==== ==== In C++ können Klassendeklarationen und der Code für die darin angekündigten Funktionen in unterschiedlichen Dateien liegen ====
techniken/objektorient.1397472878.txt.gz · Zuletzt geändert: 2016/01/21 12:45 (Externe Bearbeitung)