[libooc] OO in ANSI C

18/07/2008 - 20:31 von Andreas Volz | Report spam
Hallo,

seit einigen Jahren habe ich ein Buch über objektorientierte
Programmierung in ANSI C hier liegen. Jetzt hatte ich etwas Zeit mal
tiefer rein zu schauen. Da ich gerne C++ und damit OO programmiere,
kommt mir das entgegen.

Auslöser war als ich wieder mal in einem C Programm mit Strings
arbeiten musste und mir das nicht wirklich Spaß macht.

Das ist dabei raus gekommen:

http://andreasvolz.wordpress.com/20...ibooc-001/

In einem Beispiel-Programm finde ich den Stil mit C Strings zu arbeiten
recht schön. Wie verhàlt sich das bei realen Programmen. Hat jemand
schon mal etwas àhnliches gebaut/benutzt und Erfahrungen damit?

Hat sonst jemand Hinweise oder Anmerkungen? Gerne auch
Verbesserungsvorschlàge zur Umsetzung.

Gruß
Andreas

Technical Blog <http://andreasvolz.wordpress.com/>
 

Lesen sie die antworten

#1 Stefan Reuther
19/07/2008 - 11:56 | Warnen spam
Andreas Volz wrote:
http://andreasvolz.wordpress.com/20...ibooc-001/

In einem Beispiel-Programm finde ich den Stil mit C Strings zu arbeiten
recht schön. Wie verhàlt sich das bei realen Programmen. Hat jemand
schon mal etwas àhnliches gebaut/benutzt und Erfahrungen damit?



Klar. Wenn ich in einem C-Programm Strings brauche, baue ich als erstes
eine String-Klasse. (Allerdings ist das selten; meistens nehme ich dann
gleich C++. Oder Perl. Oder Lisp.) Mein letztes C-Programm anstàndiger
Komplexitàt war eine Make-Implementation, die sowohl in einer 16-bit-
DOS-Umgebung als auch unter zeitgemàßeren Systemen laufen sollte, was
eine C++-Implementation ausschloss. Selbstverstàndlich waren das alles
Klassen ('Rule', 'String', ...).

Hat sonst jemand Hinweise oder Anmerkungen? Gerne auch
Verbesserungsvorschlàge zur Umsetzung.



Du verschenkst Typsicherheit mit Konstrukten wie
typedef void OOC_Class_t;
Besser ist etwas der Art
typedef struct OOC_Class OOC_Class_t;
Oder gleich auf die typedefs verzichten und das 'struct' mitschreiben.

Du machst deine Klassenobjekte opak, indem du nur Zeiger rausgibst.
Nachteil: es kann keine by-value-Objekte geben, Vorteil: stàrkere
Isolation der Nutzer von der Implementation. Ist 'ne Designentscheidung,
kann man so machen, muss man aber nicht. Ich habe es nicht gemacht.


Stefan

Ähnliche fragen