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

    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 ;)

    Steht da auch, dass Sprachen OOP-tauglich sind, die kein einziges OOP-Feature unterstützen?

    Natürlich sind nicht immer alle Features implementiert, aber die wesentlich sind vorhanden, wenn sich eine Sprache Objektorientiert nennt. Ich finde es immer wieder spannend, wie du Quellen auslegst und ins Gegenteil verkehrst. ;)

    Doch doch. Wir hatten genau diese Diskussion schon und andere. Und durch geschickte Argumentation wirst du wie immer recht behalten, irgendwie. Und ich habe diesmal meine Ruhe und verabschiede mich frühzeitig aus der Diskussion.

    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.

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

    Du verwechselst vermutlich Objektorientierte Prorgrammierung mit Strukturierter Programmierung. Die Strukturierte Programmierung (Fachbegriff in der Informatik) stellt deutlich weniger Anforderungen an eine Programmiersprache. Man braucht zum Beispiel lokale und globale Variablen und bestimmte Kontrollstrukturen (also mit Commodore-Basic geht es nicht).

    Objektorientierte Programmierung ist in der Informatik ganz eindeutig definiert. Hier kannst du dir nochmal die Prinzipien durchlesen und mir dann erklären, wie du das alles in jeder Sprache realisieren willst,

    Bitte melde dich an, um diesen Link zu sehen.

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

    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?

    Man kann das alles machen, aber wozu?

    Weil man mit z88dk und CC65 leistungsfähige C-Cross-Compiler für ZX Spectrum und C64/Atari800/Commander X16 hat.

    Ob es dafür C++-Cross-Compiler gibt, weiß ich nicht.

    Außerdem ist mir persönlich C++ bisher nicht so sympathisch.

    Ich würde gern lieber in C schreiben. Aber diese Möglichkeit, solche Pseudo-Objekte mit all den Daten und Methoden "darin", an Funktionen zu übergeben und damit dort auf einfache Weise weiterzuverarbeiten, erscheint mir außerordentlich nützlich.

    Wenn es für ein System keine einsetzbare objektorientierte Sprache gibt, dann programmiere ich einfach prozedural. Auch da habe ich meine Datenobjekte (Instanzen) und Prozeduren, die sie verarbeiten. Die Projekte auf den 8-Bittern habe eine überschaubare Größe. Da bietet mir der pseudo-objektorientierte Ansatz keine wirklichen Vorteile.

    Ausserdem widerstrebt es mir, an eine Funktion Daten zu übergeben, die sie gar nicht braucht (Verletzung eines Cleancode-Prinzips). Bei kleinen Beispielen mag das ganz gut funktionieren, aber wenn das Programm etwas umfangreicher wird, bezweifle ich, dass man den Überblick behält.

    Bei einer Klasse ist das anders. Die muss in sich konsistent arbeiten.

    Du kannst ja mal von deinen Erfahrungen berichten, wenn du das erste Projekt programmiert hast.

    Man kann das alles machen, aber wozu? Ich möchte meine Programme immer so einfach und verständlich, wie möglich halten. Warum soll ich etwas kontruieren, was die Sprache nicht kann? Das macht doch alles unnötig kompliziert.

    Klassen verwende ich, wenn ich objektorientiert programmieren möchte. Dann brauche ich aber auch Interfaces, Instanzen, Vererbung. Polymorphie und was mir die objektorientierte Programmierung sonst noch so bietet.

    Wenn ich objektorientiert Programmieren möchte, dann nehme ich eine geeignete Sprache.