Beiträge von ZeHa im Thema „C: Emulation von Klassen“

    aber die wesentlich sind vorhanden, wenn sich eine Sprache Objektorientiert nennt

    Ich habe nirgendwo von "objektorientierten Sprachen" gesprochen, sondern genau vom Gegenteil - es geht hier um NICHT-objektorientierte Sprachen, und wie man in diesen dennoch objektorientiert programmieren KANN. Das ist das ganze Thema des Threads.

    Ich finde es immer wieder spannend, wie du Quellen auslegst und ins Gegenteil verkehrst. ;)

    Krasse Worte von jemandem, der den Sinn des Threads offenbar nicht mal verstanden hat. Aber danke, Deine Art zu diskutieren koennte man auch mitunter als "spannend" bezeichnen :rolleyes:

    Ich glaube, die Diskussion hatten wir schon öfter. ;)

    Daran kann ich mich nicht erinnern

    und mir dann erklären, wie du das alles in jeder Sprache realisieren willst

    Wenn Du Dir den von Dir verlinkten Artikel durchliest, wirst Du feststellen, dass generell nicht alle OOP-tauglichen Sprachen auch wirkliche alle OOP-Features unterstuetzen ;)

    Man kann die Begriffe natürlich für sich selbst beliebig umdefinieren. Aber dann wird das eben schwierig in der Diskussion mit anderen.

    Man kann auch alles schwarz-weiss sehen und sich an Definitionen festklammern, aber auch das macht eine Diskussion mit anderen nicht unbedingt leichter ;)

    Warum soll ich etwas kontruieren, was die Sprache nicht kann?

    Weil man, wenn man sauber programmiert, ggf. sowieso so programmieren wuerde. Objektorientierung ist ja erstmal nur ein Paradigma, die Sprache selbst muss das nicht zwingend koennen. Es wurde aber natuerlich irgendwann in manche Sprachen eingebaut, wie z.B. dann eben C++ (was zu Beginn "C mit Klassen" genannt wurde).

    Das ist dann eine etwas eingeschränkte Sicht auf Objektorientierung. Wie machst du das mit Interfaces und Vererbung? Baust du das dann auch alles nach?

    Kommt drauf an, wie intensiv man es benoetigt. Wie ich schon sagte, funktioniert Vererbung ein stueckweit auch schon von Haus aus - denn die Basis-Methoden funktionieren auch mit abgeleiteten Structs. Wenn Du Methoden jedoch ueberschreiben willst, musst Du in irgendeiner Form Sprung-Tables nachbauen. Wie man das nun am besten machen wuerde, weiss ich auch nicht, aber ich vermute da kann man was mit Funktions-Pointern machen.

    Wie gesagt, es gibt ja auch bekannte Libs, die nach dem Prinzip funktionieren. Die werden das schon irgendwie gelost haben :)

    next_i

    Ja das mag sein, zudem duerfte das K&R-Buch auch noch etwas zu alt dafuer sein. Der OOP-Hype kam ja erst in den 90ern oder so. Aber z.B. bekannte Libs wie Gtk oder SDL sind auch so aufgebaut, gibt bestimmt noch viele mehr, aber die beiden fallen mir da jetzt so spontan ein. Habe mit C auch nicht sooo viel am Hut, das koennen andere bestimmt besser erklaeren. Fakt ist aber, dass Objektorientierung nicht zwingend von der Sprache unterstuetzt werden muss, sondern es sich dabei eben, wie gesagt, um ein Paradigma handelt, also eine Art und Weise, wie man programmiert, bzw. wie man die Architektur aufbaut/betrachtet.

    Warum soll ich etwas kontruieren, was die Sprache nicht kann?

    Weil man, wenn man sauber programmiert, ggf. sowieso so programmieren wuerde. Objektorientierung ist ja erstmal nur ein Paradigma, die Sprache selbst muss das nicht zwingend koennen. Es wurde aber natuerlich irgendwann in manche Sprachen eingebaut, wie z.B. dann eben C++ (was zu Beginn "C mit Klassen" genannt wurde).

    Es gibt uebrigens auch unzaehlige C-Libs, die diesem Paradigma folgen. Ist also nix ungewoehnliches und auch keine neue Entdeckung.

    Sogar Vererbung ist ein stueckweit moeglich, da eine Funktion, die einen Struct-Pointer uebergeben bekommt, auch mit davon abgeleiteten Structs funktioniert. Nur virtuelle Methoden usw erfordern dann noch etwas mehr Arbeit, da weiss ich aber aus dem Stegreif auch nicht, wie man das nachbilden wuerde. Bzw ich kanns mir ein stueckweit denken, aber ich muesste da trotzdem erstmal rumprobieren.