Cours POO - Programmation Orientée Objet PDF

Summary

Ce document présente un cours sur la programmation orientée objet (POO). Il explique les concepts fondamentaux de la POO, comme les notions d'objet et de classe et leur utilisation en programmation.

Full Transcript

Programmation Orientée Objet 2 PPO : Notions de base Programmation Orientée Objet Notion d'objet ✓ Quand on utilise la POO, on cherche à représenter le domaine étudié sous la forme d\'objets. C\'est la phase de modélisation orientée objet. ✓ Un objet est une entité qui représente (modélise)...

Programmation Orientée Objet 2 PPO : Notions de base Programmation Orientée Objet Notion d'objet ✓ Quand on utilise la POO, on cherche à représenter le domaine étudié sous la forme d\'objets. C\'est la phase de modélisation orientée objet. ✓ Un objet est une entité qui représente (modélise) un élément du domaine étudié (ex : une voiture, un compte bancaire, un nombre complexe, une facture, etc...) Objet = état + actions Informations (données) Comportements (traitements) 3 PPO : Notions de base Programmation Orientée Objet Notion d'objet ✓ Un objet est une entité logicielle: ➔ Ayant une identité ➔ Capable de sauvegarder un état c\'est-à-dire un ensemble d'information dans des variables internes (attributs). ➔ Répondant à des messages précis en déclenchant des activations internes appropriées qui changent l'état de l'objet (comportement). ✓ Ces opération sont appelées méthodes. Ce sont des fonctions liées à des objets et qui précisent le comportement de ces objets. ✓ Attributs : Les attributs d'un objet sont l'ensemble des informations se présentant sous forme de variable et permettant de représenter l'état de l'objet. ✓ Méthodes : une méthode est une fonction ou procédure liée à un objet qui est déclenchée à la réception d'un message particulier, la méthode déclenchée correspond strictement au message reçu 4 PPO : Notions de base Programmation Orientée Objet Notion d'objet 5 PPO : Notions de base Programmation Orientée Objet Notion de classe ✓ Une classe est un modèle d\'objet. C\'est un nouveau type créé par le programmeur et qui sert de modèle pour tous les objets de cette classe. ✓ Une classe spécifie les informations et les actions qu\'auront en commun tous les objets qui en sont issus. 👆 ATTENTION : ne pas confondre objet et classe. Une classe est un type abstrait (exemple : une voiture), un objet est un exemplaire concret d\'une classe (exemple : une audi). Un objet est une variable particulière dont le type est une classe 6 PPO : Notions de base Programmation Orientée Objet Notion de classe ✓ Une classe possède un nom et des membres, c'est à dire des attributs (ou champs) et des méthodes. ✓ Chaque membre nommé membre d'un objet est accessible via l'expression ➔ objet.membre. ✓ Les attributs (ou champs) ➔ ils sont à l'objet ce que les variables sont à un programme. ➔ les attributs sont donc typés (exemple int, float, bool, string ou n'importe quel autre classe) ✓ Les méthodes sont des procédures ou fonctions destinées à traiter les données. Elles servent d'interface entre les données et le programme. ✓ les méthodes acceptent donc des arguments et peuvent renvoyer des valeurs 7 PPO : Notions de base Programmation Orientée Objet A retenir ✓ La POO consiste à programmer en utilisant des objets. ✓ Un objet modélise un élément du domaine étudié (exemples : un compte bancaire, une voiture, un satellite, etc.). ✓ Un objet est une instance de classe. Une classe est un type abstrait, un objet est un exemplaire concret de cette classe. ✓ Une classe regroupe des informations et des actions. ✓ Les informations sont stockées sous la forme d'attribut (champs). Les attributs décrivent l\'état d\'un objet. ✓ Les actions réalisables sur un objet sont représentées par des méthodes. Elles expriment ce que les objets peuvent faire, leur comportement. 👆 Les informations stockées par un objet peuvent être appelées champs, attributs ou encore propriétés. 8 PPO : Notions de base Programmation Orientée Objet Déclaration, instanciation et initialisation C\# ✓ La déclaration permet de créer une nouvelle variable, appelée « rect » dans l\'exemple ci-dessus. A ce stade, aucune réservation de mémoire n\'a eu lieu pour cet objet. Il est donc inutilisable. Le type de la variable rect est Rectangle. Le type d\'un objet est sa classe. ✓ L\'instanciation utilise l\'opérateur new , qui permet de réserver une zone mémoire spécifique pour l\'objet. On dit que l\'objet est instancié par l\'opérateur new. Sans cette étape indispensable, l\'objet déclaré ne peut pas être utilisé. l\'instanciation est l\'opération qui consiste à créer un nouvel objet à partir d\'une classe, au moyen de l\'opérateur new. Rectangle rect; rect = new Rectangle(); déclaration de l\'objet instanciation de l\'objet Rectangle rect = new Rectangle(); 9 PPO : Notions de base Programmation Orientée Objet Le constructeur ✓ le constructeur est une méthode spécifique dont le rôle est de construire un objet, le plus souvent en initialisant ses attributs. ✓ L\'utilisation d\'un constructeur se fait au moment de l\'instanciation de l\'objet (opérateur new ), en passant en paramètres les futures valeurs des attributs de l\'objet créé. 👆 le nom du constructeur doit être identique au nom de la classe, et sa définition ne comporte pas le mot-clé void. ✓ Lorsqu\'une classe ne définit aucun constructeur, un constructeur par défaut sans aucun paramètre est implicitement créé. Il n\'a aucun comportement mais son existence permet d\'instancier des objets de cette classe. ✓ En revanche, toute définition explicite d\'un constructeur dans une classe \"désactive\" le constructeur par défaut. 👆 une classe peut disposer de plusieurs constructeurs initialisant différents attributs. 10 L'encapsulation Projet d\'analyse et de conception PPO : Notions de base ✓ l\'encapsulation est l\'un des principes fondamentaux de la POO. C'est un mécanisme consistant à rassembler les données et les méthodes au sein d\'une structure en cachant l\'implémentation de l\'objet, c\'est-à-dire en empêchant l\'accès aux données par un autre moyen que les services proposés. ✓ Ces services accessibles (offerts) aux utilisateurs de l\'objet définissent ce que l\'on appelle l\'interface de l\'objet (sa vue externe). ✓ L\'encapsulation permet donc de garantir l\'intégrité des données contenues dans l\'objet. ✓ L\'encapsulation permet de définir des niveaux de visibilité des éléments d\'un conteneur. ✓ L\'objectif de l\'encapsulation est de ne laisser accessible que le strict nécessaire pour que la classe soit utilisable. 👆 sauf cas particulier, on donne le niveau de visibilité private à tous les attributs d\'une classe afin d\'assurer leur encapsulation par défaut. 11 PPO : Notions de base Programmation Orientée Objet L'encapsulation ✓ Les mots-clés public et private (modificateur d'accès) permettent de modifier le niveau d\'encapsulation (on parle aussi de visibilité ou d\'accessibilité) des éléments de la classe (attributs et méthodes) : ➔ un élément public est librement utilisable depuis le reste du programme. ➔ un élément privé est uniquement utilisable depuis les méthodes de la classe elle même. 👆 dans de nombreux langages dont le C\#, il existe un niveau d\'encapsulation intermédiaire (protected) qui rend l'élément uniquement utilisable depuis les méthodes de la classe et ses dérivées 12 PPO : Notions de base Programmation Orientée Objet Les accesseurs et mutateurs ✓ un accesseur ou mutateur sont des méthodes le plus souvent publique qui permettent d\'accéder à un attribut privé. ➔ un accesseur en lecture (getter) permet de lire la valeur d\'un attribut. ➔ un mutateur en écriture (setter) permet de modifier la valeur d\'un attribut. 👆 En C\#, les accesseurs prennent la forme de propriétés. Une propriété se manipule comme un champ, mais il s\'agit en réalité d\'un couple d\'accesseurs get et set. Dans la plupart des autres langages, les accesseurs sont des méthodes de la forme getXXX et setXXX. Version 1 du langage C\# private string \_nom; public string Nom { get { return \_nom; } set { \_nom = value; } } Version 3 du langage C\# public string Nom { get; set; } Version 6 du langage C\# private string \_nom; public string Nom { get =\> \_nom; set =\> \_nom = value; } 13 PPO : Notions de base Programmation Orientée Objet Exercice 1 ✓ On souhaite créer un programme à l'aide de la POO. Chaque étudiant de l'école est identifié par son nom, prénom, âge et genre. Lorsqu'un étudiant est accueillit pour la première fois en classe il doit se présenter à son professeur en disant selon son genre : « Bonjour, je m'appelle Madame (ou Monsieur) « Nom » « Prénom » et j'ai « âge » ans a\. Représenter le diagramme de classe de la classe Etudiant b. Créer en c\# (Application en mode console) la classe Etudiant Pour les accesseurs et mutateurs vous n'utiliserez pas de propriété c. Créer les étudiants ci-dessous et afficher leur présentation à l'écran : Pierre, DUPONT, Masculin, 35 ans Nicolas, DURANT, Masculin 27 ans Elise DUMARCHER, Féminin 25 ans Céline LAPORTE, Féminin 28 ans 14 PPO : Notions de base Programmation Orientée Objet Exercice 1bis ✓ Cette école dispose de plusieurs salles numérotées de 1 à 15 et pouvant accueillir des étudiants et un professeur. Le professeur dispose des mêmes caractéristiques que l'étudiant de l'exercice 1, mais il a en plus une matière à enseigner. Il doit lui aussi pouvoir se présenter en disant en fonction de son genre : « Bonjour, je m'appelle Madame (ou Monsieur) « Nom » « Prénom » et je suis votre professeur de « Matière » a\. Représenter le diagramme de classe des classes « Professeur » et « Salle » b. Créer en c\# (Application en mode console) la classe « Professeur » et la classe « Salle ». Pour les accesseurs et mutateurs vous n'utiliserez pas de propriété c. Créer le professeur de Mathématique, DUPRES, Daniel, Masculin, 43 et afficher sa présentation d. La salle dispose aussi d'une méthode pour se présenter. Implémenter sa classe en permettant d'afficher à l'écran : La salle n° « numéro » est occupé par Monsieur (ou Madame) « Nom » Prénom » et les étudiants présents sont « Nom\_étudiant1 » 14 PPO : Notions de base Programmation Orientée Objet Exercice 1bis ✓ Cette école dispose de plusieurs salles numérotées de 1 à 15 et pouvant accueillir des étudiants et un professeur. Le professeur dispose des mêmes caractéristiques que l'étudiant de l'exercice 1, mais il a en plus une matière à enseigner. Il doit lui aussi pouvoir se présenter en disant en fonction de son genre : « Bonjour, je m'appelle Madame (ou Monsieur) « Nom » « Prénom » et je suis votre professeur de « Matière » a\. Représenter le diagramme de classe des classes « Professeur » et « Salle » b. Créer en c\# (Application en mode console) la classe « Professeur » et la classe « Salle ». Pour les accesseurs et mutateurs vous n'utiliserez pas de propriété c. Créer le professeur de Mathématique, DUPRES, Daniel, Masculin, 43 et afficher sa présentation d. La salle dispose aussi d'une méthode pour se présenter. Implémenter sa classe en permettant d'afficher à l'écran : La salle n° « numéro » est occupé par Monsieur (ou Madame) « Nom » Prénom » et les étudiants présents sont « Nom\_étudiant1 » « Prénom\_étudiant1 », « Nom\_étudiant2 » « Prénom\_étudiant2 », etc.... e\. Créer la salle 12 occupé par M. DUPRES et les étudiants de l'exercice 1 15 PPO : Notions de base Programmation Orientée Objet Exercice 1ter ✓ Repartir de l'exercice 1bis et : a\. Ajouter des constructeurs permettant de créer une salle sans élève ni professeur et une salle sans élève. Attention il vous faut adapter la méthode SePresenter() de la classe Salle en conséquence. b\. Gérer les contraintes de l'exercice 1bis concernant le numéro de la salle 16 PPO : Notions de base Programmation Orientée Objet Exercice 2 Une Voiture est caractérisée par sa « Marque », « Couleur », « Matricule » et « Nombre\_de\_chevaux ». a\) Modéliser la classe voiture b) Créer la classe voiture (voiture.cs) et ses attributs en tenant compte du principe d'encapsulation c) Ajouter à la classe : un constructeur sans paramètre un constructeur qui permet d'initialiser la marque, la couleur, le matricule et le nombre de chevaux un constructeur qui permet d'initialiser seulement le matricule d\) Ajouter la méthode « présentation » qui retourne les informations d'une voiture e) Dans le programme principal (Application en mode console) : créer une liste de cinq voitures et initialisez la Écrire le code qui permet d'afficher les informations de toutes les voitures de la liste Écrire le code qui permet d'augmenter le nombre des chevaux de un cheval à toutes les voitures de la liste Afficher les informations des voitures après modification Écrire le code qui permet d'inviter l'utilisateur à saisir le matricule d'une voiture. Ensuite rechercher et afficher les informations de la voiture correspondante. Dans le cas où celle-ci n'existerait pas on affichera le message «matricule inexistante» à l'écran. 17 PPO : Notions de base Programmation Orientée Objet Exercice 3 Un salarié est caractérisé par son Matricule (integer), Nom (string), Prénom(string), Salaire(float), TauxCS (float) a\) Modéliser la classe Salarié b\) Créer la classe Salarie (salarie.cs) et ses attributs en tenant compte du principe d'encapsulation c\) Ajouter les constructeurs suivants : Un par défaut Un qui permet de renseigner le matricule lors de l'instanciation Un qui permet de renseigner le matricule et le nom Un qui permet l'initialisation de toutes les propriétés. d\) Implémentez la méthode CalculerSalaireNet() qui doit calculer le salaire net d'un employé qui équivaut à : Salaire -- (salaire\*TauxCS) et retournera la valeur calculée. e\) Ajouter un programme de test où il faut créer des objets (en utilisant les différents constructeurs) et leur calculer le salaire. f\) Le taux de charges sociales (TauxCS) est en fait commun à tous les salariés. Pour éviter toute redondance de cette propriété, vous devriez donc la déclarer comme partagée au niveau de la classe Salarié et non comme une propriété spécifique des objets instanciés à partir de la classe. Proposer une solution et tester de nouveau avec d'autres objets. 18 PPO : Notions de base Programmation Orientée Objet Membres et Classes Statiques ✓ En programmation orientée objet (POO), le mot-clé static est utilisé pour définir des membres (attributs et méthodes) qui appartiennent directement à la classe elle-même plutôt qu\'aux instances (objets) créées à partir de cette classe. Cela permet de partager des données ou des comportements entre toutes les instances de la classe sans avoir besoin de dupliquer ces informations dans chaque objet. ✓ Les membres statiques et les classes statiques sont utilisés lorsqu\'un traitement ou une donnée doit être commun à tous les objets ou accessible sans créer d\'objet. Cela permet une gestion plus efficace de certaines fonctionnalités partagées. 19 PPO : Notions de base Programmation Orientée Objet Attributs et Méthodes statiques ✓ Le mot-clé static permet d'indiquer que l'attribut ou la méthode : Existe indépendamment de tout objet de la classe Est accessible même si aucun objet de la classe n'a encore été créé Est partagé par tous les objets de la classe est accessible par le nom de la classe suivi d'un point (ex. Classe.nomMethode() ou Classe.nomAttribut) Peut être initialisé et manipulé dans une méthode de la classe ✓ Règles d\'interaction entre méthodes statiques et méthodes d\'instance : Une méthode d\'instance peut utiliser des membres statiques (attributs ou méthodes). Une méthode statique peut utiliser des membres statiques. Une méthode statique ne peut pas utiliser de membres d\'instance (attributs ou méthodes) car ces derniers nécessitent une instance pour exister. Une méthode statique ne peut pas utiliser le mot-clé this (qui fait référence à une instance). 📆 On parle de membres de classe (attribut, méthode), par opposition aux membres d'instance

Use Quizgecko on...
Browser
Browser