Chapitre III  POO JAVA Saloua Ben Yahia
Objectifs Connaître les concepts de la programmation par objet et les mettre en oeuvre avec Java Créer une classe avec des attributs et des méthodes Instancier des objets et leur envoyer des messages
Plan Objectifs Définition  d’un Objet Définition d’une Classe Instanciation Garbage Collector Opérateur . Méthode Constructeur String UML
1. Définition d’un Objet 1.1 Exemples…Suite Date du jour Attributs : jour (20), mois (01),année (2009) Méthodes : s’afficher Date d’aujourd’hui est un objet Voiture Attributs : marque , vitesse, couleur, kilométrage Méthodes : accélérer, freiner, arrêter Ma Voiture est un Objet : Marque : Toyota, Kilométrage 150000, couleur : verte, vitess=0km/h.
1. Définition d’un Objet 1.2 Définition  Un objet peut être une valeur (instance) d’un type abstrait, une “représentation” d’une classe. une abstraction d’un objet physique du monde réel, c’est-à-dire dont on a retenu uniquement les caractéristiques intéressantes lors de la modélisation.
1. Définition d’un Objet 1.2 Définition…Suite Un objet est caractérisé par Un ensemble  d’attributs  typés et nommés représentant ses propriétés statiques. Ces attributs portent des valeurs attachées à l’objet. L’ensemble de ces valeurs à un instant donné constitue l’état de l’objet à cet instant, Un ensemble de  méthodes  définissant son comportement et ses réactions aux stimulations externes. Ces méthodes implémentent les algorithmes invocables sur cet objet, Une  identité  qui permet de le distinguer des autres objets, de manière unique.
Plan Objectifs Définition  d’un Objet Définition d’une Classe Définition Exemples Qu’est ce donc une classe ? Instanciation Garbage Collector Opérateur . Constructeur Méthode String
2. Définition d’une classe 2.1  Définition C’est un modèle de définition pour les objets en termes d’attributs, en termes de méthodes. Les objets sont des représentations dynamiques (instanciation), “vivantes”, du modèle défini pour eux au travers de la classe.
2. Définition d’une classe 2.2  Exemple class Cercle { int rayon; int epaisseur_trait; ... // autres attributs ... } Instanciation, même attributs mais de valeurs différentes
2. Définition d’une classe 2.2  Exemple…Suite class Date{ int jour,moi,annee; } Aujourd’hui, demain, Le jour de l’an…sont des instances ou des objets de la classe Date
2.Définition d’une classe 2.2  Exemple…Suite class Individu { String nom; int age; float salaire; } Moi,toi, sont de exemples d’Individu,
2.Définition d’une classe 2.3  Qu’est-ce qu’une classe ? Une classe définit les modèles des objets qui en seront instanciés Dans la classe sont définis des attributs et des méthodes qui seront présents dans chaque objet qui sera instancié de la classe considérée.  Par convention le nom d’une classe commence toujours par une Majuscule Exemple class Voiture{……………} class Cercle{………………}
2.Définition d’une classe 2.3  Qu’est-ce qu’une classe ?...Suite Dans l’exemple de la page précédente, on définit une classe Cercle, contenant entre autres : un attribut rayon et  un attribut epaisseur_trait.  Chaque cercle instancié de cette classe possédera son propre rayon et sa propre épaisseur du trait.
2.Définition d’une classe 2.3  Qu’est-ce qu’une classe ?...Suite Les méthodes définies dans la classe existent de même pour chaque objet et ont un comportement identique dans chaque objet tout en y étant localisé Supposons que la classe Cercle fournisse la méthode changeRayon(int new_rayon), permettant de modifier la valeur de l’attribut rayon. Si un des cercles fait appel à cette méthode, il changera son propre rayon, pas celui des autres cercles dont il ignore probablement l’existence.
2.Définition d’une classe 2.3  Qu’est-ce qu’une classe ?...Suite Deux instances de la classe voiture
Plan Objectifs Définition  d’un Objet Définition d’une Classe Instanciation Garbage Collector Opérateur . Méthode Constructeur String UML
3.Instanciation.  3.1 Mais que cela signifie-t-il ? La création d’un objet à partir d’une classe est appelé  instanciation . Cet objet est  une instance  de sa classe. Une instanciation se décompose en trois phases 1. Création et initialisation des attributs en mémoire, à l’image d’une structure. 2. Appel de méthodes particulières, les constructeurs, définies dans la classe, dont l’étude est faite un peu plus loin... 3. Renvoi d’une référence sur l’objet (son identité) maintenant créé et initialisé.
3.Instanciation  3.2 Opérateur new L’opérateur new sert à instancier un Objet de type structuré Date d1 = new Date(); Date d2=new Date();
3.Instanciation  3.2 Opérateur new…suite En java il existe deux types Types primitifs Types structurés ou classes Les types primitifs contiennent la valeur qui leur est assignée Exemple : int x = 7; int y = x;
3.Instanciation  3.2 Opérateur new…suite Les types structurés sont instanciés avec l’opérateur new Exemple Date d1=new Date(); Date d2=new Date();
3.Instanciation.  3.3 Mais que se passe t-il en mémoire Création de l’Objet Création de la référence Sauvegarde de l’adresse de l’objet dans la référence
3.Instanciation.  3.3 Mais que se passe t-il en mémoire class MaDate { int day; int month; int year; }
3.Instanciation.  3.3 Mais que se passe t-il en mémoire MaDate today= new MaDate(); Création de la référence au départ son contenu est à null (valeur par défaut d’une référence) MaDate today; Instanciation de l’Objet avec le new new MaDate() Copie de l’adresse dans la référence MaDate d1 = new MaDate();
3.Instanciation.  3.3 Mais que se passe t-il en mémoire…suite
3.Instanciation.  3.3 Mais que se passe t-il en mémoire 7 7 x int y int Cas création de deux variables primitives de type int
3.Instanciation.  3.3 Mais que se passe t-il en mémoire Date d1=new Date(); Date d2=new Date();
3.Instanciation.  3.3 Mais que se passe t-il en mémoire mois int anne int @1 @1 jour int 0 0 0 d1 Date @2 @2 jour int 0 0 0 d2 Date mois int anne int
3.Instanciation.  3.3 Mais que se passe t-il en mémoire Lorsque vous exécutez new pour allouer de la mémoire pour un objet, Java affecte aux valeurs de l’espace la valeur initiale "zéro".  Pour les variables numériques, la valeur est réellement zéro. Pour les variables booléennes (boolean), la valeur est false.  Pour les références, c’est à dire toute variable d’un type d’objet, une valeur spéciale à null indique qu’il n’y a pas de structure associée.
3.Instanciation.  3.4  Initialisation des variables Dans Java, une valeur nulle indique que la variable ne renvoie pas à un objet.  La machine virtuelle détecte si vous utilisez une telle référence et vous en interdit l’accès . Ce comportement sera présenté plus en détail dans le module ultérieur  Exceptions . Exemple Voiture v1; //v1 est à null v1.freiner(20);//génère une exception à l’exécution
3.Instanciation.  3.4 Initialisation des variables Note –  L’initialisation par défaut ne concerne que les variables membres de la classe et non les variables locales au bloc d’instructions. Une erreur se produit à la compilation si vous tentez d’utiliser une variable locale avant qu’une valeur ne lui ait été affectée de façon définie.
4.Instanciation.  4.1 Le garbage collecteur Les objets qui ne sont plus référencés sont détruit automatiquement par le garbage Collecteur Exemple Date d1=new Date(); Date d2=new Date(); d2=d1;
4.Instanciation.  4.1 Le garbage collecteur mois int anne int @2 @2 jour int 0 0 0 d2 Date mois int anne int @1 @1 jour int 0 0 0 d1 Date
4.Instanciation.  4.1 Le garbage collecteur mois int anne int @1 @1 jour int 0 0 0 d1 Date @1 @2 d2 Date anne int jour int 0 0 0 mois int
Plan Objectifs Définition  d’un Objet Définition d’une Classe Instanciation Garbage Collector Opérateur . Méthode Constructeur String UML
4. L’opérateur .  Java autorise l’accès aux attributs d’un objet  (nom, age et salaire) à l’aide de l’opérateur (.), de la façon suivante :
4. L’opérateur .  class Individu { String nom; int age; float salaire; } Individu un = new Individu() Individ deux=new Individu(); un.nom = "Jean"; deux.nom="Jo"; un.age = 24; deux.age=30; un.salaire = 10000; deux.salaire=2000;
4. L’opérateur .  Deux instances de la classe voiture
Plan Objectifs Définition  d’un Objet Définition d’une Classe Instanciation Garbage Collector Opérateur . Méthode Constructeur String UML
5.Méthode 5.1 Définition Définition de méthodes <type_retour><nom>(<liste_arguments>)   <bloc> Exemple : void accelerer(int v) {vitesse=vitesse+v;} double perimetre() {return 2*rayon*3.14;}   En-tête ou signature En-tête ou signature bloc bloc
5.Méthode 5.2 Exemples class Cercle{ double rayon; //méthode périmètre double perimetre() { return 2*rayon*3.14;  } }
5.Méthode 5.2 Exemples class Voiture{ String marque,couleur; int kilometrage,vitesse; //méthode accélérer void accelerer(int v){ vitesse=vitesse+v; } //méthode freiner void freiner(int v){ vitesse=vitesse-v; } }
5.Méthode 5.1 Type de retour <type_retour><nom>(<liste_arguments>)   <bloc> Si la méthode ne retourne rien alors le type de retour est  void Une méthode peur retourner un Type primitif (int, boolean, double) Type structuré (String, Cercle…) Tableau (a voir plus tard) Si la méthode retourne une valeur alors la dernière instruction doit être un return et la valeur retournée doit être du type spécifié
5.Méthode 5.1 Type de retour <type_retour><nom>(<liste_arguments>)   <bloc> La liste des argument peut contenir une liste de 0 à n paramètres séparés par une , Le nom des arguments doit être en minuscule Les arguments peuvent être de type : Type primitifs  Type structurés Tableaux….
5.Méthode 5.1 Type de retour Par convention le nom d’une méthode commence par une miniscule Si le nom est composée de deux mots alors le deuxième commence par une majuscule Exemples: déplacerCercle(int x, int y){…..} freiner(int v){}
5.Méthode 5.1 Type de retour Les variables définies dans le bloc sont appelées variables locales Leur portée ne dépasse par le bloc de la méthode Elle doivent être nécessairement initialisées
5.Méthode 5.1 Type de retour. L’opérateur point sert à appeler une méthode par rapport à un objet refObjet.methode() Si la méthode est une expression, c’est-à-dire retourne une valeur alors la valeur retournée doit être exploitée c.a.d soit : Sauvegardée dans une variable Affichée …
5.Méthode 5.1 Type de retour Cercle c1=new Cercle(); c1.perimetre()  //faux car perimetre() est une expression ( //retourne le perimetre calculé) double p=c1.perimetre() //correct Voiture v1=new Voiture(); v1.accelerer()  //Correct car accélérer n’est pas une expression (ne retourne  rien)
6.Les constructeurs Le constructeur est ce qui appelé juste après l’opérateur  new Date d = new  Date()  //Date() est un constructeur
6.Les constructeurs En fait, l’étape trois de la construction d’un nouvel objet consiste à appeler une méthode d’initialisation.  Par convention, cette méthode est appelée  constructeur .  Pour écrire une méthode appelée constructeur, vous devez observer ces deux règles : 1. Le nom de la méthode doit correspondre exactement au nom de la classe. 2. Aucun type de retour ne doit être déclaré pour la méthode.
6.Les constructeurs Le constructeur créer un objet avec la valeur par défaut attribuée aux attributs Les valeurs initiales de jour/mois/annee de l’objet avec la référence  d  est  0 Comment faire pour avoir la date du 09/01/2009 il faut utiliser l’opérateur . Pour accéder et modifier les attributs.
6.Les constructeurs class Date{ int jour,moi,annee; } Date d1=new Date();  //Date() est un constructeur d1.jour=9;d1.mois=1;d1.annee=2009;
6.Les constructeurs Il existe un moyen plus simple pour réaliser deux choses en même temps : Créer l’objet Affecter les valeurs souhaitées aux attribus au moment même de la création de l’objet Il faut écrire et utiliser un constructeur paramétré
6.Les constructeurs class Date{ int jour,mois,annee; Date(int j, int m, int a){ jour=j; mois=m; annee=a; } } … Date d1=new Date(9,1,2009)
6.Les constructeurs Il n’y a que deux façons d’obtenir un constructeur :  ou bien vous l’écrivez,  ou, si vous n’avez pas écrit de constructeur du tout, la classe possède un constructeur unique par défaut comportant un code vide. Note –  Vous pouvez définir plusieurs constructeurs avec des listes d’arguments différents. Lorsque vous effectuez un appel de new Xyz(liste_arguments), la liste d’arguments détermine quel constructeur doit être utilisé.
6.Les constructeurs Exemple : class Xyz { // variables membres Xyz() { // définition de l’objet } Xyz(int x) { // définition de l’objet avec un paramètre } }
6.Les constructeurs class Date{ int jour,mois,annee; Date(int j, int m, int a){ jour=j; mois=m; annee=a;} Date (int j, int m){jour=j;mois=m;année=2009} }
6.Les constructeurs   Constructeur par défaut Nous avons dit que toute classe comporte au moins un constructeur, mais avant cette section, nous n’avons écrit de constructeur pour aucune de nos classes.  En fait, si vous n’en écrivez pas du tout, un constructeur vous est automatiquement fourni. Ce dernier ne prend aucun argument et son corps est vide. C’est à cause du constructeur par défaut que nous avons pu dire new Xxx(), sans quoi cette opération aurait été incorrecte.
6.Les constructeurs   Constructeur par défaut class Date{ int jour,mois,annee; //constructeur par défaut invisible //avec 0-arguments Date(){jour=0;mois=0;annee=0;} }
6.Les constructeurs Si on ajoute une déclaration de constructeur comportant des arguments à une classe, vous perdez le constructeur par défaut.  A partir de là, les appels de new Xxx() causeront des erreurs de compilation.
6.Les constructeurs class Date{ int jour,mois,annee; Date(int j, int m, int a){ jour=j; mois=m; annee=a; } //on perd le constructeur par défaut invisible Date(){jour=0;mois=0;annee=0;} } … On ne peut plus écrire Date d1=new Date()
Plan Objectifs Définition  d’un Objet Définition d’une Classe Instanciation Garbage Collector Opérateur . Méthode Constructeur String UML
7.Le type String  Les variables de type String sont des objets Ecrire  String s = new String( &quot;Hello&quot; ) ; Est la même chose que  String s = &quot;Hello&quot;;
7.Le type String Exemple int x = 7;//x a un type primitif  int y = x;//y a un type primitif  String s = &quot;Hello&quot;;//s a un type //structure s est donc une référence String t = s; String z = &quot;Bienvenue&quot;; Que se passe t-il en mémoire
7.Le type String
Plan Objectifs Définition  d’un Objet Définition d’une Classe Instanciation Garbage Collector Opérateur . Méthode Constructeur String UML
8.UML 8.1 Définition Unified Modelling Language Représenter les classes sous formes universelle
8.Modélisation  UML
 
Récapitulatif Terminologique Regroupement de types de données Classe Objet Membre Référence Opérateur new Opérateur . Constructeur UML

Java uik-chap4-poo3

  • 1.
    Chapitre III POO JAVA Saloua Ben Yahia
  • 2.
    Objectifs Connaître lesconcepts de la programmation par objet et les mettre en oeuvre avec Java Créer une classe avec des attributs et des méthodes Instancier des objets et leur envoyer des messages
  • 3.
    Plan Objectifs Définition d’un Objet Définition d’une Classe Instanciation Garbage Collector Opérateur . Méthode Constructeur String UML
  • 4.
    1. Définition d’unObjet 1.1 Exemples…Suite Date du jour Attributs : jour (20), mois (01),année (2009) Méthodes : s’afficher Date d’aujourd’hui est un objet Voiture Attributs : marque , vitesse, couleur, kilométrage Méthodes : accélérer, freiner, arrêter Ma Voiture est un Objet : Marque : Toyota, Kilométrage 150000, couleur : verte, vitess=0km/h.
  • 5.
    1. Définition d’unObjet 1.2 Définition Un objet peut être une valeur (instance) d’un type abstrait, une “représentation” d’une classe. une abstraction d’un objet physique du monde réel, c’est-à-dire dont on a retenu uniquement les caractéristiques intéressantes lors de la modélisation.
  • 6.
    1. Définition d’unObjet 1.2 Définition…Suite Un objet est caractérisé par Un ensemble d’attributs typés et nommés représentant ses propriétés statiques. Ces attributs portent des valeurs attachées à l’objet. L’ensemble de ces valeurs à un instant donné constitue l’état de l’objet à cet instant, Un ensemble de méthodes définissant son comportement et ses réactions aux stimulations externes. Ces méthodes implémentent les algorithmes invocables sur cet objet, Une identité qui permet de le distinguer des autres objets, de manière unique.
  • 7.
    Plan Objectifs Définition d’un Objet Définition d’une Classe Définition Exemples Qu’est ce donc une classe ? Instanciation Garbage Collector Opérateur . Constructeur Méthode String
  • 8.
    2. Définition d’uneclasse 2.1 Définition C’est un modèle de définition pour les objets en termes d’attributs, en termes de méthodes. Les objets sont des représentations dynamiques (instanciation), “vivantes”, du modèle défini pour eux au travers de la classe.
  • 9.
    2. Définition d’uneclasse 2.2 Exemple class Cercle { int rayon; int epaisseur_trait; ... // autres attributs ... } Instanciation, même attributs mais de valeurs différentes
  • 10.
    2. Définition d’uneclasse 2.2 Exemple…Suite class Date{ int jour,moi,annee; } Aujourd’hui, demain, Le jour de l’an…sont des instances ou des objets de la classe Date
  • 11.
    2.Définition d’une classe2.2 Exemple…Suite class Individu { String nom; int age; float salaire; } Moi,toi, sont de exemples d’Individu,
  • 12.
    2.Définition d’une classe2.3 Qu’est-ce qu’une classe ? Une classe définit les modèles des objets qui en seront instanciés Dans la classe sont définis des attributs et des méthodes qui seront présents dans chaque objet qui sera instancié de la classe considérée. Par convention le nom d’une classe commence toujours par une Majuscule Exemple class Voiture{……………} class Cercle{………………}
  • 13.
    2.Définition d’une classe2.3 Qu’est-ce qu’une classe ?...Suite Dans l’exemple de la page précédente, on définit une classe Cercle, contenant entre autres : un attribut rayon et un attribut epaisseur_trait. Chaque cercle instancié de cette classe possédera son propre rayon et sa propre épaisseur du trait.
  • 14.
    2.Définition d’une classe2.3 Qu’est-ce qu’une classe ?...Suite Les méthodes définies dans la classe existent de même pour chaque objet et ont un comportement identique dans chaque objet tout en y étant localisé Supposons que la classe Cercle fournisse la méthode changeRayon(int new_rayon), permettant de modifier la valeur de l’attribut rayon. Si un des cercles fait appel à cette méthode, il changera son propre rayon, pas celui des autres cercles dont il ignore probablement l’existence.
  • 15.
    2.Définition d’une classe2.3 Qu’est-ce qu’une classe ?...Suite Deux instances de la classe voiture
  • 16.
    Plan Objectifs Définition d’un Objet Définition d’une Classe Instanciation Garbage Collector Opérateur . Méthode Constructeur String UML
  • 17.
    3.Instanciation. 3.1Mais que cela signifie-t-il ? La création d’un objet à partir d’une classe est appelé instanciation . Cet objet est une instance de sa classe. Une instanciation se décompose en trois phases 1. Création et initialisation des attributs en mémoire, à l’image d’une structure. 2. Appel de méthodes particulières, les constructeurs, définies dans la classe, dont l’étude est faite un peu plus loin... 3. Renvoi d’une référence sur l’objet (son identité) maintenant créé et initialisé.
  • 18.
    3.Instanciation 3.2Opérateur new L’opérateur new sert à instancier un Objet de type structuré Date d1 = new Date(); Date d2=new Date();
  • 19.
    3.Instanciation 3.2Opérateur new…suite En java il existe deux types Types primitifs Types structurés ou classes Les types primitifs contiennent la valeur qui leur est assignée Exemple : int x = 7; int y = x;
  • 20.
    3.Instanciation 3.2Opérateur new…suite Les types structurés sont instanciés avec l’opérateur new Exemple Date d1=new Date(); Date d2=new Date();
  • 21.
    3.Instanciation. 3.3Mais que se passe t-il en mémoire Création de l’Objet Création de la référence Sauvegarde de l’adresse de l’objet dans la référence
  • 22.
    3.Instanciation. 3.3Mais que se passe t-il en mémoire class MaDate { int day; int month; int year; }
  • 23.
    3.Instanciation. 3.3Mais que se passe t-il en mémoire MaDate today= new MaDate(); Création de la référence au départ son contenu est à null (valeur par défaut d’une référence) MaDate today; Instanciation de l’Objet avec le new new MaDate() Copie de l’adresse dans la référence MaDate d1 = new MaDate();
  • 24.
    3.Instanciation. 3.3Mais que se passe t-il en mémoire…suite
  • 25.
    3.Instanciation. 3.3Mais que se passe t-il en mémoire 7 7 x int y int Cas création de deux variables primitives de type int
  • 26.
    3.Instanciation. 3.3Mais que se passe t-il en mémoire Date d1=new Date(); Date d2=new Date();
  • 27.
    3.Instanciation. 3.3Mais que se passe t-il en mémoire mois int anne int @1 @1 jour int 0 0 0 d1 Date @2 @2 jour int 0 0 0 d2 Date mois int anne int
  • 28.
    3.Instanciation. 3.3Mais que se passe t-il en mémoire Lorsque vous exécutez new pour allouer de la mémoire pour un objet, Java affecte aux valeurs de l’espace la valeur initiale &quot;zéro&quot;. Pour les variables numériques, la valeur est réellement zéro. Pour les variables booléennes (boolean), la valeur est false. Pour les références, c’est à dire toute variable d’un type d’objet, une valeur spéciale à null indique qu’il n’y a pas de structure associée.
  • 29.
    3.Instanciation. 3.4 Initialisation des variables Dans Java, une valeur nulle indique que la variable ne renvoie pas à un objet. La machine virtuelle détecte si vous utilisez une telle référence et vous en interdit l’accès . Ce comportement sera présenté plus en détail dans le module ultérieur Exceptions . Exemple Voiture v1; //v1 est à null v1.freiner(20);//génère une exception à l’exécution
  • 30.
    3.Instanciation. 3.4Initialisation des variables Note – L’initialisation par défaut ne concerne que les variables membres de la classe et non les variables locales au bloc d’instructions. Une erreur se produit à la compilation si vous tentez d’utiliser une variable locale avant qu’une valeur ne lui ait été affectée de façon définie.
  • 31.
    4.Instanciation. 4.1Le garbage collecteur Les objets qui ne sont plus référencés sont détruit automatiquement par le garbage Collecteur Exemple Date d1=new Date(); Date d2=new Date(); d2=d1;
  • 32.
    4.Instanciation. 4.1Le garbage collecteur mois int anne int @2 @2 jour int 0 0 0 d2 Date mois int anne int @1 @1 jour int 0 0 0 d1 Date
  • 33.
    4.Instanciation. 4.1Le garbage collecteur mois int anne int @1 @1 jour int 0 0 0 d1 Date @1 @2 d2 Date anne int jour int 0 0 0 mois int
  • 34.
    Plan Objectifs Définition d’un Objet Définition d’une Classe Instanciation Garbage Collector Opérateur . Méthode Constructeur String UML
  • 35.
    4. L’opérateur . Java autorise l’accès aux attributs d’un objet (nom, age et salaire) à l’aide de l’opérateur (.), de la façon suivante :
  • 36.
    4. L’opérateur . class Individu { String nom; int age; float salaire; } Individu un = new Individu() Individ deux=new Individu(); un.nom = &quot;Jean&quot;; deux.nom=&quot;Jo&quot;; un.age = 24; deux.age=30; un.salaire = 10000; deux.salaire=2000;
  • 37.
    4. L’opérateur . Deux instances de la classe voiture
  • 38.
    Plan Objectifs Définition d’un Objet Définition d’une Classe Instanciation Garbage Collector Opérateur . Méthode Constructeur String UML
  • 39.
    5.Méthode 5.1 DéfinitionDéfinition de méthodes <type_retour><nom>(<liste_arguments>) <bloc> Exemple : void accelerer(int v) {vitesse=vitesse+v;} double perimetre() {return 2*rayon*3.14;} En-tête ou signature En-tête ou signature bloc bloc
  • 40.
    5.Méthode 5.2 Exemplesclass Cercle{ double rayon; //méthode périmètre double perimetre() { return 2*rayon*3.14; } }
  • 41.
    5.Méthode 5.2 Exemplesclass Voiture{ String marque,couleur; int kilometrage,vitesse; //méthode accélérer void accelerer(int v){ vitesse=vitesse+v; } //méthode freiner void freiner(int v){ vitesse=vitesse-v; } }
  • 42.
    5.Méthode 5.1 Typede retour <type_retour><nom>(<liste_arguments>) <bloc> Si la méthode ne retourne rien alors le type de retour est void Une méthode peur retourner un Type primitif (int, boolean, double) Type structuré (String, Cercle…) Tableau (a voir plus tard) Si la méthode retourne une valeur alors la dernière instruction doit être un return et la valeur retournée doit être du type spécifié
  • 43.
    5.Méthode 5.1 Typede retour <type_retour><nom>(<liste_arguments>) <bloc> La liste des argument peut contenir une liste de 0 à n paramètres séparés par une , Le nom des arguments doit être en minuscule Les arguments peuvent être de type : Type primitifs Type structurés Tableaux….
  • 44.
    5.Méthode 5.1 Typede retour Par convention le nom d’une méthode commence par une miniscule Si le nom est composée de deux mots alors le deuxième commence par une majuscule Exemples: déplacerCercle(int x, int y){…..} freiner(int v){}
  • 45.
    5.Méthode 5.1 Typede retour Les variables définies dans le bloc sont appelées variables locales Leur portée ne dépasse par le bloc de la méthode Elle doivent être nécessairement initialisées
  • 46.
    5.Méthode 5.1 Typede retour. L’opérateur point sert à appeler une méthode par rapport à un objet refObjet.methode() Si la méthode est une expression, c’est-à-dire retourne une valeur alors la valeur retournée doit être exploitée c.a.d soit : Sauvegardée dans une variable Affichée …
  • 47.
    5.Méthode 5.1 Typede retour Cercle c1=new Cercle(); c1.perimetre() //faux car perimetre() est une expression ( //retourne le perimetre calculé) double p=c1.perimetre() //correct Voiture v1=new Voiture(); v1.accelerer() //Correct car accélérer n’est pas une expression (ne retourne rien)
  • 48.
    6.Les constructeurs Leconstructeur est ce qui appelé juste après l’opérateur new Date d = new Date() //Date() est un constructeur
  • 49.
    6.Les constructeurs Enfait, l’étape trois de la construction d’un nouvel objet consiste à appeler une méthode d’initialisation. Par convention, cette méthode est appelée constructeur . Pour écrire une méthode appelée constructeur, vous devez observer ces deux règles : 1. Le nom de la méthode doit correspondre exactement au nom de la classe. 2. Aucun type de retour ne doit être déclaré pour la méthode.
  • 50.
    6.Les constructeurs Leconstructeur créer un objet avec la valeur par défaut attribuée aux attributs Les valeurs initiales de jour/mois/annee de l’objet avec la référence d est 0 Comment faire pour avoir la date du 09/01/2009 il faut utiliser l’opérateur . Pour accéder et modifier les attributs.
  • 51.
    6.Les constructeurs classDate{ int jour,moi,annee; } Date d1=new Date(); //Date() est un constructeur d1.jour=9;d1.mois=1;d1.annee=2009;
  • 52.
    6.Les constructeurs Ilexiste un moyen plus simple pour réaliser deux choses en même temps : Créer l’objet Affecter les valeurs souhaitées aux attribus au moment même de la création de l’objet Il faut écrire et utiliser un constructeur paramétré
  • 53.
    6.Les constructeurs classDate{ int jour,mois,annee; Date(int j, int m, int a){ jour=j; mois=m; annee=a; } } … Date d1=new Date(9,1,2009)
  • 54.
    6.Les constructeurs Iln’y a que deux façons d’obtenir un constructeur : ou bien vous l’écrivez, ou, si vous n’avez pas écrit de constructeur du tout, la classe possède un constructeur unique par défaut comportant un code vide. Note – Vous pouvez définir plusieurs constructeurs avec des listes d’arguments différents. Lorsque vous effectuez un appel de new Xyz(liste_arguments), la liste d’arguments détermine quel constructeur doit être utilisé.
  • 55.
    6.Les constructeurs Exemple: class Xyz { // variables membres Xyz() { // définition de l’objet } Xyz(int x) { // définition de l’objet avec un paramètre } }
  • 56.
    6.Les constructeurs classDate{ int jour,mois,annee; Date(int j, int m, int a){ jour=j; mois=m; annee=a;} Date (int j, int m){jour=j;mois=m;année=2009} }
  • 57.
    6.Les constructeurs Constructeur par défaut Nous avons dit que toute classe comporte au moins un constructeur, mais avant cette section, nous n’avons écrit de constructeur pour aucune de nos classes. En fait, si vous n’en écrivez pas du tout, un constructeur vous est automatiquement fourni. Ce dernier ne prend aucun argument et son corps est vide. C’est à cause du constructeur par défaut que nous avons pu dire new Xxx(), sans quoi cette opération aurait été incorrecte.
  • 58.
    6.Les constructeurs Constructeur par défaut class Date{ int jour,mois,annee; //constructeur par défaut invisible //avec 0-arguments Date(){jour=0;mois=0;annee=0;} }
  • 59.
    6.Les constructeurs Sion ajoute une déclaration de constructeur comportant des arguments à une classe, vous perdez le constructeur par défaut. A partir de là, les appels de new Xxx() causeront des erreurs de compilation.
  • 60.
    6.Les constructeurs classDate{ int jour,mois,annee; Date(int j, int m, int a){ jour=j; mois=m; annee=a; } //on perd le constructeur par défaut invisible Date(){jour=0;mois=0;annee=0;} } … On ne peut plus écrire Date d1=new Date()
  • 61.
    Plan Objectifs Définition d’un Objet Définition d’une Classe Instanciation Garbage Collector Opérateur . Méthode Constructeur String UML
  • 62.
    7.Le type String Les variables de type String sont des objets Ecrire String s = new String( &quot;Hello&quot; ) ; Est la même chose que String s = &quot;Hello&quot;;
  • 63.
    7.Le type StringExemple int x = 7;//x a un type primitif int y = x;//y a un type primitif String s = &quot;Hello&quot;;//s a un type //structure s est donc une référence String t = s; String z = &quot;Bienvenue&quot;; Que se passe t-il en mémoire
  • 64.
  • 65.
    Plan Objectifs Définition d’un Objet Définition d’une Classe Instanciation Garbage Collector Opérateur . Méthode Constructeur String UML
  • 66.
    8.UML 8.1 DéfinitionUnified Modelling Language Représenter les classes sous formes universelle
  • 67.
  • 68.
  • 69.
    Récapitulatif Terminologique Regroupementde types de données Classe Objet Membre Référence Opérateur new Opérateur . Constructeur UML