Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
You are viewing an older revision! See the latest version
HasA versus IsA
HasA (hat ein)¶
Composition (Komposition, Aggregation): Beschreibt die Beziehung zwischen einem Ganzen und seinen Teilen.
Das folgende UML Klassendiagramm zeigt die Klasse HasA, wobei die Klasse DigitalOut instanziiert wird (Klasse HasA hat ein DigitalOut-Element):
Dieses UML-Diagramm der Klasse HasA wird in den folgenden C++ Code umgesetzt:
class HasA
{
private:
DigitalOut _led;
public:
HasA(PinName ld) : _led(ld) {}; // Constructor
void LedOn() {
_led = 1;
}
void LedOff(){
_led.write(0);
}
}
- In Zeile 4 wird eine private Membervariable (Attribut) _led des Datentypes DigitalOut der Klasse HasA hinzugefügt.
- In Zeile 7 wird ein parametrisierter Konstruktor verwendet und die private Membervariable _led mit dem übergebenen Parameter Pin ld initialisiert.
- In Zeile 8 und 11 werden zwei Methoden (Memberfunktionen, Elementfunktionen) inline Implementiert.
- Zeile 9 verwendet eine Abkürzung zur write-Methode in Zeile 12 den überladenen = Operator zum Einschalten der Led
- Zeile 12 verwendet die write-Methode.
In Zeile
(MyLed hat ein DigitalOut-Pin). Allerdings wird erst die Adresse des eigentlichen Zieles - auf eine Klasse DigitalOut – erzeugt und im parametrisierten Konstruktor - selber Name wie Klasse - mit einem Pin-Namen als Parameter wird ein neues DigitalOut Objekt led1 mit Pin ld1 erzeugt: