CSC 3101 Programmation orientée objet CSC 3101 Algorithmique et langage de prog
CSC 3101 Programmation orientée objet CSC 3101 Algorithmique et langage de programmation Gaël Thomas CSC 3101 Petits rappels : l’objet 䡧 Une structure de données (tuple ou tableau) s’appelle un objet 䡧 Un objet possède un type appelé sa classe • Si la classe de l’objet o est C, on dit que o est une instance de C 䡧 En Java, on ne manipule que des références vers des objets 䡧 Une méthode d’instance est une méthode associée à l’objet • Possède un paramètre implicite du type de la classe nommé this Programmation orientée objet CSC 3101 But de la programmation orientée objet Améliorer la réutilisabilité du code car une ligne de code coûte très cher ! (~1h de développement par ligne de code) Programmation orientée objet CSC 3101 Que signifie réutiliser du code ? 䡧 Quand on réutilise du code, on est en général intéressé par une fonctionnalité, pas par une mise en œuvre spécifique 䡧 L’exemple de la classe Army dans l’armée de monstres • Objet sur lequel je peux appeler addMonster • Mais savoir que les monstres sont stockés dans un tableau extensible ou une liste chaînée n’est pas essentiel (sauf pour les performances) Programmation orientée objet CSC 3101 Programmation orientée objet 䡧 Concevoir une application en terme d’objets qui interagissent Au lieu de la concevoir en terme de structures de données et de méthodes (programmation impérative) ⇒ On ne s’intéresse plus à la mise en œuvre d’un objet, mais d’abord aux fonctionnalités qu’il fournit 䡧 Objet = entité du programme fournissant des fonctionnalités • Encapsule une structure de données et des méthodes qui manipulent cette structure de données • Expose des fonctionnalités Programmation orientée objet CSC 3101 L’objet en Java 䡧 Contient une mise en œuvre • Des champs • Des méthodes d’instances • Des constructeurs (méthodes d’initialisation vues dans ce cours) 䡧 Expose des fonctionnalités • En empêchant l’accès à certains champs/méthodes/constructeurs à partir de l’extérieur de la classe ⇒ principe d’encapsulation vue dans ce cours Programmation orientée objet CSC 3101 Plan du cours 1. Le constructeur 2. L’encapsulation 3. Les champs de classe Programmation orientée objet CSC 3101 Création d’un objet 䡧 Jusqu’à maintenant, pour créer un objet, on écrit une méthode de classe qui • Alloue l’objet • Initialise l’objet • Renvoie l’objet initialisé 䡧 Par exemple static Compte create(String name) { Compte res = new Compte(); res.name = name; res.solde = 0; return res; } Programmation orientée objet CSC 3101 Le constructeur 䡧 Constructeur = méthode simplifiant la création d’un objet 䡧 Méthode d’instance spéciale pour initialiser un objet • Méthode d’instance possédant le nom de la classe • Pas de type de retour • Peut posséder des paramètres 䡧 Le constructeur est appelé automatiquement pendant un new • new commence par allouer un objet • Puis appelle le constructeur avec comme receveur le nouvel objet • Et, enfin, renvoie l’objet Programmation orientée objet CSC 3101 Exemple avec la classe Compte Programmation orientée objet /* création/initialisation */ class Compte { … static Compte create(String name) { Compte res = new Compte(); res.name = name; res.solde = 0; return res; } } /* création/initialisation */ Compte.create("Tyrion"); /* initialisation */ class Compte { … Compte(String name) { this.name = name; this.solde = 0; } } /* création/init. */ new Compte("Tyrion"); Avec constructeur Sans constructeur CSC 3101 Exemple avec la classe Compte Programmation orientée objet /* création/initialisation */ class Compte { … static Compte create(String name) { Compte res = new Compte(); res.name = name; res.solde = 0; return res; } } /* création/initialisation */ Compte.create("Tyrion"); /* initialisation */ class Compte { … Compte(String name) { this.name = name; this.solde = 0; } } /* création/init. */ new Compte("Tyrion"); Avec constructeur Sans constructeur Remarque : Si pas de constructeur, Java génère un constructeur sans paramètre qui initialise les champs à 0/null CSC 3101 Plan du cours 1. Le constructeur 2. L’encapsulation 3. Les champs de classe Programmation orientée objet CSC 3101 䡧 Principe : cacher les détails de mise en œuvre d’un objet ⇒ pas d’accès direct aux champs de l’extérieur de l’objet L’encapsulation Programmation orientée objet Un objet Champs Méthodes d’instance Agissent sur Interface d’accès à l’objet CSC 3101 Mise en œuvre : la visibilité 䡧 Chaque entité (classe, champ, méthode ou constructeur) possède un niveau de visibilité • Définit à partir d’où dans le programme une entité est visible 䡧 Permet de masquer les détails de mise en œuvre d’un objet Programmation orientée objet CSC 3101 La visibilité en Java 䡧 Trois niveaux de visibilités pour une entité en Java (techniquement quatre, mais le dernier est vu en CI6) • Invisible en dehors de la classe : mot clé private • Invisible en dehors du package : comportement par défaut • Visible de n’importe où : mot clé public 䡧 En général • Les champs sont privés (inaccessibles en dehors de la classe) • Les méthodes sont publiques Programmation orientée objet CSC 3101 La visibilité par l’exemple package tsp.bank; public class Bank { /* visible partout */ private Node node; /* invisible de l’extérieur du fichier (de Bank) */ public Bank() { … } /* visible partout */ public void lookup() (String name) { … } /* visible partout */ void display(Ba) { … } /* invisible en dehors du package tsp.bank */ } Programmation orientée objet CSC 3101 Plan du cours 1. Le constructeur 2. La visibilité 3. Les champs de classe Programmation orientée objet CSC 3101 Les champs de classe 䡧 Champ de classe • Champ précédé du mot clé static • Définit une variable globale, indépendante d’une instance Exemple : System.out est un champ de classe de la classe System 䡧 Attention ! • Un champ de classe est une variable mais pas un champ d’instance : un champs d’instance est un symbole nommant un élément d’une structure de donnée 䡧 Dans la suite du cours • On n’utilise pas de champs de classe • On utilise static uniquement pour la méthode main Programmation orientée objet CSC 3101 Notions clés 䡧 Programmation orientée objet • Conception d’un programme à partir d’objets qui interagissent • On s’intéresse à la fonctionnalité d’un objet avant de s’intéresser à sa mise en œuvre 䡧 Le constructeur • Méthode appelée pendant new pour initialiser un objet 䡧 Visibilité pour cacher les détails de mise en œuvre d’un objet • private : invisible en dehors de la classe • Par défaut : invisible en dehors du package • public : visible de partout Programmation orientée objet uploads/S4/ programmation-orientee-objet-csc-3101-algorithmique-et-langage-de-programmation-gael-thomas.pdf
Documents similaires
-
56
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jui 23, 2022
- Catégorie Law / Droit
- Langue French
- Taille du fichier 0.6117MB