none
Question d'ordre général RRS feed

  • Question

  • Je lis dans l'aide à propos des collections génériques ou non :

    L'espace de noms System.Collections.Generic contient des interfaces et des classes qui définissent des collections génériques

    permettant aux utilisateurs de créer des collections fortement typées. Celles-ci fournissent une sécurité et des performances

    meilleures que les collections fortement typées non génériques.

    Question 1  Qu'est-ce qu'une interface ? (ou encore, où et comment trouver la définition du mot "interface" ? (il y a 38326 références au mot interface dans l'aide).

    Question 2  Comment peut-on être "fortement" quelque chose dans un univers fait de bits 0 ou 1 ? (En fait, je préfèrerais une réponse à la question 3).

    Question 3  Qu'est-ce qui différencie les "collections fortement typées génériques" des "collections fortement typées non génériques" ? Question complémentaire :  Existe-t-il des "collections faiblement typées génériques" (ou non génériques), ou des "collections pas typées du tout génériques" (ou non générique) et quelle peut être l'utilités de chacune de ces collections ?

    Question 4 Quelle est la différence entre le "Développement .NET" et le "Développement Visual Basic" ? (Afin que je pose la question dans le bon forum).


    Pierre Allemand

    mardi 6 mars 2012 21:57

Réponses

  • Bonjour,

    1/Il est difficile d'expliquer en quelque ligne ce qu'est une interface. Recherchez dans le moteur de recherche "interface programmation orienté objet", vous aurez une foule d'informations et d'explication.

    3/ Dans le .NET Framework il existe des collections non typées par exemple : ArrayList. Une collection non typée est une collection qui contient des "objets" et donc n'importe quoi (par exemple le premier élément un Chien, le deuxième élément une Maison, le troisième élément un entier,...etc). La problématique avec les collections non typées et lorsque l'on souhaite récupérer les éléments dans la collection. En effet, il savoir à l'avance que le premier élément un Chien, le second et une Maison... Vous allez donc être obligé de faire des casts. Avec des casts, si vous récupérer un élément de type Chien et que vous le considérez comme une Maison, vous aurez une erreur à l'exécution et non à la compilation. Les collections fortements typées permettent de pallier à ce problème, en spécifiant par exemple qu'une List(Of Integer) doit contenir que des entiers. Si vous ajoutez autre chose qu'un entier, vous aurez une erreur à la compilation et non à l'exécution.

    Un code fortement typé est une code dont on détecte un maximum de problèmes à la compilation et non à l'exécution.

    4/Développement .NET est un forums dédiés sur les questions concernant le .NET Framework en général (comment utiliser la techno, recommandations,...etc). Développement VB est une forums destinés aux développeurs qui posent des questions concernant le langage VB et dont ils veulent avoir des exemples de code en VB .NET

    Est-ce que mes réponses sont claires ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    mercredi 7 mars 2012 09:08
    Modérateur
  •  

    Bonjour, mmw01,

    Votre exemple avec Form1.Close n’est pas bon. Cette méthode est spécifique à la classe Form dérivée de la classe ContainerControl et n’implémente aucune interface.

    On peut utiliser la définition disponible sur la page MSDN pour les interfaces VB.NET: « Les interfaces définissent les propriétés, méthodes et événements qui peuvent être implémentés par les classes. Les interfaces vous permettent de définir des fonctionnalités sous forme de petits groupes de propriétés, méthodes et événements étroitement liés ; les risques d'incompatibilité s'en trouvent limités parce que vous avez la possibilité de développer des implémentations avancées sans détruire le code existant. Vous pouvez ajouter de nouvelles fonctionnalités à tout moment en développant des interfaces et implémentations supplémentaires », mais c’est vrai que cela n’explique pas très bien le terme interface. La définition sur la page C# est un peu plus claire: « Les interfaces peuvent être composées de méthodes, de propriétés, d'événements, d'indexeurs ou de toute combinaison de ces quatre types de membres. Une interface ne peut pas contenir de constantes, de champs, d'opérateurs, de constructeurs d'instances, de destructeurs ou de types. Elle ne peut pas contenir de membres statiques. Les membres d'interface sont automatiquement publics et ils ne peuvent contenir aucun modificateur d'accès.

    Lorsqu'une classe ou un struct implémente une interface, la classe ou le struct fournit une implémentation pour tous les membres définis par l'interface. L'interface elle-même ne procure aucune fonctionnalité qu'une classe ou un struct peut hériter, de la façon dont une fonctionnalité de classe de base peut être héritée. Toutefois, si une classe de base implémente une interface, la classe dérivée hérite de cette implémentation. On dit que la classe dérivée implémente l'interface implicitement ».

    La définition que je préfère est : une interface (appelée aussi « contracte ») définie un ensemble commune de méthodes que toute les classes qui implémentent l’interface doivent fournir. Ces méthodes caractérisent le comportement commun des instances objets de ces classes, même si l’implémentation de chaque méthode diffère d’une classe a l’autre.

    Bonne journée,

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    mercredi 7 mars 2012 13:39
  • salut

    une interface c'est le point d'entrée d'une classe c'est par elle que l'on passe pour executer une méthode exemple quand tu ferme un formulaire avec Form1.close et bien close fait partir de l'interface des formulaires. en quelque mots une interface c'est l'ensemble des noms des méthodes d'une classe.

    la classe collection a comme interface Icollection Ilist et Idictionnary c'est par elles que l'on passe pour faire collection.add et autres méthodes ...

    maintenant comme la dit Gilles fouille un peu.


    la FOI déplace les montagnes et bien DOTNET les effaces complétement.

    mercredi 7 mars 2012 09:33

Toutes les réponses

  • Bonjour,

    1/Il est difficile d'expliquer en quelque ligne ce qu'est une interface. Recherchez dans le moteur de recherche "interface programmation orienté objet", vous aurez une foule d'informations et d'explication.

    3/ Dans le .NET Framework il existe des collections non typées par exemple : ArrayList. Une collection non typée est une collection qui contient des "objets" et donc n'importe quoi (par exemple le premier élément un Chien, le deuxième élément une Maison, le troisième élément un entier,...etc). La problématique avec les collections non typées et lorsque l'on souhaite récupérer les éléments dans la collection. En effet, il savoir à l'avance que le premier élément un Chien, le second et une Maison... Vous allez donc être obligé de faire des casts. Avec des casts, si vous récupérer un élément de type Chien et que vous le considérez comme une Maison, vous aurez une erreur à l'exécution et non à la compilation. Les collections fortements typées permettent de pallier à ce problème, en spécifiant par exemple qu'une List(Of Integer) doit contenir que des entiers. Si vous ajoutez autre chose qu'un entier, vous aurez une erreur à la compilation et non à l'exécution.

    Un code fortement typé est une code dont on détecte un maximum de problèmes à la compilation et non à l'exécution.

    4/Développement .NET est un forums dédiés sur les questions concernant le .NET Framework en général (comment utiliser la techno, recommandations,...etc). Développement VB est une forums destinés aux développeurs qui posent des questions concernant le langage VB et dont ils veulent avoir des exemples de code en VB .NET

    Est-ce que mes réponses sont claires ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    mercredi 7 mars 2012 09:08
    Modérateur
  • salut

    une interface c'est le point d'entrée d'une classe c'est par elle que l'on passe pour executer une méthode exemple quand tu ferme un formulaire avec Form1.close et bien close fait partir de l'interface des formulaires. en quelque mots une interface c'est l'ensemble des noms des méthodes d'une classe.

    la classe collection a comme interface Icollection Ilist et Idictionnary c'est par elles que l'on passe pour faire collection.add et autres méthodes ...

    maintenant comme la dit Gilles fouille un peu.


    la FOI déplace les montagnes et bien DOTNET les effaces complétement.

    mercredi 7 mars 2012 09:33
  •  

    Bonjour, mmw01,

    Votre exemple avec Form1.Close n’est pas bon. Cette méthode est spécifique à la classe Form dérivée de la classe ContainerControl et n’implémente aucune interface.

    On peut utiliser la définition disponible sur la page MSDN pour les interfaces VB.NET: « Les interfaces définissent les propriétés, méthodes et événements qui peuvent être implémentés par les classes. Les interfaces vous permettent de définir des fonctionnalités sous forme de petits groupes de propriétés, méthodes et événements étroitement liés ; les risques d'incompatibilité s'en trouvent limités parce que vous avez la possibilité de développer des implémentations avancées sans détruire le code existant. Vous pouvez ajouter de nouvelles fonctionnalités à tout moment en développant des interfaces et implémentations supplémentaires », mais c’est vrai que cela n’explique pas très bien le terme interface. La définition sur la page C# est un peu plus claire: « Les interfaces peuvent être composées de méthodes, de propriétés, d'événements, d'indexeurs ou de toute combinaison de ces quatre types de membres. Une interface ne peut pas contenir de constantes, de champs, d'opérateurs, de constructeurs d'instances, de destructeurs ou de types. Elle ne peut pas contenir de membres statiques. Les membres d'interface sont automatiquement publics et ils ne peuvent contenir aucun modificateur d'accès.

    Lorsqu'une classe ou un struct implémente une interface, la classe ou le struct fournit une implémentation pour tous les membres définis par l'interface. L'interface elle-même ne procure aucune fonctionnalité qu'une classe ou un struct peut hériter, de la façon dont une fonctionnalité de classe de base peut être héritée. Toutefois, si une classe de base implémente une interface, la classe dérivée hérite de cette implémentation. On dit que la classe dérivée implémente l'interface implicitement ».

    La définition que je préfère est : une interface (appelée aussi « contracte ») définie un ensemble commune de méthodes que toute les classes qui implémentent l’interface doivent fournir. Ces méthodes caractérisent le comportement commun des instances objets de ces classes, même si l’implémentation de chaque méthode diffère d’une classe a l’autre.

    Bonne journée,

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    mercredi 7 mars 2012 13:39