La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

POO : Objets et classes (Rappels) Objectifs de la POO: On manipule des objets. Les programmes sont découpés suivant les types des objets manipulés. Les.

Présentations similaires


Présentation au sujet: "POO : Objets et classes (Rappels) Objectifs de la POO: On manipule des objets. Les programmes sont découpés suivant les types des objets manipulés. Les."— Transcription de la présentation:

1 POO : Objets et classes (Rappels) Objectifs de la POO: On manipule des objets. Les programmes sont découpés suivant les types des objets manipulés. Les données sont regroupées avec les traitements qui les utilisent. Une classe Facture regroupe, par exemple, tout ce que lon peut faire avec une facture, avec toutes les données nécessaires à ces traitements.

2 Notion dobjet en Java (Rappels) Létat interne est donné par des valeurs de variables dinstances. Le comportement est donné par des fonctions ou procédures, appelées méthodes. Un objet a: – une adresse en mémoire (identifie lobjet) – un comportement (ou interface) – un état interne

3 Quest-ce quun objet? (Rappels) Toute entité identifiable, concrète ou abstraite, peut être considérée comme un objet. Un objet réagit à certains messages qu'on lui envoie de l'extérieur ; la façon dont il réagit détermine le comportement de l'objet. Il ne réagit pas toujours de la même façon à un même événement ; sa réaction dépend de létat dans lequel il se trouve.

4 Exemple dobjet (Rappels)

5

6 Interactions entre objets (Rappels) Les objets interagissent en senvoyant des messages synchrones Les méthodes dun objet correspondent aux messages quon peut lui envoyer : quand un objet reçoit un message, il exécute la méthode correspondante Exemples : objet1.decrisToi(); employe.setSalaire(20000); voiture.demarre(); voiture.vaAVitesse(50); Objet qui reçoit le message Message envoyé

7 Interactions entre objets (Rappels) Message envoyé

8 Messages entre objets (Rappels) Pierre envoie un message à sa voiture maVoiture.vaVitesse(70)

9 9 Paradigme objet (Rappels) La programmation objet est un paradigme, une manière de « modéliser le monde » : – des objets ayant un état interne et un comportement – collaborent en s'échangeant des messages (pour fournir les fonctionnalités que l'on demande à l'application) Dautres paradigmes : – programmation impérative (Pascal, C) – programmation fonctionnelle (Scheme, Lisp)

10 10 Classes Java (Rappels) Les objets qui collaborent dans une application sont souvent très nombreux. Mais on peut le plus souvent dégager des types d'objets : des objets ont une structure et un comportement très proches, sinon identiques. Par exemple, tous les livres dans une application de gestion d'une bibliothèque. La notion de classe correspond à cette notion de types d'objets. Un objet correspond à une instanciation de classes

11 11 Classes et instances Une instance dune classe est créée par un des constructeurs de la classe. Une fois quelle est créée, linstance : – a son propre état interne (les valeurs des variables) – partage le code qui détermine son comportement (les méthodes) avec les autres instances de la classe

12 12 Constructeurs dune classe Chaque classe a un ou plusieurs constructeurs qui servent à : – créer les instances – initialiser létat de ces instances Un constructeur – a le même nom que la classe – na pas de type retour

13 13 Création dune instance variables dinstance création d'une instance de Employe

14 14 Plusieurs constructeurs (surcharge)

15 15 Constructeur par défaut Lorsque le code dune classe ne comporte pas de constructeur, un constructeur sera automatiquement ajouté par Java Pour une classe Classe, ce constructeur sera par défaut défini par Java [public] Classe() { }

16 16 les accesseurs Deux types de méthodes servent à donner accès aux variables depuis lextérieur de la classe : les accesseurs en lecture pour lire les valeurs des variables ; « accesseur en lecture » est souvent abrégé en « accesseur » les accesseurs en écriture, ou modificateurs pour modifier leurs valeurs

