Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Les interfaces [ Algorithme / Maths ] (slytek)

vendredi 12 décembre 2008 à 09:01:28 | Les interfaces

slytek

Membre Club
Bonjour a tous

Je suis débutant en Programmation C# .NET et actuellement en auto-formation. J'ai un problème qui m'ennuie énormément, je n'arrive pas à comprendre l'utilité concrète des interfaces (pas graphiques ).

Je sais seulement que l'on définit des méthodes et/ou des propriétés qu'une classe doit ensuite implémenter.
Mais quelle est la réelle utilité ? ça me fait beaucoup penser aux header (.h) en langage C mais j'ai l'impression que ce n'est pas aussi simple...

J'ai déjà cherché des réponses sur des forums mais je ne trouve pas... Je trouve souvent des explications en VB .NET...

En fait la notion d'interface m'a particulièrement embrouillé quand j'ai lu un cours sur les 3 couches : UI, métier et DAO ou ils se servaient des interfaces pour simplifier la maintenance du code. (enfin je crois )

Si quelqu'un peut m'éclaircir..sa sera avec plaisir

vendredi 12 décembre 2008 à 09:20:25 | Re : Les interfaces

slytek

Membre Club
Dans cet exemple :

IImpotMetier metier = new ImpotMetier();

Si IImpotMetier est une Interface, metier est donc du type IImpotMetier.
Est ce que sa veut dire que l'objet métier ne pourra utiliser que les méthodes se trouvant
dans l'interface IImpotMetier et implémentées par la classe ImpotMetier ?

Je ne sais pas si j'ai été clair, mais c'est le genre d'exemple qui me trouble...



vendredi 12 décembre 2008 à 11:54:13 | Re : Les interfaces

billou_13

Membre Club
Réponse acceptée !
Bonjour,

Il est vrai que ce n'est pas une notion très facile à appréhender.
Personnellement, je vais essayer de t'expliquer un peu plus avec un exemple:

Imagines que tu implémentes une librairie en .net (dll) qui va exécuter plein d'actions à la suite les unes des autres (un espèce de workflow :) ) mais que tu t'en fous de coder les actions.
Tu veux juste implémenter le système qui va enchaîner les actions les unes après les autres. En gros, on pourra dire que c'est une coquille vide, ton projet ne servira à rien tel que mais si les gens prennent ta librairie et codent des actions alors, elle prendra tout son sens.

Pour ce faire, tu peux alors opter pour une interface du type:
public interface IAction
{
   /// <summary>
   /// Executes process
   /// </summary>
   void Do();
}

Comme ça, tu te fous (excusez moi le langage) complet des actions. C'est pas ton boulot, toi tu veux juste les enchaîner.
Et alors, tu auras ta classe (j'ai fait simple, j'ai pas tout coder, on m'en voudras pas):
public class WorkFlow
{
   /// <summary>
   /// List of actions to execute
   /// </summary>
   private List<IAction> _actions;

   /// <summary>
   /// Constructor
   /// </summary>
   public WorkFlow()
   {
      _actions = new List<IAction>();
   }

   /// <summary>
   /// Adds an action to current list
   /// </summary>
   /// <param name="action">Action implementing <see cref="IAction"/> interface</param>
   public void Add(IAction action)
   {
      _actions.Add(action);
   }

   /// <summary>
   /// Executes all actions from list
   /// </summary>
   public void Execute()
   {
      foreach (IAction action in _actions)
      {
         action.Do();
      }
   }
}

Et voila, ta librairie est prête ! (enfin faudrait coder un peu plus ^^)


Alors, là, un type à qui tu donne ta librairie n'aura plus qu'à créer une classe qui hérite de l'interface IAction pour pouvoir utiliser ton WorkFlow.
Bien entendu, il aura pour obligation (une fois hérité) de coder la fonction Do() [mais pas toi :) ]

Et cela ne l'empêchera aucunement d'hériter d'une autre classe et d'hériter en plus de ton interface. Ceci permet donc de palier aux problèmes de multi-héritage (en détournant un peu le principe) du C#. Car une classe C# ne peut hériter que d'une seule autre classe C#. Par contre, tu peux ajouter autant d'interface que tu veux !


En gros, cela te permet d'avoir un peu de transparence dans tes développements tout en proposant aux gens qui utiliserons ta librairie de pouvoir interagir avec tes classes sans trop de difficulté.
Un bon exemple dans le framework .Net est l'interface ICollection: http://msdn.microsoft.com/fr-fr/library/system.collections.icollection.aspx
C'est très intéressant d'hériter de cette interface de temps en temps :)

