IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

différences entre Interface , Generic et Abstract class


Sujet :

C#

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 232
    Points : 94
    Points
    94
    Par défaut différences entre Interface , Generic et Abstract class
    Bonjour

    je voudrais pas que ma question paraisse théorique mais souvent la pratique permet de sentir plus les choses, alors si vous voulez nous faire partager votre appréciation concrètement l'utilisation pratique des Interfaces, class abstraites et Générique.

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Points : 627
    Points
    627
    Par défaut
    Salut,

    pour la difference entre classe abstraite et interface, c'est assez simple. En .Net, une classe ne peut deriver que d'une seule autre (classe) alors qu'elle peut implementer autant d'interface qu'elle le souhaite. Ce mecanisme permet justement de compenser le manque d'heritage multiple.

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 232
    Points : 94
    Points
    94
    Par défaut
    si je veux construire une bibliothèque graphique (ou autre) c'est des classes abstraites qu'il faut utiliser ou juste des classes (non abstraites), et à quel moment introduire les interfaces?

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Essaye le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
     
    public interface IControl {
       string Name { get; }
    }
     
    public class Control1 : IControl {
       public string Name { get { return "Control 1"; } }
    }
     
    public class Control2 : IControl {
       public string Name { get { return "Control 2"; } }
    }
     
    public class Control3 : IControl {
      // erreur de compilation car Control3 n'implémente pas Name { get; }
    }
     
    public abstract AControl {
       private string name = "";
       public string Name { get { return name; } }
    }
     
    public abstract Control4 : AControl {
       public Control4() {
          name = "Control 4";
       }
    }
     
    public abstract Control5 : AControl {
       public Control5() {
          name = "Control 5";
       }
    }
     
    public class Controls {
       public void Add(IControl control) { }
       public void Add(AControl control) { }
    }
     
    public class Program {
       public static void Main(string[] args) {
          Controls controls = new Controls();
          Control1 control1 = new Control1();
          IControl  control2 = new Control2(); // OK
          controls.Add(control1); // OK
          controls.Add(control2); // OK
          AControl acontrol = new AControl() // erreur de compilation
          Control4 control4 = new Control4();
          AControl control5 = new Control5(); // erreur de compilation
          controls.Add(control4); // erreur de compilation
       }
    }

  5. #5
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 232
    Points : 94
    Points
    94
    Par défaut
    Je vais tester ce code, je crois que créer une bibliothèque est un but et aussi un la meilleur des façons pour maitriser la technique .

    merci à tous

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Points : 780
    Points
    780
    Par défaut
    Citation Envoyé par SirJulio Voir le message
    Ce mecanisme permet justement de compenser le manque d'heritage multiple.
    Je n'appellerais pas cela un manque, vu que c'est recherché

  7. #7
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Points : 601
    Points
    601
    Par défaut
    Moi, ça me manque, l'héritage multiple... J'arrive du C++, et les interface, ça remplace pas ;o)P C'est une autre mécanique, avec son interêt toutefois : c'est une sorte de contrat pour garantir qu'une classe implémente des membres...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. différence entre interface et classe abstraite
    Par yacin87 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 29/03/2010, 11h36
  2. différence entre interface comparable et comparator ?
    Par Mr-Mobou dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 12/11/2009, 15h10
  3. [C#] Diffèrence entre les structures et les classes
    Par Kr00pS dans le forum Windows Forms
    Réponses: 2
    Dernier message: 31/08/2006, 12h42
  4. [VB] Différence entre "Module" et "Module de Classe"?
    Par gootsu dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 06/06/2006, 16h26
  5. Réponses: 11
    Dernier message: 31/01/2005, 17h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo