Académique Documents
Professionnel Documents
Culture Documents
802
Programmation des systèmes de CAO
pour l’aéronautique
______________________________________
Le langage Visual Basic .Net
à grands pas
Partie II: Les objets
_____________________
Roland Maranzana, professeur
Introduction
Classes et instances
Encapsulation
Références
Propriétés
Méthodes
Polymorphisme
Héritage
Constructeurs
Espace des noms
Membres et objets partagés
Orientée‐objet: Méthode de conception qui consiste à
programmer en terme d’objets
Objet = représentation abstraite d’une entité du monde réel
Un objet est composé:
De données qui décrivent l’état d’un objet
(Attributs, propriétés, etc.)
D’opérations qui réalisent le comportement d’un objet
(méthodes, services, fonctions, sous‐programme, etc.)
Modèle = ensemble d’objets qui représentent le monde réel
Programme = des objets qui interagissent
VB.Net supporte les concepts de l’OO
La classe et ses instances
L’encapsulation
L’héritage
Le polymorphisme
Comprendre les rudiments de la POO est essentiel,
VB.Net utilise de nombreuses classes d’objets
La programmation des systèmes CAO se fait par le biais
des API et du modèle objets
Une classe clsVecteur
décrit un type d’objet ou un ensemble d’objets ayant des Xo, Yo, Zo
caractéristiques communes avec X1, Y1, Z1
Ses attributs Couleur
Ses méthodes
définit un nouveau type de données
n’est pas un objet en elle‐même, juste sa description
permet de créer des instances partageant
la même description
Déclaration d’une classe vect1
Public Class nomClasse 0, 0, 0
0, 10, 0
‘ Corps de la classe Rouge
End Class
Une instance d’une classe
vect2
est un objet particulier identifiable
partage la description de la classe 0, 10, 0
0, 10, 10
possède ses propres valeurs pour les attributs Vert
Principe de l’encapsulation:
Connaitre ce que l’objet fait, pas comment il le fait
Un objet est composé de deux parties:
L’Interface de l’objet
Partie visible (utilisable) de l’objet
Que fait l’objet
Doit être stable (favoriser la réutilisation)
Décrit la responsabilité de l’objet, ses services et ses méthodes
Type abstrait
Le corps de l’objet
Partie invisible de l’objet
Comment l’objet réalise ses services, ses méthodes
Peut être modifier sans impacter le reste du programme
Matérialise l’état de l’objet
Une référence à une instance
Toute variable créé comme un objet est en fait une référence et non
l’instance de l’objet
Remarques:
Une variable objet créée mais non affectée fait référence à rien!
Plusieurs variables peuvent faire référence à la même instance d’un objet
Créer une référence à une instance d’une classe
Dim refObj As nomClasse
Créer une instance d’une classe (et l’affecter à une variable objet)
refObj = New nomClasse()
Exemple
Public Class clsVecteur
instance de clsVecteur
‘ à compléter
0, 0, 0
End Class 0, 10, 0
Dim vect1 As clsVecteur Rouge
Dim vect2 As clsVecteur vect1
vect1 = New clsVecteur()
vect2 = vect1 vect2
2 possibilités pour déclarer un attribut
Une variable public
C’est la façon simple
Public nomVar As Type
Contrevient au principe de l’encapsulation
Une propriété
Déclaration d’une propriété
Public Property nomProp As Type
Get ‘ Fonction pour accéder à la valeur de la propriété
Return nomProp
End get
Set ([ByVal;ByRef] Value As type) ‘ Fonction pour affecter une valeur à la propriété
nomProp = Value
End Set
End Property
Propriété en lecture uniquement (Pas de fonction Set):
Public ReadOnly Property nomProp() As Type
Propriété en écriture uniquement (pas de fonction Get, c’est plutôt rare):
Public WriteOnly Property nomProp() As Type
Exemple Public Class clsVecteur
Public mCouleur As Long
(un peu ridicule!) Public Property mX0() As Double
Get
Return mX0
End Get
Set (ByVal Value As Double)
mX0= Value
End Set
End Property
Public ReadOnly Property mY0) As Double
Get
Return mY0
End Get
End Property
Public WriteOnly Property mZ0() As Double
Set (ByVal Value As Double)
mZ0= Value
End Set
End Property
End Class
Accéder aux propriétés:
En lecture
nomVar = nomInstance.nomProp
En écriture
nomInstance.nomProp = nomVar
Exemple
Méthodes d’une classe
Fonctions
Sous‐programmes
Méthode public: accessible de l’extérieur de la classe
Méthode privée: Accessible que dans la classe (service interne)
Déclaration
Public Sub nomSub()
‘ Code du sous‐programme
End Sub
Exemple Public Class clsVecteur
Public Property …
…
End Property
Public Function mNorme() As Double
return (sqrt((mX)^2 + (mY)^2 +(mZ)^2)
End Function
Dim v1 As clsVecteur = New clsVecteur()
….
Dim norme As Double = v1.mNorme()
v1.Translate(10., 0., 0.)
Surcharge d’une méthode
La surcharge permet d’avoir plusieurs fois le même nom de fonction
tant que les paramètres d’appel les différencient
Déclaration
Public Overloads nomMethode ([var1 As type, …]) [As Type]
Exemple
Concept fondamental pour la création de systèmes a base
d’objets
Principes de base:
L’héritage permet de spécialiser une classe
Une classe plus spécialisée ‘’hérite’’ des propriétés et des méthodes
d’une classe plus générale
La classe spécialisée (ou dérivée) peut ajouter ses propres propriétés
et/ou méthodes
La classe dérivée peut modifier des méthodes de la classe dont elle
hérite (classe de base ou parent)
Une relation de type ‘’parent‐enfants’’ existe entre les classes générales
et les classes dérivées (hiérarchie en VB.Net)
Déclaration d’une classe avec héritage
Public class clsDerive
Inherits clsBase
…
End Class
Exemple
Public Class clsPoint
Public Property mX As Double …
… Dim c1 As clsCercle
End Property c1 = New clsCercle()
…
…
Dim dblVar As Double
End Class dblVar = c1.mX
dblVar = c1.mRayon
Public Class clsCercle
Inherits clsPoint
Dim mRayon As Double
Public Property Rayon As Double
…
End Property
End Class
Modifier une méthode de la classe de base
Une méthode de la classe dérivée déclarée avec Overrides se substitue
à une méthode de la classe de base qui l’autorise avec Overrridable
La substitution d’une méthode de la classe de base est obligatoire avec
MustOverride
Si une méthode doit être réécrite, alors la classe doit être dérivée
Une classe peut obliger l’héritage avec MustInherit
Dans VB.Net, tous les objets héritent de System.Object
Fournit des méthodes dont toutes les classes disposent
Une classe est un Type
Dans une situation d’héritage, une instance de la classe dérivée peut
utiliser le type d’une classe parent
Exemple
Dim c1 As clsCercle ‘ classe dérivée de clsPoint
c1 = New clsCercle()
Dim p1 As clsPoint
…
Dim dblVar As Double = 10.
c1.mX = dblVar
c1.mRayon = dblVar
p1 = c1
dblVar = p1.mX
dblVar = p1.mRayon ‘ Erreur!
New
Crée une nouvelle instance d’une classe
Réserve la place nécessaire en mémoire
Constructeurs
Permettent à l’instance de s’initialiser à la création
Toutes les classes ont par défaut un constructeur sans paramètre
Une classe peut avoir plusieurs constructeurs (polymorphisme)
Déclaration d’un constructeur
Concept abstrait pour regrouper un ensemble de classes, de
modules, de lignes de code
Déclaration d’un espace
Namespace nomEspace
….
End Namespace
Mis en préfixe des identifiants, il garantit l’unicité de l’identifiant
Les Namespace peuvent être imbriqués
Exemple
Namespace ETS
…
Namespace MGA802
…
Dim obj As ETS.MGA802.clsPoint
…
End Namespace
…
End Namespace
Les propriétés et méthodes d’une classe déclarées partagées,
sont accessible sans avoir à créer une instance au préalable
Déclarations d’un membre partagé
Shared Sub nomSub([var As type, …])
…
End Sub
Shared Function nomFonct ([var As Type, …]) As Type
…
End Function
Shared Dim varNom As Type
Exemple
Public Class clsPoint
Shared Dim nbrPoint As Long
…
End Class