question POO - C#/.NET managed - Programmation
Marsh Posté le 27-11-2006 à 11:20:46
ah zut j'avais pas fait gaffe que je suis dans la section .Net
mais bon ma question porte sur la POO , pas sur un langage en particulier
Non ma méthode est pas virtuelle car je travaille en PHP5.
mais si je travaillais en C# oui elle serait virtuelle.
Marsh Posté le 27-11-2006 à 11:38:55
donc si la méthode de la classe M était abstraite et que je la définis dans la classe F (forcément)
c'est donc du polymorphisme.
c ca ?
Marsh Posté le 27-11-2006 à 11:56:53
non le corps de la méthode dans M est trop générique
J'ai mis tout ce qui pouvait etre commun a toutes les classes filles
Mais chaque classe fille a ses spécificités (c pour de la persistance d'objet)
D'ou l'interet d'abstraire la méthode dans M.
En C# je suppose qu'il n'est pas possible de modifier seulement le corps d'une méthode polymorphée, si on indique pas que la méthode dans M est abstract
Au fait 2 questions sur C# :
- dans la pratique ya une différence entre abstract et virtual ?
- si je veux surcharger une méthode, je dois obligatoirement préciser le mot clé override avant le nom de la méthode, ou le compilateur déduit la surcharge en voyant que ya plusieurs méthodes avec le meme nom, mais avec des parametres en nombre et type différent ?
Marsh Posté le 27-11-2006 à 14:09:38
jokaritaff a écrit : non le corps de la méthode dans M est trop générique |
Ce que je voulais dire c'est que tu peux avoir une implémentation dans M ET dans F
jokaritaff a écrit : Au fait 2 questions sur C# : |
abstrat pour les classes, virtual pour les méthodes
jokaritaff a écrit : - si je veux surcharger une méthode, je dois obligatoirement préciser le mot clé override avant le nom de la méthode, ou le compilateur déduit la surcharge en voyant que ya plusieurs méthodes avec le meme nom, mais avec des parametres en nombre et type différent ? |
Essayes
Marsh Posté le 27-11-2006 à 14:17:36
Citation : Ce que je voulais dire c'est que tu peux avoir une implémentation dans M ET dans F |
effectivement : un implementtation générique dans l
abstrat pour les classes, virtual pour les méthodes
Essayes
Marsh Posté le 27-11-2006 à 14:20:47
Citation : Ce que je voulais dire c'est que tu peux avoir une implémentation dans M ET dans F |
effectivement : un implementation générique dans M, et une implémentation plus spécique dans F
Citation : abstrat pour les classes, virtual pour les méthodes |
ok, merci
Citation : Essayes |
j'ai pas Visual Studio au boulot, mais je vais un peu m'amuser sur SharpDevelop
Marsh Posté le 27-11-2006 à 10:41:46
J'ai une classe fille F qui hérite d'une classe mère M
Je change le corps d'une méthode de la classe F, héritée de la classe M
Mais je ne change pas la liste des paramètres envoyés à cette méthode.
Au final la méthode effectue le meme travail, mais j'affine dedans certains variables et requetes SQL, car
sinon la requete plante.
Ce changement est a considérer comme de la surcharge ou du polymorphisme ?
j'aurai tendance a dire :
- que c'est pas de la surcharge car bien que la méhode redéfinie porte le meme nom que dans la classe M, je ne touche à pas a la liste des parametres envoyés, ni en nombre ni en typage
- que c'est du polymorphisme, car je redéfinis le corps de la méthode.
C'est cela ?