28
2ème année IAG Chapitre 2: La programmation orientée objet avec VB.Net Support de cours VB.NET 2013-2014 Cours réalisé par: Mr Chaouki Bayoudhi Mme Meriem Ennigrou

Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

  • Upload
    dangque

  • View
    229

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

2ème année IAG

Chapitre 2: La programmation

orientée objet avec VB.Net

Support de cours VB.NET2013-2014

Cours réalisé par:

Mr Chaouki Bayoudhi Mme Meriem Ennigrou

Page 2: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

Notion de classe• Au cœur de la programmation orientée objet: la notion de classe

• Une classe permet de décrire des objets du monde réel• Une classe comporte toujours:

• Des données représentent les caractéristiques (propriétés, données, descriptions, ..). Ce sont les membres de la classe

• Les traitements (procédures et fonctions) associés à cette structure de données. Ce sont les méthodes de la classe.

2Support de cours VB.NET

structure de données. Ce sont les méthodes de la classe. • Un Objet est une instanciation d’une classe• En VB.Net, tout est objet :

• Objets ‘visuels’ tels que les formulaires (instances de la classe Form), les boutons (instances de la classe Button), etc.

• Objets comme les variables, les collections (chaines de caractères, tableaux), des objets mathématiques

C.Bayoudhi, M.Ennigrou

Page 3: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

Notion de classe

Lors de la création d’un formulaire le code suivant est

automatiquement généré :

3Support de cours VB.NET

En effet, une nouvelle classe portant le nom du

formulaire sera créée. En plus, tout ajout d’éléments au

formulaire (Variables, procédures, contrôles) seront

ensuite perçus comme membres de la classe Form1.

C.Bayoudhi, M.Ennigrou

Page 4: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

Création d’une classe

• Pour créer une classe il faut tout d’abord entrer dans le menu Ajouter une classe

Menu Projet puis Ajouter une Classe

4Support de cours VB.NET

C.Bayoudhi, M.Ennigrou

Page 5: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

Déclaration d’une classe

Pour déclarer une classe en VB.net, la syntaxe générale est :

[Public | Friend | Private | Protected][MustInherit | NotInheritable]Class nom_classe[Inherits nom_classe_de_base]

5Support de cours VB.NET

[Inherits nom_classe_de_base][Implements nom_interface]

Déclaration des champsDéfinition des méthodes

End Class

Nom_classe hérite de nom_classe_de_base

Nom_classe implémente nom_interface. Nom_classe implémente nom_interface.

Une interface est un ensemble d’entêtes de

méthodes sans aucun code

MustInherits indique que la classe ne peut jouer que

le rôle de classe de base. Cette classe est qualifiée de

classe abstraite. Par conséquent, pas d’instances

pour ce genre de classe.

NotInheritable indique que la classe ne peut

pas être utilisée dans une relation d’héritage.

C.Bayoudhi, M.Ennigrou

Page 6: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

Déclaration d’une classe

• La portée d’une classe peut être modifiée par

plusieurs attributs :

1. Public : la classe peut être instanciable dans tous les projets

2. Friend : la classe ne peut être instanciable que dans le projet

où elle est définieoù elle est définie

3. Private :la classe peut être instanciable dans le module où elle

est définie

4. Protected : la classe ne peut être instanciable que dans une

sous-classe de celle où elle est définie

6Support de cours VB.NET

C.Bayoudhi, M.Ennigrou

Page 7: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

Exemple 1

Public class Personne‘membres ou attributs de la classePrivate lenom As StringPrivate leprenom As StringPrivate ladate_Naissance as Date

‘ methodes de la classe Les propriétés sont privées

7Support de cours VB.NET

‘ methodes de la classeFunction calcul_age() As long

Calcul_age=DateDiff(DateInterval.Year, ladate_nais, Now())

End Function

End class

Les propriétés sont privées

donc non visibles de l’extérieur

ou elles peuvent être publiques

donc visibles de l’extérieur

C.Bayoudhi, M.Ennigrou

Page 8: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

Mot clé – Shared

• Les variables et méthodes sont accessibles via une instance. Il est possible de créer des variables et des méthodes partagées sans avoir à créer des instances.

