• Aucun résultat trouvé

[PDF] Cours nouveautés du VB.NET | Formation informatique

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Cours nouveautés du VB.NET | Formation informatique"

Copied!
28
0
0

Texte intégral

(1)

2ème année IAG

Chapitre 2: La programmation

orientée objet avec VB.Net

Cours réalisé par:

(2)

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

(3)

Notion de classe

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

automatiquement généré :

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

(4)

Création d’une classe

Pour créer une classe il faut tout d’abord entrer

dans le menu Ajouter une classe

(5)

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] [Inherits nom_classe_de_base] [Implements nom_interface]

Déclaration des champs Dé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.

NotInheritableindique que la classe ne peut pas être utilisée dans une relation d’héritage.

(6)

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éfinie

où 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

(7)

Exemple 1

Public

class

Personne

‘membres ou attributs de la classe

Private lenom As String

Private leprenom As String

Private ladate_Naissance as Date

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

Function 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

(8)

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 Personne

Private leNom As String

Private lePrenom As String Private lePrenom As String Private laDate As Date

Public Shared nbInstances

Sub New() leNom=″″ lePrenom=″″ laDate=#1/1/1901# nbInstances=nbInstances+1 End Sub .... End Class

(9)

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 Exemple

Console.WriteLine(Personne.nbInstances) Autre méthode

Dim unePersonne as Personne

unePersonne = new Personne(Jean,Dupont, #25/12/1978#)

(10)

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

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"

(11)

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 type Get

codeGet End Get

Le bloc Get sert à consulter la valeur de la propriété

La propriété doit être publique

pour que cette propriété soit

Set (ByVal Value) As Type codeSet

End set End Property

•Plus tard, si l’utilisateur tape :

nomObjet.nomPropriété = val

Dim 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é

(12)

Exemple 2

Property nom() As String

Get

Return leNom

End Get

Set(ByVal Value As String) leNom = Ucase(Value)

End Set End Property

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

(13)

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 Else MsgBox(“Trop vieux”) End If End Set End Property

(14)

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

Exemple

(15)

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

• 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

(16)

Notion de Constructeur

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

Public Sub New (ByVal prenomchoisi as string, ByVal nomchoisi as string, ByVal datechoisie as date) Me.leprenom = prenomchoisi

Me.leprenom = prenomchoisi Me.lenom = nomchoisi

Me.ladate_naissance = datechoisie End Sub

• Pour créer une instance, on écrit :

Dim unePersonne as New Personne("Béji", "Ali", #20/01/1990#)

(17)

Notion de Constructeur

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

Class Homme

Private _Nom As String Private _Prenom As String

Public Sub initialise(ByVal N As String, ByVal P As String) String) Me._nom = N Me._prenom = P End Sub End Class

•Pour instancier cette classe dim p as New Homme

(18)

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é

Overloads

dans la déclaration

de la méthode.

Surcharge

de la méthode.

Exemple

Overloads 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

(19)

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

Overlods

mais c’est facultatif

(20)

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

Inherits Personne

Private leSalaire As Decimal Private leService As String Private leStatut As Boolean

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)

Nom=N Prenom=P Date_naiss=D leSalaire=S leService=Se leStatut=St End Sub

Property Statut() As Boolean Get

Return leStatut End Get

Set(ByVal value As Boolean) leStatut = value

End Set End Property

Public ReadOnly Property Salary() As Decimal Get Return LeSalaire End Get End Property ...

(21)

• 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=S leService=Se leStatut=St End Sub

(22)

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

(23)

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_age dans la classe Personne : •Méthode calcul_age dans la classe Personne :

Overridable Overloads Function calcul_age(ByVal jour As Date) As long

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

(24)

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

(25)

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

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

(26)

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

(27)

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.

(28)

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

Exemple

Public Class Class1 Public Class Class1

Private _mTexte As String

Public Event TextChange(ByVal UserName As String) Public Property Texte()

Get

Return _mTexte End Get

Set(ByVal Value)

If Value <> _mTexte Then

RaiseEvent TextChange("hello« ) _mTexte = Value End Set

End Property End Class

Déclare l’évènement

Références

Documents relatifs

A cohesive zone model was used to represent the adhesive behaviour, and a zoning to account for size effects in indentation test (ISE). Unfortunately, it does not explain the

Then, in Section III, we propose the main stability results for a general class of impulsive systems with several aperiodic and asynchronous sequences of impulses and derive

The good agreement observed on the apparent thermal conductivity measurements carried out with standardized methods (GHP and PHW) and the CFM method for different

ce qui fut une véritable révolution au tout début de cette métallurgie, quand, d'une activité à faible production durant le Chalcolithique et le début de l'âge du Bronze, on passe

We analyze how con- sistently users in the SamKnows deployment achieve their peak performance using the Avg/P 95 metric, which we define as the ratio of the average upload or

Fig. 7: An Example of non-declared sponsored post: 1) A verified Mega influencer holding a box on her hand and promoting products. 2) The product page is tagged in the photo

Este trabalho mostra a preocupação com os avanços em uma área problema relacionada a apresentação de informações sobre recursos naturais para serem usadas em planejamento

Cet article, soumis pour publication à une revue scientifique, a pour objectif de fournir aux professionnels de la santé et aux chercheurs dans le domaine