17 les accesseurs de modification public class Emprunteur { private String prenom = ""; public void setPrenom(String prenom) { this.prenom = prenom; } Valeur en entrée de la méthode

18 les accesseurs de lecture : Exemple public class Emprunteur { private String prenom = ""; public String getPrenom() { return prenom; } Valeur en sortie de la méthode

19 19 Surcharge dune méthode En Java, on peut surcharger une méthode, cest-à-dire, ajouter une méthode qui a le même nom mais pas la même signature quune autre méthode : calculerSalaire(int) calculerSalaire(int, double) indice dans la grille des salaires prime accordée aux commerciaux

20 20 Surcharge dune méthode En Java, il est interdit de surcharger une méthode en changeant le type de retour. Autrement dit, on ne peut différencier 2 méthodes par leur type retour. Par exemple, il est interdit d'avoir ces 2 méthodes dans une classe : int calculerSalaire(int) double calculerSalaire(int)

21 21 Types de variables Les variables dinstances – sont déclarées en dehors de toute méthode – conservent létat dun objet, instance de la classe – sont accessibles et partagées par toutes les méthodes de la classe Les variables locales – sont déclarées à lintérieur dune méthode – conservent une valeur utilisée pendant lexécution de la méthode – ne sont accessibles que dans le bloc dans lequel elles ont été déclarées

22 22 Déclaration des variables Toute variable doit être déclarée avant dêtre utilisée Déclaration dune variable : on indique au compilateur que le programme va utiliser une variable de ce nom et de ce type Exemples: double prime; Employe e1; Point centre;

23 23 Affectation des variables Laffectation dune valeur à une variable est effectuée par linstruction: variable = expression; Lexpression est calculée et ensuite la valeur calculée est affectée à la variable Exemple : x = 3; x = x + 1;

24 24 Initialisation dune variable Une variable doit être initialisée (recevoir une valeur) avant dêtre utilisée dans une expression. Si elles ne sont pas initialisées par le programmeur, les variables dinstance reçoivent les valeurs par défaut de leur type, si elle sont de type primitif, et null sinon. Lutilisation dune variable locale non initialisée par le programmeur provoque une erreur (pas dinitialisation par défaut)

25 25 Initialisation dune variable On peut initialiser une variable en la déclarant. La formule dinitialisation peut être une expression complexe : double prime = ; Employe e1 = new Employe("Dupond", "Jean"); double salaire = prime ;

26 26 Désigner les variables dune instance Soit un objet o1 ; la valeur dune variable v de o1 est désignée par o1.v. Par exemple, Cercle c1 = new Cercle(p1, 10); System.out.println(c1.rayon); // affiche 10 Remarque : le plus souvent les variables sont private et on ne peut y accéder directement en dehors de leur classe

27 27 Accès aux membres dune classe Degrés d'encapsulation – Java permet plusieurs degrés dencapsulation pour les membres (variables et méthodes) et les constructeurs dune classe – Lencapsulation est le fait de ne montrer et de ne permettre de modifier que ce qui est nécessaire à une bonne utilisation

28 28 Types d'autorisation d'accès private : seule la classe dans laquelle il est déclaré a accès (à ce membre ou constructeur) public : toutes les classes sans exception y ont accès Sinon, par défaut, seules les classes du même paquetage que la classe dans lequel il est déclaré y ont accès Rappel : un paquetage est un regroupement de classes.

29 29 Méthodes et variables de classe Variables de classe – Certaines variables sont partagées par toutes les instances dune classe. Ce sont les: variables de classe (modificateur static) – Si une variable de classe est initialisée dans sa déclaration, cette initialisation est exécutée une seule fois quand la classe est chargée en mémoire

30 Mémoire e1 e2 public static void main(String[] args) { Emprunteur e1 ; Emprunteur e2; Emprunteur e3; e3 }

31 Mémoire e1 e2 public static void main(String[] args) { Emprunteur e1 ; Emprunteur e2; Emprunteur e3; e3 e1 = new Emprunteur("Lefevre","Celian"); e2 = new Emprunteur("Dupont","Charlotte"); e3 = new Emprunteur("Cartier", "Sébastien"); }

35 35 Désigner une méthode de classe Pour désigner une méthode static depuis une autre classe, on la préfixe par le nom de la classe : int n = Employe.getNbEmploye(); On peut aussi la préfixer par une instance quelconque de la classe (à éviter car cela nuit à la lisibilité : on ne voit pas que la méthode est static) : int n = e1.getNbEmploye();

36 36 Méthodes de classe Comme une méthode de classe exécute une action indépendante dune instance particulière de la classe, elle ne peut utiliser de référence à une instance courante (this) Il serait, par exemple, interdit décrire static double tripleSalaire() { return salaire * 3; }

37 37 La méthode static main La méthode main() est nécessairement static. Pourquoi ? La méthode main() est exécutée au début du programme. Aucune instance nest donc déjà créée lorsque la méthode main() commence son exécution. Ça ne peut donc pas être une méthode dinstance.

38 38 Lhéritage L'héritage de classe est un des constituants primordiaux de la programmation orientée objet. C'est un mécanisme permettant de créer une nouvelle classe en partant d'une classe existante. La nouvelle classe (classe fille) conservera les propriétés et méthodes de la classe d'origine (classe mère), tout en pouvant y ajouter ses propres. On dit aussi que la classe fille étend la classe mère.

39 Lhéritage

40

41

42 42 Le polymorphisme Le polymorphisme correspond à la possibilité pour un opérateur ou une fonction d'être utilisable dans des contextes différents

43 43 Le polymorphisme Ainsi, on peut par exemple définir plusieurs méthodes homonymes addition() effectuant une somme de valeurs. La méthode int addition(int, int) pourra retourner la somme de deux entiers La méthode float addition(float, float) pourra retourner la somme de deux flottants La méthode char addition(char, char) pourra définir au gré de l'auteur la somme de deux caractères etc.

44 44 Le polymorphisme d'héritage La possibilité de redéfinir une méthode dans des classes héritant d'une classe de base s'appelle la spécialisation. Il est alors possible d'appeler la méthode d'un objet sans se soucier de son type intrinsèque : il s'agit du polymorphisme d'héritage. Ceci permet de faire abstraction des détails des classes spécialisées d'une famille d'objet, en les masquant par une interface commune (qui est la classe de base).

45 45 Les interfaces Une interface est constituée d'un ensemble de déclarations de méthodes sans implantation. On n'y trouve uniquement, pour chaque méthode, que la définition de son profil, c'est-à-dire son en-tête suivi de ;. Les interfaces sont définies par le mot clé interface. Si les interfaces permettent de déclarer des variables de référence portant leur type, elles ne sont pas, par contre, instanciables. En particulier une interface ne possède pas de constructeur. Une classe peut implanter une ou plusieurs interface(s) : la définition de la classe comporte alors le mot clé implements suivi d'une liste de noms d'interfaces (les noms des interfaces implantées y sont séparés par une virgule).

46 46 Les interfaces public interface MonInterface { [public abstract] type methode1([arguments]);... } Public class MaClass implements MonInterface { public type methode1([arguments]) { // Implementation de la méthode methode1 … }


Télécharger ppt "POO : Objets et classes (Rappels) Objectifs de la POO: On manipule des objets. Les programmes sont découpés suivant les types des objets manipulés. Les."

Présentations similaires


Annonces Google