Révision Les mots réservés de Java Programmation et Conception Orientées Objet Bertrand Estellon Département Informatique et Interactions Aix-Marseille Université 31 août 2017 Gestions des paquets : package import Définitions des classes, interfaces et énumérations : class interface enum Héritage : extends implements Bertrand Estellon (DII AMU) Prog. et Conception Orientées Objet 31 août 2017 1 / 466 Révision Les classes Bertrand Estellon (DII AMU) Prog. et Conception Orientées Objet 31 août 2017 236 / 466 Révision Interfaces class Counter { int counter; Counter(int initialvalue) { counter = initialvalue; void count() { counter++; interface Printer { /** * Imprime la chaîne s. * @param s chaîne à imprimer */ void print(string document); /** * Permet de savoir si l'instance est prête. * @return true si l'instance est prête, false sinon */ boolean isready(); Bertrand Estellon (DII AMU) Prog. et Conception Orientées Objet 31 août 2017 237 / 466 Bertrand Estellon (DII AMU) Prog. et Conception Orientées Objet 31 août 2017 238 / 466
Révision Implémentation d une interface Révision Extension class MyPrinter implements Printer { String name; MyPrinter(String name) { this.name = name; void print(string document) { System.out.println(name+" : "+document); boolean isready() { return true; class MyBracePrinter extends MyPrinter { MyBracePrinter(String name) { super(name); void print(string document) { System.out.println("{"+super.print(document)+""); Bertrand Estellon (DII AMU) Prog. et Conception Orientées Objet 31 août 2017 239 / 466 Révision Polymorphisme Bertrand Estellon (DII AMU) Prog. et Conception Orientées Objet 31 août 2017 240 / 466 Révision Les mots réservés Qu affiche ce programme? public static void main(string args[]) { Printer printer; if (args[0].length()>0) printer = new MyBracePrinter("bracePrinter"); else printer = new MyPrinter("printer"); printer.print("document"); Modificateurs pour les membres et les variables : public protected private static final abstract throws Bertrand Estellon (DII AMU) Prog. et Conception Orientées Objet 31 août 2017 241 / 466 Bertrand Estellon (DII AMU) Prog. et Conception Orientées Objet 31 août 2017 242 / 466
Révision Modification de la visibilité Révision Données et méthodes statiques Classe Paquet Extension Extérieur Private Default Protected Public Les méthodes et des données statiques sont associées à la classe et non aux instances de la classe : class Counter { private static int counter = 0; static void count() { counter++; static int value() { return counter; Un exemple d utilisation de la classe précédente : System.out.println(Counter.value()); Bertrand Estellon (DII AMU) Prog. et Conception Orientées Objet 31 août 2017 243 / 466 Classes abstraites Une classe est abstraite si des méthodes ne sont pas implémentées : public abstract class List { private int[] list = new int[10]; private int size = 0; public void add(int value) { list[size] = value; size++; public int eval() { int result = neutral(); // utilisation d'une méthode abstraite for (int i = 0; i < size; i++) result = compute(result, list[i]); // idem return result; public abstract int neutral(); // méthode abstraite public abstract int compute(int a, int b); // idem Bertrand Estellon (DII AMU) Prog. et Conception Orientées Objet 31 août 2017 244 / 466 Classes abstraites et extension Évidemment, il n est pas possible d instancier une classe abstraite : List list = new List(); // erreur System.out.println(list.eval()) // car que faire ici? Nous allons étendre la classe List afin de récupérer les propriétés et les méthodes de List et définir le code des méthodes abstraites : public class ListSum extends List { public int neutral() { return 0; public int compute(int a, int b) { return a+b; La classe ListSum n est plus abstraite, toutes ses méthodes sont définies : ListSum listsum = new ListSum(); listsum.add(3); listsum.add(7); System.out.println(listSum.eval()); Bertrand Estellon (DII AMU) Prog. et Conception Orientées Objet 31 août 2017 245 / 466 Bertrand Estellon (DII AMU) Prog. et Conception Orientées Objet 31 août 2017 246 / 466
Classes abstraites et extension Évidemment, il n est pas possible d instancier une classe abstraite : List list = new List(); // erreur System.out.println(list.eval()) // car que faire ici? Nous allons étendre la classe List afin de récupérer les propriétés et les méthodes de List et définir le code des méthodes abstraites : public class ListProduct extends List { public int neutral() { return 1; public int compute(int a, int b) { return a*b; La classe ListSum n est plus abstraite, toutes ses méthodes sont définies : ListProduct listproduct = new ListProduct(); listproduct.add(3); listproduct.add(7); System.out.println(listProduct.eval()); Bertrand Estellon (DII AMU) Prog. et Conception Orientées Objet 31 août 2017 247 / 466 Révision Les mots réservés et les types simples Révision Les mots réservés dans le code if/else for do/while switch/case/default continue/break try/catch/finally throw return new null false true this super instanceof Bertrand Estellon (DII AMU) Prog. et Conception Orientées Objet 31 août 2017 248 / 466 Révision Les types primitifs boolean byte char short int long double float void byte entier 8 bits -128 à 127 0 short entier 16 bits -32768 à 32767 0 int entier 32 bits 2 31 à 2 31 1 0 long entier 64 bits 2 63 à 2 63 1 0 float flotant 32 bits 0.0 double flotant 64 bits 0.0 char caractère 16 bits caractères Unicode \u0000 boolean boolean 1 bit false ou true false int intvalue = 12; double doublevalue = 13.5; boolean booleanvalue = true; Bertrand Estellon (DII AMU) Prog. et Conception Orientées Objet 31 août 2017 249 / 466 Bertrand Estellon (DII AMU) Prog. et Conception Orientées Objet 31 août 2017 250 / 466
Révision Les autres mots réservés assert goto native assert strictfp volatile transient synchronized Bertrand Estellon (DII AMU) Prog. et Conception Orientées Objet 31 août 2017 251 / 466