Vous êtes sur la page 1sur 20

MGA 

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

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 1


Plan de la présentation

 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

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 2


Introduction

 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 

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 3


Introduction

 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 

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 4


Classes et Instances

 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

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 5


Encapsulation

 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

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 6


Références 

 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

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 7


Propriétés

 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

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 8


Propriétés

 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

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 9


Propriétés

 Accéder aux propriétés:
 En lecture
nomVar = nomInstance.nomProp
 En écriture
nomInstance.nomProp = nomVar

 Exemple

Dim vect1 As clsVecteur = New clsVecteur()


vect1.mX0 = 10
dim x As Double
x = vect1.mX0

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 10


Méthodes

 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

Public Function nomFonct ([var As Type, …]) As Type


‘ Code du sous‐programme
End Sub
 Appel d’une méthode
[nomVar = ] nomInstance.nomMethode([nomVar1, …])

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 11


Méthodes

 Exemple Public Class clsVecteur
Public Property …

End Property

Public Function mNorme() As Double
return (sqrt((mX)^2 + (mY)^2 +(mZ)^2)
End Function

Public Sub mTranslate (dx As Double, dy As Double, dz As Double)


mX += dx
mY += dx
mZ += dy
End Sub
End Class

Dim v1 As clsVecteur = New clsVecteur()
….
Dim norme As Double =  v1.mNorme()
v1.Translate(10., 0., 0.)

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 12


Polymorphisme

 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

 Public Sub mTranslate (dx As Double, dy As Double, dz As Double)


 …
 End Sub

 Public Sub mTranslate (dxyz(3) As Double)


 …
 End Sub

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 13


Héritage

 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)

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 14


Héritage

 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

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 15


Héritage

 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

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 16


Héritage

 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!

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 17


Constructeur

 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

Public Sub New([var As type, …])


‘Code d’initialisation
End Sub

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 18


Espace des noms

 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

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 19


Membres et objets partagés

 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

Dim nbP As Long = clsPoint.nbP

MGA810 Personnalisation des systèmes de CAO pour la mécanique  Copyright R. Maranzana p 20

Vous aimerez peut-être aussi