Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[FLASH MX] Prototype ou fonction ?

2 réponses
Avatar
laplage webforumsuser
Bonjour,

Je me pose toujours la question au moment de créer une nouvelle fonctionalité : définir une nouvelle méthode ou utiliser une fonction ?

Je comprends le fonctionnement de la méthode mais quel en est vraiment la supériorité (s'il y en a une) en dehors de la façon de l'utilser (pas besoin de passer le nom du clip par exemple dans les paramètres).

D'avance merci.

2 réponses

Avatar
Jérôme Courivaud
Bonjour,

Ce que je trouve sympa avec les prototypes c'est que l'on donne une
autonomie d'action à plusieurs MovieClip alors qu'une fonction travaille
comme une procédure, elle enchaine une série d'actions est s'arrête.

Si je fais un protype onRollOver et onRollOut, et que je l'applique à
pleusieurs MovieClip, c'est MovieClip peuvent avoir des actions onRollOver
et onRollOut tout le long de l'animation. Une fonction ne fait qu'enchaîner
des actions. Le truc sympa avec les fonctions, c'est que si l'on souhaite
faire plusieurs fois la même chose, au lieu de copier-coller plusieurs fois
le bout de programme utile, on le transforme en fonction et on rappelle
cette fonction autant de fois que l'on veut. La fonction n'est qu'un
ensemble de procédures réunis en un nom unique. La différence entre
procédure et fonction - différence qui n'existe pas en flash mais dans
d'autres langages comme Pascal Objet de Delphi - c'est que la fonction
retourne une valeur "return", mais pas la procédure.

C'est que je peux en dire, d'autres t'en dirons bien plus.

Voilà

"laplage" a écrit dans le message de
news:bpna7c$oq9$
Bonjour,

Je me pose toujours la question au moment de créer une nouvelle


fonctionalité : définir une nouvelle méthode ou utiliser une fonction ?

Je comprends le fonctionnement de la méthode mais quel en est vraiment la


supériorité (s'il y en a une) en dehors de la façon de l'utilser (pas besoin
de passer le nom du clip par exemple dans les paramètres).

D'avance merci.




Avatar
zwetan
salut,


Je me pose toujours la question au moment de créer une
nouvelle fonctionalité : définir une nouvelle méthode ou utiliser une


fonction ?

Je comprends le fonctionnement de la méthode mais quel en est
vraiment la supériorité (s'il y en a une) en dehors de la façon de


l'utilser
(pas besoin de passer le nom du clip par exemple dans les paramètres).




la methode s'inscrit dans une logique Orienté Objet
elle execute une action sur l'objet dont elle depend

une fonction n'a pas de contexte objet, elle execute
une procedure sur les paramettres qu'on lui passe

la différence vient de ca, on peut passer un objet
en paramettre a une fonction mais si il y a plusieurs
sortes d'objets elle doit gerer ces differences,
par contre la methode qui est "collée" a l'objet
n'a a gerer que cette sorte d'objet

par ex:
function stringify( anyobj )
{
/* block de code si l'objet est une Array */
/* block de code si l'objet est un number*/
etc...
}

Array.prototype.toString = function()
{
/* block de code pour transformer cet objet en string */
}

Number.prototype.toString = function()
{
/* block de code pour transformer cet objet en string */
}


la "superiorité" si on peut appeler ca comme ca, c'est de pouvoir
séparer les responssabilités d'une maniere clair et logique

"toString" est responssable de transformer en string un objet
un objet Array est responssable de gerer des tableaux
un objet Number est responssable de gerer des nombres
etc...

une fonction comme "stringify" serait responssable de "trop" de choses:
- reconnaitre le type de l'objet de tous les objets
- choisir le bon processus pour passer ce type d'objet en string

le probleme avec ca c'est le probleme de gestion du code
si en cours de developpement de nouveaux types d'objets sont definis

le fait d'utiliser des methodes deviendra "superieur"
quand le code deviendra complexe car il permettra de separer
la gestion du code en plusieurs petits bouts de code définis par objets
plutot que d'avoir un tres gros block de code dans une seule fonction

mais apres c'est plus un avantage de la Programmation Orienté Objet (POO)
qu'une reele opposition entre methode et fonction

par définition: une methode c'est une fonction definit dans un objet

la vraie question serait plutot quels sont les avantages de la POO
par rapport a la programmation procédurale, et ca tout dépends
de comment tu penses ton code

pour certains il est plus clair de gerer des abstraction d'objets

pour d'autres il est plus simple de gerer des executions
de procedures les unes a la suite des autres

je pense plutot que la POO est "superieure" en general,
mais pas partout et pas tout le temps..tout depends du contexte.

zwetan