![]() | |
![]() |
| | Thread Tools | Display Modes |
#21
| |||
| |||
|
|
Frank Seitz wrote: Zur Diskussion, ob der Begriff "Klasse" im JavaScript-Kontext angebracht ist: Ich komme von Perl her, da gibt es auch keine Klassen im traditionellen Sinne und dennoch spricht man dort von "Klassen". Das hat den Vorteil, dass wenigstens jeder weiß was gemeint ist. Mit OOP in Perl habe ich mich zugegebenermassen noch zu wenig beschäftigt. Nach Querlesen von `man perltoot' denke ich aber, dass Du Dich irrst: Perl verfolgt anscheinend primär den klassenbasierten Ansatz der objektorienten Programmierung. Objekte sind Instanzen von Klassen, und Klassen erben nur von einer oder mehreren anderen Klassen. |
#22
| |||
| |||
|
|
Thomas 'PointedEars' Lahn schrieb: Frank Seitz wrote: Zur Diskussion, ob der Begriff "Klasse" im JavaScript-Kontext angebracht ist: Ich komme von Perl her, da gibt es auch keine Klassen im traditionellen Sinne und dennoch spricht man dort von "Klassen". Das hat den Vorteil, dass wenigstens jeder weiß was gemeint ist. Mit OOP in Perl habe ich mich zugegebenermassen noch zu wenig beschäftigt. Nach Querlesen von `man perltoot' denke ich aber, dass Du Dich irrst: Perl verfolgt anscheinend primär den klassenbasierten Ansatz der objektorienten Programmierung. Objekte sind Instanzen von Klassen, und Klassen erben nur von einer oder mehreren anderen Klassen. Das ist grober Unfug. Wenn du die prototypen von JS nicht mit Klassen vergleichen möchtest, dann müßte der Ansatz von Perl in deinen Augen nicht mal ein Objektorientierter sein (was für Java Programmierer auch der Fall sein dürfte). |
#23
| |||
| |||
|
|
J. Strübig wrote: Thomas 'PointedEars' Lahn schrieb: Frank Seitz wrote: Zur Diskussion, ob der Begriff "Klasse" im JavaScript-Kontext angebracht ist: Ich komme von Perl her, da gibt es auch keine Klassen im traditionellen Sinne und dennoch spricht man dort von "Klassen". Das hat den Vorteil, dass wenigstens jeder weiß was gemeint ist. Mit OOP in Perl habe ich mich zugegebenermassen noch zu wenig beschäftigt. Nach Querlesen von `man perltoot' denke ich aber, dass Du Dich irrst: Perl verfolgt anscheinend primär den klassenbasierten Ansatz der objektorienten Programmierung. Objekte sind Instanzen von Klassen, und Klassen erben nur von einer oder mehreren anderen Klassen. Das ist grober Unfug. Wenn du die prototypen von JS nicht mit Klassen vergleichen möchtest, dann müßte der Ansatz von Perl in deinen Augen nicht mal ein Objektorientierter sein (was für Java Programmierer auch der Fall sein dürfte). Nun drescht mal nicht so aufeinander ein. |
|
Perl ist klar objektorientiert, kennt aber keine Spezifikation von Attributen, nicht einmal über einen Prototyp. Eine Klasse ist in Perl nichts weiter als ein Namensraum, in dem Methoden gesucht werden. Nicht einmal ein Konstruktor ist vorgegeben. |
|
BTW: Java-Programmierer wissen i.d.R. nicht, was wahre Objektorientierung ist. |
#24
| ||||||
| ||||||
|
|
Thomas 'PointedEars' Lahn schrieb: struppi wrote: Es gibt kein prototype Objekt, du kannst keines erzeugen. Aber ein Prototyp hat eine prototype Eigenschaft. Alle von diesem Prototyp erzeugten Instanzen haben die Eigenschaften, die mit prototype definiert werden. Also ist der Prototyp vergleichbar mit Klassen in anderen Programmiersprachen. Das ist auch der Begriff für Klassen, den du in vielen Beschreibungen über OOP in Javascript findest. Das ist grober Unfug! Steht aber so u.a. auch in den von dir verlinkten Artikeln. |
|
Jeder Konstruktor und damit jedes Function-Objekt hat eine prototype-Eigenschaft, die ein Object-Object referenziert. Das ist exakt der grobe Unfug den ich oben erzählt habe. |
|
Prototypen sind nicht mit Klassen vergleichbar. Die Bezeichnung Klasse für einen Konstruktor zu verwenden, ist falsch, Das mag sein, nur schrieb ich 'vergleichbar' |
|
und was ist denn für dich eine Klasse? Wikipedia schreibt: Klasse ist in der Objektorientierung ein abstrakter Oberbegriff für die Beschreibung der gemeinsamen Struktur und des gemeinsamen Verhaltens von Objekten (Klassifizierung). Sie dient dazu, Objekte zu abstrahieren. Im Zusammenspiel mit anderen Klassen ermöglichen sie die Modellierung eines abgegrenzten Systems in der objektorientierten Analyse und dem objektorientierten Design. Diese Erklärung trifft nicht auf von Konstruktoren erzeugten Instanzen zu? |
|
und die entsprechenden "Beschreibungen über OOP in JavaScript" daher fehlerhaft. Du meinst den von dir verlinkten Wikipedia Artikel über protpypenbasierte Programmierung? |
|
Ich lese den so, dass in JS (bzw. in der protpypenbasierte Programmierung) auf die den Begriff Klasse verzichtet wird, stattdessen verwendet man von prototypen. |
![]() |
| Thread Tools | |
| Display Modes | |
| |