Zitat von
alzaimar:
Ich würde deine Sichtweise nicht als Merkmal der
OOP, sondern eher als Merkmal verteilter Systeme definieren. Die bloße Tatsache, das Smalltalk mit Nachrichten rumhantiert, gibt ihr ja nicht automatisch den alleinigen Besitzanspruch für die Eigenschaft 'OO'.
Natürlich ist Kommunikation nur eine Notwendig Bedingung für
OOP, keine Hinreichende und natürlich ist Kommunikation nur eine Bedingung.
Fakt ist, dass Delphi Programme Imperativ sein können. Der Beweis, dass Delphi aber nicht imperativ ist liegt in jedem TThread (ausser dem der Hauptanwendung/Main-Thread, wie auch immer). Den die imperative Programmierung geht definitiv von einer CPU aus, die sequenziell arbeitet (und es gibt ne Menge nicht sequentieller Programme in Delphi).
Fakt ist, dass Delphi Programme OO sein können. Der Beweis, dass Delphi aber nicht
OOP ist, liegt in jeder
dpr-Datei, die imperativ arbeitet (oder mindestens zu einem rein imperativen Programm umgeformt werden kann).
Fakt ist also, Delphi ist weder
OOP noch Imperativ. Frage geklärt.
Die Sache ist und bleibt doch nun mal, wie genau ist
OOP definiert. Was im Wiki steht ist natürlich keine allgemeingültige Definition (das Bedingt die Idee des Wikis).
Aber bei
OOP handelt es sich nur um ein Programmierparadigma, dass wie bereits erwähnt eine bestimmte Sicht auf Probleme ermöglicht und diese damit auf eine Bestimmte Art und Weise löst. Da habeb also alle Recht, die das hier (denke es war mehrfach, zuletzt jedenfalls von alzaimar) gesagt haben.
Das Smalltalk OO ist liegt nicht an der Kommunikation zwischen Objekten sondern vielmehr daran, dass ein Smalltalk Programm nur die Kommunikation von Ojekten ermöglicht. Mehr ist, soweit ich weiß, nicht möglich. Es ist vorallem nichts anderes mit Smalltalk möglich.
Natürlich dürfen auch in anderen Programmierparadigmen Objekte existieren und miteinander Kommunizieren. Aber solche Paradigmen erfüllen schon mal einen Teil der Anforderungen an die
OOP (da ist eine Verwechslung schon mal leicht).
Da
OOP nur ein Paradigma ist, kann man nicht wirklich sagen dass eine Sprache
OOP ist (auch wenn ich es hier schon mehrfach getan habe). Das liegt aber eher daran, dass wir doch dazu neigen unsere Sätze kontexsensitiv bilden (unsere Programme eher kontextfrei).
Natürlich kann man ein Paradigma nur einhalten oder nicht. Natürlich muss es die Möglichkeiten geben das Paradigma einzuhalten oder zu verletzen. Also kann eine Sprache nie
OOP sein, wenn z.B. Kapselung unmöglich ist, sie muss wiederum
OOP sein, wenn alle Bedingung immer erfüllt sind. Kann man das Paradigma erfüllen oder verletzen, ist keine Festlegung für die Sprache im allgemeinen sondern nur noch für einzelne Programme möglich.
Und damit sage ich es nochmal, Delphi ist weder
OOP noch nicht
OOP (oder wer möchte es ist gleichzeitig
OOP und nicht
OOP), hängt nur noch von der Auslegung (und meinen Denkfehlern) ab.
... und entspricht nahezu dem was alzaimar als letzten Satz schrieb, hm, bin wohl ein Letzes-Wort-Fetischist?!