Ami et ami protégé dans VB.NET

Les modificateurs d'accès (également appelés règles de portée) déterminent quel code peut accéder à un élément, c'est-à-dire quel code est autorisé à le lire ou à y écrire. Dans les versions précédentes de Visual Basic, il y avait trois types de classes. Celles-ci ont été reportées sur .NET. Dans chacun d'eux, .NET autorise uniquement l'accès au code:

  • Privé - au sein du même module, classe ou structure.
  • Ami - au sein de la même assemblée.
  • Public - n'importe où dans le même projet, à partir d'autres projets qui référencent le projet et de tout assemblage créé à partir du projet. En d'autres termes, tout code qui peut le trouver.

VB.NET en a également ajouté un nouveau et demi.

  • Protégé
  • Ami protégé

La "moitié" est due au fait que l'ami protégé est une combinaison de la nouvelle classe protégée et de l'ancienne classe ami.

Les modificateurs Protected et Protected Friend sont nécessaires car VB.NET implémente la dernière exigence de POO qui manquait à VB: l'héritage.

Avant VB.NET, les programmeurs C ++ et Java dédaigneux et dédaigneux déprécieraient VB car il n'était, selon eux, "pas entièrement orienté objet". Pourquoi? Les versions précédentes manquaient d'héritage. L'héritage permet aux objets de partager leurs interfaces et / ou leur implémentation dans une hiérarchie. En d'autres termes, l'héritage permet à un objet logiciel de reprendre toutes les méthodes et propriétés d'un autre.

Ceci est souvent appelé la relation «est-un».

  • Un camion est un véhicule.
  • Une forme carrée "est-un".
  • Un chien "est-un" mammifère.

L'idée est que les méthodes et les propriétés plus générales et les plus utilisées sont des classes «parents» définies et plus spécifiques dans les classes «enfants» (souvent appelées sous-classes). «Mammifère» est une description plus générale que «chien». Les baleines sont des mammifères.

Le gros avantage est que vous pouvez organiser votre code afin que vous n'ayez qu'à écrire du code qui fait quelque chose que beaucoup d'objets doivent faire une fois dans le parent. Tous les "employés" doivent se voir attribuer un "numéro d'employé". Un code plus spécifique peut faire partie des classes enfants. Seuls les employés qui travaillent dans le bureau général doivent se voir attribuer une clé de carte de porte d'employé.

Cette nouvelle capacité d'héritage requiert cependant de nouvelles règles. Si une nouvelle classe est basée sur une ancienne, Protected est un modificateur d'accès qui reflète cette relation. Le code protégé n'est accessible que depuis la même classe ou depuis une classe dérivée de cette classe. Vous ne voulez pas que les clés des cartes de porte des employés soient attribuées à quiconque sauf aux employés.

Comme indiqué, Ami protégé est une combinaison de l'accès à la fois à Ami et Protégé. Les éléments de code sont accessibles à partir de classes dérivées ou à partir du même assembly, ou les deux. Protected Friend peut être utilisé pour créer des bibliothèques de classes car le code qui accède à votre code ne doit être que dans le même assembly.

Mais Friend a également cet accès, alors pourquoi utiliseriez-vous Protected Friend? La raison en est que Friend peut être utilisé dans un fichier source, un espace de noms, une interface, un module, une classe ou une structure. Mais l'ami protégé ne peut être utilisé que dans une classe. Ami protégé est ce dont vous avez besoin pour créer vos propres bibliothèques d'objets. Friend est juste pour les situations de code difficiles où un accès à l'ensemble de l'assemblage est vraiment nécessaire.