Modules, structures et classes

Il n'y a que trois façons d'organiser un VB.NET application.

  • Modules
  • Structures
  • Des classes

Mais la plupart des articles techniques supposent que vous les connaissez déjà. Si vous êtes l'un des nombreux qui ont encore quelques questions, vous pouvez simplement lire au-delà des bits confus et essayer de le comprendre de toute façon. Et si vous avez un lot de temps, vous pouvez commencer à chercher Microsoft Documentation:

  • "Un module est un fichier exécutable portable, tel que type.dll ou application.exe, composé d'une ou plusieurs classes et interfaces."
  • "Une instruction Class définit un nouveau type de données."
  • "L'instruction Structure définit un type de valeur composite que vous pouvez personnaliser."

Bon, alors. Des questions?

Pour être un peu plus juste envers Microsoft, ils ont des pages et des pages (et plus de pages) d'informations sur tous ces éléments que vous pouvez parcourir. Et ils doivent être aussi précis que possible car ils établissent la norme. En d'autres termes, la documentation de Microsoft se lit parfois comme un livre de droit car elle est un livre de droit.

instagram viewer

Mais si vous apprenez juste .NET, cela peut être très déroutant! Vous devez commencer quelque part. Comprendre les trois façons fondamentales d'écrire du code dans VB.NET est un bon point de départ.

Tu peux écrire VB.NET code en utilisant l'une de ces trois formes. En d'autres termes, vous pouvez créer un Application de la console dans VB.NET Express et écrivez:

Module Module1
Principal sous()
MsgBox ("Ceci est un module!")
End Sub
Module de fin
Classe Class1
Principal sous()
MsgBox ("Ceci est une classe")
End Sub
Fin de classe
Structure Struct1
Dim myString As String
Principal sous()
MsgBox ("Ceci est une structure")
End Sub
Structure d'extrémité

Cela ne fait pas tout sens comme un programme, bien sûr. Le fait est que vous n'obtenez pas d'erreur de syntaxe donc c'est "légal" Code VB.NET.

Ces trois formes sont le seul moyen de coder la racine de la reine des abeilles de l'ensemble de .NET: l'objet. Le seul élément qui interrompt la symétrie des trois formes est l'énoncé: Dim myString As String. Cela a à voir avec une structure étant un "type de données composite" comme Microsoft l'indique dans leur définition.

Une autre chose à noter est que les trois blocs ont un Principal sous() en eux. L'un des principes les plus fondamentaux de la POO est généralement appelé encapsulation. C'est l'effet "boîte noire". En d'autres termes, vous devriez être en mesure de traiter chaque objet indépendamment et cela inclut l'utilisation de sous-programmes portant le même nom si vous le souhaitez.

Des classes

Les cours sont le «bon» point de départ car, comme Microsoft note: "Une classe est un élément fondamental de la programmation orientée objet (POO)." En fait, certains auteurs traitent les modules et les structures comme des types particuliers de classes. Une classe est plus orientée objet qu'un module car il est possible de instancier (faites une copie de) une classe mais pas un module.

En d'autres termes, vous pouvez coder ...

Formule de classe publique1
Sous-formulaire privé1_Load (_
Expéditeur ByVal en tant que système. Objet, _
ByVal e As System. EventArgs) _
Gère MyBase. Charge
Dim myNewClass As Class1 = New Class1
myNewClass. ClassSub ()
End Sub
Fin de classe

(L'instanciation de classe est soulignée.)

Peu importe que la classe elle-même, dans ce cas, ...

Classe publique Class1
Sub ClassSub ()
MsgBox ("Ceci est une classe")
End Sub
Fin de classe

... est dans un fichier seul ou fait partie du même fichier avec le Formulaire 1 code. Le programme fonctionne exactement de la même manière. (Remarquerez que Formulaire 1 est aussi une classe.)

Vous pouvez également écrire du code de classe qui se comporte un peu comme un module, c'est-à-dire sans l'instancier. C'est ce qu'on appelle un partagé classe. L'article "Static" (c'est-à-dire "Shared") par rapport aux types dynamiques dans VB.NET explique cela plus en détail.

Un autre fait sur les classes doit également être gardé à l'esprit. Membres (propriétés et méthodes) de la classe n'existent que lorsque l'instance de la classe existe. Le nom de ceci est cadrage. C'est le portée d'une instance d'une classe est limitée. Le code ci-dessus peut être modifié pour illustrer ce point de cette façon:

Formule de classe publique1
Sous-formulaire privé1_Load (_
Expéditeur ByVal en tant que système. Objet, _
ByVal e As System. EventArgs) _
Gère MyBase. Charge
Dim myNewClass As Class1 = New Class1
myNewClass. ClassSub ()
myNewClass = Rien
myNewClass. ClassSub ()
End Sub
Fin de classe

Quand le second myNewClass. ClassSub () est exécutée, un NullReferenceException erreur est générée car ClassSub le membre n'existe pas.

