228
Le logiciel R - Maˆ ıtriser le langage
Remarque
Notez que l’on peut dissocier, dans la d´ eclaration de la famille de m´ ethodes, le nom de la fonction g´ en´ erique et le param` etre de la fonction
UseMethod() correspondant au nom de la m´ ethode ` a appeler. Ainsi, on peut
tr` es facilement d´ efinir un alias, appel´ e, de la famille pr´ ec´ edente de
m´ ethodes par la simple d´ efinition d’une nouvelle fonction g´ en´ erique :
<- function(obj,...) UseMethod("")
Il en r´ esulte que les deux appels en ligne de commandes
() et () pour un objet
de classe sont ´ equivalents `
a.(). `
A
titre d’application plutˆ ot surprenante, on peut assez facilement traduire
les m´ ethodes courantes du R en fran¸ cais comme cela est illustr´ e ci-dessous :
> voir <- function(obj,...) UseMethod("print")
> voir(vect)
[1] 1 2 3 4 5 6 7 8 9 10
> voir(form)
formule: y∼x
> rm(print.formula) # Supprimons notre méthode pour
# revenir au mode normal.
> voir(form)
y ∼ x
> form
y ∼ x
6.3.2 Retour ` a la probl´ ematique
L’utilisateur se rend compte qu’il a r´ ep´ et´ e l’ex´ ecution des estimations de a et
b deux fois lors de la cr´ eation des fonctions affiche.reg1() et resume.reg1()
pr´ esent´ ees ` a la section 6.2.3 (lignes 2 et 3, et lignes 8 et 9). Il demande alors
conseil `
a un utilisateur plus avanc´ e qui lui sugg` ere d’utiliser le concept de
programmation orient´ ee objet. Apr` es s’ˆ etre document´ e, il propose de cr´ eer une
fonction
10 pour retourner l’objet de classe reg1 afin de pouvoir le r´ eutiliser
par la suite comme premier param` etre d’appel de toute m´ ethode pour ladite
classe.
1 reglin <- function (y ,x) {
2
aEst <- cov (x ,y)/ var (x)
3
bEst <- mean (y)- aEst * mean (x)
4
reg <- list (y=y ,x=x , aEst = aEst , bEst = bEst )
10. Ce type de fonction est souvent appel´ e constructeur dans le jargon de la programmation
orient´ ee objet.
Le logiciel R - Maˆ ıtriser le langage
Remarque
Notez que l’on peut dissocier, dans la d´ eclaration de la famille de m´ ethodes, le nom de la fonction g´ en´ erique et le param` etre de la fonction
UseMethod() correspondant au nom de la m´ ethode ` a appeler. Ainsi, on peut
tr` es facilement d´ efinir un alias, appel´ e
m´ ethodes par la simple d´ efinition d’une nouvelle fonction g´ en´ erique :
Il en r´ esulte que les deux appels en ligne de commandes
de classe
a
A
titre d’application plutˆ ot surprenante, on peut assez facilement traduire
les m´ ethodes courantes du R en fran¸ cais comme cela est illustr´ e ci-dessous :
> voir <- function(obj,...) UseMethod("print")
> voir(vect)
[1] 1 2 3 4 5 6 7 8 9 10
> voir(form)
formule: y∼x
> rm(print.formula) # Supprimons notre méthode pour
# revenir au mode normal.
> voir(form)
y ∼ x
> form
y ∼ x
6.3.2 Retour ` a la probl´ ematique
L’utilisateur se rend compte qu’il a r´ ep´ et´ e l’ex´ ecution des estimations de a et
b deux fois lors de la cr´ eation des fonctions affiche.reg1() et resume.reg1()
pr´ esent´ ees ` a la section 6.2.3 (lignes 2 et 3, et lignes 8 et 9). Il demande alors
conseil `
a un utilisateur plus avanc´ e qui lui sugg` ere d’utiliser le concept de
programmation orient´ ee objet. Apr` es s’ˆ etre document´ e, il propose de cr´ eer une
fonction
10 pour retourner l’objet de classe reg1 afin de pouvoir le r´ eutiliser
par la suite comme premier param` etre d’appel de toute m´ ethode pour ladite
classe.
1 reglin <- function (y ,x) {
2
aEst <- cov (x ,y)/ var (x)
3
bEst <- mean (y)- aEst * mean (x)
4
reg <- list (y=y ,x=x , aEst = aEst , bEst = bEst )
10. Ce type de fonction est souvent appel´ e constructeur dans le jargon de la programmation
orient´ ee objet.
