peterS.: Programmierparadigmen, Objekte/Konstruktoren, Instanzen

Beitrag lesen

gruss Christian S., hallo schnack,

ich bin gerade dabei Javascript zu lernen und habe mich schon ein bisschen mit Objektorientierung befasst.
Nur bin ich noch nicht ganz dahinter gekommen, was der Unterschied zwischen einem Objekt und einer Instanz ist.
Kann mir da bitte einer helfen??
Danke im voraus,
schnack

Da ist nicht so ganz klar. Häufig liest man dass die beiden Begriffe Synonyme sind in der OOP.
Bei JavaScript ists dann noch schwieriger, ...

... da die Sprache nicht streng OO ist.

@Christian

wie kommst Du denn auf dieses schmale brett?

welche programmierparadigmen muessen denn erfuellt sein,
um einer bzw. Deiner definition von OO zu genuegen?
was waere denn dann eine nicht strenge OO?

Es gibt ja keine richtigen Klassen, ...

es gibt auch keine falschen klassen, es gibt nicht mal
ansatzweise etwas, das man so bezeichnen koennte.

JavaScript ist klassenlos !

... und eigentlich ist alles ein Objekt.

und uneigentlich? sei doch nicht so schwammig in der formulierung ;-)

bis auf die typen [Undefined] und [Null] bzw. auf die primitiven
werte "boolean", "number" und "string" finden sich im sprachkern
nur noch objekte.

@all

mantra zur wissensauffrischung:

der durch ECMA 262 standardiesierte sprachkern von JavaScript
beschreibt eine multiparadigmensprache - JavaScript ist sowohl
reine funktionale programmiersprache als auch sprache der OOP,
denn sie erfuellt alle anforderungen, wie z.b. kapselung,
vererbung und vielgestaltigkeit. zur abstraktion braucht es in
der OO aber eben nicht immer klassen, diese laesst sich ohne
weiteres auch mit prototypisch eingesetzten objekten abbilden.
polymorphi (vielgestaltigkeit) ist eine weiter schon in die
sprache eingebaute staerke von JavaScript - ob nun funktionale,
objektorientierte oder parametrischer polymorphie ... alles kein
problem. und nicht jeder ist gluecklich darueber das z.b. der "+"
-operator (als bsp. fuer die polymorphie ueberladener operatoren)
ueberladen ist. hervorzuheben ist aber die ebenfalls durch das
sprachkonzept schon vorgegebene laufzeit-polymorphie (auch als
spaetes bzw. dynamisches binden bezeichnet).

das wars schon ... es geht aber noch mehr ...

z.b. laesst sich allein mit den mitteln des sprachkerns fuer
alle nativen JavaScript-objekte (d.h sowohl fuer instanzen von
im sprachkern eingebauten objekten/konstruktorfunktionen als auch
fuer instanzen selbstgeschriebener abstraktionen/konstruktoren)
ein sauberes signal-slot-konzept (als spezielle auspraegung des
beobeachter-entwurfsmusters) umsetzen, was ereignisgesteuertes
programmieren (animationsbibliotheken oder kapselung von HTTP-
requests/responses) unabhaengig von der DOM-API vereinfacht,
ohne dabei so korumpierbar zu sein, wie z.b. die so haeufig
eingesetzten callback-loesungen.

sendungsbewusste gruesse - so long - peterS. - pseliger@gmx.net

--
»Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - Douglas Crockford
ie:( fl:) br:> va:( ls:& fo:) rl:) n3;} n4:} ss:} de:µ js:} mo:? zu:]