Intéressant

Modules, Structures et Classes

Modules, Structures et Classes

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

  • Modules
  • Des structures
  • Des classes

Mais la plupart des articles techniques supposent que vous les connaissez déjà. Si vous êtes l'un de ceux qui ont encore quelques questions à poser, vous pouvez tout simplement lire au-delà des passages confus et essayer de le résoudre de toute façon. Et si tu as un lot vous pouvez commencer à chercher dans la documentation de Microsoft:

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

Oui, 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 toutes ces choses 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 loi.

Mais si vous venez d'apprendre .NET, cela peut être très déroutant! Tu dois commencer quelque part. Comprendre les trois manières fondamentales d’écrire du code dans VB.NET est un bon point de départ.

Vous pouvez écrire du code VB.NET en utilisant l’un de ces trois formulaires. 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 classe1
Principal sous()
MsgBox ("Ceci est une classe")
End Sub
Classe de fin
Structure Struct1
Dim myString As String
Principal sous()
MsgBox ("Ceci est une structure")
End Sub
Structure de fin

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

Ces trois formes sont le seul moyen de coder la racine reine de tout .NET: l’objet. Le seul élément qui interrompt la symétrie des trois formes est l'énoncé suivant: Dim myString As String. Cela a à voir avec une structure étant un "type de données composite" comme Microsoft l'indique dans sa 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 capable de traiter chaque objet indépendamment et cela inclut l'utilisation de sous-routines portant le même nom si vous le souhaitez.

Des classes

Les classes sont le "bon" endroit pour commencer car, comme le note Microsoft, "une classe est un élément fondamental de la programmation orientée objet (OOP)". En fait, certains auteurs considèrent les modules et les structures comme de simples types de classes. Une classe est plus orientée objet qu'un module car il est possible de instancier (faire une copie de) une classe mais pas un module.

En d'autres termes, vous pouvez coder…

Classe publique Form1
Private Sub Form1_Load (_
ByVal expéditeur As System.Object, _
ByVal e As System.EventArgs) _
Gère MyBase.Load
Dim myNewClass As Class1 = Nouvelle Class1
myNewClass.ClassSub ()
End Sub
Classe de fin

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

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

Classe publique Classe1
Sub ClassSub ()
MsgBox ("Ceci est une classe")
End Sub
Classe de fin

… Se trouve 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 une classe aussi.)

Vous pouvez également écrire du code de classe qui se comporte un peu comme un module, c'est-à-dire sans l'instancier. Ceci s'appelle un partagé classe. L'article "Static" (c'est-à-dire "Partagé") et les types dynamiques dans VB.NET expliquent cela beaucoup plus en détail.

Il faut aussi garder à l’esprit un autre fait concernant les cours. Membres (propriétés et méthodes) de la classe n’existent que tant que 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 la manière suivante:

Classe publique Form1
Private Sub Form1_Load (_
ByVal expéditeur As System.Object, _
ByVal e As System.EventArgs) _
Gère MyBase.Load
Dim myNewClass As Class1 = Nouvelle Class1
myNewClass.ClassSub ()
myNewClass = Nothing
myNewClass.ClassSub ()
End Sub
Classe de fin

Quand le second myNewClass.ClassSub () déclaration est exécutée, une NullReferenceException erreur est levée parce que le ClassSub Le membre n'existe pas.

Modules

Dans VB 6, il était courant de voir des programmes dont la majeure partie du code était dans un module (A .BAS, fichier plutôt que, par exemple, dans un Forme fichier tel que Form1.frm.) Dans VB.NET, les modules et les classes sont en .VB des dossiers. La raison principale pour laquelle les modules sont inclus dans VB.NET est de donner aux programmeurs un moyen d’organiser leurs systèmes en plaçant le code à différents endroits pour affiner la portée et l’accès de leur code. (C'est-à-dire depuis combien de temps les membres du module existent et quels autres codes peuvent référencer et utiliser les membres.) Parfois, vous souhaiterez peut-être insérer du code dans des modules séparés uniquement pour faciliter le travail.

Tous les modules VB.NET sont partagé car ils ne peuvent pas être instanciés (voir ci-dessus) et peuvent être marqués Ami ou Publique afin qu'ils puissent être consultés soit dans le même assemblage, soit à chaque fois qu'ils sont référencés.

Des structures

Les structures sont les moins bien comprises 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 vous avez demandé.

Un type de valeur est un objet 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 ça…

Dim myInt as Integer = 10

… Et vous avez vérifié l'emplacement de la mémoire stockée dans myInt, vous trouveriez la valeur 10. Vous verrez également que ceci est 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 dans lequel l'emplacement de l'objet est stocké en mémoire. Donc, trouver une valeur pour un type de référence est toujours une recherche en deux étapes. UNE Chaîne est un bon exemple d'un type de référence. Si vous avez déclaré un Chaîne comme ça…

Dim myString as String = "Ceci est maChaine"

… 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 coeur 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 d'objet sophistiquées telles que l'héritage et l'encapsulation ne sont possibles qu'avec les 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 soient une sorte d'objet, même s'il s'agit d'objets non standard.

Les origines de la programmation des structures remontent à des langages orientés fichiers tels que 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 dans une section "définition de données" (parfois appelée "structure 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 $ était à travers 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 de fin

Parce qu'un Chaîne est un type de référence, il est nécessaire de garder 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 disposent de nombreuses fonctionnalité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 des structures, mais vous pouvez également utiliser un code plus simplifié et, du fait qu’ils 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 ("Ceci est la valeur de myPhone:" & myPhone)
End Sub
Structure de fin

Et utilisez-le comme ceci:

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

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

Voir la vidéo: Classes and Objects with Python - Part 1 Python Tutorial #9 (Septembre 2020).