Der Martin: C, C++ oder C# noch in diesem Leben lernen?

Beitrag lesen

Hallo,

... obwohl ich vom Denkansatz her auch in C oder Assembler objektorientiert programmiere.

Magst Du dazu noch ein paar Schlüsselworte verlieren? Wie machst Du das? Auch in Assembler?

na klar. ;-)
Eine Grundidee der OOP ist doch, Daten und den zugehörigen Code zu einer Einheit zusammenzufassen und den Code so zu implementieren, dass die genaue Realisierung von außen betrachtet unerheblich ist, weil eine klar definierte Schnittstell existiert (-> Kapselung).

Das kann man auch in reinem C oder Assembler machen: Man schreibt ein in sich abgeschlossenes Programmodul, das eine einheitliche Aufrufschnittstelle hat, und macht nur diese Schnittstelle und die zugehörigen Datentypen und Strukturen nach außen bekannt.

Ein weiteres Paradigma der OOP, die Polymorphie, besagt, dass unterschiedliche Klassen/Objekte sich nach außen hin gleich darstellen, so dass es dem übergeordneten Code egal sein kann, welches Objekt genau darunter liegt. Das realisiere ich dadurch, dass ich Module mit unterschiedlicher Funktion, aber möglichst gleicher Schnittstelle schreibe, die dann problemlos austauschbar sind.

Und der dritte Grundsatz der OOP, die Vererbung, kann ebenso auf Modulebene realisiert werden: Modul A benutzt Modul B, ergänzt ein bisschen spezielle Funktionalität, und gibt sich nach außen doch als Typ B aus.

Ich kenn das kaum, sah bisher nur push und mov und eax (;-). Aber vielleicht sachte und erstmal, was Denkansatz OOP in C bedeutet?

Es ist schwierig, das jetzt in ein paar Sätzen wiederzugeben. Der Knackpunkt ist, dass OOP ein Denkmodell der Programmierung ist, das man auch anwenden kann, wenn die verwendete Programmiersprache selbst keine OOP-Elemente hat.

Findet sich das auch in den Kerneln wieder oder den Header-Dateien?

Prominentestes Beispiel: Der Windows-Kernel ist größtenteils in C, zu einem kleineren Teil in Assembler geschrieben. Trotzdem ist Windows in weiten Teilen objektorientiert gestrickt.

Schönen Abend noch,
 Martin

--
Wichtig ist, was hinten rauskommt.
  (Helmut Kohl, 16 Jahre deutsche Bundesbirne)