classe vs prototype... éternel débat depuis l'origine de la POO
petite description
classe vs prototype... éternel débat depuis l'origine de la POO
petite description
Oui tout à fait, ce n'est rien d'autre que de la prog par prototypes.
Aprés on aime ou on aime pas...Mais comme toute chose, ça a ses avantages ( consommation mémoire, temps exec ) et ses inconvenients ( sureté de typage boiteuse.. ) .
It's not a bug, it's a feature
Si tu as une application de business intelligence avec plusieurs clients, peut-être qu'un de tes clients voudra un truc spécial.
Il y a des Pattern pour le faire en Java, mais c'est ultra tordu, alors que tu peux faire if myClient.id==xxx then obj.method = function(){...}
La modification du comportement par défaut est l'exception au lieu de faire toute une architecture complexe pour le nominal.
C'est aussi une façon de faire des méthodes abstraites. En Swing on a la même conception avec des Interface (TableModel), des objets AbstractTableModel, et un objet fourni par défaut DefaultTableModel. En Groovy, Javascript ou Rail, tout tiendrait en une seule classe pour le même résultat.
Pourquoi on en parle ?
Je suis tout à fait d'accord sur le fait qu'un programme écrit avec des méthodes créés dynamiquement devient très difficile à maintenir. Sans oublier que l'on se prive dans ce cas de l'aide du compilateur ou de l'autocomplétion que l'on trouve dans les IDE assez évolués (eclipse,...)
Néanmois, il peut y avoir des domaines où cette possibilité apporte une puissance incomparable au langage. Cela permet des prouesses techniques qui peuvent faire toute la différence en rendant les programmes auto-adaptatifs. Je pense à des domaines comme l'I.A., l'exploration automatique de base de données où de services web.
Mais Php est-il réellement adapté à ce genre de domaines ?
Je suis complètement d'accord avec çà. Et justement j'observe qu'il y a tout un tas d'objets qui évoluent naturellement, et pas seulement au regard de leur état, mais aussi au regard de leurs capacités (notion d'apprentissage, par exemple). Aussi sur un plan conceptuel, ca ne me gêne pas spécialement qu'un objet puisse se voir adjoindre des méthodes (ca peut aussi faire penser aux tableaux de pointeurs de fonctions en C). Ce qui serait cool du coup, c'est d'ajouter aussi un marqueur sur l'instance (interface ajoutée à la volée ?) histoire d'avoir des appels polymorphes cohérents.bubulemaster :
La notion d'objet en informatique est la même que la vie courrante.
non puisque justement un objet informatique est par définition totalement abstrait. C'est un piège à mon avis de raisonner comme ça car cela rend plus difficile l'apprentissage de notions si on essaie de comparer la poo à la vie réelle. l'héritage , le polymorphisme , le casting n'existe pas en tant que tel.La notion d'objet en informatique est la même que la vie courrante.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager