Chapitre2: La programmation orientée objet avec VB.Net

Documents pareils
.NET - Classe de Log

Paginer les données côté serveur, mettre en cache côté client

Génie Logiciel avec Ada. 4 février 2013

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Une introduction à Java

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Rapport de Mini-Projet en ArcGIS Engine

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Héritage presque multiple en Java (1/2)

Programmer en JAVA. par Tama

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Algorithmique & programmation

Utilitaires méconnus de StrataFrame

Tp 1 correction. Structures de données (IF2)

Chapitre VI- La validation de la composition.

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Création d objet imbriqué sous PowerShell.

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

PROGRAMMATION EVENEMENTIELLE sur EXCEL

Flex. Lire les données de manière contrôlée. Programmation Flex 4 Aurélien VANNIEUWENHUYZE

Programmation par les Objets en Java

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

OCL - Object Constraint Language

Gestion du cache dans les applications ASP.NET

TP1 : Initiation à Java et Eclipse

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Sommaire. 2 LINQ to Objects

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Java Licence Professionnelle CISII,

Langage Java. Classe de première SI

A QUOI SERVENT LES BASES DE DONNÉES?

Premiers Pas en Programmation Objet : les Classes et les Objets

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

as Architecture des Systèmes d Information

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Alfstore workflow framework Spécification technique

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

TD/TP PAC - Programmation n 3

Programmation Orientée Objet en C#

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

UML et les Bases de Données

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Support de cours et TD Programmation Orientée Objet

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Classes et Objets en Ocaml.

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Chapitre 10. Les interfaces Comparable et Comparator 1

Plan du cours Cours théoriques. 29 septembre 2014

R, Bonnes pratiques. Christophe Genolini

Diagramme de classes

Programmation Orientée Objet application au langage Java Version Novembre 2007

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Apprendre Java en 154 minutes

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Généralités sur le Langage Java et éléments syntaxiques.

Cours 1: Java et les objets

Convers3 Documentation version Par Eric DAVID : vtopo@free.fr

TD/TP PAC - Programmation n 3

Programmation en Java IUT GEII (MC-II1) 1

Package Java.util Classe générique

Initiation à JAVA et à la programmation objet.

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

2. Comprendre les définitions de classes

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Cours Bases de données 2ème année IUT

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

A QUOI SERVENT LES BASES DE DONNÉES?

INITIATION AU LANGAGE JAVA

Programmation MacOSX / ios

Notions fondamentales du langage C# Version 1.0

Programmation Par Objets

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

Corrigés des premiers exercices sur les classes

Programmation Visual Basic. Visite guidée d'un programme Visual Basic 6.0

UML. Diagrammes de classes (suite) Delphine Longuet.

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Java c est quoi? Java pourquoi?

F. Barthélemy. 17 mai 2005

TP JAVASCRIPT OMI4 TP5 SRC

Application 1- VBA : Test de comportements d'investissements

Auto-évaluation Programmation en Java

Visual Basic for Applications

Objets et Programmation. origine des langages orientés-objet

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Cours Bases de données 2ème année IUT

Bases Java - Eclipse / Netbeans

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Guide de développement de «WorkFLows» avec SharePoint Designer 2013

Transcription:

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

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

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 ensuite perçus comme membres de la classe Form1. 3

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 4

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] [Implements nom_interface] NotInheritable indique que la classe ne peut Déclaration MustInherits des champs indique pas être que utilisée la classe dans ne peut une jouer relation que d héritage. Définition le des rôle méthodes Nom_classe de base. hérite Cette de nom_classe_de_base est qualifiée de End Class classe abstraite. Par conséquent, pas d instances Nom_classe implémente nom_interface. pour ce genre de classe. Une interface est un ensemble d entêtes de méthodes sans aucun code 5

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

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 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 donc visibles de l extérieur 7

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 ladate As Date Public Shared nbinstances Sub New() lenom= leprenom= ladate=#1/1/1901# nbinstances=nbinstances+1 End Sub... End Class 8

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 Console.WriteLine(Personne.nbInstances) Autre méthode Dim unepersonne as Personne unepersonne = new Personne( Jean, Dupont, #25/12/1978#) Console.WriteLine(Personne.nbInstances) 9

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" 10

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 La propriété doit être publique pour que cette propriété soit accessible hors de la classe Set (ByVal Value) As Type codeset End set End Property Plus tard, si l utilisateur tape : nomobjet.nompropriété = val Le bloc Get sert à consulter la valeur de la propriété le bloc Set sera appelé lors de la modification de la propriété C est le code de Set qui sera exécuté Dim s as sting = nomobjet.nompropriété C est le code de Get qui sera exécuté 11

Exemple 2 Property nom() As String Get Return lenom End Get Set(ByVal Value As String) lenom = Ucase(Value) 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 12

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

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 Dim unepersonne as New personne () 14

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 surcharge 15

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.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#) 16

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) Me._nom = N Me._prenom = P End Sub End Class Pour instancier cette classe dim p as New Homme p.initialise(«béji", "Ali") 17

Surcharge 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. 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 18 Calcul_age = DateDiff(DateInteval.Year,

Surcharge 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 19

Héritage (1/3) 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. 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... End Class Public ReadOnly Property Salary() As Decimal Get Return LeSalaire End Get End Property... 20

Héritage (2/3) 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. 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 21

Héritage (3/3) 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 classe fille, Il faut autoriser explicitement la surcharge de la méthode dans la classe de base via le mot clé overridable. 22

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 : Overridable Overloads Function calcul_age(byval jour As Date) As long Calcul_age=DateDiff(DateInterval.year, date_nais, jour) End Function 23

Remarque sur l héritage Il est possible d interdire la spécialisation d une classe en utilisant le mot clé NotInheritable. 24

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

Exercice1 POO 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) 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 26

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 Exercice2 POO 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 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 Commercial 27

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 Private _mtexte As String Public Event TextChange(ByVal UserName As String) Public Property Texte() Get Return _mtexte Déclare l évènement End Get Set(ByVal Value) If Value <> _mtexte Then RaiseEvent TextChange("hello«) _mtexte = Value End Set End Property End Class Déclenche l évènement 28