PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : OO in C



Deever
06-04-2005, 13:40
Hey Amigos, wie geht's?

Nachdem ich mich nach JAVA nun auch mit C++ näher beschäftigt habe, möchte ich deren Vorzüge in Design und Programmierung in meiner "Heimsprache" C implementieren.

Exception handling läßt sich in C sowohl unter UNIX als auch unter Windous relativ einfach mittels der Funktionen setjump() und longjmp() aus der setjump.h und Wrappermakros darum (throw() und catch()) realisiern. Ich werde meine Beispielcodes dazu posten, sobald ich wieder Zugriff darauf habe...;)

Etwas schwieriger gestaltet sich die Vererbung, da dieses Feature von einem C-Compiler nicht unterstützt wird und es sich daher vermutlich nur sehr unschön als eine Art "Laufzeitvererbung" implementieren läßt. Die Idee dahinter ist ja, daß man bestehende structs um weitere Elemente erweitert, ohne die alten structs dabei ihrerseits als Elemente in die neuen zu stecken. Hat jemand hier eine Idee, wie sich das realisieren ließe?

Zu Overloading hingegen habe ich noch keine Ideen, wie das zu realisiern wäre. Overloading bedeutet ja, daß Funktionen mit gleichen Namen (aber natürlich nicht gleichen Signaturen) zu unterschiedlichen Funktionen kompiliert werden. Als Erweiterung dessen könnte man Templates betrachten.

Vielen Dank für eure Antworten! Ich hoffe, ich habe mit diesem Post eine interessante Diskussion in Gang gesetzt!

Gruß,
/dev

Joghurt
06-04-2005, 14:00
Schau dir mal GTK an, die implementiert ein OO-System mittels C

panzi
06-04-2005, 14:01
@Overloading:
Das kann man mit Funktionspointer machen, die in der struct angesiedelt sind.
Aber AFAIK macht Glib doch sowas in der art. Und warum geht C++ nicht?

t.knopp
06-04-2005, 22:34
Gibt es eigendlich zu OO in C irgendwelche Beschreibungen im Internet?
Ich habe im Internet noch nichts dazu gefunden (Nach C im Internet suchen ist irgendwie doof. Da bekommt man eher Vitamin C)
In gtk und im kernel wird doch sowas gemacht, oder?

panzi
06-04-2005, 23:15
Gibt es eigendlich zu OO in C irgendwelche Beschreibungen im Internet?
Ich habe im Internet noch nichts dazu gefunden (Nach C im Internet suchen ist irgendwie doof. Da bekommt man eher Vitamin C)
In gtk und im kernel wird doch sowas gemacht, oder?
In gtk, ja. Eben mit Glib od. wie das heißt. Im kernel? kA.
Schau dir eben mal Glib an: http://le-hacker.org/papers/gobject/index.html

Christoph
07-04-2005, 07:43
In der Bibliothek der Fernuni Hagen hatte ich mal ein Buch gesehen "Objektorientiert Programmieren mit C" (oder so ähnlich), in dem demonstriert wird, wie bestimmte objektorietierte Sprachfeatures mit reinem C emuliert werden können. Das Buch ist mehr ein Proof-of Concept bzw. eine Spielerei, sollte aber genau dem entsprechen was Du suchst.

Leider kann ich mich nicht an den Autor erinnern, so dass Du einen Bekannten, der in der Nähe von Hagen wohnt bitten müsstet dort mal nachzuschauen.

Boron
07-04-2005, 08:53
Es gibt ja noch die Sprache Objective-C.
Vielleicht ist das für dich interessant.

t.knopp
07-04-2005, 10:01
Objective C ist wirklich eine sehr interessante Sprache. Leider wird sie in der Linux Welt kaum benutzt. Die Syntax ist für C/Java Leute am Anfang etwas gewöhnungsbedürftig aber die Konzepte finde ich weit besser als die von Java oder C#. Aber naja.
Was ich von OO in C halten soll, weiß ich noch nicht so recht. Einerseits verbiegt man damit die Sprache, andererseits ist C so schön klein und nicht so riesig wie C++ oder Java.

BeS
07-04-2005, 13:29
Objective C ist wirklich eine sehr interessante Sprache. Leider wird sie in der Linux Welt kaum benutzt.

Objective C wird z.B. in GNUstep (http://www.gnustep.org) verwendet.