PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

Nouveauté WINDEV 24 !
  • Ce que vous allez apprendre dans cette leçon
  • Concepts
  • Les classes
  • Les objets
  • Les membres
  • Les méthodes
  • Notion d'héritage
  • Constructeur et Destructeur
  • Encapsulation de données
  • Exemple
  • Créer un programme orienté objet
  • Exemple simple
  • Déclarer une classe
  • Décrire les méthodes
  • Déclarer et manipuler les objets
  • Diagramme UML
Leçon 7.9. La POO
Ce que vous allez apprendre dans cette leçon
  • Concepts de la programmation orientée objet.
  • Exemples de déclaration d'objet.
  • Modèle UML associé.

Durée estimée : 30 mn
Leçon précédenteSommaireLeçon suivante
Concepts
La Programmation Orientée Objet (P.O.O.) a pour but de permettre une meilleure réutilisabilité du code. Les programmes développés en POO sont structurés : ils sont décomposés en modules gérant chacun une fonctionnalité du logiciel. Les modules développés peuvent être facilement réutilisés dans d'autres logiciels. Ils vont regrouper un ensemble de procédures (appelées méthodes) et encapsuler la structure de données sur laquelle les méthodes vont agir.
Pour programmer "en objet", il faut déclarer des classes, les membres et les méthodes associés.

Les classes

Une classe rassemble la description d'une structure de données (les membres) et les procédures (méthodes) qui manipulent les membres.
Une classe définit donc un type de données et son comportement.

Les objets

Une classe permet de créer des objets. Chaque objet créé possède des membres décrits dans sa classe et peut être manipulé par l'intermédiaire des méthodes de sa classe. On dit qu'un objet est une instance de la classe.
Lorsque la classe est déclarée, il suffit d'associer un objet à une classe pour que l'objet puisse être manipulé par toutes les méthodes de cette classe.

Les membres

Un membre est une donnée (ou paramètre) de l'objet.

Les méthodes

Une méthode permet d'agir sur l'objet, pour modifier ses membres par exemple.
Une méthode est une procédure. Son fonctionnement est identique à celui des procédures classiques du WLangage.

Notion d'héritage

L'héritage permet d'inclure les caractéristiques d'une classe existante (classe de base) dans une nouvelle classe (classe dérivée). L'héritage permet de créer un nouveau type de données à partir d'un type connu, dans le but de lui ajouter des fonctionnalités, ou d'en modifier le comportement. La classe de base ne sera donc pas modifiée. Une classe peut hériter d'une classe dont elle devient une sous-classe.
Une classe dérivée permet à ses objets d'accéder à toutes les méthodes, à tous les membres et à toutes les propriétés de ses classes ancêtres ; tout se passe comme si les méthodes, les membres et les propriétés des classes ancêtres faisaient partie de la classe dérivée.

Constructeur et Destructeur

Les notions de Constructeur et Destructeur sont importantes puisqu'elles permettent un appel automatique de méthodes d'initialisation lors de la création d'un objet et lors de sa destruction.
La méthode Constructeur associée à une classe est automatiquement appelée lors de la déclaration d'un objet de la classe.
La méthode Destructeur associée à une classe est automatiquement appelée lors de la suppression de l'objet (sortie de procédure dans laquelle l'objet a été déclaré).

Encapsulation de données

L'encapsulation des données permet de garantir que les données membres de l'objet ne seront pas modifiées à tort par des fonctions (méthodes) extérieures à l'objet.
Il est ainsi possible d'interdire à l'utilisateur d'un objet l'accès à certains ou à tous ses membres. Les membres dont l'accès est interdit sont appelés membres privés.
Il n'est possible d'accéder à ces membres privés qu'à partir des méthodes prévues à cet effet dans la classe.

Exemple

Prenons un exemple simple pour appliquer les concepts que nous venons de voir :
  • Considérons la classe PERSONNE.
  • Florence est une instance de la classe PERSONNE.
  • Le nom, prénom et date de naissance peuvent être des membres de la classe PERSONNE.
  • La méthode Age() peut être une méthode de la classe PERSONNE. Elle calculerait l'âge en se basant sur le membre "date de naissance" et sur la date du jour (renvoyée par la fonction DateSys).
  • Héritage : Un contact peut être soit une personne, soit une entreprise.
    • PERSONNE pourrait être une classe dérivée de CONTACT.
    • ENTREPRISE pourrait être une classe dérivée de CONTACT.

Créer un programme orienté objet

Pour créer un programme en objet en WLangage, il faut :
  1. Décrire la classe et les membres de la classe.
  2. Donner toutes les méthodes de la classe.
  3. Déclarer les objets en leur associant une classe ("instancier une classe").
Exemple simple
  • Pour illustrer les concepts que nous venons de présenter, nous allons manipuler l'exemple didactique "WD POO Simple".
    1. Ouvrez l'exemple didactique "WD POO Simple".
    2. Testez cet exemple.
    3. Cliquez sur les différents boutons correspondant aux animaux pour ajouter des animaux.
    4. Arrêtez le test de l'exemple pour revenir sous l'éditeur.
