Objektorientierung

Objektorientierte Programmierung mit C

08.03.2010 | Autor / Redakteur: Frank Listing* / Martina Hafner

*Dipl.-Ing. Frank Listing ist seit 2002 Trainer und Projektcoach bei der MicroConsult GmbH mit dem Schwerpunkt Microsoft-Plattformen, objektorientierte Programmierung und Testen von Embedded Systemen und u.a. fachlich für das Thema .NET verantwortlich.

Obwohl C keine objektorientierte Sprache ist, ist die objektorientierte Programmierung mit ihr möglich. Dieser Artikel beschäftigt sich mit der Umsetzung von UML-Elementen aus dem Klassendiagramm in C-Code. Es wird gezeigt, was möglich ist und wo die Umsetzung mit der Programmiersprache C an ihre Grenzen stößt.

Die UML (Unified Modeling Language) hat sich mittlerweile auch im Embedded-Bereich als eine akzeptierte Notation etabliert. Sie wird in immer mehr Projekten eingesetzt, um den Aufbau und das Verhalten der Programme zu beschreiben.

Dabei gibt es verschiedene Bereiche in der UML, die mehr oder weniger nah am Code sind. Wo ein Paketdiagramm noch die Architektur beschreibt und weitgehend unabhängig von der später verwendeten Programmiersprache ist, muss bei der Erstellung von Klassendiagrammen schon an die spätere Implementierung gedacht werden, da nicht jedes in der UML unterstützte Merkmal auch in jeder Programmiersprache verfügbar ist.

Die bei der Embedded-Programmierung zurzeit am häufigsten verwendete Programmiersprache C ist nicht objektorientiert. Dies dient in vielen Projekten als Ausrede, um nicht über neue Methoden der Programmierung nachdenken zu müssen. Dabei findet objektorientierte Entwicklung im Kopf des Entwicklers statt. Sie lässt sich mit jeder Programmiersprache umsetzen.

Bei einer nicht objektorientierten Programmiersprache muss mit zusätzlichen Regeln und Techniken ein Umfeld geschaffen werden, das diese Art der Programmierung ermöglicht.

UML-Klassen in C umsetzen

Bild 1: Eine Klasse in UML dargestellt. Die Klassen enthalten Attribute (Daten, z.B. Attribut geschwindigkeit vom Typ integer) sowie Operationen (Funktionen, z.B. fahre():void).
Bild 1: Eine Klasse in UML dargestellt. Die Klassen enthalten Attribute (Daten, z.B. Attribut geschwindigkeit vom Typ integer) sowie Operationen (Funktionen, z.B. fahre():void).

Eines der wichtigsten Elemente in der UML ist die Klasse. Sie steht im Mittelpunkt der objektorientierten Programmierung. Das Klassendiagramm der UML stellt die im Projekt verwendeten Klassen mit ihren Attributen (entspricht den Daten) und Operationen (entspricht den Funktionen) und andererseits die Beziehungen zwischen den Klassen dar.

In der Programmiersprache C gibt es kein Syntaxelement für die Klasse. Allerdings gibt es die Struktur als Mittel, komplexe Daten strukturiert abzulegen. Im einfachsten Fall wird eine Struktur mit einem zugeordneten Satz von Funktionen definiert. Per Programmiervorschrift wird festgelegt, dass auf die Struktur nur über die speziellen Funktionen zugegriffen werden darf.

Listing 1-1, eine Klasse in C:

typedef struct

{

int anzahlRaeder;

char* hupTon;

int geschwindigkeit;

}Auto;

void Auto_init(Auto *this, int anzahlRaeder, char* hupTon);

void Auto_fahre(Auto *this);

void Auto_hupe(Auto *this, int anzahl);

Inhalt des Artikels:

»1 »2 »3 »4 »5 nächste Seite

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)



Spamschutz 

Bitte geben Sie das Ergebnis der Rechenaufgabe (Addition) ein:
Kommentar abschicken

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 338380) | Archiv: Vogel Business Media

Infodienst Software Engineering

Fachwissen, Tipps und mehr von Software-Experten für Software-Experten in der Embedded-Branche liefert der Infodienst Embedded Software Engineering Report.
Jetzt kostenlos abonnieren

Heftarchiv
ELEKTRONIKPRAXIS 9/2013

ELEKTRONIKPRAXIS 9/2013

Leistungsdichte durch SiC-Bipolar-Leistungsschalter

Weitere Themen:

Dimm-Verfahren für LED-Beleuchtungen
Eine Leiterplatte mit Identität
Zukunftsprojekt Industrie 4.0

zum ePaper

zum Heftarchiv

ELEKTRONIKPRAXIS 08/2013

ELEKTRONIKPRAXIS 08/2013

Hunter – auf der Jagd nach Signalen

Weitere Themen:

Strom für Start-/Stopp-Systeme
Folientastaturen für alle Fälle
Bleifrei löten – mit welchem Material?

zum ePaper

zum Heftarchiv

ELEKTRONIKPRAXIS 07/2013

ELEKTRONIKPRAXIS 07/2013

M12-Steckverbinder um 30 Prozent leichter

Weitere Themen:

PCB für Hochstromanwendungen
IGBT-Treiber: Fünf Fehler beim Design
Hausautomation mit Raspberry Pi

zum ePaper

zum Heftarchiv