FSST - Hardwarenahe Programmierung
In separaten Dateien
Klassendeklaration in einer Header-Datei de_Bertl.h:
- Es werden wieder die notwendigen Header-Dateien mit den Praeprozessor-Direktiven inkludiert. (Zeile 2 und 3)
- Ist die Konstante DE_BERTL_H nicht definiert, liefert diese Direktivet 1 zurück, DE_BERTL_H wird definiert (Zeile 6) und der Code wird inkludiert bis zum #endif, sonst nicht. Somit würde die Klassendeklaration nur einmal im Projekt eingebunden. Zeile 5 und 13
- Erzeugung neuer Klassen: In Zeile 8 erfolgt die Deklaration der Klasse de_Bertl abgeleitet von der Klasse ur_Bertl mittels ":" und public.
- In Zeile 11 erfolgt die Deklaration des Befehles/Methode (Prototyping) Bewege().
// Datei de_Bertl.h #include "mbed.h" #include "ur_Bertl.h" #ifndef DE_BERTL_H #define DE_BERTL_H class de_Bertl : public ur_Bertl { public: void Bewege(); // nur Deklaration - Prototyping }; #endif
Klassendefinition in einer Source-Datei de_Bertl.cpp:
- Es werden wieder die notwendigen Header-Dateien mit den Praeprozessor-Direktiven inkludiert. (Zeile 2 - 4)
- Erzeugung neuer Befehle: In Zeile 6 erfolgt die Definition der Methoden mittels Scope-Operator (::) für die entsprechende Klasse (hier: de_Bertl :: Bewege()) und in Zeilen 7 - 9 steht der auszuführende Code.
// Datei: de_Bertl.cpp #include "mbed.h" #include "ur_Bertl.h" #include "de_Bertl.h" void de_Bertl :: Bewege() // Definieren { Move(); }
Hauptprogramm in der Source-Datei main.cpp:
- Es werden wieder die notwendigen Header-Dateien mit den Praeprozessor-Direktiven inkludiert. (Zeile 2 - 4)
- Instantiierung der Klasse: in Zeile 11 wird in main() ein Objekt karel der Klasse de_Bertl erzeugt (instatiiert).
- Aufruf der Befehle mittels Objektname (karel) einem Punkt (".") und dem Methodennamen (Bewege) den runden Klammern () und einem ";" zum Trennen weiterer Befehle. Zeile 13-15
// Datei: main.cpp #include "mbed.h" #include "ur_Bertl.h" #include "de_Bertl.h" // in eigene Dateien: Klassen-/Methodendeklaration in de_Bertl.h // Methodendefinition in de_Bertl.cpp int main() { de_Bertl karel; karel.Bewege(); karel.Move(); karel.ShutOff(); }