Remarque : Nous ne détaillons pas ici la syntaxe de la P.O.O., nous présenterons uniquement un exemple simple de programme orienté objet.
Pour avoir plus de détail sur la syntaxe de la P.O.O., consultez Classes, membres, méthodes et propriétés.

Déclarer une classe

  • WINDEV permet de déclarer les classes très simplement depuis l'explorateur de projet. Pour créer une classe :
    1. Dans l'explorateur de projet, sélectionnez le dossier "Classes".
    2. Affichez le menu contextuel de ce dossier (clic droit de la souris) et sélectionnez l'option "Créer une classe vierge".
    3. Dans la fenêtre qui s'affiche, indiquez le nom de la classe (par exemple TestGAF) et validez.
  • Consultez le code de la classe cSavane utilisée dans l'exemple.
    1. Dans l'explorateur de projet, sélectionnez le dossier "Classes".
    2. Ouvrez le dossier "Classes" (en cliquant sur la flèche présente devant le nom du dossier).
    3. Double-cliquez sur la classe cSavane.
    4. Le code de la classe s'affiche sous l'éditeur de code. Le code de déclaration de la classe est de la forme :
      cSavane est une Classe

      PROTÉGÉ
      // Nom du champ Image utilisé pour le dessin
      m_sNomChampImagePourDessin est une chaîne
      // Liste des animaux de la savane
      m_tabLesAnimaux est un tableau de cAnimal dynamique
      FIN
      Dans ce code :
      • "cSavane" est le nom de la classe.
      • "m_sNomChampImagePourDessin" et "m_tabLesAnimaux" sont des membres de la classe.
      • Le mot-clé "PROTEGE" permet d'indiquer que ces membres seront manipulables uniquement depuis un code de la classe ou un code d'une classe dérivée.

Décrire les méthodes

  • WINDEV permet de déclarer les classes très simplement depuis l'explorateur de projet. Pour créer une méthode :
    1. Cliquez avec le bouton droit de la souris sur votre classe présente dans l'explorateur de projet.
    2. Choisissez "Nouvelle méthode" dans le menu contextuel.
    3. Dans la fenêtre qui s'affiche, indiquez le nom de la méthode et validez.
    4. Saisissez le code de la méthode sous l'éditeur de code.
  • Pour afficher la méthode AjouteAnimal de la classe cSavane  :
    1. Cliquez avec la souris sur votre classe présente dans l'explorateur de projet.
    2. Cliquez sur la petite flèche devant le nom de la classe : les différentes méthodes de la classe sont affichées.
    3. Double-cliquez sur le nom de la méthode :
      PROCÉDURE AjouteAnimal(pclUnAnimal est un cAnimal dynamique)

      // Pas plus de 5 animaux
      SI m_tabLesAnimaux..Occurrence = 5 ALORS
      Erreur("Pas plus de 5 animaux !")
      RENVOYER Faux
      FIN

      // Ajoute l'animal à la liste
      Ajoute(m_tabLesAnimaux, pclUnAnimal)

      // Dessine la savane
      DessineSavane()

      RENVOYER Vrai

Déclarer et manipuler les objets

Dans les traitements de la fenêtre, un objet est déclaré en même temps que les autres variables :
// Déclarations globales de FEN_POO
PROCÉDURE FEN_POO()

// Objet savane
gclLaSavane est un cSavane(IMG_Landscape..NomComplet)
Pour faire référence à un membre de l'objet "cSavane", il faut utiliser la syntaxe
<NomObjet>.<nom du membre>
  • Dans notre exemple, l'objet est manipulé :
    • A l'initialisation de la fenêtre, pour construire la savane.
      // Dessine la savane
      gclLaSavane.DessineSavane()
    • Lors de la création d'un animal, pour placer l'animal dans la savane.
      // Déclare un nouvel éléphant
      clElephant est un cElephant("Éléphant "+ DonneIdentifiant(), 13)

      // Ajoute l'éléphant dans la savane (cette action provoque le rafraîchissement du dessin)
      SI gclLaSavane.AjouteAnimal(clElephant) ALORS
      // Message de fin
      ToastAffiche("Animal ajouté", toastCourt, cvMilieu, chCentre)

      FIN
Nous ne nous attarderons pas plus sur la présentation de la POO dans ce cours.
Diagramme UML
L'exemple "WD POO Simple" est associé à un diagramme UML.
  • Pour afficher le diagramme UML lié au projet :
    1. Double-cliquez sur "ModèleUML" dans l'explorateur de projet :
    2. Le diagramme UML (diagramme de classes) lié au projet s'affiche.
    3. Dans ce diagramme, nous retrouvons les différentes classes utilisées par le projet "WD POO Simple".

Note

WINDEV permet de créer les 9 types de diagrammes UML.
Pour créer un diagramme UML :
  1. Sous le volet "Accueil", dans le groupe "Général", cliquez sur "Nouveau".
  2. La fenêtre de création d'un nouvel élément s'affiche : cliquez sur "Architecture" puis sur "UML".
  3. L'assistant de création d'un modèle UML se lance, vous permettant de choisir le modèle à créer :
Nous ne détaillerons pas plus l'utilisation du langage UML avec WINDEV.
Consultez Le modèle UML pour plus d'informations).
Leçon précédenteSommaireLeçon suivante
Version minimum requise
  • Version 24
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire