Chapitre5 : Les Objets dans Java                     MASTER PROFESSIONNEL    NOUVELLES TECHNOLOGIES DES TELECOMMUNICATIONS...
Chapitre5 : Les Objets dans JavaSommaireVocabulaires Objet ..................................................................
Chapitre5 : Les Objets dans JavaLa déclaration des exceptions (throws), cas des RuntimeException ............................
Chapitre5 : Les Objets dans Java   Vocabulaires Objet   LES CLASSES : Une classe représente un modèle de construction dun ...
Chapitre5 : Les Objets dans Java        Pour matérialiser une classe, on utilise les objets qui sont une représentation ph...
Chapitre5 : Les Objets dans Java                                                  54S :Modèle                             ...
Chapitre5 : Les Objets dans Java      Nous avons déclaré les attributs qui sont dans notre cas des variables globales et ...
Chapitre5 : Les Objets dans JavaLencapsulation de méthodesL’encapsulation consiste donc à définir des étiquettes pour les ...
Chapitre5 : Les Objets dans Java                   private : un élément private (privé) est accessible uniquement au sein...
Chapitre5 : Les Objets dans JavaOn trouve deux types (familles) de méthodes    Les fonctions ayant un type (int, String,…...
Chapitre5 : Les Objets dans JavaLa création, la manipulation et la destruction dobjets : le mécanismede ramasse-miettes (g...
Chapitre5 : Les Objets dans Java        Exemple de destruction :                      public void finalize()              ...
Chapitre5 : Les Objets dans JavaLes tableaux dobjetsLe tableau d’objet permet de retourner un objet qui sera un tableau, c...
Chapitre5 : Les Objets dans JavaLes niveaux de visibilité pour les classes et leurs membresOn trouve 3 niveaux de visibili...
Chapitre5 : Les Objets dans JavaLhéritage est un mécanisme qui permet de créer une nouvelle classe à partir dune autre cla...
Chapitre5 : Les Objets dans JavaLes différents types dhéritageHéritage simple : une classe fille na quune seule classe mèr...
Chapitre5 : Les Objets dans Javaclass A {         String chaine = “Bonjour”;                                              ...
Chapitre5 : Les Objets dans Java            public class B extends A {                    String sportPratiqué ;          ...
Chapitre5 : Les Objets dans Java    public class ClasseA {      int x ;    }                         public class ClasseB ...
Chapitre5 : Les Objets dans JavaLe polymorphismeLe polymorphisme permet de définir plusieurs formes pour une méthode commu...
Chapitre5 : Les Objets dans JavaSur toutes ces classes, on a recours à la méthode message ( ). Le polymorphisme permet alo...
Chapitre5 : Les Objets dans JavaLes classes abstraites et les interfacesMéthodes abstraitesUne méthode abstraite est une m...
Chapitre5 : Les Objets dans Java    Les classes abstraites    Une classe abstraite est une classe qui contient au moins un...
Chapitre5 : Les Objets dans JavaLes interfacesUne interface est une classe complètement abstraite, toutes ses méthodes doi...
Chapitre5 : Les Objets dans JavaMécanisme dexceptionsComment gérer les erreurs au sein dune application ?Nous allons comme...
Chapitre5 : Les Objets dans JavaQu’est ce qu’une exception ?Les exceptions sont des erreurs qui surgissent au cours du pro...
Chapitre5 : Les Objets dans JavaLa classe Exception et Error hérite de La classe Throwable.La classe Throwable définit un ...
Chapitre5 : Les Objets dans JavaLes blocs catch permettent de récupérer l’exception et de vérifier si l’une d’entre elles ...
Chapitre5 : Les Objets dans JavaPour lever l’exception, voici un autre exemple(*) :     public class Equation {       int ...
Chapitre5 : Les Objets dans JavaExemple :  public class SaisieErroneeException extends Exception {          public SaisieE...
Prochain SlideShare
Chargement dans…5
×

JAVA Chapitre5

1 207 vues

Publié le

Riadh Bouhouch Mastere pro : réseaux et télécommunication

Publié dans : Formation
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 207
Sur SlideShare
0
Issues des intégrations
0
Intégrations
6
Actions
Partages
0
Téléchargements
88
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

JAVA Chapitre5

  1. 1. Chapitre5 : Les Objets dans Java MASTER PROFESSIONNEL NOUVELLES TECHNOLOGIES DES TELECOMMUNICATIONS ET RESEAUX (N2TR) Cours JAVA © FST Les Objets dans JavaObjectif :Ce chapitre vous permettra de comprendre la notion d’objet en JAVA à travers l’encapsulation, lepolymorphisme et l’héritage. En plus il permettra d’assimiler les différents mécanismes dedéclarations d’une classe et comprendre comment gérer les erreurs au sein dune application. 1Riadh BOUHOUCHI
  2. 2. Chapitre5 : Les Objets dans JavaSommaireVocabulaires Objet .................................................................................................................................. 4Lencapsulation :...................................................................................................................................... 7 Lencapsulation de données ................................................................................................................ 7 Lencapsulation de méthodes ............................................................................................................. 8 Public et private................................................................................................................................... 8 Les méthodes ...................................................................................................................................... 9La création, la manipulation et la destruction dobjets : le mécanisme de ramasse-miettes (garbagecollector)................................................................................................................................................ 11 La création d’objet ou constructeur .................................................................................................. 11 La destruction dobjets : le mécanisme de ramasse-miettes (garbage collector) ............................... 11Les tableaux de valeurs ......................................................................................................................... 12Les tableaux dobjets ............................................................................................................................. 13Lorganisation du code en packages...................................................................................................... 13Les niveaux de visibilité pour les classes et leurs membres .................................................................. 14Les mécanismes objet avancés avec lhéritage et le polymorphisme ................................................... 14 Les différents types dhéritage .......................................................................................................... 16 Héritage simple :............................................................................................................................ 16 Héritage multiple : ......................................................................................................................... 16 L’utilisation de super ......................................................................................................................... 17 Redéfinition et réutilisation des constructeurs ................................................................................. 18 La méthode et la class final ............................................................................................................... 19 Le polymorphisme ............................................................................................................................. 20 La notion de composition ou agrégation ...................................................................................... 21Les classes abstraites et les interfaces .................................................................................................. 22 Méthodes abstraites ......................................................................................................................... 22 Les classes abstraites ......................................................................................................................... 23 Les interfaces ..................................................................................................................................... 24Mécanisme dexceptions ....................................................................................................................... 25 Comment gérer les erreurs au sein dune application ? ................................................................... 25 Qu’est ce qu’une exception ? ............................................................................................................ 26Le principe de propagation des exceptions........................................................................................... 26Les principales classes derreurs et dexceptions .................................................................................. 26Le traitement des exceptions avec les blocs try-catch-finally ............................................................... 27 2Riadh BOUHOUCHI
  3. 3. Chapitre5 : Les Objets dans JavaLa déclaration des exceptions (throws), cas des RuntimeException .................................................... 28 Cas des RuntimeException ................................................................................................................ 29Développer des classes dexception personnalisées............................................................................. 29 3Riadh BOUHOUCHI
  4. 4. Chapitre5 : Les Objets dans Java Vocabulaires Objet LES CLASSES : Une classe représente un modèle de construction dun objet. Il sagit dune description abstraite en termes de données et de comportements dune famille dobjets. Une classe dobjets est constituée dune partie statique et dune partie dynamique Partie statique : LES ATTRIBUTS : Les attributs représentent la description des données propres à chaque classe dobjets. Ceux-ci peuvent être des objets dautres classes ou des références sur dautres objets. Pour qualifier les attributs dune classe, on raisonnera en terme de propriétés. Partie dynamique : LES METHODES : Les méthodes représentent lensemble des actions, procédures, fonctions ou opérations que lon peut associer à une classe. Lensemble des méthodes de la classe définit le "COMPORTEMENT " Objet = Etat + comportement + identitéINSTANCES DE CLASSES :Une instance de classe est un élément construit selon le modèle de sa classe.On nommera cet élément "OBJET".Lopération par laquelle une classe produit plusieurs instances est linstanciationCONCEPTS DACTIVATIONLe seul mode de communication entre objets est lenvoi de messages.Les messages : Un message est une requête. Larrivée dun message provoque lexécution dune méthodedun objet. Chaque message précise la méthode à appliquer avec éventuellement des paramètres. Lobjetdestinataire est soit spécifié, soit implicite, si un objet appelle une de ses propres méthodes. Message AFFICHE(vide) =>OBJET Carré => ou Message AFFICHE(plein) => OBJET Carré => Une classe décrit un ensemble de « choses » abstraites et inexistantes (les attributs et les méthodes). 4 Riadh BOUHOUCHI
  5. 5. Chapitre5 : Les Objets dans Java Pour matérialiser une classe, on utilise les objets qui sont une représentation physique de la classe et qui auront les propriétés définies de la classe, cest-à-dire les attributs et les méthodes de cette classe.  L’objet représente une instance de la classe.  Ce qui rend l’objet une représentation physique, c’est l’allocation de mémoire pour cet objet. Pour mieux comprendre la notion de class voici un exemple : Soit la class voiture : class Voiture Attributs Méthodes Marque Démarrer Modèle Accélérer Immatriculation Freiner Vitesse Stopper Niveaudecarburant Vidanger Puissancefiscale Etc .... PuissanceDIN Etc ... Voici un exemple d’instances de la classe voiture : PEUGEOT RENAULT 54S ULTIMA V6 3412 SM 59 4954 VD 59 130 Km /h 190 Km /h 54 l 62 l 15 CV 23 CV 120 DIN, ... 160 DIN, ...Nom de l’objet Voiture _Peugeot Peugeot :Marque 5 Riadh BOUHOUCHI
  6. 6. Chapitre5 : Les Objets dans Java 54S :Modèle 3412 SM 59 :Immatriculation 130 Km /h :Vitesse Les attributs 54 l :Niveaudecarburant 15 CV :Puissancefiscale 120 DIN :PuissanceDIN Démarrer ( ) Accélérer ( ) Freiner ( )Les méthodes D’abord pour utiliser un objet il faut le déclarer comme suit : Voiture Voiture_Peugeot=new Voiture ( ) ; Pour pouvoir utiliser un attribut d’une class, prenons l’exemple de l’initialisation : Voiture_Peugeot.marque = " Peugeot " ; Pour pouvoir appliquer une méthode de ma class Voiture : Voiture_Peugeot. Démarrer ( ) ; Mais dans ces exemples nous n’avons pas vu la déclaration réelle d’une class en Java, et pour cela voici ce qu’il faut faire : public class Voiture { //déclaration des variables globales String Marque,Modèle, Immatriculation,Vitesse; String Niveaudecarburant,Puissancefiscale,PuissanceDIN ; //faire appelle d’une class Moteur dans la class Voiture Moteur motor = new Moteur ( ) ; //déclaration du constructeur public Voiture ( ){ } //déclaration des méthodes public void Démarrer ( ) { } public void Accélérer ( ) { } public void Freiner ( ) { //déclaration d’une méthode de la class Moteur motor.vidange( ) ; } } Parlons un peu de cette class Voiture :  Nous avons commencé par la déclaration de la classe, il faut savoir que le nom de la classe commence par une majuscule et que le fichier ‘.Java’ doit avoir le même nom. 6 Riadh BOUHOUCHI
  7. 7. Chapitre5 : Les Objets dans Java  Nous avons déclaré les attributs qui sont dans notre cas des variables globales et donc toutes les méthodes pourront utiliser ces variables.  Nous avons fait appel d’une autre class Moteur à l’intérieur de la notre, il est à noter que l’on peut faire appel à d’autres class selon le besoin.  Nous avons commencé par déclarer un constructeur avant les méthodes. Ce constructeur sera exécuté dés l’appel de la classe même si on va ensuite faire appel à l’une des méthodes de cette class, mais il est à noter que le constructeur est une méthode.  Nous avons ensuite déclaré nos méthodes dans lesquelles les instructions demandées seront exécutées.  Nous avons fait appel à une méthode d’une autre.Lencapsulation :Lencapsulation est un mécanisme consistant à rassembler les données et les méthodes au seindune structure en cachant limplémentation de lobjet, cest-à-dire en empêchant laccès auxdonnées par un autre moyen que les services proposés. Lencapsulation permet donc degarantir lintégrité des données contenues dans lobjet.Lencapsulation de donnéesLencapsulation des données est une règle de microarchitecture (architecture détaillée)consistant à cacher les données d’une classe ou d’un module aux autres classes ou modules,cest-à-dire, empêcher laccès aux données par un autre moyen que des méthodes (fonctionsmembres). Par conséquent, l’interface d’une classe ou d’un module obéissant à ce principen’expose jamais ces membres de données comme des variables, tableaux ou structures maisseulement des méthodes (fonctions membres).Exemple :Méthode : Calcul de la clé dun numéro de sécurité socialeObjet : Individu (Assuré Social par exemple)Donnée protégée : Valeur du modulo pour le calcul de clé 7Riadh BOUHOUCHI
  8. 8. Chapitre5 : Les Objets dans JavaLencapsulation de méthodesL’encapsulation consiste donc à définir des étiquettes pour les méthodes afin de préciser sicelles-ci sont accessibles à partir dautres classes ou non...De cette manière, des données membres portant létiquette private ne peuvent pas êtremanipulées directement par les méthodes des autres classes. Ainsi, pour pouvoir manipulerces données membres, le créateur de la classe (vous en loccurrence) doit prévoir desméthodes spéciales portant létiquette public, permettant de manipuler ces données.  Les fonctions membres permettant daccéder aux données membres sont appelées accesseurs, parfois getter (appelation dorigine anglophone)  Les fonctions membres permettant de modifier les données membres sont appelées mutateurs, parfois setter (appelation dorigine anglophone) On appelle généralement "interface" lensemble des méthodes permettant à lutilisateur demanipuler une classe.Exemple :Message = Débiter(somme, compte, code_confidentiel).Objet = compte bancaire.Méthode A (Visible depuis linterface) = Débiter_carte_de_crédit.Méthode B (non visible par lutilisateur mais appelée par la méthode A) = Algorithme devalidation du code confidentiel.Des méthodes encapsulées peuvent faire appel à des données qui sont elles-mêmes protégéesPublic et privateJava définit quatre niveaux daccès pour les variables dinstances (données membres) et lesméthodes :  public : un élément public est accessible de partout et sans aucune restriction. Certaines classes (comme la classe principale main) doivent obligatoirement être déclarées publiques (pour pouvoir exécuter lapplication...)  protected : un élément protected (protégé) est accessible uniquement aux classes dun package et à ses classes filles 8Riadh BOUHOUCHI
  9. 9. Chapitre5 : Les Objets dans Java  private : un élément private (privé) est accessible uniquement au sein de la classe dans laquelle il est déclaré. Ces éléments ne peuvent être manipulés quà laide de méthode spécifiques appelés accesseur et mutateur  "friendly" : un élément est friendly par défaut (cette appellation nest pas officielle et est empruntée au langage C++) est accessible uniquement aux classes dun package et à ses classes filles.  final précise que la valeur de la variable ou class ou méthode ne pourra plus être changée après son affectation initiale. Les méthodes On peut définir les méthodes comme des fonctions propres à la class qui permettra de réaliser les instructions demandées dans cette dernière. La méthode doit s’écrire de la manière suivante : public static void methodeA(String[] args){ Déclaration des variables et appel de class extérieureDéclaration de la méthode type1 ; type2 ; Class1 c= new Class1 ( ); ... type N; instruction 1; instruction 1; resultat=c.methodeB(); ... Appel d’une méthode instruction N; return; externe de notre classDéclaration d’instructions } 9 Riadh BOUHOUCHI
  10. 10. Chapitre5 : Les Objets dans JavaOn trouve deux types (familles) de méthodes  Les fonctions ayant un type (int, String,…) et qui vont retourner une réponse de même type que leur déclaration  Les procédures se déclarent par void et n’ont pas de valeur de retour.Dans la déclaration de la méthode selon le besoin on peut déclarer les arguments qui devrontêtre utilisés par la méthode.Après avoir déclaré la méthode, il faut déclarer les variables qui seront utilisées dans cetteméthode, on peut aussi faire appel à d’autres class.Remarque : les variables peuvent être déclarées à n’importe quel niveau de la méthode.Et, enfin on a posé les instructions.Voici un exemple maintenant d’une méthode à l’intérieur d’une class : public class Afficher{ public static void main (String() args){ for(int i=0;i<=5;i++) { System.out.pintln(“valeur de I”+i); If(i==3){ Break; } } }Remarque : En Java, deux méthodes peuvent avoir le même nom c’est ce qu’on appellesurcharge mais, lors de l’exécution les méthodes sont différenciées avec leurs arguments. 10Riadh BOUHOUCHI
  11. 11. Chapitre5 : Les Objets dans JavaLa création, la manipulation et la destruction dobjets : le mécanismede ramasse-miettes (garbage collector)Une classe a un cycle de vie unique : création « vivre », manipulation (réaliser le traitementattendu) et la destruction « mourir », donc pour résumer : une classe se composeprincipalement d’un constructeur, de méthodes, et de destructeur.La création d’objet ou constructeurCette méthode permet généralement dassigner des valeurs aux variables définies dans laclasse. Cette méthode obéit toutefois à des règles particulières :  Un constructeur doit toujours être une méthode publique  On doit impérativement donner le même nom que votre classe au constructeur  Un constructeur ne retourne rien.  On ne doit pas mettre de void, même si le constructeur ne retourne rien.  Si, on n’écrit pas un constructeur, un constructeur est fourni automatiquement. Ce dernier ne prend aucun argument et son corps est vide.Exemple de construction : public class Test { private int i; private boolean condition; public Test() { i = 0; condition = false; System.out.println("La construction est realiser"); } }La destruction dobjets : le mécanisme de ramasse-miettes (garbage collector)Le destructeur est une méthode spéciale qui sera appelée (si elle est redéfinie dans la classe)lorsque lobjet sera nettoyé de la mémoire par le garbage collector.Le garbage collector est un "ramasse-miettes" chargé de faciliter la tâche des programmeursen libérant les ressources prises en mémoire automatiquement. Cette méthode nest pasforcément appelée lorsque vous supprimez lobjet.Pour utiliser le destructeur on doit redéfinir une méthode appelée finalize() publique et qui nerenvoie rien. 11Riadh BOUHOUCHI
  12. 12. Chapitre5 : Les Objets dans Java Exemple de destruction : public void finalize() { System.out.println("mémoire nettoyer"); } Les tableaux de valeurs Lutilisation dun tableau permet davoir à sa disposition un très grand nombre de variables en utilisant un seul nom. Pour déclarer un tableau en Java nous devons d’abord déclarer le type du tableau ensuite le type des variables contenues dedans. Voici un exemple de déclaration de tableau : int[] tab ; tab = new int[20]; Déclarer le type du tableau OU Fixer la taille du tableau int[] tab = new int[20];Déclarer le type des variables Exemple d’utilisation d’un tableau : Class Tableau { String [] tab=new String [2] ; public static void main(String[] args) { tab*1+ = ”a”; System.out.println( tab[1] ); } } 12 Riadh BOUHOUCHI
  13. 13. Chapitre5 : Les Objets dans JavaLes tableaux dobjetsLe tableau d’objet permet de retourner un objet qui sera un tableau, ce qui fait que lorsqu’onva déclarer notre objet, il sera de type tableau avec le type de ce tableau.Voici un exemple pour mieux comprendre : static int[] copier(int[] x){ int n = x.length; int[] y = new int[n]; for(int i = 0; i < n; i++) y[i] = x[i]; return y; }Lorganisation du code en packagesLes « packages » représentent les chemins où se trouvent les classes.Comme nous l’avons indiqué précédemment, chaque classe est déclarée dans un fichier, cesclasses (fichiers) sous un ou plusieurs répertoires, les classes qui sont sous un même répertoiresont dans un paquetage « package ».Le nom d’un package est formé du chemin où se trouvent les (ou la) classes.Lors de la déclaration du package, les noms des « répertoires » (le chemin) sont séparés parun point ".".Exemple de déclaration du package :package com.fst.application.app1; Schéma du package au niveau du projet Chemin sur disqueRemarque : le nom d’un package doit obligatoirement commencer par une minuscule. 13Riadh BOUHOUCHI
  14. 14. Chapitre5 : Les Objets dans JavaLes niveaux de visibilité pour les classes et leurs membresOn trouve 3 niveaux de visibilité pour les classes et leurs membres: public, protected, etprivate.  private, la variable ou la méthode ne peuvent être visible que dans leur classe mère.  protected, la variable ou la méthode sont visibles dans leur classe mère ainsi que dans ses classes dérivées (qui héritent de la classe mère).  public, la variable ou la méthode sont visibles dans tout le code dès qu’on fait appel à leur classe.Remarque : on peut aussi ajouter un autre niveau de visibilité, le package, car avec l’appeld’un package on peut utiliser ses classes sans avoir besoin de les importer.Les mécanismes objet avancés avec lhéritage et le polymorphismeLhéritage est un mécanisme destiné à exprimer les similitudes entre classes. Il met en œuvreles principes de généralisation et de spécialisation en partageant explicitement les attributs etméthodes communs au moyen dune hiérarchie de classes.Ainsi grâce à l’héritage on gagne en rapidité et facilité de traitement. 14Riadh BOUHOUCHI
  15. 15. Chapitre5 : Les Objets dans JavaLhéritage est un mécanisme qui permet de créer une nouvelle classe à partir dune autre classequi existe déjà, avec ce mécanisme la classe fille hérite des propriétés et des méthodes de laclasse mère, cest-à-dire que la classe fille peut utiliser et modifier les attributs et les méthodesde la classe mère selon ses besoins, comme si on avait besoin de faire un traitement mais cedernier existe déjà, alors au lieu de refaire tout le code on hérite de la classe qui possède cetraitement et on l’utilise.La classe fille hérite des caractéristiques de sa classe mère (attributs et méthodes) mais elle sedistingue par ses caractéristiques propres. ou classe mère, méta classe, classe de base, ancêtre Lien dhéritage ou classe fille, classe dérivée, descendantVoici un exemple pour mieux comprendre : Class A la classe mère public class A { extends permet a un classe fille public void Bonjour ( ) { System.out.println(« Bonjour ») ; d’hériter les caractéristiques de la } classe mère. } C cobjet = new C () ; cobjet.Bye () ; => Bye public class B extends A { cobjet.Salut () ; => Salut cobjet.Bonjour () ; => Bonjour public void Salut ( ) { System.out.println(« Salut »); } } B bobjet = new B() ; Class B et C les classes filles bobjet.Bye () ; => Bye La class B n’hérite pas de lapublic class C extends B { class C Public void Bye ( ) { System.out.println(«Bye ») ; bobjet.Salut () ; => Salut } bobjet.Bonjour () ; => Bonjour } 15Riadh BOUHOUCHI
  16. 16. Chapitre5 : Les Objets dans JavaLes différents types dhéritageHéritage simple : une classe fille na quune seule classe mère et elle hérite dune partie desattributs et méthodes de celle-ci en ayant ses spécifications propres.Héritage multiple : une classe fille hérite de plusieurs classes mères. Elle hérite dune partiedes attributs et des méthodes de chacune de ses classes mères, en plus de ses spécificationspropres.Exemple général : Création et réalisation d’une instance de classSoit la Class A avec la mèthode Void ecriture et la Class B la la mèthode Main()La class B affiche les messages « Bonjour Mr » et « Au revoir Ami » et sachant que la classA contient une chaine « Bonjour ». 16Riadh BOUHOUCHI
  17. 17. Chapitre5 : Les Objets dans Javaclass A { String chaine = “Bonjour”; Résultat : void A (new chaine){  Bonjour Mr System.out.print ( chaine); System.out.println ( new chaine); }}  Au revoir Amiclass B { A abojet = new A( ); aobjet.A(“Mr”); aobjet.chaine(“ Au revoir ”); aobjet.A(“ Ami ”);} Lors d’un héritage, une classe fille peut redéfinir une des méthodes de la classe mère, mais il ne faut pas confondre entre redéfinition et surcharge d’une méthode.  Dans la surcharge on a le nom d’une méthode qui se répète mais les arguments des deux méthodes sont différents.  Dans la redéfinition on a le nom et les arguments d’une méthode qui se répètent mais les instructions de la méthode diffèrent. L’utilisation de super Pour faire appel aux fonctions de la classe mère on peut utiliser la notion de super qui fait référence à la classe mère Avec la fonction super on peut réutiliser une méthode d’une classe mère ou même la redéfinir,. Exemple : super.methode ( ) ; public class A { public void affiche () { System.out.print (“Bonjour ”) ; System.out.print (“Mr. ”); Le résultat de la class A par la méthode affiche : } } Bonjour Mr. 17 Riadh BOUHOUCHI
  18. 18. Chapitre5 : Les Objets dans Java public class B extends A { String sportPratiqué ; Le résultat de la class B par la Public void affiche () { super.affiche() ; méthode affiche ( ) appelée System.out.println(“BOUHOUCHI ” ); par super de la class A: } } Bonjour Mr. BOUHOUCHIRedéfinition et réutilisation des constructeursSouvent on fait appel à un constructeur d’une class mère pour une class fille et selon le besoinsoit, on la redéfinit soit, on la réutilise pour initialiser des valeurs.Dans ce cas nous allons utiliser : super (paramètres du constructeur) ;Exemple : public class Point { double x, y ; public Point (double x, double y) { public class PointCouleur extends Point { this.x = x ; Color c; this.y = y ; public PointCouleur (double x, double y, Color c) { } super(x, y) ; } this.c = c ; } super fait appel au } constructeur PointComme vous pouvez le voir l’appel du constructeur est toujours la première instruction.Remarque :  si le constructeur n’a pas d’arguments on aura super( ) ; .Dans un héritage on peut aussi redéfinir les attributs, exemple : 18Riadh BOUHOUCHI
  19. 19. Chapitre5 : Les Objets dans Java public class ClasseA { int x ; } public class ClasseB extends ClasseA { L’attribut x de la class B hérité de A double x ; } est devenu de type double. L’attribut x de la class C hérité de B public class ClasseC extends ClasseB { est devenu de type réel. float x ; }La méthode et la class finalfinal est utilisé pour verrouiller une méthode ainsi lorsqu’une class fille va l’hériter d’uneclass mère, elle ne sera pas redéfinie, exemple : public final void A( ) { }On peut aussi utiliser final pour que la class déclarée ne soit plus héritée et devient une sousclass, de plus toutes les méthodes de cette class seront aussi final par défaut, exemple : public final class B { }Les bénéfices de l’héritage :Grace à l’héritage :  réutiliser un code.  partager un code.  gagner du temps, de l’espace mémoire et facilite les traitements.  selon un besoin, un code peut être modifié, et grâce à l’héritage on n’a pas besoin de refaire tout le code. 19Riadh BOUHOUCHI
  20. 20. Chapitre5 : Les Objets dans JavaLe polymorphismeLe polymorphisme permet de définir plusieurs formes pour une méthode commune à unehiérarchie dobjets. Cest à lexécution que lon détermine quelle forme appeler suivant laclasse de lobjet courant.Un code qui nutiliserait pas le polymorphisme pourrait utiliser uneinstruction à choix multiple suivant la classe des objets rencontrés.Voici un exemple pour mieux comprendre : class A { public static void message ( ) { System.out.println(“ bonjour “) ; } } class B extends A { public static void message ( ) { System.out.println(“ Mr “) ; } } class C extends B { public static void message ( ) { System.out.println(“ BOUHOUCHI“) ; } Public static void main(String() args){ A aobjet = new A ( ) ; B bobjet =new B ( ) ; C cobjet =new C ( ) ; Résultat de la méthode main : aobjet.message(); Bonjour bobjet.message(); Mr cobjet.message(); BOUHOUCHI } } 20Riadh BOUHOUCHI
  21. 21. Chapitre5 : Les Objets dans JavaSur toutes ces classes, on a recours à la méthode message ( ). Le polymorphisme permet alorsdappeler la bonne méthode selon le type dobjet.La notion de composition ou agrégationLa composition consiste à réunir des objets pour en former un autre.Dans le cas dune composition (ou agrégation), on sattachera à préciser le cardinal de cetterelation. 21Riadh BOUHOUCHI
  22. 22. Chapitre5 : Les Objets dans JavaLes classes abstraites et les interfacesMéthodes abstraitesUne méthode abstraite est une méthode déclarée dans une classe mais, sera définie dans unesous classe.Cette méthode sera déclarée comme suit : public abstract nomDelaClasse( ){ //il n’y a aucun codes dans la méthode abstraite }  Il faut mettre public(ou protected) abstract pour déclarer une méthode abstraite, ensuite son type, puis son nom.  La méthode abstraite ne contient pas de code.Selon le besoin on peut faire appel à une méthode abstraite dans une classe, ou dans uneméthode.Exemple : public abstract class A { private int i=5 ; public abstract void Afficher(int somme ) ; public void Calculer ( ) { int somme ; somme = i+5 ; afficher( int somme ) ; } } 22Riadh BOUHOUCHI
  23. 23. Chapitre5 : Les Objets dans Java Les classes abstraites Une classe abstraite est une classe qui contient au moins une méthode abstraire. Cette classe ne peut être instanciée. Exemple : public abstract class A { private int i=5 ; public abstract void Afficher(int somme ) ; public void Calculer ( ) { int somme ; somme = i+5 ; afficher( int somme ) ; } } La classe abstraite s’écrit sous la forme suivante : abstract class NomDeClasseAbstraite {}. Une classe abstraite peut contenir des méthodes non abstraites et des variables ordinaires Voici un exemple pour mieux comprendre : abstract public class Analyse{ double X,Y; void saisirVariable(double x,double y) { X=x; Y=y; } void afficherPosition(double X,double Y) { System.out.println("les variables sont : "+X+","+Y+); } abstract double multiplication (double x,double y) ; abstract double addition (double x,double y) ; }public class Calcul1 extends Analyse public class Calcul2 extends Analyse{double multiplication(double x,double y){ { return x * y; double multiplication(double x,double } y){ double addition(double x,double y){ return x/2 * y/2; return x + y; } } double addition(double x,double y){} return x/2 + y/2; } } 23 Riadh BOUHOUCHI
  24. 24. Chapitre5 : Les Objets dans JavaLes interfacesUne interface est une classe complètement abstraite, toutes ses méthodes doivent êtreabstraites, ses variables sont statiques et finales, les méthodes sont public et abstract.Exemple : public interface A { final static double x,y; public void saisirVariable(double x,double y); public void afficherPosition(double x,double y); public double multiplication (double x,double y); public double addition (double x,double y) ; }Remarque :  une classe peut implémenter plusieurs interfaces.  Les interfaces peuvent hériter les unes des autres et peuvent redéfinir les méthodes héritées.  Une classe qui implémente une interface doit définir le corps de toutes ses méthodes abstraitesPour mieux comprendre voici un exemple: public class B implements A { public void saisirVariable(double x,double y){ X=x; Y=y;} public void afficheMessage(double X,double Y) { System.out.println("les variables sont : "+X+","+Y+);} public double addition (double x,double y) { return x + y;} public double multiplication(double x,double y){ return x * y;} } 24Riadh BOUHOUCHI
  25. 25. Chapitre5 : Les Objets dans JavaMécanisme dexceptionsComment gérer les erreurs au sein dune application ?Nous allons commencer par un exemple :Soit, l’équation mathématique suivante A=B / C qui est une application qui permet dediviser la valeur B par C puis de l’affecter à A. Plusieurs erreurs peuvent se présenter :  C=0  A, B, C ne sont pas de mêmes types (B et C float et A integer par exemple)  Etc. …L’opération de division ne pourra pas s’effectuer avec ces différentes erreurs.En Java ce type d’erreurs on les appelle les exceptions.Exemple : public class TestException { public static void main(String( ) args) { int i = 3; int j = 0; System.out.println("résultat = " + (i / j)); } } Résultat de l’exécution avec sortie du programme Exception in thread "main" Java.lang.ArithmeticException: / by zero at tests.TestException.main(TestException.Java:23) 25Riadh BOUHOUCHI
  26. 26. Chapitre5 : Les Objets dans JavaQu’est ce qu’une exception ?Les exceptions sont des erreurs qui surgissent au cours du programme et arrêtent l’exécutiondu programme, erreurs de type X/0, connexion interrompue, conversion d’une chaine decaractères en entier « parseInt("a") »…Au niveau de JAVA nous avons la possibilité de gérer ces exceptions.Mécanisme de gestion : deux méthodes se présentent soit capturer et traiter l’exception (avectry et catch), soit la lever ou propager (avec throw(s)).Remarque :  Lever une exception consiste à signaler l’exception.  Capturer lexception consiste à essayer de la traiter.Le principe de propagation des exceptionsSoit une exception déclarée dans une application, si cette exception n’est pas immédiatementcapturée ou levée par un bloc catch, celle-ci se propage en remontant la pile dappels desméthodes, jusquà être traitées.Si, cette exception nest jamais capturée ou levée, elle se propage jusquà la méthode main(),ce qui pousse linterpréteur Java à afficher un message derreurs et à sarrêter.Linterpréteur Java affiche un message permettant d’identifier :  lexception,  la méthode qui la causée,  la ligne correspondante dans le fichier.Les principales classes derreurs et dexceptionsVoici un schéma qui représente l’hiérarchie des exceptions : Object Throwable Error ExceptionRunTimeException Autres 26Riadh BOUHOUCHI
  27. 27. Chapitre5 : Les Objets dans JavaLa classe Exception et Error hérite de La classe Throwable.La classe Throwable définit un message de type String qui est hérité par toutes les classesdexceptions. Ce champ est utilisé pour stocker le message décrivant lexception.Remarque : Ce message peut être récupéré par la méthode getMessage().Nous avons donc :Object Throwable :Classe de base de toutes les exceptions. Error : Erreurs graves (dont les exceptions asynchrones) quil nest pas raisonnable de vouloir intercepter. Exception : Exceptions méritant dêtre interceptées et traitées RuntimeException : Exceptions pouvant survenir durant le fonctionnement normal de la machine Java :  indice de tableau hors bornes  accès à un membre dune référence null  erreur arithmétique, etc. Voici quelques exceptions prédéfinies :  Division par zéro pour les entiers : ArithmeticException  Référence nulle : NullPointerExceptionLe traitement des exceptions avec les blocs try-catch-finallyCommençons par la syntaxe : try { ... } catch (<une-exception>) { ... } catch (<une_autre_exception>) { ... } ... finally { ... }Le bloc try permet d’exécuter des instructions avec succès jusquà la fin du bloque si il n’y apas d’exception qui s’est levée. 27Riadh BOUHOUCHI
  28. 28. Chapitre5 : Les Objets dans JavaLes blocs catch permettent de récupérer l’exception et de vérifier si l’une d’entre elles peutla traiter ou pas, si ils ne le peuvent pas, le programme peut être arrêté ou bloqué parl’interpréteur Java.Le bloc finally permet de définir un ensemble dinstructions qui seront toujours exécutées,que lexception soit levée ou non, capturée ou non.Exemple : Public class Exeption{ public static void main(String() args){ String test =”005” ; try{ System.out.println(“ valeur de A est” +test); } catch (NullPonterException N){ System.out.println(“ erreur“ ); } } }La déclaration des exceptions (throws), cas des RuntimeExceptionAvec le mot réservé throw non pouvons lever (définir ou signaler) une exception.Throw prend en paramètre un objet instance de Throwable ou dune de ses sous-classes.Une méthode susceptible de lever une exception est identifiée par le mot-clé throws suivi dutype de lexception.Exemple : Dans cet exemple l’exception sera seulement propagée. private void analyseTerme() throws SyntaxException { if (texte.PremierCar() == () { texte.caractereSuivant(); analyseSomme(); if (texte.PremierCar() != )) throw new SyntaxException(); texte.caractereSuivant(); } else { analyseChiffre(); return; } } 28Riadh BOUHOUCHI
  29. 29. Chapitre5 : Les Objets dans JavaPour lever l’exception, voici un autre exemple(*) : public class Equation { int a=0; int b=2; int solution() throws ArithmeticException { if (a = = 0) throw new ArithmeticException( "division entière par zéro"); else return b/a; } }Cas des RuntimeExceptionLes exceptions des RuntimeException sont des exceptions et des erreurs prédéfinies et/ougérées par Java.Comme on vient de le voir dans le dernier exemple(*) nous avons utilisé l’exceptionprédéfinie ArithmeticException de RuntimeException.Développer des classes dexception personnaliséesPour générer une exception, il suffit dutiliser le mot clé throw, suivi dun objet dont la classedérive de Throwable. Si lon veut générer une exception dans une méthode avec throw, il fautlindiquer dans la déclaration de la méthode, en utilisant le mot clé throws.Selon notre besoin, on peut créer nos propres exceptions. Elles héritent des classes Exceptionet non pas de la classe Error. 29Riadh BOUHOUCHI
  30. 30. Chapitre5 : Les Objets dans JavaExemple : public class SaisieErroneeException extends Exception { public SaisieErroneeException() { super(); } public SaisieErroneeException(String s) { super(s); } } public class TestSaisieErroneeException { public static void controle(int i) throws SaisieErroneeException { if (i == 0) throw new SaisieErroneeException("Erreur de dvision par 0"); } public static void main(String() args) { int i=0; int j=10; try { controle(i); int div = j / i ; } catch (SaisieErroneeException e) { System.out.println("l’entier saisie est erroné"+i); }; } } 30Riadh BOUHOUCHI

×