LE SUPER DE JAVA, EN JAVASCRIPT .... LA SUPER CLASS ;)

XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 - 13 févr. 2009 à 02:24
cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014 - 19 mars 2009 à 00:21
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/49258-le-super-de-java-en-javascript-la-super-class

cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014
19 mars 2009 à 00:21
salut emericv , en faite le $super de prototype est plus contraignant, d'abord il faut indiquer dans la fonction en 1er arguments le $super, (prototype parse les arguments de la fonction), c'est pas très pratique, en plus le $super ne référence que la fonction surdéfinit, alors qu'avec mon script on peux choisir kel fonction parente à appliquer (ou attribut).
En faite me suis rendu compte il y a peu que mootools utiliser une fonction assé similaire ... ,voilà a++
emericv Messages postés 16 Date d'inscription samedi 5 février 2005 Statut Membre Dernière intervention 24 novembre 2009
11 mars 2009 à 21:10
Intéressant...

Je me trompe ou tu t'est inspiré de la bibliothèque Prototype (http://prototypejs.org) avec son constructeur Class qui propose quelque chose de très similaire... ?
Si oui, quel est le plus par rapport à cette bibliothèque ?
cs_foxz Messages postés 101 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 25 février 2009
25 févr. 2009 à 18:33
polymorthisme : bah c'est toi qui vas te taper le boulot :-))

inh : hehe... je met a dispo le source à dispo ce soir

abstract : j'en saisie pas reelement l'utilité... je travail trop salement pour ca :-))
cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014
25 févr. 2009 à 16:35
et sinon pas de abstract?? ;)
cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014
25 févr. 2009 à 16:24
salut foxz, je suis impatient de voire ça !!

tu fait du multihéritage sans gestion native du polymorphisme (instanceof) ,sinon c'est impossible ...

t'as réussi a appeler inh(); sans this devant?? t'as fais comment?

a+
cs_foxz Messages postés 101 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 25 février 2009
24 févr. 2009 à 21:28
voila... c'est fait.... :-)

la déclaration est comme dans ta lib
var x=$class(_class,superclass)...

avec une nuance...
var x=$class(_class,superclass,superclass,superclass...)
oui, oui, du multi heritage en javascript

j'ai simplifier l'appel à la classe hérité...

var x=$class({
constructor:function(){},
$go:function(){ // $=declare une méthode override
...
inh(); // appel automatiquement la méthode hérité
...
}
},superclass)

je posterais les sources plus tard.
cs_foxz Messages postés 101 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 25 février 2009
21 févr. 2009 à 21:13
je programme à l'arrache car c'est justement mon taff (oneshoot)...
si rhino t'interesse je suis à ta dispo pour te filer qq tuyaux.

je deposerais ma lib fthread peut-etre plus tard
(je vais la reprendre pour la commenter sinon je sens que je vais encore me faire descendre en flamme...)

je pense que je vais te piquer qq idée pour amelioré ma lib fobj.

abstract : lol !
cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014
21 févr. 2009 à 17:18
merci pour vos commentaire les gars ;) !

alors concernant le polymorphisme , tu dois savoir que une instance peux etre de plusieurs types, en js sa se traduit avec la fonction instanceof. Dans ton script tu pourrais facilement le simuler avec une fonction te retournant les types de l'objet construit avec des appels successif au méthode surdéfinit. mais bon autant le faire avec les fonctions prédéfinit ...

Concernant le xpath , on pourrais comparer ça au sql du xml , le top ça aurait été coupler ton script à jquery , qui lui utilise les sélecteur css 3.0 ...

J'ai regardé tes sources , et je dois avouer que l'on a pas le même niveau ;) , je sais faire que du flash php et js :( . Peux être un jour j'aurais le temps de m'intéresser au moteur de rendue html ... c chaud pour le moment...
J'ai question sinon, est-ce qu'il est possible de modifier rhino et apporter ainsi au javascript d'autre fonctionnalité, comme un intégration d'un système de classe par exemple (je crois que le js du java donc rhino l'intègre déjà?je sais plus)?

"je te passerai ma lib fthread" heuu , tu veux dire koi par là?

"pour info : je programme à l'arrache..." lol moi aussi, c'est même pas mon taff :(, bientôt j'espère ...

pk la notion d'abstract? juste pour faire les choses dans le règle de l'art ;) , j'ai essayer le private et protected , mais ça devient tros lourd à utiliser , il aurait fallu passer par une fonction pour récuperer les variables , pis au final ça n'aurait pas apporter grand chose, perso l'encapsulation des données, j'ai jamais vraiment compris à koi ça servait , sureté du code ou meilleur compilation ?? je l'utilise , mais pk ? lol

a++
cs_foxz Messages postés 101 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 25 février 2009
21 févr. 2009 à 02:25
lakichemole:toujours aussi constructif ?
kimjoa : pourquoi apporter la notion d'abstract dans ton poo ?
bientot tu vas nous faire du private et du protected ??? :-))
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
20 févr. 2009 à 09:51
du moment que ça wizzz...
cs_foxz Messages postés 101 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 25 février 2009
20 févr. 2009 à 00:20
merci aussi...
polymorphisme : euh... que veux tu dire par la ?

xpath : c'est pas une fonction hardcoder dans FF ca ?
sinon il y a xsname qui scan que les tag avec un name="xs"

bonne idée le coup de la "regle" dans les styles en cascade...
j'y reflechirais...
sinon pour info : dans les styles en cascade les styles se répète automatiquement.

mais actuellement je suis à mille lieu de m'occuper de xstyl.
(je ne fais plus trop de prod web en ce moment)
pour le moment je m'amuse pas mal avec mozilla::rhino...
(scripting)

je te passerai ma lib fthread à l'occaz... totalement dans mon style : pas commenté et super tordu...

pour info : je programme à l'arrache...
cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014
17 févr. 2009 à 02:53
salut foxz , merci pour la note :) !!

lol le thread , bonne idée, mais j'en aurais pas l'utilité :( !!

j'ai regardé t'as source notement le fichier fobj, dommage que tu ne prenne pas la peinde de commenter un peu, en plus avec les noms de variables genre a,b,c ect ... c chaud !!

mais sinon bravo, j'ai testé , pas de problème , mais je préfère mon script ;). Tu connais la propriété arguments, ki référence tout les arguments passé à la fonction ;) et apply qui marche comme call mais avec un tableau en 2eme arguments, si on connais pas précisement les arguments a passé...
Sinon c'est dommage que ton script ne gère pas le polymorphisme , enfin que tu ne fasse pas hériter des classe plutôt que des objet.... (d'ailleur vais modif le mien pour ke les classe abstraite le gère aussi )

Concernant xstyle c'est vraiment sympa, ce ki serait cool ca serait de le coupler avec un selecteur xpath ou css, genre j'écris une règle xstyle qui s'appliquera que dans les éléments enfant satisfaisant la requête prédéfinit (un peu comme jquery), concernant les cascade énuméré , il aurait été vraiment cool qu'au lieu de les énuméré une par une , l'on passer par un système de boucle , par exemple pour créer une ligne sur deux (ou plus)de couleur différente ...

si j'ai des éclaire de génie dans la nuit , je te les postes ;)
a++
cs_foxz Messages postés 101 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 25 février 2009
16 févr. 2009 à 22:05
hehe... j'ai pondu un truc équivalent il y a plus de 3 ans...
bientôt tu vas faire du xstyl :-)))

idee : encapsuler un setInterval pour faire un semblant de thread
(disons plutot un semaphore)
cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014
13 févr. 2009 à 19:11
de rien ;)
mickaelpfr Messages postés 197 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 avril 2009 2
13 févr. 2009 à 18:23
Hé bien ça si ce n'est pas de l'arrachage de goule en bonne et du forme ^^

alors droit de réponse ^^ pour une fois je n'étais nullement agressif , j'essayais justement de comprendre , merci de m'avoir instruit sur l'héritage :-)
Pour ce qui est de mes sources , je ne les postes pas sur ce site mais sur un autre dont je tairais le nom ( cause de rivalité parait-il entre les administrateurs .... )
mais sur lequel tu pourras retrouver qqs une de mes sources ( MP moi si tu veux ... )

Merci pour les explications :-)
cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014
13 févr. 2009 à 16:14
merci bcp de ton encouragement lakichemole!!, toi aussi gentlemanmd :)

mickaelpfr , tjrs aussi courtois et respecteux du travail des autres!! c'est une habitude chez toi!! d'ailleurs j'attends vivement que tu nous poste une source, enfin si tu t'y risque, car t 'a pas partagé bcp ici...

Sinon ,tu connais un peu en héritage?
rappel : il est admis, cette relation : si maClasse EST aussi une autreClasse, alors je peux faire hériter maClasse, avec autreClasse, et dans ce cas j'ai accès au attribut/methode de autreClasse directement dans maClasse.
Ce que tu nous présente, n' a rien a voire avec l'héritage, c'est juste une méthode relationnelle...,
de plus t'instancie autant de fois que t'as de parent, et de parent de parent ect...

