Comprehensive Guide to Object-Oriented Programming in VB.Net and Practical Exercises

Page 1 sur 27Lecteur de document UniversityLib

Comprehensive Guide to Object-Oriented Programming in VB.Net and Practical Exercises

Object-Oriented Programming with VB.Net · notes

Voir tous les documents en programmation

Exercice(1/2)

(cid:1) L’interface suivante permet de

calculer le poids idéal d’une

personne basé sur sa taille et son

sexe, le formulaire contient :

(cid:1) Un champ de texte pour entrer la

taille : txtTaille,

(cid:1) Deux boutons d’option : optH et

optF,

optF,

(cid:1) Un bouton de commande pour

calculer le poids idéal,

(cid:1) Un champ de texte en lecture

seule pour afficher le poids idéal :

txtPoids,

(cid:1) Un ErrorProvider pour contrôler

le champ txtTaille : errP, ce champ

doit être non vide et de type

numérique.

89

Exercice(2/2)

(cid:1) Les formules de calcul du poids idéal sont comme suit :

(cid:1) Poids idéal Masculin (en Kg) = Taille (en cm) - 100 - ((Taille (en

cm) - 150) /4).

(cid:1) Poids idéal Féminin (en Kg) = Taille (en cm) - 100 - ((Taille (en

1.

1.

2.

cm) - 150) /2,5).

Ecrire le code de la procédure du clic sur le bouton

Ecrire le code de la procédure du clic sur le bouton

Calculer.

Ecrire le code de la procédure Validating et Validated du

champ de texte txtTaille.

90

Chapitre 4

Chapitre 4

Concepts de base de la P.O.O.

sous Visual basic.Net

91

VB.Net O.O.

(cid:1) VB.Net est un langage de programmation

Orientée Objet

(cid:1) Programmation O.O. :

(cid:1) Encapsulation

(cid:1) Héritage

(cid:1) Polymorphisme

(cid:1) Création d’une classe :

(cid:1) Champs

(cid:1) Constructeurs et destructeur

(cid:1) Méthodes

(cid:1) Accesseurs

92

Notion d’objet

(cid:1) Un objet est une entité cohérente rassemblant des

données et du code travaillant sur ces données.

93

Définition d’une classe

(cid:1) Une classe est une description abstraite d’un objet. Elle

peut être considérée en quelque sorte comme un

modèle…

94

Définition d’une classe

(cid:1) Définition d’une classe :

Classe abstraite : non instanciable

Classe finale : ne peut pas être classe mère

[ Public | Private | Protected | Friend | Protected Friend ]

[ MustInherit | NotInheritable | Interface]

Class nom_classe

Class

[ Inherits nom_classe_base]

[ Implements nom_classe_interface]

'propriétés, méthodes ...

End Class

Classe interface

Classe interface

95

Exemple

Public Class Personne

public nom As String

Publicité

public prenom As String

public date_naiss As Date

End Class

96

Public Class Test

Public Shared Sub main( )

Dim p1 as Personne

p1 = new Personne

' ou bien dim p1 as new

Personne

Personne

' initialisation

With p1

.nom="AAA"

.prenom="BBB"

End with

End sub

End Class

Constructeur/Destructeur d’une classe

(cid:1) Constructeur :

(cid:1) Méthode particulière qui servira a créer des instances (sert aussi pour

initialiser les champs d’un objet)

Son nom est toujours : public sub New ([paramètres])

(cid:1)

(cid:1) Avec ou sans paramètres (constructeur par défaut)

Public Sub New()

nom = ""

nom = ""

prenom = ""

date_naiss = Nothing

End Sub

Public Sub New(n As String, p As String, d As Date)

nom = n

prenom = p

date_naiss = d

End Sub

97

Constructeur/Destructeur d’une classe

(cid:1) Destructeur :

(cid:1) Méthode particulière qui servira à détruire une instance

(cid:1) Pas vraiment nécessaire (faite automatiquement)

(cid:1) Sa signature :

Protected Overrides Sub finalize()

'quelque code comme la fermeture d‘une connexion

'quelque code comme la fermeture d‘une connexion

End Sub

98

Accesseurs d’une classe

(cid:1) Getters / Setters :

(cid:1) Méthodes qui servent à récupérer / modifier les valeurs des

champs (private) d’un objet.

Public Class Personne

Private nom As String

Private prenom As String

Private date_naiss As Date

Private date_naiss As Date

Public Property Name( ) As

String

Get

return nom

End Get

