Le Sat, 18 Feb 2006 00:37:47 +0100, Eric Jacoboni a écrit :
En Ruby, on ne peut pas surcharger une méthode, mais comme il y a les paramètres avec valeurs par défaut et les varargs on s'en passe. En Java, il n'y a pas les paramètres avec valeurs par défaut, donc on surcharge souvent. En C++ et en Ada, on a les deux.
Aaaaah. BOn, alors je n'utilise jamais la surcahrge et toujours la redéfinition. Et je n'ai pas l'impression d'être le seul :)
-- L'Algérie était au bord du gouffre, aujourd'hui elle a fait un grand pas en avant. Aït Ahmed.
Le Sat, 18 Feb 2006 00:37:47 +0100, Eric Jacoboni a écrit :
En Ruby, on ne peut pas surcharger une méthode, mais comme il y a les
paramètres avec valeurs par défaut et les varargs on s'en passe. En
Java, il n'y a pas les paramètres avec valeurs par défaut, donc on
surcharge souvent. En C++ et en Ada, on a les deux.
Aaaaah. BOn, alors je n'utilise jamais la surcahrge et toujours la
redéfinition. Et je n'ai pas l'impression d'être le seul :)
--
L'Algérie était au bord du gouffre, aujourd'hui elle a fait un grand pas
en avant.
Aït Ahmed.
Le Sat, 18 Feb 2006 00:37:47 +0100, Eric Jacoboni a écrit :
En Ruby, on ne peut pas surcharger une méthode, mais comme il y a les paramètres avec valeurs par défaut et les varargs on s'en passe. En Java, il n'y a pas les paramètres avec valeurs par défaut, donc on surcharge souvent. En C++ et en Ada, on a les deux.
Aaaaah. BOn, alors je n'utilise jamais la surcahrge et toujours la redéfinition. Et je n'ai pas l'impression d'être le seul :)
-- L'Algérie était au bord du gouffre, aujourd'hui elle a fait un grand pas en avant. Aït Ahmed.
Eric Jacoboni
Emmanuel Florac writes:
Aaaaah. BOn, alors je n'utilise jamais la surcahrge et toujours la redéfinition. Et je n'ai pas l'impression d'être le seul :)
Ben, la surcharge avec un langage sans typage statique, c'est un peu difficile de toutes façons...
Mais les deux ne résolvent pas les mêmes problèmes.
-- Eric Jacoboni, ne il y a 1443705924 secondes
Emmanuel Florac <eflorac@imaginet.fr> writes:
Aaaaah. BOn, alors je n'utilise jamais la surcahrge et toujours la
redéfinition. Et je n'ai pas l'impression d'être le seul :)
Ben, la surcharge avec un langage sans typage statique, c'est un peu
difficile de toutes façons...
Mais les deux ne résolvent pas les mêmes problèmes.
Le Sat, 18 Feb 2006 13:27:00 +0100, Eric Jacoboni a écrit :
Ben, la surcharge avec un langage sans typage statique, c'est un peu difficile de toutes façons...
Aaaah OK. Faut que je me remette au C++ moi :)
-- Quis, quid, ubi, quibus auxiliis, cur, quomodo, quando
Chris
En fait, la protection du code, des attributs, etc. est un contrat. Dans la plupart des langages, c'est le compilateur qui l'assure. En Perl, c'est le programmeur qui le respecte (ou non).
<troll> Perl le langage qui laisse la maîtrise au programmeur :) </troll>
A+ chris
En fait, la protection du code, des attributs, etc. est un
contrat. Dans la plupart des langages, c'est le compilateur qui
l'assure. En Perl, c'est le programmeur qui le respecte (ou non).
<troll>
Perl le langage qui laisse la maîtrise au programmeur :)
</troll>
En fait, la protection du code, des attributs, etc. est un contrat. Dans la plupart des langages, c'est le compilateur qui l'assure. En Perl, c'est le programmeur qui le respecte (ou non).
<troll> Perl le langage qui laisse la maîtrise au programmeur :) </troll>
A+ chris
Paul Gaborit
À (at) Sat, 18 Feb 2006 00:37:47 +0100, Eric Jacoboni écrivait (wrote):
La surcharge, c'est la possibilité d'avoir deux sous-programmes portant le même nom (certains langages permettent aussi de surcharger les opérateurs prédéfinis). En 1983, Ada le permettait déjà.
Deux sous-programmes/méthodes/fonctions mais n'ayant pas les mêmes types d'attributs et/ou le même type de valeur de retour (pas la même signature).
Perl ne distinguant ni le type des attributs ni le type de retour des fonctions ne connait pas la surcharge de méthodes. Perl ne surcharge que les opérateurs. Et encore, il ne reconnait que le "type" du premier opérande (sauf lorsque ce n'est pas un objet et dans ce cas le "type" de l'éventuel second opérande compte).
Quand on utilise un langage OO, la surcharge c'est donc la possibilité d'avoir deux méthodes *d'une même classe* portant le même nom (utilisation fréquente pour les constructeurs, notamment).
En Perl, les constructeurs ne portant pas un nom prédéfini, on les nomme différement... ou alors on écrit une méthode qui reconnait ses paramètres à l'exécution.
La redéfinition, c'est le fait qu'une classe fille redéfinit une méthode de sa classe mère[...]
C'est ce que j'appelle de la surdéfinition. Pour moi, la redéfinition consiste à redéfinir la même méthode (dans la même classe, avec l es mêmes paramètres si ils font partie de la définition). De nombreux langages classiques (Java, C++) ne permettent pas la redéfinition (ou alors en passant par des artifices lors de l'édition des liens par exemple).
En Perl, on peut redéfinir toutes les méthodes/fonctions (même les builtin qui existent alors toujours dans CORE::...) mais pas les opérateurs de base.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Sat, 18 Feb 2006 00:37:47 +0100,
Eric Jacoboni <jaco@neottia.net> écrivait (wrote):
La surcharge, c'est la possibilité d'avoir deux sous-programmes
portant le même nom (certains langages permettent aussi de surcharger
les opérateurs prédéfinis). En 1983, Ada le permettait déjà.
Deux sous-programmes/méthodes/fonctions mais n'ayant pas les mêmes
types d'attributs et/ou le même type de valeur de retour (pas la même
signature).
Perl ne distinguant ni le type des attributs ni le type de retour des
fonctions ne connait pas la surcharge de méthodes. Perl ne surcharge
que les opérateurs. Et encore, il ne reconnait que le "type" du
premier opérande (sauf lorsque ce n'est pas un objet et dans ce cas le
"type" de l'éventuel second opérande compte).
Quand on utilise un langage OO, la surcharge c'est donc la possibilité
d'avoir deux méthodes *d'une même classe* portant le même nom
(utilisation fréquente pour les constructeurs, notamment).
En Perl, les constructeurs ne portant pas un nom prédéfini, on les
nomme différement... ou alors on écrit une méthode qui reconnait ses
paramètres à l'exécution.
La redéfinition, c'est le fait qu'une classe fille redéfinit une
méthode de sa classe mère[...]
C'est ce que j'appelle de la surdéfinition. Pour moi, la redéfinition
consiste à redéfinir la même méthode (dans la même classe, avec l es
mêmes paramètres si ils font partie de la définition). De nombreux
langages classiques (Java, C++) ne permettent pas la redéfinition (ou
alors en passant par des artifices lors de l'édition des liens par
exemple).
En Perl, on peut redéfinir toutes les méthodes/fonctions (même les
builtin qui existent alors toujours dans CORE::...) mais pas les
opérateurs de base.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Sat, 18 Feb 2006 00:37:47 +0100, Eric Jacoboni écrivait (wrote):
La surcharge, c'est la possibilité d'avoir deux sous-programmes portant le même nom (certains langages permettent aussi de surcharger les opérateurs prédéfinis). En 1983, Ada le permettait déjà.
Deux sous-programmes/méthodes/fonctions mais n'ayant pas les mêmes types d'attributs et/ou le même type de valeur de retour (pas la même signature).
Perl ne distinguant ni le type des attributs ni le type de retour des fonctions ne connait pas la surcharge de méthodes. Perl ne surcharge que les opérateurs. Et encore, il ne reconnait que le "type" du premier opérande (sauf lorsque ce n'est pas un objet et dans ce cas le "type" de l'éventuel second opérande compte).
Quand on utilise un langage OO, la surcharge c'est donc la possibilité d'avoir deux méthodes *d'une même classe* portant le même nom (utilisation fréquente pour les constructeurs, notamment).
En Perl, les constructeurs ne portant pas un nom prédéfini, on les nomme différement... ou alors on écrit une méthode qui reconnait ses paramètres à l'exécution.
La redéfinition, c'est le fait qu'une classe fille redéfinit une méthode de sa classe mère[...]
C'est ce que j'appelle de la surdéfinition. Pour moi, la redéfinition consiste à redéfinir la même méthode (dans la même classe, avec l es mêmes paramètres si ils font partie de la définition). De nombreux langages classiques (Java, C++) ne permettent pas la redéfinition (ou alors en passant par des artifices lors de l'édition des liens par exemple).
En Perl, on peut redéfinir toutes les méthodes/fonctions (même les builtin qui existent alors toujours dans CORE::...) mais pas les opérateurs de base.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Eric Jacoboni
Paul Gaborit writes:
La redéfinition, c'est le fait qu'une classe fille redéfinit une méthode de sa classe mère[...]
C'est ce que j'appelle de la surdéfinition. Pour moi, la redéfinition consiste à redéfinir la même méthode (dans la même classe, avec les mêmes paramètres si ils font partie de la définition). De nombreux langages classiques (Java, C++) ne permettent pas la redéfinition (ou alors en passant par des artifices lors de l'édition des liens par exemple).
Histoire de termino... Pour moi (et visiblement pour pas mal de gens que je connais aussi), "override" se traduit par « redéfinir » dans ce contexte. La surcharge, c'est "overload".
Et "override", c'est le fait qu'une classe redéfinisse une méthode de sa classe mère (surdéfinir n'est pas français).
Voir, par exemple, <http://en.wikipedia.org/wiki/Method_overriding_%28programming%29>
Mais j'imagine que ça doit être comme "expression rationnelle" et "expression régulière" : une guerre de traduction (bien que seule la première soit correcte...).
Moi, un bouquin en français qui me parle de redéfinition pour décrire le fait que deux méthodes portent le même nom dans une même classe, je ne l'achète pas, en tous cas. Dans redéfinir, il y a "re", qui implique qu'une définition existe déjà, ce qui n'est pas le cas dans une même classe puisqu'il n'y a pas d'ordre intrinsèque dans la définition des méthodes. Ce n'est donc pas tant le « surdéfinir » qui me gène (encore que cela revient à utiliser un mot inexistant alors qu'il en existe déjà un) que ton utilisation de « redéfinir », mais bon...
-- Eric Jacoboni, ne il y a 1444484227 secondes
Paul Gaborit <Paul.Gaborit@invalid.invalid> writes:
La redéfinition, c'est le fait qu'une classe fille redéfinit une
méthode de sa classe mère[...]
C'est ce que j'appelle de la surdéfinition. Pour moi, la redéfinition
consiste à redéfinir la même méthode (dans la même classe, avec les
mêmes paramètres si ils font partie de la définition). De nombreux
langages classiques (Java, C++) ne permettent pas la redéfinition (ou
alors en passant par des artifices lors de l'édition des liens par
exemple).
Histoire de termino... Pour moi (et visiblement pour pas mal de gens
que je connais aussi), "override" se traduit par « redéfinir » dans ce
contexte. La surcharge, c'est "overload".
Et "override", c'est le fait qu'une classe redéfinisse une méthode de
sa classe mère (surdéfinir n'est pas français).
Voir, par exemple,
<http://en.wikipedia.org/wiki/Method_overriding_%28programming%29>
Mais j'imagine que ça doit être comme "expression rationnelle" et
"expression régulière" : une guerre de traduction (bien que seule la
première soit correcte...).
Moi, un bouquin en français qui me parle de redéfinition pour décrire
le fait que deux méthodes portent le même nom dans une même classe, je
ne l'achète pas, en tous cas. Dans redéfinir, il y a "re", qui
implique qu'une définition existe déjà, ce qui n'est pas le cas dans
une même classe puisqu'il n'y a pas d'ordre intrinsèque dans la
définition des méthodes. Ce n'est donc pas tant le « surdéfinir » qui
me gène (encore que cela revient à utiliser un mot inexistant alors
qu'il en existe déjà un) que ton utilisation de « redéfinir », mais
bon...
La redéfinition, c'est le fait qu'une classe fille redéfinit une méthode de sa classe mère[...]
C'est ce que j'appelle de la surdéfinition. Pour moi, la redéfinition consiste à redéfinir la même méthode (dans la même classe, avec les mêmes paramètres si ils font partie de la définition). De nombreux langages classiques (Java, C++) ne permettent pas la redéfinition (ou alors en passant par des artifices lors de l'édition des liens par exemple).
Histoire de termino... Pour moi (et visiblement pour pas mal de gens que je connais aussi), "override" se traduit par « redéfinir » dans ce contexte. La surcharge, c'est "overload".
Et "override", c'est le fait qu'une classe redéfinisse une méthode de sa classe mère (surdéfinir n'est pas français).
Voir, par exemple, <http://en.wikipedia.org/wiki/Method_overriding_%28programming%29>
Mais j'imagine que ça doit être comme "expression rationnelle" et "expression régulière" : une guerre de traduction (bien que seule la première soit correcte...).
Moi, un bouquin en français qui me parle de redéfinition pour décrire le fait que deux méthodes portent le même nom dans une même classe, je ne l'achète pas, en tous cas. Dans redéfinir, il y a "re", qui implique qu'une définition existe déjà, ce qui n'est pas le cas dans une même classe puisqu'il n'y a pas d'ordre intrinsèque dans la définition des méthodes. Ce n'est donc pas tant le « surdéfinir » qui me gène (encore que cela revient à utiliser un mot inexistant alors qu'il en existe déjà un) que ton utilisation de « redéfinir », mais bon...
-- Eric Jacoboni, ne il y a 1444484227 secondes
Paul Gaborit
À (at) Mon, 27 Feb 2006 13:54:23 +0100, Eric Jacoboni écrivait (wrote):
Moi, un bouquin en français qui me parle de redéfinition pour décri re le fait que deux méthodes portent le même nom dans une même classe, je ne l'achète pas, en tous cas.
On peut être d'accord...
Dans redéfinir, il y a "re", qui implique qu'une définition existe déjà, ce qui n'est pas le cas dans une même classe puisqu'il n'y a pas d'ordre intrinsèque dans la définition des méthodes. Ce n'est donc pas tant le « surdéfinir » qui me gène (encore que cela revi ent à utiliser un mot inexistant alors qu'il en existe déjà un) que ton utilisation de « redéfinir », mais bon...
Les mots français utilisés en informatique (comme dans plein d'autres domaines) n'ont jamais leur sens commun ('surcharge' par exemple). Ce n'est donc pas un problème d'en créer de nouveau (comme 'initialiser' par exemple).
Pour faire le point :
- 'surcharger' : donner plusieurs définitions d'une même fonction ou méthode ou d'un même opérateur mais portant sur des paramètres de natures différentes. (Pas possible en Perl pour les fonctions/méthodes.)
- 'redéfinir' (ou pour moi 'surdéfinir') : donner une nouvelle définition d'une méthode dans une classe qui hérite d'une autre classe qui donne déjà une définition de cette méthode. L'intérêt du 's ur' dans 'surdéfinir' est qu'il met bien en avant la notion d'empilement de l'héritage...
- pour moi 'redéfinir' (et pour toi ?) : donner une nouvelle définition d'une fonction ou méthode existante en perdant au passage l'ancienne définition (Perl émet d'ailleurs un message : 'Subroutine redefined').
En Perl, on pourrait presque dire que la redéfinition pour toi ou pour moi la surdéfinition de méthode est en fait le seul cas de surcharge de fonction (c'est exactement comme cela que procède le compilateur... puisque une méthode est en fait une fonction dont le premier argument est implicitement l'objet lui-même).
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Mon, 27 Feb 2006 13:54:23 +0100,
Eric Jacoboni <jaco@neottia.net> écrivait (wrote):
Moi, un bouquin en français qui me parle de redéfinition pour décri re
le fait que deux méthodes portent le même nom dans une même classe, je
ne l'achète pas, en tous cas.
On peut être d'accord...
Dans redéfinir, il y a "re", qui implique qu'une définition existe
déjà, ce qui n'est pas le cas dans une même classe puisqu'il n'y a
pas d'ordre intrinsèque dans la définition des méthodes. Ce n'est
donc pas tant le « surdéfinir » qui me gène (encore que cela revi ent
à utiliser un mot inexistant alors qu'il en existe déjà un) que ton
utilisation de « redéfinir », mais bon...
Les mots français utilisés en informatique (comme dans plein d'autres
domaines) n'ont jamais leur sens commun ('surcharge' par exemple). Ce
n'est donc pas un problème d'en créer de nouveau (comme 'initialiser'
par exemple).
Pour faire le point :
- 'surcharger' : donner plusieurs définitions d'une même fonction ou
méthode ou d'un même opérateur mais portant sur des paramètres de
natures différentes. (Pas possible en Perl pour les
fonctions/méthodes.)
- 'redéfinir' (ou pour moi 'surdéfinir') : donner une nouvelle
définition d'une méthode dans une classe qui hérite d'une autre classe
qui donne déjà une définition de cette méthode. L'intérêt du 's ur'
dans 'surdéfinir' est qu'il met bien en avant la notion d'empilement
de l'héritage...
- pour moi 'redéfinir' (et pour toi ?) : donner une nouvelle
définition d'une fonction ou méthode existante en perdant au passage
l'ancienne définition (Perl émet d'ailleurs un message : 'Subroutine
redefined').
En Perl, on pourrait presque dire que la redéfinition pour toi ou pour
moi la surdéfinition de méthode est en fait le seul cas de surcharge
de fonction (c'est exactement comme cela que procède le
compilateur... puisque une méthode est en fait une fonction dont le
premier argument est implicitement l'objet lui-même).
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Mon, 27 Feb 2006 13:54:23 +0100, Eric Jacoboni écrivait (wrote):
Moi, un bouquin en français qui me parle de redéfinition pour décri re le fait que deux méthodes portent le même nom dans une même classe, je ne l'achète pas, en tous cas.
On peut être d'accord...
Dans redéfinir, il y a "re", qui implique qu'une définition existe déjà, ce qui n'est pas le cas dans une même classe puisqu'il n'y a pas d'ordre intrinsèque dans la définition des méthodes. Ce n'est donc pas tant le « surdéfinir » qui me gène (encore que cela revi ent à utiliser un mot inexistant alors qu'il en existe déjà un) que ton utilisation de « redéfinir », mais bon...
Les mots français utilisés en informatique (comme dans plein d'autres domaines) n'ont jamais leur sens commun ('surcharge' par exemple). Ce n'est donc pas un problème d'en créer de nouveau (comme 'initialiser' par exemple).
Pour faire le point :
- 'surcharger' : donner plusieurs définitions d'une même fonction ou méthode ou d'un même opérateur mais portant sur des paramètres de natures différentes. (Pas possible en Perl pour les fonctions/méthodes.)
- 'redéfinir' (ou pour moi 'surdéfinir') : donner une nouvelle définition d'une méthode dans une classe qui hérite d'une autre classe qui donne déjà une définition de cette méthode. L'intérêt du 's ur' dans 'surdéfinir' est qu'il met bien en avant la notion d'empilement de l'héritage...
- pour moi 'redéfinir' (et pour toi ?) : donner une nouvelle définition d'une fonction ou méthode existante en perdant au passage l'ancienne définition (Perl émet d'ailleurs un message : 'Subroutine redefined').
En Perl, on pourrait presque dire que la redéfinition pour toi ou pour moi la surdéfinition de méthode est en fait le seul cas de surcharge de fonction (c'est exactement comme cela que procède le compilateur... puisque une méthode est en fait une fonction dont le premier argument est implicitement l'objet lui-même).
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>