SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
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
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é
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
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).
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é.
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
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

Más contenido relacionado

La actualidad más candente

programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++coursuniv
 
Interface collectionsinter
Interface collectionsinterInterface collectionsinter
Interface collectionsinterRYMAA
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
 
Correction de la question 5 de l'exercice 2 du TD3 (M1202)
Correction de la question 5 de l'exercice 2 du TD3 (M1202)Correction de la question 5 de l'exercice 2 du TD3 (M1202)
Correction de la question 5 de l'exercice 2 du TD3 (M1202)PGambette
 
INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3PGambette
 
Chapitre 1 introduction generale
Chapitre 1   introduction generaleChapitre 1   introduction generale
Chapitre 1 introduction generaleAmir Souissi
 
Interface fonctionnelle, Lambda expression, méthode par défaut, référence de...
Interface fonctionnelle, Lambda expression, méthode par défaut,  référence de...Interface fonctionnelle, Lambda expression, méthode par défaut,  référence de...
Interface fonctionnelle, Lambda expression, méthode par défaut, référence de...MICHRAFY MUSTAFA
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeAmir Souissi
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objetsAziz Darouichi
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfacesAmir Souissi
 
Chapitre4 cours de java
Chapitre4 cours de javaChapitre4 cours de java
Chapitre4 cours de javainfo1994
 

La actualidad más candente (20)

programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++
 
Interface collectionsinter
Interface collectionsinterInterface collectionsinter
Interface collectionsinter
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
Correction de la question 5 de l'exercice 2 du TD3 (M1202)
Correction de la question 5 de l'exercice 2 du TD3 (M1202)Correction de la question 5 de l'exercice 2 du TD3 (M1202)
Correction de la question 5 de l'exercice 2 du TD3 (M1202)
 
INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3
 
Ch13
Ch13Ch13
Ch13
 
TP C++ : enoncé
TP C++ : enoncéTP C++ : enoncé
TP C++ : enoncé
 
Chapitre 1 introduction generale
Chapitre 1   introduction generaleChapitre 1   introduction generale
Chapitre 1 introduction generale
 
Interface fonctionnelle, Lambda expression, méthode par défaut, référence de...
Interface fonctionnelle, Lambda expression, méthode par défaut,  référence de...Interface fonctionnelle, Lambda expression, méthode par défaut,  référence de...
Interface fonctionnelle, Lambda expression, méthode par défaut, référence de...
 
Les listes en Python
Les listes en PythonLes listes en Python
Les listes en Python
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphisme
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfaces
 
Chapitre4 cours de java
Chapitre4 cours de javaChapitre4 cours de java
Chapitre4 cours de java
 
Arbre et algorithme de recherche
Arbre et algorithme de rechercheArbre et algorithme de recherche
Arbre et algorithme de recherche
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Ns python 2
Ns python 2Ns python 2
Ns python 2
 
Chapitre 04 : les fonctions
Chapitre 04 : les fonctionsChapitre 04 : les fonctions
Chapitre 04 : les fonctions
 
algorithmique
algorithmiquealgorithmique
algorithmique
 

Similar a Chapitre 3 et 4

mis
mismis
misISIG
 
Visual studio
Visual studioVisual studio
Visual studioISIG
 
7_Chapitre6_Les collections.pdf
7_Chapitre6_Les collections.pdf7_Chapitre6_Les collections.pdf
7_Chapitre6_Les collections.pdffatimakhdidr
 
5- understandinggJava_Collections_v4.pdf
5- understandinggJava_Collections_v4.pdf5- understandinggJava_Collections_v4.pdf
5- understandinggJava_Collections_v4.pdfAliouDiallo24
 
Programmation en VBA Introduction au language Visual Basic for Applications ...
Programmation en VBA  Introduction au language Visual Basic for Applications ...Programmation en VBA  Introduction au language Visual Basic for Applications ...
Programmation en VBA Introduction au language Visual Basic for Applications ...Bassim ELKHATTABY
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
 
Classes et Objets.pdf
Classes et Objets.pdfClasses et Objets.pdf
Classes et Objets.pdfAabidiHafid
 
Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Rahma Boufalgha
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scalaSOAT
 
Vbisigk
VbisigkVbisigk
VbisigkISIG
 
Héritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdfHéritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdfAabidiHafid
 

Similar a Chapitre 3 et 4 (20)

mis
mismis
mis
 
Visual studio
Visual studioVisual studio
Visual studio
 
7_Chapitre6_Les collections.pdf
7_Chapitre6_Les collections.pdf7_Chapitre6_Les collections.pdf
7_Chapitre6_Les collections.pdf
 
5- understandinggJava_Collections_v4.pdf
5- understandinggJava_Collections_v4.pdf5- understandinggJava_Collections_v4.pdf
5- understandinggJava_Collections_v4.pdf
 
Programmation en VBA Introduction au language Visual Basic for Applications ...
Programmation en VBA  Introduction au language Visual Basic for Applications ...Programmation en VBA  Introduction au language Visual Basic for Applications ...
Programmation en VBA Introduction au language Visual Basic for Applications ...
 
POO-JAVA-partie-2.pdf
POO-JAVA-partie-2.pdfPOO-JAVA-partie-2.pdf
POO-JAVA-partie-2.pdf
 
ExJava.pdf
ExJava.pdfExJava.pdf
ExJava.pdf
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
Type abstrait de données
Type abstrait de donnéesType abstrait de données
Type abstrait de données
 
JAVA Chapitre7
JAVA Chapitre7JAVA Chapitre7
JAVA Chapitre7
 
Memo java
Memo javaMemo java
Memo java
 
Theme 7
Theme 7Theme 7
Theme 7
 
Classes et Objets.pdf
Classes et Objets.pdfClasses et Objets.pdf
Classes et Objets.pdf
 
22-reflection.pdf
22-reflection.pdf22-reflection.pdf
22-reflection.pdf
 
syntax-matlab.pdf
syntax-matlab.pdfsyntax-matlab.pdf
syntax-matlab.pdf
 
Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scala
 
Vbisigk
VbisigkVbisigk
Vbisigk
 
Héritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdfHéritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdf
 
C++ 11/14
C++ 11/14C++ 11/14
C++ 11/14
 

Chapitre 3 et 4

  • 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. 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. 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. 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. 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. 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. 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