Set (Value As String)

nom = Value

End Set

End Property

'...

End Class

99

Utilisation

Public Class Test

Public Shared Sub main( )

Dim p1 as new Personne

p1.Name = "AAA"

p1.Name = "AAA"

Dim n As String

n= p1.Name

Console.WriteLine(n)

‘affiche AAA

End sub

End Class

Publicité

(cid:1)Shared ≡ membre statique

(partagé par toutes les

instances d‘une classe)

Accesseurs d’une classe

(cid:1) Utilisez le spécificateur ReadOnly dans la déclaration de

la propriété pour ne créer que la propriété Get.

(cid:1) Utilisez le spécificateur WriteOnly dans la déclaration

de la propriété pour ne créer que la propriété Set.

(cid:1) Exemple :

(cid:1) Public ReadOnly Property Name( ) As String

Get

return nom

End Get

End Property

100

Méthodes d’une classe

(cid:1) Les méthodes : procédures ou fonctions à l’intérieur d’une classe

qui servent à manipuler les attributs de la classe.

(cid:1)Généralement, les méthodes sont déclarées "Public"

(cid:1) Surcharge de méthodes : création au sein d’une classe de

méthodes ayant le même nom mais avec des paramètres différents

(en nombre et/ou en type)

(cid:1)Modificateur overloads

(cid:1)Modificateur overloads

(cid:1) Les points suivants ne sont pas pris en compte pour distinguer

deux méthodes surchargées :

(cid:1) Le nom des paramètres

(cid:1) Le type de retour d’une fonction

(cid:1) Les modificateurs ByVal ou ByRef appliqués aux paramètres de la

(cid:1) méthode.

(cid:1)Dans ces cas, il faut utiliser un autre nom de fonction ou procédure

101

Surcharge de méthodes (exemple)

Public Class Personne

'les attributs de la classe personne...

Public overloads Sub affichage()

Console.Write(“Mr {0} {1} né le {2}”, nom, prenom, date_naiss)

End Sub

Public overloads Sub affichage(ByVal langue As String)

Public overloads Sub affichage(ByVal langue As String)

Select Case langue

Case "fr","FR"

Console.Write("Mr {0} {1} né le {2}", nom, prenom, date_naiss)

Case "en","En"

Console.Write("Mr {0} {1} was born the {2}", nom, prenom, date_naiss)

End Select

End Sub

End class

102

Héritage et redéfinition de méthodes

(cid:1) Héritage : relation entre 2 classes A et B "A est un B".

Public Class A

Inherits B

'Les attributs additionnels de B ...

'Les attributs additionnels de B ...

'Les méthodes additionnelles de B ...

End Class

103

Exemple

Public Class Client

Inherits Personne

Private code As Integer

Public Sub New (n as String, p as String, d as Date, co as integer)

MyBase.New(n,p,d)

code=co

code=co

End sub

Public Overrides Sub affichage( )

MyBase.affichage()

Console.Write(" Code Client : {0}",code)

End Sub

End Class

MyBase : fait référence à

la classe de base de

la classe de base de

l'instance actuelle d'une

classe

Overrides : redéfinition

de méthode

104

Publicité

Exemple

(cid:1)Utilisation :

Public Class Test

Public Shared Sub main( )

Dim c as Client

