Lorsque vous ouvrez la classe en double-cliquant sur son icône dans la fenêtre de l’explorateur de projet, vous verrez les lignes suivantes dans la fenêtre de code :
Public Class Minimal
End Class
Vous pouvez également créer une classe dans le même fichier que le formulaire de l’application. Pour ce faire, entrez dans la classe mot-clé suivi du nom de la classe, après End Class existante. L’éditeur insère le correspondant à End Class pour vous. À ce stade, vous avez déjà un cours, même s’il ne fait rien. Revenez au concepteur de formulaires, ajoutez un bouton au formulaire de test et insérez ce qui suit
code dans son gestionnaire d’événements Click :
Dim obj1 As Minimal()
Appuyez sur Entrée et, sur la ligne suivante, tapez le nom de la variable, obj1, suivi d’un point.
Vous verrez une liste des méthodes que votre classe expose déjà :
Equals
GetHashCode
GetType
ReferenceEqual
ToString
Ces méthodes sont fournies par le Common Language Runtime (CLR). Vous n’avez pas besoin de fournir de code pour ces méthodes. Ils n’exposent aucune fonctionnalité réelle ; ils reflètent simplement comment VB gère toutes les classes. Pour voir le type de fonctionnalité que ces méthodes exposent, entrez ce qui suit lignes dans le gestionnaire d’événements Click du bouton, puis exécutez l’application :
Dim obj1 As New Minimal()
Console.WriteLine(obj1.ToString)
Console.WriteLine(obj1.GetType)
Console.WriteLine(obj1.GetHashCode)
Dim obj2 As New Minimal()
Console.WriteLine(obj1.Equals(obj2))
Console.WriteLine(Minimal.ReferenceEquals(obj1, obj2))
Les lignes suivantes seront imprimées sur la fenêtre de sortie :
SimpleClass.Minimal
SimpleClass.Minimal
18
False
False
Comme vous pouvez le voir, le nom de l’objet est le même que son type. C’est toutes les informations sur
votre nouvelle classe disponible pour le CLR. Bientôt, vous verrez comment vous pouvez mettre en œuvre votre propre ToString et renvoie une autre valeur. La valeur de hachage de la variable obj1 est de 18, mais cela n’a aucune conséquence.
La ligne suivante vous indique que deux variables du même type ne sont pas égales. Mais pourquoi ne sont-ils pas égal? Nous ne les avons pas du tout différenciés, mais ils sont différents parce qu’ils indiquent deux objets et le compilateur ne sait pas les comparer. Tout ce qu’il peut faire, c’est de déterminer si
ils pointent vers le même objet. Pour comprendre comment les objets sont comparés, ajoutez l’instruction suivante après la ligne qui déclare obj2 :
obj2 = obj1
If you run the application again, the last statement will print True on the Output window. The Equals method checks for reference equality; that is, it returns True if both variables point to the same object (same instance of the class). If you change obj1, then obj2 will point to the new object.
OK, we can’t change the object because it exposes no members that we can set to differentiate it from another object of the same type. We’ll get to that shortly.
Most classes expose a custom Equals method, which knows how to compare two objects of the same class. The custom Equals method usually compares the properties of the two instances of the class and returns True if all properties are the same. You’ll learn how to customize the default members of any class later in this chapter.
Notice the name of the class: SimpleClass.Minimal. Within the current project, you can access it as Minimal. Other projects can either import the Minimal class and access it as Minimal, or specify the complete name of the class.
Ajout de code à la classe minimale
Ajoutons quelques fonctionnalités à notre classe. Nous allons commencer par ajouter quelques propriétés et méthodes à effectuer des tâches simples de manipulation de texte. Les deux propriétés sont appelées propriété1 (une chaîne) et propriété2 (un double). Pour exposer ces deux membres en tant que propriétés, vous pouvez simplement les déclarer comme public variables. Ce n’est pas la meilleure méthode pour implémenter des propriétés, mais cela ne prend vraiment pas plus de déclarer quelque chose comme Public pour le rendre disponible au code en dehors de la classe. La ligne suivante expose les deux propriétés de la classe :
Public property1 As String, property2 As Double
Les deux méthodes sont les méthodes ReverseString et NegateNumber. La première méthode s’inverse l’ordre des caractères dans property1 et renvoie la nouvelle chaîne. La méthode NegateNumber renvoie le négatif de property2. Ce sont les types de méthodes les plus simples qui n’acceptent aucune arguments; ils opèrent simplement sur les valeurs des propriétés. De la même manière que les propriétés sont exposées en tant que variables publiques, les méthodes sont exposées en tant que procédures publiques (fonctions ou sous-routines).
Entrez les déclarations de fonction du Listing 8.1 entre les instructions Class Minimal et End Class
dans la fenêtre de code de la classe (je montre la liste complète de la classe ici).
Listing 8.1 : Ajout de quelques membres à la classe minimale
Public Class Minimal
Public property1 As String, property2 As Double
Public Function ReverseString() As String
Return (StrReverse(property1))
End Function
Public Function NegateNumber() As Double
Return (-property2)
End Function
End Class
Ecrit par : IDLAHCEN