Hallo,
Selbstverständlich erkenne ich an, das man eine an die OOP angelehnte Denkweise auch auf Assembler-Niveau umzusetzen versuchen kann.
nein, bereits die Betrachtungsweise qualifiziert den Ansatz als OOP.
Es fehlt jedoch letztlich die direkte Bindung zwischen Daten und Methoden.
In meinem abstrakteren Fall geschieht sie durch meine Festlegung als Programmierer, du legst aber anscheinend Wert darauf, dass sie auch durch Kontrollmechanismen des Compilers überwacht wird. Denn mehr ist es nicht: Durch die Deklaration einer Klasse teile ich dem Compiler mit, dass ein bestimmter Datensatz und eine Menge von Funktionen zusammengehören sollen. Am Code ändert das im Prinzip nichts.
Ich kann meiner Datenstruktur sogar noch Zeiger auf die zugeordneten Funktionen unterbringen, wenn ich Vererbung und virtuelle, überschreibbare Methoden von vornherein vorsehen möchte. Dann entspricht der so erzeugte C-Code beinahe exakt dem, was ein C++-Compiler aus einer vergleichbaren Klassendeklaration macht.
Die von dir und Tom gewünschte Verbindung beruht nur auf Sinnhaftigkeit.
Nein, auf Disziplin. Auf der Disziplin des Programmierers, die Funktionen wirklich nur für den Zweck und mit den Daten zu nutzen, für die sie gedacht sind.
Funktionen und Daten bleiben getrennte Dinge.
Das sind sie in der "echten" OOP auch. Die Verbindung wird dort nur durch die VMT (Virtual Method Table) des Objekts hergestellt - und statische Methoden sind darin nicht einmal enthalten; die werden ausschließlich durch den Compiler zugeordnet, der ihren Aufruf in einem falschen Kontext nicht erlaubt.
Bei dem, was landläufig als OOP bezeichnet wird, ist die Bindung jedoch durch die Programmiersprache und deren Compiler/Interpreter sichergestellt. Eigenschaften und Methoden bilden eine Einheit, _ein_ Objekt.
Sicher - das sind aber nur Erleichterungen bzw. Überwachungen des Compilers während der Übersetzung des Codes. OOP ist aber, wie gesagt, auch ohne diese Überwachungen möglich, wenn man selbst dafür sorgt, dass die Regeln eingehalten werden.
Es wird kein Objekt daraus, nur weil bestimmte Vorgehensweisen für bestimmte Daten vorgesehen sind, sie aber letzlich keine Einheit bilden.
Nein, sondern es wird ein Objekt daraus, indem der Programmierer sagt: "So sei es."
Schönen Abend noch,
Martin
Wenn man keine Ahnung hat - einfach mal Fresse halten.
(Dieter Nuhr, deutscher Kabarettist)