c=new Client("AAA","BB",#12/12/1990#,1123);

c.affichage()

' Affiche : Mr AAA BB né le12/12/1990 Code Client : 1123

End sub

End Class

105

Complément héritage(Modificateur)

(cid:1) NotInheritable : ce mot-clé indique que cette classe ne

peut pas être héritée, et peut être instancier.

(cid:1) NotOverridable : ce mot-clé indique que cette méthode

ne peut pas être redéfinie dans une classe dérivé.

(cid:1) Shadows : Spécifie qu'un élément de classe déclaré

redéclare et masque un élément de classe de base de

même nom.

106

Polymorphisme

(cid:1) Le polymorphisme est un mécanisme via lequel un objet peut

prendre plus d'une forme. Par exemple, si vous avez une classe

de base nommée Client, une référence de type Client peut

être utilisé pour contenir un objet de n'importe laquelle de

ses classes dérivées. Quand vous appelez une méthode à partir

de votre objet, le système déterminera automatiquement le

type de l'objet afin d'appeler la méthode appropriée.

type de l'objet afin d'appeler la méthode appropriée.

Dim x As Client

Dim cl As New Client("Ali", 1000)

Dim clg As New Grossiste("Ahmed", 7000, 0.2)

x = cl

Console.WriteLine(x.ToString)

x = clg

Console.WriteLine(x.ToString)

Grossiste

Client

107

Classes abstraites

(cid:1) Une classe abstraite est une classe qui n’implémente pas

forcement toutes ses méthodes (cid:1)n‘est pas instanciable.

(cid:1) C‘est une classe qui ne peut être utilisée qu‘en tant que classe

mère.

(cid:1) Sert à factoriser du code pour les classes dérivées (filles).

(cid:1) Une classe qui hérite d’une classe abstraite doit implémenter

(cid:1) Une classe qui hérite d’une classe abstraite doit implémenter

les méthodes qui restent.

Public MustInherit Class classAbs

'... Contient au moins une méthode avec le modificateur

MustOverride

End Class

108

Classes abstraites

(cid:1) 3 types de méthodes possibles dans la classe abstraite :

(cid:1) Public Overridable Sub X( ) ... End Sub : X( ) peut être

redéfinie

(cid:1) Public sub Y( ) ... End Sub : Y ( ) ne peut pas être redéfinie

(cid:1) Public MustOverride Sub Z ( ) : Z () doit être redéfinie

(public overrides Sub Z ( ) ... End sub)

(public overrides Sub Z ( ) ... End sub)

109

Classes interfaces

(cid:1) Une classe interface est une classe qui n’implémente

aucune de ses méthodes, les méthodes sont seulement

déclarées.

(cid:1) C’est une classe qui décrit les services qu’elle offre

(cid:1) Une classe qui implémente une interface doit

obligatoirement implémenter chacune des méthodes

obligatoirement implémenter chacune des méthodes

déclarées dans l’interface.

(cid:1) Une classe peut implémenter une ou plusieurs classes

interfaces

110

Classes interfaces

(cid:1) Exemple :

Public Interface interf1

' public Sub X( )

'...

End Interface

Publicité

End Interface

Public class c1 Implements interf1

Public Sub X( ) Implements interf1.X

...

End Sub

End class

111

Exercice(1/4)

(cid:1) Créer la classe Salarie. Cette classe aura 5 propriétés de type

public:

(cid:1) matricule Matricule

(cid:1) catégorie Categorie

(cid:1) service

(cid:1) nom

(cid:1) salaire

salaire

Service Integer

Nom String

Salaire Double

Salaire Double

Integer

Integer

(cid:1) 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.

(cid:1) Implanter une classe application, avec une méthode Main dans

laquelle la classe Salarie sera instanciée pour tester ses

propriétés et ses méthodes.

112

Exercice(2/4)

(cid:1) Protéger les propriétés et en interdire l'accès de

l'extérieur de l'objet (l'accès aux fonctions membres doit

toujours être possible), créer les méthodes d'accès aux

propriétés Get et Set.

(cid:1) Modifier la fonction Main de la classe Application pour

tester.

tester.

(cid:1) Implémenter les constructeurs et le destructeur de la

classe Salarie.

(cid:1) Afin de mettre en évidence les rôles respectifs des

constructeurs et du destructeur, implémenter ceux-ci

pour qu'ils affichent un message à chaque fois qu'ils sont

exécutés.

113

Exercice(3/4)

(cid:1) Implémenter un compteur d'instances pour la classe

Salarie.

(cid:1) Ajouter une méthode de classe permettant de mettre le

compteur à zéro ou à une valeur prédéfinie.

(cid:1) Modifier le jeu d'essai de l'application Main pour tester

ces fonctions.

ces fonctions.

(cid:1) 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 virgules.

114

Exercice(4/4)

(cid:1) Créer une classe Commercial en dérivant la classe Salarie.

Cette classe aura 2 propriétés supplémentaires pour calculer

la commission :

chiffreAffaire Double

(cid:1) chiffre d'affaire

(cid:1) commission en % commission Integer

(cid:1) Créer les deux constructeurs standards de la classe Commercial.

(cid:1) Créer les deux constructeurs standards de la classe Commercial.

Ne pas oublier d'appeler les constructeurs équivalents de la classe de

base.

(cid:1) Créer les méthodes d'accès aux propriétés supplémentaires.

(cid:1) Surcharger la méthode CalculerSalaire pour calculer le salaire réel

(fixe + commission).

(cid:1) Surcharger les autres méthodes de la classe de base pour lesquelles

on jugera nécessaire de faire ainsi.

(cid:1) Tester les classes Salarie et Commercial

115