Objet Classe Concepts clés de la POO Résumé global Concepts de base de la programmation orientée objet Cours Java - F. Michel 1 / 23 Objet Classe Concepts clés de la POO Résumé global Plan 1 Qu’est-ce qu’un objet ? Une définition Principe d’encapsulation des données Exemples 2 Qu’est-ce qu’une classe ? Une définiton Exemple de classe en Java 3 Concepts clés de la POO Héritage Spécialisation Redéfinition Interface Cours Java - F. Michel 2 / 23 Objet Classe Concepts clés de la POO Résumé global Qu’est-ce qu’un objet ? Une entité logicielle cohérente définie par son état et son comportement. Utilisé pour modéliser informatiquement des "objets" de la vie courante (voiture, personne, etc.) ou des concepts (date, couleur,etc.). Cours Java - F. Michel 4 / 23 Objet Classe Concepts clés de la POO Résumé global Qu’est-ce qu’un objet ? Son état est défini à l’aide d’attributs (Fields) : des variables associées à l’objet. Son comportement est défini par des méthodes (Methods) : une fonction rattachée à l’objet qui permet de déclencher un des comportements associés à l’objet. Cours Java - F. Michel 5 / 23 Objet Classe Concepts clés de la POO Résumé global Principe d’encapsulation des données Principe d’encapsulation des données Les attributs sont généralement inaccessibles depuis l’extérieur de l’objet : seules les méthodes sont accessibles. Cacher le détail de la structure interne d’un objet (les attributs) correspond à appliquer le principe d’encapsulation des données : principe de base de la programmation objet. Cours Java - F. Michel 6 / 23 Objet Classe Concepts clés de la POO Résumé global Un exemple Un vélo : Les méthodes permettent de controler la manière dont les attributs de l’objet vélo sont modifiés. Avantages : modularité, réutilisation, indépendance des différentes parties du programme (facilite la maintenance et le debug). Cours Java - F. Michel 7 / 23 Objet Classe Concepts clés de la POO Résumé global Autre exemple, avec la notation UML Une ampoule : L’ensemble des méthodes d’un objet est appelé l’interface de l’objet. Une interface définit donc en quelque sorte tout ce qu’il est possible de "faire" avec un objet. Cours Java - F. Michel 8 / 23 Objet Classe Concepts clés de la POO Résumé global Qu’est-ce qu’une classe ? Dans le monde réel, nous comprenons les objets en les associant à des catégories : tous les vélos posèdent des caractéristiques communes. peu importe leurs états individuels, ils sont tous faits des mêmes composants (vitesses, pédales, etc.) Ils définissent donc une classe (ou type) d’objet particulière. En termes "orientés objets" : un vélo particulier est simplement une instance de la classe vélo. les attributs et les méthodes d’une instance de vélo sont les mêmes pour toutes les instances de vélos. seules les valeurs des attributs (caractéristiques propres) sont susceptibles d’être différentes. une classe est donc un patron de conception à partir duquel des objets individuels sont créés. Cours Java - F. Michel 10 / 23 Objet Classe Concepts clés de la POO Résumé global Exemple de classe en Java Bicycle.java public class private int private int private int Bicycle { cadence = 0 ; speed = 0 ; gear = 1 ; p u b l i c v o i d changeCadence ( i n t newValue ) { cadence = newValue ; } p u b l i c v o i d changeGear ( i n t newValue ) { gear = newValue ; } v o i d speedUp ( i n t i n c r e m e n t ) { / / speed = speed + i n c r e m e n t ; } v i s i b i l i t e de l a methode r e s t r e i n t e au package p u b l i c v o i d applyBrakes ( i n t decrement ) { speed = speed − decrement ; } public void p r i n t S t a t e s ( ) { System . o u t . p r i n t l n ( " cadence : " +cadence+ " speed : " +speed+ " gear : " +gear ) ; } } Cours Java - F. Michel 11 / 23 Objet Classe Concepts clés de la POO Résumé global Remarques la classe précédente ne contient pas de méthode main. ce n’est pas une application. c’est juste une classe permettant de créer des objets qui seront utilisés dans une application. La responsabilité de créer et d’utiliser de nouveaux objets du type Bicycle appartient à une classe : celle qui portera le nom du programme. Cours Java - F. Michel 12 / 23 Objet Classe Concepts clés de la POO Résumé global Utilisation d’une classe dans une application Java BicycleDemo.java p u b l i c c l a s s BicycleDemo { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] args ) { / / Create two d i f f e r e n t B i c y c l e o b j e c t s B i c y c l e b i k e 1 = new B i c y c l e ( ) ; B i c y c l e b i k e 2 = new B i c y c l e ( ) ; / / Invoke methods on those o b j e c t s b i k e 1 . changeCadence ( 5 0 ) ; b i k e 1 . speedUp ( 1 0 ) ; b i k e 1 . changeGear ( 2 ) ; bike1 . p r i n t S t a t e s ( ) ; b i k e 2 . changeCadence ( 5 0 ) ; b i k e 2 . speedUp ( 1 0 ) ; b i k e 2 . changeGear ( 2 ) ; b i k e 2 . changeCadence ( 4 0 ) ; b i k e 2 . speedUp ( 1 0 ) ; b i k e 2 . changeGear ( 3 ) ; bike2 . p r i n t S t a t e s ( ) ; } } Cours Java - F. Michel 13 / 23 Objet Classe Concepts clés de la POO Résumé global Héritage Cours Java - F. Michel 15 / 23 Objet Classe Concepts clés de la POO Résumé global Héritage : le mot clé extends Pour hériter d’une classe, on utilise le mot clé extends : MountainBike.java p u b l i c c l a s s MountainBike extends B i c y c l e { / / new f i e l d s and methods d e f i n i n g a mountain b i k e would go here } Cours Java - F. Michel 16 / 23 Objet Classe Concepts clés de la POO Résumé global Héritage (notation UML) Cours Java - F. Michel 17 / 23 Objet Classe Concepts clés de la POO Résumé global Spécialisation Cours Java - F. Michel 18 / 23 Objet Classe Concepts clés de la POO Résumé global Redéfinition de méthodes Cours Java - F. Michel 19 / 23 Objet Classe Concepts clés de la POO Résumé global Interface en java Définition Les objets interagissent avec le monde extérieur grâce aux méthodes qu’ils définissent (encapsulation) Les méthodes d’un objet définissent donc son interface avec le monde extérieur En java, il est possible de définir, de manière abstraite (sans le code des méthodes), une interface. On peut ainsi définir toutes les méthodes nécessaires à un type d’objet particulier sans pour autant imposer le code des méthodes. Cours Java - F. Michel 20 / 23 Objet Classe Concepts clés de la POO Résumé global Interface, exemple : BicycleInterface.java public interface BicycleInterface { p u b l i c v o i d changeCadence ( i n t newValue ) ; p u b l i c v o i d changeGear ( i n t newValue ) ; p u b l i c v o i d speedUp ( i n t i n c r e m e n t ) ; p u b l i c v o i d applyBrakes ( i n t decrement ) ; } Cours Java - F. Michel 21 / 23 Objet Classe Concepts clés de la POO Résumé global ACMEBicycle.java p u b l i c c l a s s ACMEBicycle implements B i c y c l e { p u b l i c v o i d changeCadence ( i n t newValue ) { / / code } p u b l i c v o i d changeGear ( i n t newValue ) { / / code } p u b l i c v o i d speedUp ( i n t i n c r e m e n t ) { / / code } p u b l i c v o i d applyBrakes ( i n t decrement ) { / / code } } Une classe implémente une interface grâce au mot clé implements Lorsqu’une une classe implémente une interface, toutes les méthodes de l’interface doivent être définies dans le corps de la classe. Il s’agit d’une sorte de contrat : "la classe s’engage à définir les méthodes de l’interface" Cours Java - F. Michel 22 / 23 Objet Classe Concepts clés de la POO Résumé global Résumé global La programmation orientée objet (POO) : la POO est un paradigme de programmation qui fait le lien avec la La POO sur Wikipédia manière dont nous concevons le monde. elle repose sur l’assemblage de briques logicielles, les objets, définies par un état et un comportement. On parle d’attributs et de méthodes. Quelques principes de bases de la POO : encapsulation : les traitements et les attributs internes à un objet ne doivent pas être visibles de l’extérieur notion d’interface : les méthodes d’une classe d’objets. Elles définissent son comportement. héritage et spécialisation : un programme correspond au final à définir et utiliser une hiérarchie d’objets. la spécialisation d’une classe peut entraîner la redéfinition d’une partie de son comportement, c’est-à-dire de ses méthodes. Ce cours reprend largement les tutoriaux en ligne proposés par Sun : The Java Tutorials Cours Java - F. Michel 23 / 23