Voila, j'espère que ça t'aura au moins expliquer une partie (ou du moins, une utilisation).

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------

vendredi 12 décembre 2008 à 12:29:06 | Re : Les interfaces

slytek

Membre Club
Merci beaucoup pour l'explication, je commence désormais a cerner les interfaces

parcontre j'aurai une dernière question un peu bête mais le code :

///<summary></summary>

c'est utilisé pour la génération éventuelle d'une doc ?



vendredi 12 décembre 2008 à 13:01:20 | Re : Les interfaces

Lutinore

Administrateur CodeS-SourceS
Réponse acceptée !
Salut, l'explication de billou_13 est déja bien complète mais au cas ou, tu as d'autres explications ici :

http://www.csharpfr.com/forum/sujet-INTERFACE-DOCUMENTATION-SIMPLE-FRANCAIS_533601.aspx

vendredi 12 décembre 2008 à 13:27:49 | Re : Les interfaces

slytek

Membre Club
merci lutinore pour le lien

vendredi 12 décembre 2008 à 14:03:22 | Re : Les interfaces

billou_13

Membre Club
Réponse acceptée !
slytek,

Effectivement, tu as raison pour les balises de commentaire. Elles sont utilisées pour la génération de document: style .htm ou msdn ou autre...
Quand tu compiles ton projet, tu peux demander dans les options de chaque projet (sous Visual Studio), la création du fichier xml de documentation.
Il te suffira alors de faire tourner une routine sur ce fichier xml pour générer un fichier .htm, un fichier style msdn ou un site web. Ceci te permettra d'avoir un document d'aide sur ta librairie. C'est utile qd tu veux distribuer une librairie.
Voici quelques liens:
- http://www.codeplex.com/SHFB
- http://blogs.msdn.com/ansonh/archive/2006/09/11/750056.aspx
- http://www.jmdoudoux.fr/microsoft/doctechcsharp/doctechcsharp.htm
- http://msdn.microsoft.com/fr-fr/library/b2s063f7(VS.80).aspx

Bonne après midi,


Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------

vendredi 12 décembre 2008 à 14:12:00 | Re : Les interfaces

slytek

Membre Club
Encore merci Billou_13, bonne après midi a toi aussi !



Cette discussion est classé dans : net, trouve, interfaces, utilité


Répondre à ce message

Sujets en rapport avec ce message

Utilité du CSharp/.NET [ par niceboy ] Slt,Quasiment personne n'a le Framework SDK d'installé sur son ordinateur.Et s'il faut obligatoirement l'installer pour pouvoir lancer, utiliser les p Quelle version VS.NET faut-il prendre ? [ par bouyeware ] Bonjour à tous,Voilà, sachant que je possède déjà Visual Studio 6.0, faut-il que je me procure la version complète de VS.NET ou bien la MAJ me suffit Au secours: probleme d' install de visual studio.net [ par petula ] bonjour a tous, j' ai un message d' erreur 1305 lorsque je tente d' intaller visual studio.net, version french (6cd), sur windows 2000 pro sp2 (versio Probleme assembly [ par Aposia ] J'ai une assembly qui fonctionne tres bien en local sur une application. L'importation se fait sans probleme. Cependant, je veux maintenant utiliser c [asp.net c#]Ajout de bouton dynamiquement dans une table [ par etnac ] Voilà j'ai un petit problème, je cherche à pouvoir ajouter des boutons dans une table dont les lignes sont créées à partir une base de données (bon ça Debugger [ par MorpionMx ] Bonjour,Voilà,j'ai un petit problème, après installation (puis desinstallation) de Delphi, le debugger JIT n'est plus associé au .NET, ce qui fait que Shéma .Net URGENT !!!! [ par bobaz ] Salut a tous !Je cherche un bon shéma pas trop dur pour expliquer le fonctionnement de C# avec SQL server .C pour un projet de fin d'études méga impor installation VS.NET [ par cedricp16 ] J'ai eu un probleme lors de l'installation de VS. NET, version téléchargée (7CD sur k...a). Erreur interne ou des fois une erreur des fichiers sur le bug dans .NET ??? [ par romain3395 ] Bonjour,J'essaie d'afficher le caracteres accent aigu (eacute;) en HTML (j'ai volontairement enlevé le &) pour que vous compreniez.Je veux l'afficher .lib et .net [ par Schad ] J'ai récupéré des dll que je dois incorporer dans un programme que je développe actuellement. Avec ces dll est fourni un exemple Visual C++ 6 qui poss


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.