OOP
-
Hi!
welche ansätze gibt es in C objekt orientiert zu programmieren? -> Klassen, Polymorphie gibt es ja alles nicht;/ Kann man design patters auch in c realisieren?
cu
-
Das ist jetzt keine direkte Hilfe,
aber ich habe vor ein paar Jahren gegoogelt genau zu diesem Thema und interessante Dinge gefunden, wie bestimmte OOP-Techniken mit C nachempfunden werden können. :xmas1:
-
(e)vil schrieb:
Kann man design patters auch in c realisieren?
na klar, design patterns sind relativ unabhängig von programmiersprachen.
--> http://www.cs.rit.edu/~ats/books/ooc.pdf
........................
........................
........................
........................
........................
........................
........................
........................
........................
........................
........................
-
ich denke, der einfachste Ansatz is es, sich in C ein struct zu definieren, welches einen Satz von zugehörigen Funktionen hat. Damit kannste so was, wie Objektorientierung nachbilden, wenn dus unbedingt brauchst. Ansonsten, kannste dir auch mal Objective C an gucken, was allerdings natürlich nicht mehr ANSI C entspricht.
-
Vorden schrieb:
Ansonsten, kannste dir auch mal Objective C an gucken, was allerdings natürlich nicht mehr ANSI C entspricht.
naja, objC ist zu 100% C-kompatibel, d.h. C mit OO erweiterungen. nichts wurde abgeschafft (etwa die unter OO-fans so verpönten raw pointers) und nichts wurde verbogen (in dem sinne, wie z.b. stroustrup C vergewaltigt hat).
-
homofremulum schrieb:
(in dem sinne, wie z.b. stroustrup C vergewaltigt hat).
Aber du meinst doch nicht etwa C++???
-
C-freak schrieb:
Vorden schrieb:
Ansonsten, kannste dir auch mal Objective C an gucken, was allerdings natürlich nicht mehr ANSI C entspricht.
naja, objC ist zu 100% C-kompatibel, d.h. C mit OO erweiterungen. nichts wurde abgeschafft (etwa die unter OO-fans so verpönten raw pointers) und nichts wurde verbogen (in dem sinne, wie z.b. stroustrup C vergewaltigt hat).
Aber im Gegenzug muß man sich für den OO-Anteil eine völlig eigenständige Syntax merken (ob das ein Vorteil oder Nachteil ist, sei mal dahingestellt.
-
Ich will nochmal die Bemerkung einwerfen das OOP nix mit der Sprache zu tuen hat. Die Sprache kann OOP nur mehr oder weniger unterstützen und abhängig vom Umfang dieser Unterstützung ist dann OOP mit der Sprache mehr oder weniger aufwendig.
Die ersten C++ Compiler haben damals nix anderes gemacht als den Code erstmal in C umzuwandeln und den dann zu compilieren...
Einer der Vorläufer von C++ hies z.B. auch schlicht "C with classes"...
Die eigendliche Frage sollte eher sein, warum mit C OOP machen wenn man auch besser geeignete Sprachen dazu hat
-
> Aber du meinst doch nicht etwa C++???
ääh, ja ... oder hat er noch was anderes verbrochen?
-
ääh, ja ... oder hat er noch was anderes verbrochen?
Du hast was verbrochen! Habe ich dich um deine Meinung gefragt? Nein! Also Fötzchen halten, und weiterhin im braven Umgangston posten. Kleiner.
-
C++Freak schrieb:
Habe ich dich um deine Meinung gefragt? Nein!
doch, das hast du. schau mal 5 postings höher.
-
homostulle schrieb:
ääh, ja ... oder hat er noch was anderes verbrochen?
Ihr C'ler haltet ja alle zusammen, wenn's kritisch wird.
-
Ach Mist, hab' ich mich tatsächlich verzettelt beim Zitieren... Das Zitat sollte eigentlich dein Satz sein, net/ten/vista/homo/apeman/undertaker/...
-
das ist c style?
struct GBase { struct GBaseFuncTable *funcTable; void *privateData; }; struct GBaseFuncTable { void (*Draw)(struct GBase * obj); }; struct FramePrivateData { int x, y; int width; int height; }; void FrameDraw (struct GBase * obj) { struct FramePrivateData *Framedata = (struct FramePrivateData*)obj->privateData; printf ("Drawing a Frame at (%d,%d), width %d, height %d\n", Framedata->x, Framedata->y, Framedata->width, Framedata->height); } struct FrameFuncTable { void (*Draw)(struct Shape * obj); } FrameFuncTable = { FrameDraw };
-
(e)vil schrieb:
das ist c style?
...
klar doch. was dachtest du denn?