Modules

Dans VB 6, il était courant de voir des programmes où la plupart du code était dans un module (A .BAS, plutôt que, par exemple, dans un fichier Forme fichier tel que Form1.frm.) Dans VB.NET, les modules et les classes sont .VB des dossiers. La principale raison pour laquelle les modules sont inclus dans VB.NET est de donner aux programmeurs un moyen d'organiser leurs systèmes en plaçant du code à différents endroits pour affiner la portée et l'accès de leur code. (C'est-à-dire, combien de temps les membres du module existent et quel autre code peut référencer et utiliser les membres.) Parfois, vous voudrez peut-être placer le code dans des modules séparés juste pour le rendre plus facile à travailler.

Tous les modules VB.NET sont partagé car ils ne peuvent pas être instanciés (voir ci-dessus) et ils peuvent être marqués Un ami ou Publique afin qu'ils soient accessibles au sein du même assembly ou chaque fois qu'ils sont référencés.

Structures

Les structures sont les moins connues des trois formes d'objets. Si nous parlions d’animaux au lieu d’objets, la structure serait un Aardvark.

La grande différence entre une structure et une classe est qu’une structure est un type de valeur et une classe est un Type de référence.

Qu'est-ce que ça veut dire? Je suis tellement content que tu aies demandé.

Un type de valeur est un objet qui est stocké directement en mémoire. Un Entier est un bon exemple d'un type de valeur. Si vous avez déclaré un Entier dans votre programme comme celui-ci ...

Dim myInt as Integer = 10

... et vous avez vérifié l'emplacement de la mémoire stockée dans myInt, vous trouverez la valeur 10. Vous voyez également cela décrit comme «étant alloué sur la pile».

La pile et le tas sont simplement des façons différentes de gérer l'utilisation de la mémoire de l'ordinateur.

Un type de référence est un objet où l'emplacement de l'objet est stocké en mémoire. La recherche d'une valeur pour un type de référence est donc toujours une recherche en deux étapes. UNE Chaîne est un bon exemple de type de référence. Si vous avez déclaré un Chaîne comme ça ...

Dim myString as String = "This is myString"

... et vous avez vérifié l'emplacement de la mémoire stockée dans myString, vous trouveriez un autre emplacement de mémoire (appelé aiguille - cette façon de faire est le cœur même des langages de style C). Vous devez vous rendre à cet emplacement pour trouver la valeur "This is myString". Ceci est souvent appelé «être alloué sur le tas». La pile et le tas

Certains auteurs disent que les types de valeur ne sont même pas des objets et que seuls les types de référence peuvent être des objets. Il est certainement vrai que les caractéristiques sophistiquées des objets comme l'héritage et encapsulation ne sont possibles qu'avec des types de référence. Mais nous avons commencé tout cet article en disant qu'il y avait trois formes pour les objets, donc je dois accepter que les structures sont une sorte d'objet, même si ce sont des objets non standard.

Les origines de programmation des structures remontent aux langages orientés fichiers comme Cobol. Dans ces langues, les données étaient normalement traitées sous forme de fichiers plats séquentiels. Les "champs" d'un enregistrement du fichier étaient décrits par une section "définition des données" (parfois appelée "cliché d'enregistrement" ou "cahier"). Donc, si un enregistrement du fichier contient:

1234567890ABCDEF9876

La seule façon de savoir que «1234567890» était un numéro de téléphone, «ABCDEF» était un identifiant et 9876 était de 98,76 $ grâce à la définition des données. Les structures vous aident à accomplir cela dans VB.NET.

Structure Structure1
Dim myPhone As String
Dim myID As String
Dim myAmount As String
Structure d'extrémité

Parce qu'un Chaîne est un type de référence, il est nécessaire de conserver la même longueur avec le VBFixedString attribut pour les enregistrements de longueur fixe. Vous pouvez trouver une explication détaillée de cet attribut et des attributs en général dans l'article Attributs dans VB .NET.

Bien que les structures soient des objets non standard, elles ont beaucoup de capacités dans VB.NET. Vous pouvez coder des méthodes, des propriétés et même des événements et des gestionnaires d'événements dans les structures, mais vous pouvez également utiliser un code plus simplifié et, comme ce sont des types de valeur, le traitement peut être plus rapide. Par exemple, vous pouvez recoder la structure ci-dessus comme ceci:

Structure Structure1
Dim myPhone As String
Dim myID As String
Dim myAmount As String
Sub mySub ()
MsgBox ("C'est la valeur de myPhone:" & myPhone)
End Sub
Structure d'extrémité

Et utilisez-le comme ceci:

Dim myStruct As Structure1
myStruct.myPhone = "7894560123"
myStruct.mySub ()

Cela vaut la peine de jouer un peu avec les structures et d'apprendre ce qu'elles peuvent faire. Ils sont l'un des coins étranges de VB.NET qui peuvent être une solution miracle lorsque vous en avez besoin.

instagram story viewer