Bonjour, dans plusieurs tutos traitant de la programmation orientée objet, on parle d'interface.
malgré des recherches sur divers sites, je ne parviens à bien comprendre leur utilité.
Quelqu'un pourrait il m'éclairer à ce sujet??
D'avance merci
Bonjour, dans plusieurs tutos traitant de la programmation orientée objet, on parle d'interface.
malgré des recherches sur divers sites, je ne parviens à bien comprendre leur utilité.
Quelqu'un pourrait il m'éclairer à ce sujet??
D'avance merci
Une interface, c'est un peu comme une classe abstraite sans les désavantages.
En fait une interface ne contient que des déclarations de méthodes. Une classe qui implémente une interface devra donc obligatoirement implémenter toutes les méthodes de l'interface en question.
Tu peux te représenter une interface comme un contrat.
Toute classe implémentant l'interface devra implémenter les méthodes qui la compose pour que le contrat soit respecté
A+
PS: Je déplace dans un autre forum![]()
Thomas LEBRUN: MCAD.NET, MCTS (Win et Web), MCPD(Win et Web) & Microsoft MVP Client Application Development
WPF par la pratique, mon livre sur WPF ! (également disponible ici ou là)
A la découverte de .NET
Oui Thoams,
les inetrfaces sont des contrats entre les classes qui implémente cette interface, une abstraction (c'est comme ça qu'on implémente l'abstraction avec les classes abstraite et les interfaces)
voici un exemple :
on a l'interface Isaisissable contient les méthodes setValeur() , getValeur()
et on a les classe TextField , numericField .. ils sont des calsses component il hérite respectivement de TextField , TextField (les composant standard de WinForms) ont les surcharges pour ajouter notre propre signature. et ces calsses implémente Isaisissable donc on doit implémenté obligatoirement setValeur et GetValeur dans chaque classe.
le but :
si on a des compoosants saisisable et d'autre non alors comment savoir les quelles sont saisisable
if (classe is Isaisable)
{
// Donc on peux faire le cast pare la suite on trouve la valeur du composant
((Isaisable)classe).GetValeur
}
J'ai également besoin d'eclaircissements au sujet de l'utilisation de 'interface'.
Lorsque ma classe parente implémente une interface, mes classes enfants ne sont apparement pas obligés d'instancier les méthodes de cette interface. Je suis obligé de les faire également implémenter l'interface en question.
Ai-je correctement compris ce point ?
Venant du C++ Win32, je trouve ça étrange que la classe enfant n'ait pas l'obligation d'instancier les méthodes de la classe parentes (comme c'est le cas en C++ pour les classes abstraites avec les fonctions virtuelles pures).
Deuxième précision : ai-je la possibilité de ne pas implémenter de méthode par défaut dans la classe abstraite parente (idem C++ avec fonctions virtuelles pures)
une classe qui implémente une interface doit obligatoirement implémenter tous ces méthodes.
pour la deuxiéme précission oui tu peux ne pas implémenter les méthodes dans la classe abstraite mais tu met juste la signature, et t'implémente la méthode dans la classe enfants.
autre chose ?
C'est quoi les "désavantages" d'une classe abstraite ?Envoyé par Cardi
Moi je vois plutôt plein d'avantages à la classe abstraite par rapport à l'interface : tu peux y mettre du code et tu peux y mettre des champs![]()
Cette définition me semble quelque peu biaisée ....Envoyé par Cardi
Je ne vois ni avantage ni désavantages à une classe abstraite vs une interface. Ce sont deux choses pour deux usage différents.
En terme de polymorphisme, y'a quand même un gros gros point commun... et donc un usage similaireEnvoyé par Bluedeep
Mais bon... chui d'accord que dans 90% des cas ces deux solutions ne sont pas intervertible.
Je ne voulais pas être négatif en disant ça.Envoyé par Bluedeep
c'est juste que lorsqu'une classe implémente une interface, elle implémente toutes les méthodes de cette interface et puis c'est tout.
Les classes abstraites représentent tout un processsus en terme de compréhension et de manipulation bien plus élaboré: On peut aller très loin mais avec difficulté par moment lorsqu'on est novice.
Partager