t'a technique ne met pas en œuvre le polymorphisme.
de plus tu dit que mon objet soit une instancce ou non j 'ai accès au méthode parent! faux, si instancié, ok,j ai accès au parent via this.parent.methode( this.parent.parent...methode si parent et deja le parent de )(super lourd, et faut connaitre précisement la chaine de parent) , et si non instancié, impossible a moin de mettre parent dans le prototype, et dans se cas sa donne this.parent().
rappel : pour hériter une classe on fait maclasse.prototype=new parent() ,et ensuite on attribut les méthode/prop de ma classe, ainsi t'a accès au méthode/prop de ton parent directement via this, et ca gère le polymorphisme.
le problème de cette méthode, c'est que il faut un moyen de gérer la sur-définitions de méthodes et attribut, d'ou mon script. En java on passe par la methode super ki va appeller le 'prototype' parent pour récupérer la propriété recherché,
le probleme, c'est que super ne peux par être écris dans le prototype,car il sera sur-définit a chaque fois que j'hérite, d'ou ma méthode des porté des variables... voire le pavé du dessus :)

voila j'espère t'avoire éclairé un peu , et la prochaine fois, pour moi comme pour les autre , stp reste cool , tout le monde n'est pas aussi intélligent ke toi ... ;), bye
gentelmanmd Messages postés 24 Date d'inscription mardi 17 juillet 2007 Statut Membre Dernière intervention 24 février 2010
13 févr. 2009 à 11:33
Merci bcp.
mickaelpfr Messages postés 197 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 avril 2009 2
13 févr. 2009 à 11:31
truc bète , mais pourquoi ne pas référencer l'objet directement dans une propriété de l'objet enfant ?

var monparent = function(){...}

this.parent = monparent();

Qu'il soit instancié ou non , il aura accès aux méthodes / propriétés du parent
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
13 févr. 2009 à 11:30
Toujours aussi motivé par le POO KimJoa une bonne note pour t'encourager!
cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014
13 févr. 2009 à 04:07
merci de ton commentaire XtremDuke. je suis en train de refaire cette source, car pour le moment, $super ne référence que la méthode du mème nom de la classe hérité, alors que le super de java permet de choisir la méthode a éxécuter ou l'attribut a séléctionner. Le problème c'est que je peux difficilement passer par le prototype , car si je définit une méthode dedant référencant la classe hérité, je redifinirais cette mème méthode si la classe hérité , hérite dejà d'une autre...
La méthode que j'utilise et centré sur la porté des variables,en effet lorsque que l'on créer une fonction, celle si aura accès au variable définit dans son context. Par contre si je creer une référence, de la fonction, les variables dont aura accès la fonctions seront tjrs celle de son context d'origine , sauf celle non définit avec le mot clé var.
Le probleme est que si je définit une variable sans le mot clé var, celle-ci sera reécrassé et ne restera pas en mémoire ... en gros le variable définit avec var sont en kelke sorte les propriété d'instance de la fonction, et celle sans des propiété classique... le probleme se rencontre notement dans les fonctions récursive...
Le probleme de cette méthode,( à voire une fois fini, et benché a mort :) ) c'est que je suis obliger de créer une référence vers une fonction super prédéfinit, pour chaque fonction du prototype original(non étendue avec sa super classe), ce ki peux alourdir la mémoire consommé, de plus je suis obliger de garder kelke par l'objet super de la classe non étendue , mais impossible de le mettre dans le prototype (répétition avec les super classe), ni en static, (car je passe par le prototype, this.contructor).
pour le moment, ca permet quand mème pas mal de chose, enfin ca raccourcit bien les éternel, Masuperclass.prototype.maMéthodeOverrider.call(this).
de plus de ce ke j ai vue en héritage javascript,on utilise soit le l Object.prototype (mauvaise idée, tout objet héritant de Object)-> base.js, soit on est obliger de passer le super en 1er argument de la fonction (contraigant, et impossible de référencer une autre méthode que celle du meme nom)-> prototype, soit passe par de lourd traitement lourd, et une utilisation obscure -> prototypal, ou jsiner.
voila ptete ke demain j aurais plus avancé, a++
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
13 févr. 2009 à 02:24
Bonne idée de parler de l'héritage en POO.

Source très intéressante.
Rejoignez-nous