• Pour cela, il faut utiliser le mot clé Shared avant le nom de la variable.

Public Class PersonnePrivate leNom As StringPrivate lePrenom As String

8Support de cours VB.NET

Private lePrenom As StringPrivate laDate As DatePublic Shared nbInstancesSub New()

leNom=″″lePrenom= ″″

laDate=#1/1/1901#nbInstances=nbInstances+1

End Sub....

End ClassC.Bayoudhi, M.Ennigrou

Page 9: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

Mot clé – Shared

• Nous pouvons ensuite utiliser la variable partagée sans faire

référence à un objet particulier mais en utilisant le nom de la

classe.

Exemple

9Support de cours VB.NET

Exemple

Console.WriteLine(Personne.nbInstances)

Autre méthode

Dim unePersonne as PersonneunePersonne = new Personne( ″Jean ″, ″Dupont ″,#25/12/1978#)Console.WriteLine(Personne.nbInstances)

C.Bayoudhi, M.Ennigrou

Page 10: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

Mot clé – Shared

Exemple 2

Public Class Medicament

Public Laboratoire As String 'variable d'instance

Public Shared Societe as String 'variable de classe Shared

End Class

10Support de cours VB.NET

Lors de l’instanciation de la classe Medicament

Dim M1 As New Medicament

Dim M2 As New Medicament

M1.Laboratoire= "MVV"

M2.Laboratoire= "VV"

M1.Société = « ooo"Ceci implique également que

M2.societe est aussi égal à "ooo"C.Bayoudhi, M.Ennigrou

Page 11: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

Procédures de Propriété

• Les procédures de propriétés servent à lire ou à définir la valeur de la propriété .•La syntaxe générale est la suivante:

Public Property nomPropriété () As typeGet

codeGetEnd Get

Le bloc Get sert à consulter la

valeur de la propriété La propriété doit être publique

pour que cette propriété soit

11Support de cours VB.NET

Set (ByVal Value) As TypecodeSet

End setEnd Property

•Plus tard, si l’utilisateur tape :nomObjet.nomPropriété = valDim s as sting = nomObjet.nomPropriété

le bloc Set sera appelé lors de la

modification de la propriété

pour que cette propriété soit

accessible hors de la classe

C’est le code de Set qui sera exécuté

C’est le code de Get qui sera exécuté

C.Bayoudhi, M.Ennigrou

Page 12: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

Exemple 2

Property nom() As String

Get

Return leNom

End Get

Set(ByVal Value As String)

leNom = Ucase(Value)

End Set

End Property

12Support de cours VB.NET

End Set

End Property

Property prenom() As String

Get

Return lePrenom

End Get

Set (ByVal Value As String)

lePrenom = Lcase(Value)

End Set

End Property

C.Bayoudhi, M.Ennigrou

Page 13: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

Exemple 2

Property date_nais() As Date

Get

Return laDate_naissance

End Get

Set (ByVal Value As Date)

If Value.year >=1900 Then

laDate_naissance = Value

Else

13Support de cours VB.NET

Else

MsgBox(“Trop vieux”)

End If

End Set

End Property

C.Bayoudhi, M.Ennigrou

Page 14: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

L’opérateur New

• Pour utiliser une classe, il faut l’instancier (créer une instance) pour obtenir un objet

• On utilise le nom de classe et l’opérateur new pour créer une instance d’une classe

14Support de cours VB.NET

Exemple

Dim unePersonne as New personne ()

C.Bayoudhi, M.Ennigrou

Page 15: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

Notion de Constructeur

• Le constructeur d’une classe est une méthode spéciale qui sera appelée automatiquement lors de la création d’une instance

• Si aucun constructeur n’est défini par le programmeur, il en existe un par défaut sans paramètres

15Support de cours VB.NET

• Les attributs d’une classe sont alors initialisés par leurs valeurs par défaut

• Une classe peut comporter plusieurs constructeurs New avec un nombre de paramètres différents (plusieurs signatures) : c’est la surcharge

C.Bayoudhi, M.Ennigrou

Page 16: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

Notion de Constructeur

• Reprenons notre exemple, on utilise les méthodes déjà écrites

‘constructeurPublic Sub New (ByVal prenomchoisi as string,

ByVal nomchoisi as string, ByVal datechoisie as date)

Me.leprenom = prenomchoisi

16Support de cours VB.NET

Me.leprenom = prenomchoisiMe.lenom = nomchoisiMe.ladate_naissance = datechoisie

End Sub

• Pour créer une instance, on écrit :Dim unePersonne as New Personne("Béji", "Ali",

#20/01/1990#)

C.Bayoudhi, M.Ennigrou

Page 17: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

Notion de Constructeur

• Une autre manière de faire est d’utiliser une méthode Initialise

ExempleClass Homme

Private _Nom As StringPrivate _Prenom As StringPublic Sub initialise(ByVal N As String, ByVal P As String)

17Support de cours VB.NET

String)Me._nom = NMe._prenom = P

End SubEnd Class

•Pour instancier cette classedim p as New Hommep.initialise(« Béji", "Ali")

C.Bayoudhi, M.Ennigrou

Page 18: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

• Il est possible en VB.Net de créer plusieurs méthodes de même nom, chacune d’elles ayant un ensemble de paramètres différents ou un type de paramètre différent

• Il faut pour cela spécifier le mot clé Overloadsdans la déclaration de la méthode.

Surcharge

de la méthode.

ExempleOverloads Function calcul_age () As Long

Calcul_age = DateDiff(DateInterval.Year, date_naiss, Now())

End Function

Overloads Function calcul_age(ByVal jour As Date) As Long

Calcul_age = DateDiff(DateInteval.Year, date_naiss , jour)

18C.Bayoudhi, M.Ennigrou

Page 19: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

• Il est également possible en VB.Net de surcharger une propriété, pour cela il faut rajouter des procédures propriété ayant le même nom

• On peut ajouter Overlodsmais c’est facultatif

Surcharge

19C.Bayoudhi, M.Ennigrou

Page 20: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

• L’héritage permet de réutiliser du code déjà écrit tout en ayant la possibilité de modifier le fonctionnement de certaines procédures. Le mot clé Inherits indique la relation d’héritage entre la classe de base et la classe descendante.

Héritage (1/3)

Public Class EmployeInherits PersonnePrivate leSalaire As DecimalPrivate leService As StringPrivate leStatut As BooleanSub New(ByVal N As String, ByVal P As String, ByVal D As Date,_

ByVal S As Decimal, BDecimal, ByVal Se As String, ByV al St As Boolean)Nom=NPrenom=PDate_naiss=DleSalaire=SleService=SeleStatut=St

End SubProperty Statut() As Boolean

GetReturn leStatut

End GetSet(ByVal value As Boolean)

leStatut = valueEnd Set

End Property...End Class

Public ReadOnly Property Salary() As DecimalGetReturn LeSalaireEnd GetEnd Property...

20C.Bayoudhi, M.Ennigrou

Page 21: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

• Dans le constructeur de la classe Employe, nous avons repris du code existant dans le constructeur de la superclasse Personne. Afin de ne pas réécrire ce code, il suffit d’utiliser le mot clé MyBase.

Héritage (2/3)

Sub New(ByVal N As String, ByVal P As String, ByVal D As Date,_Sub New(ByVal N As String, ByVal P As String, ByVal D As Date,_ByVal S As Decimal, BDecimal, ByVal Se As String,_ByVal St As Boolean)

MyBase.new(N,P,D)leSalaire=SleService=SeleStatut=St

End Sub

21C.Bayoudhi, M.Ennigrou

Page 22: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

• Dans le cas où la classe fille doit contenir une méthode ayant la même signature qu’une méthode de la classe de base, il faut utiliser le remplacement de méthode au lieu de la surcharge. Pour cela, on utilise les mots clés suivant– Le mot réservé overrides devant le nom de la méthode dans la

Héritage (3/3)

– Le mot réservé overrides devant le nom de la méthode dans la classe fille,

– Il faut autoriser explicitement la surcharge de la méthode dans la classe de base via le mot clé overridable .

22C.Bayoudhi, M.Ennigrou

Page 23: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

Héritage (3/3)

• Méthode calcul_age dans la classe Employe :Overrides Function calcul_age(ByVal jour As Date) As long

Calcul_age=DateDiff(DateInterval.Quarter, date_nais, jour)End Function

•Méthode calcul_agedans la classe Personne:•Méthode calcul_agedans la classe Personne:Overridable Overloads Function calcul_age(ByVal jour As Date) As long

Calcul_age=DateDiff(DateInterval.year, date_nais, jour)End Function

23C.Bayoudhi, M.Ennigrou

Page 24: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

• Il est possible d’interdire la spécialisation d’une classe en utilisant le mot clé NotInheritable .

Remarque sur l’héritage

24C.Bayoudhi, M.Ennigrou

Page 25: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

• Une interface est un ensemble de déclarations de méthodes ne contenant aucune implémentation. Pour déclarer une interface, on utilise les mots clé Interface et End Interface .

Interfaces

Public Interface ComparableFunction compare (ByVal o1 As Object) As Integer

End Interface

• Cette interface nous oblige à créer dans les classes qui l’implémenteront une fonction «compare” qui compare l’objet courant à l’objet passé en paramètre. Pour dire qu’une classe implémente une interface on utilise le mot clé implements .

25C.Bayoudhi, M.Ennigrou

Page 26: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

�Créer la classe Livre permettant de gérer des livres�Les membres sont les suivants :

•Titre •Auteur (nom et prénom séparés)•Année de parution•Editeur (nom, ville, et pays, séparés)

Exercice1 POO

•Editeur (nom, ville, et pays, séparés)•Nombre de pages•Prix•Fournisseur (nom, ville, et pays, séparés)

�Créer également les getters et setters pour tous les membres�Créer un constructeur permettant d’initialiser tous les membres�Créer un constructeur par copie�Créer une méthode permettant de savoir si deux livres sont identiques

26C.Bayoudhi, M.Ennigrou

Page 27: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

�Créer la classe Salarie. Cette classe aura 5 propriétés de type public:

• matricule MatriculeInteger

• catégorie CategorieInteger

• service Service Integer

• nom Nom String

• salaire Salaire Double

�Créer une méthode en tant que fonction CalculerSalaire() pour afficher la mention "Le salaire

de " suivie du nom du salarié, suivi de " est de ", suivi de la valeur du salaire.

�Ajouter à la classe Salarie les méthodes Equals et ToString. La règle d'égalité pour la classe

Salarie peut s'énoncer de la façon suivante : deux salariés sont égaux s'ils ont le même numéro

de matricule et le même nom. ToString doit renvoyer toutes les propriétés séparées par des

Exercice2 POO

de matricule et le même nom. ToString doit renvoyer toutes les propriétés séparées par des

virgules.

�Créer une classe Commercial en dérivant la classe Salarie. Cette classe aura 2 propriétés

supplémentaires pour calculer la commission :

� chiffre d'affaire chiffreAffaire Double

� commission en % commission Integer

�Créer les deux constructeurs standards de la classe Commercial.

�Créer les méthodes d'accès aux propriétés supplémentaires.

�Surcharger la méthode CalculerSalaire pour calculer le salaire réel (fixe + commission).

�Surcharger les autres méthodes de la classe de base pour lesquelles on jugera nécessaire de

faire ainsi.

�Tester les classes Salarie et Commercial27C.Bayoudhi, M.Ennigrou

Page 28: Chapitre2: La programmation orientée objet avec VB2lfig.e-monsite.com/medias/files/chapitre2vbnet.pdf · 2ème année IAG Chapitre2: La programmation orientée objet avec VB.Net

Evènement

•Il est possible de définir un évènement pour la classe

•Deux étapes sont alors nécessaires

1. Déclarer l’évènement avec le mot clé Event

2. Utiliser l’instruction RaiseEvent pour le déclencher lorsqu’une condition le

nécessite

ExemplePublic Class Class 1Public Class Class 1

Private _mTexte As StringPublic Event TextChange(ByVal UserName As String)Public Property Texte()

GetReturn _mTexte

End GetSet(ByVal Value)

If Value <> _mTexte ThenRaiseEvent TextChange("hello« ) _mTexte = Value

End SetEnd Property

End Class

Déclare l’évènement

Déclenche l’évènement

28C.Bayoudhi, M.Ennigrou