Christoph: Vererbung vs. Komposition - Delegation als Mittel der Wahl in JS

Beitrag lesen

Moin.

Vielleicht nur noch mal zur Verdeutlichung meines Standpunkts: Aus klassischen OO-Sprachen (egal, ob prototypisch oder klassenbasiert) ist man es gewohnt, eine komplexe Vererbungshierarchie aufzubauen. In JavaScript tut man (zumindest ich ;)) das in der Regel nicht. Daher ist JavaScript keine klassische OO-Sprache.

Weiterhin wird man in JavaScript nicht dazu gezwungen, objektorientiert zu Programmieren. Also ist es keine reine OO-Sprache, obwohl Objekte ein integraler Bestandteil des Sprachkerns sind.

man kann aeusserst effizient programmieren, wenn man sich gar nicht erst
auf die von »constructor.prototpe« als fata morgana unscharf am horizont
versprochene emulation einer klassenbasierenden vererbung einlaesst.

... man bleibe in seiner komoden funktionalen oase und preise deren
    immerfrischen quellen [apply] und [call].

Aber dieser Programmierstil ist dann nicht mehr OO, da Daten und Funktionalität nicht in einem Paket zusammengefasst werden, sondern Funktionalität aus beliebiger Quelle nach gutdünken hinzugemischt wird. Was zugegebenermaßen ziemlich praktisch ist (habe ich bereits erwähnt, dass ich JavaScript - trotz aller Ecken und Kanten - mag?).

Über die genaue Klassifikation der Sprache Java/ECMA-Script lässt sich sicherlich noch herrlich, aber letztlich sinnlos weiterdiskutieren. Aber hey, solange man Spaß daran hat und dank Bänderriss auch keine andere Freizeitbeschäftigung, stehe ich dazu gerne weiter zur Verfügung ;)

Christoph

PS:

C++ wuerde ich aber schon als objektorientiert bezeichnen, obwohl es ja auch mehreren
programmierparadigmen genuegt.

I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (Alan Kay)