10
III. Les interfaces
Une interface est un ensemble de prototypes de méthodes ou de propriétés qui forme un
contrat. Une ...
11
Il y a, malgré une similitude de déclaration, des différences importantes entre classe et
structure. La notion d'hérita...
1
Chapitre 4 : Classes .NET d'usage courant
I. La classe String
La classe String présente de nombreuses propriétés et méth...
2
Le programme suivant illustre l'utilisation de la classe Array :
Module test
Sub Main()
' lecture des éléments d'un tabl...
3
Next i
' Recherche
While Not terminé
' question
Console.Out.Write("Elément cherché (rien pour arrêter) : ")
' lecture-vé...
4
III. La classe ArrayList
La classe ArrayList permet d'implémenter des tableaux de taille variable au cours de
l'exécutio...
5
Console.Out.Write(("Elément (réel) " & i & " du tableau (rien pour terminer) : "))
' lecture de la réponse
réponse = Con...
Prochain SlideShare
Chargement dans…5
×

Chapitre 3 et 4

198 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
198
Sur SlideShare
0
Issues des intégrations
0
Intégrations
6
Actions
Partages
0
Téléchargements
6
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Chapitre 3 et 4

  1. 1. 10 III. Les interfaces Une interface est un ensemble de prototypes de méthodes ou de propriétés qui forme un contrat. Une classe qui décide d'implémenter une interface s'engage à fournir une implémentation de toutes les méthodes définies dans l'interface. C'est le compilateur qui vérifie cette implémentation. Voici par exemple la définition de l'interface Istats : Public Interface Istats Function moyenne() As Double Function écartType() As Double End Interface Toute classe implémentant cette interface sera déclarée comme public class C Implements Istats ... function moyenne() as Double Implements Istats.moyenne ... end function function écartType () as Double Implements Istats. écartType ... end function end class Les méthodes [moyenne] et [écartType] devront être définies dans la classe C. Une classe peut en même temps hériter une autre classe et implémenter une interface : Public Class notesStats Inherits notes Implements Istats L’héritage d'interfaces peut être multiple, c.à.d. qu'on peut écrire Public Class classe Implements I1,I2,... où les Ij sont des interfaces. IV. Les structures La structure VB.NET est directement issue de la structure du langage C et est très proche de la classe. Une structure est définie comme suit : Structure spersonne ' attributs ... ' propriétés ... ' constructeurs ... ' méthodes End Structure
  2. 2. 11 Il y a, malgré une similitude de déclaration, des différences importantes entre classe et structure. La notion d'héritage n'existe par exemple pas avec les structures. • la valeur d'une variable de type structure est la structure elle-même • la valeur d'une variable de type objet est l'adresse de l'objet pointé
  3. 3. 1 Chapitre 4 : Classes .NET d'usage courant I. La classe String La classe String présente de nombreuses propriétés et méthodes. En voici quelques-unes : II. La classe Array La classe Array implémente un tableau. Nous utiliserons dans notre exemple les propriétés et méthodes suivantes : Public ReadOnly Property Length As Integer nombre de caractères de la chaîne Public Default ReadOnly Property Chars(ByVal index As Integer) As Char propriété indexée par défaut. [String].Chars(i) est le caractère n° i de la chaîne Public Function EndsWith(ByVal value As String) As Boolean rend vrai si la chaîne se termine par value Public Function StartsWith(ByVal value As String) As Boolean rend vrai si la chaîne commence par value Overloads Public Function Equals(ByVal value As String) As Boolean rend vrai si la chaîne est égale à value Overloads Public Function IndexOf(ByVal value As String) As Integer rend la première position dans la chaîne de la chaîne value - la recherche commence à partir du caractère n° 0 Overloads Public Function IndexOf(ByVal value As String,ByVal startIndex As Integer) As Integer rend la première position dans la chaîne de la chaîne value - la recherche commence à partir du caractère n° startIndex Overloads Public Shared Function Join(ByVal separator As String,ByVal value() As String) As String méthode de classe - rend une chaîne de caractères, résultat de la concaténation des valeurs du tableau value avec le séparateur separator Overloads Public Function Replace(ByVal oldChar As Char,ByVal newChar As Char) As String rend une chaîne copie de la chaîne courante où le caractère oldChar a été remplacé par le caractère newChar Overloads Public Function Split(ByVal ParamArray separator() As Char) As String() la chaîne est vue comme une suite de champs séparés par les caractères présents dans le tableau separator. Le résultat est le tableau de ces champs Overloads Public Function Substring(ByVal startIndex As Integer,ByVal length As Integer) As String sous-chaîne de la chaîne courante commençant à la position startIndex et ayant length caractères Overloads Public Function ToLower() As String rend la chaîne courante en minuscules Overloads Public Function ToUpper() As String rend la chaîne courante en majuscules Overloads Public Function Trim() As String rend la chaîne courante débarrassée de ses espaces de début et fin
  4. 4. 2 Le programme suivant illustre l'utilisation de la classe Array : Module test Sub Main() ' lecture des éléments d'un tableau tapés au clavier Dim terminé As [Boolean] = False Dim i As Integer = 0 Dim éléments1 As Double() = Nothing Dim éléments2 As Double() = Nothing Dim élément As Double = 0 Dim réponse As String = Nothing Dim erreur As [Boolean] = False While Not terminé ' question Console.Out.Write(("Elément (réel) " & i & " du tableau (rien pour terminer) : ")) ' lecture de la réponse réponse = Console.ReadLine().Trim() ' fin de saisie si chaîne vide If réponse.Equals("") Then Exit While End If ' vérification saisie Try élément = [Double].Parse(réponse) erreur = False Catch Console.Error.WriteLine("Saisie incorrecte, recommencez") erreur = True End Try ' si pas d'erreur If Not erreur Then ' nouveau tableau pour accueillir le nouvel élément éléments2 = New Double(i) {} ' copie ancien tableau vers nouveau tableau If i <> 0 Then Array.Copy(éléments1, éléments2, i) End If ' nouveau tableau devient ancien tableau éléments1 = éléments2 ' plus besoin du nouveau tableau éléments2 = Nothing ' insertion nouvel élément éléments1(i) = élément ' un élémt de plus dans le tableau i += 1 End If End While ' affichage tableau non trié System.Console.Out.WriteLine("Tableau non trié") For i = 0 To éléments1.Length - 1 Console.Out.WriteLine(("éléments[" & i & "]=" & éléments1(i))) Next i ' tri du tableau System.Array.Sort(éléments1) ' affichage tableau trié System.Console.Out.WriteLine("Tableau trié") For i = 0 To éléments1.Length - 1 Console.Out.WriteLine(("éléments[" & i & "]=" & éléments1(i))) Public ReadOnly Property Length As Integer propriété - nombre d'éléments du tableau Overloads Public Shared Function BinarySearch(ByVal array As Array,ByVal index As Integer,ByVal length As Integer,ByVal value As Object) As Integer méthode de classe - rend la position de value dans le tableau trié array - cherche à partir de la position index et avec length éléments Overloads Public Shared Sub Copy(ByVal sourceArray As Array,ByVal destinationArray As Array,ByVal length As Integer) méthode de classe -copie length éléments de sourceArray dans destinationArray -destinationArray est créé pour l'occasion Overloads Public Shared Sub Sort(ByVal array As Array) méthode de classe -trie le tableau array - celui doit contenir un type de données ayant une fonction d'ordre par défaut (chaînes, nombres).
  5. 5. 3 Next i ' Recherche While Not terminé ' question Console.Out.Write("Elément cherché (rien pour arrêter) : ") ' lecture-vérification réponse réponse = Console.ReadLine().Trim() ' fini ? If réponse.Equals("") Then Exit While End If ' vérification Try élément = [Double].Parse(réponse) erreur = False Catch Console.Error.WriteLine("Saisie incorrecte, recommencez") erreur = True End Try ' si pas d'erreur If Not erreur Then ' on cherche l'élément dans le tableau trié i = System.Array.BinarySearch(éléments1, 0, éléments1.Length, élément) ' Affichage réponse If i >= 0 Then Console.Out.WriteLine(("Trouvé en position " & i)) Else Console.Out.WriteLine("Pas dans le tableau") End If End If End While End Sub End Module La première partie du programme construit un tableau à partir de données numériques tapées au clavier. Le tableau ne peut être dimensionné à priori puisqu'on ne connaît pas le nombre d'éléments que va taper l'utilisateur. On travaille alors avec deux tableaux éléments1 et éléments2. Le tableau éléments1 contient les valeurs actuellement saisies. Lorsque l'utilisateur ajoute une nouvelle valeur, on construit un tableau éléments2 avec un élément de plus que éléments1, on copie le contenu de éléments1 dans éléments2 (Array.Copy), on fait "pointer" éléments1 sur éléments2 et enfin on ajoute le nouvel élément à éléments1. C'est un processus complexe qui peut être simplifié si au lieu d'utiliser un tableau de taille fixe (Array) on utilise un tableau de taille variable (ArrayList). Le tableau est trié avec la méthode Array.Sort. Cette méthode peut être appelée avec différents paramètres précisant les règles de tri. Sans paramètres, c'est ici un tri en ordre croissant qui est fait par défault. Enfin, la méthode Array.BinarySearch permet de chercher un élément dans un tableau trié.
  6. 6. 4 III. La classe ArrayList La classe ArrayList permet d'implémenter des tableaux de taille variable au cours de l'exécution du programme, ce que ne permet pas la classe Array précédente. Voici quelques- unes des propriétés et méthodes courantes : Reprenons l'exemple traité avec des objets de type Array et traitons-le avec des objets de type ArrayList : Imports System.Collections Module test Sub Main() ' lecture des éléments d'un tableau tapés au clavier Dim terminé As [Boolean] = False Dim i As Integer = 0 Dim éléments As New ArrayList Dim élément As Double = 0 Dim réponse As String = Nothing Dim erreur As [Boolean] = False While Not terminé ' question Public Sub New() construit une liste vide Public Overridable ReadOnly Property Count As Integer Implements ICollection.Count nombre d'éléments de la collection Public Overridable Function Add(ByVal value As Object) As Integer Implements IList.Add ajoute l'objet value à la fin de la collection Public Overridable Sub Clear() Implements IList.Clear efface la liste Overloads Public Overridable Function IndexOf(ByVal value As Object) As Integer Implements IList.IndexOf indice de l'objet value dans la liste ou -1 s'il n'existe pas Overloads Public Overridable Function IndexOf(ByVal value As Object, ByVal startIndex As Integer) As Integer idem mais en cherchant à partir de l'élément n° startIndex Overloads Public Overridable Function LastIndexOf(ByVal value As Object) As Integer idem mais rend l'indice de la dernière occurrence de value dans la liste Overloads Public Overridable Function LastIndexOf(ByVal value As Object, ByVal startIndex As Integer) As Integer idem mais en cherchant à partir de l'élément n° startIndex Public Overridable Sub Remove( ByVal obj As Object) Implements IList.Remove enlève l'objet obj s'il existe dans la liste Public Overridable Sub RemoveAt(ByVal index As Integer) Implements IList.RemoveAt enlève l'élément index de la liste Overloads Public Overridable Function BinarySearch(ByVal value As Object) As Integer rend la position de l'objet value dans la liste ou -1 s'il ne s'y trouve pas. La liste doit être triée Overloads Public Overridable Sub Sort() trie la liste. Celle-ci doit contenir des objets ayant une relation d'ordre prédéfinie (chaînes, nombres) Overloads Public Overridable Sub Sort(ByVal comparer As IComparer) trie la liste selon la relation d'ordre établie par la fonction comparer
  7. 7. 5 Console.Out.Write(("Elément (réel) " & i & " du tableau (rien pour terminer) : ")) ' lecture de la réponse réponse = Console.ReadLine().Trim() ' fin de saisie si chaîne vide If réponse.Equals("") Then Exit While End If ' vérification saisie Try élément = Double.Parse(réponse) erreur = False Catch Console.Error.WriteLine("Saisie incorrecte, recommencez") erreur = True End Try ' si pas d'erreur If Not erreur Then ' un élémt de plus dans le tableau éléments.Add(élément) End If End While ' affichage tableau non trié System.Console.Out.WriteLine("Tableau non trié") For i = 0 To éléments.Count - 1 Console.Out.WriteLine(("éléments[" & i & "]=" & éléments(i).ToString)) Next i ' tri du tableau éléments.Sort() ' affichage tableau trié System.Console.Out.WriteLine("Tableau trié") For i = 0 To éléments.Count - 1 Console.Out.WriteLine(("éléments[" & i & "]=" & éléments(i).ToString)) Next i ' Recherche While Not terminé ' question Console.Out.Write("Elément cherché (rien pour arrêter) : ") ' lecture-vérification réponse réponse = Console.ReadLine().Trim() ' fini ? If réponse.Equals("") Then Exit While End If ' vérification Try élément = [Double].Parse(réponse) erreur = False Catch Console.Error.WriteLine("Saisie incorrecte, recommencez") erreur = True End Try ' si pas d'erreur If Not erreur Then ' on cherche l'élément dans le tableau trié i = éléments.BinarySearch(élément) ' Affichage réponse If i >= 0 Then Console.Out.WriteLine(("Trouvé en position " & i)) Else Console.Out.WriteLine("Pas dans le tableau") End If End If End While End Sub End Module

×