pdf/4

publicité
Révision de la syntaxe Java
Révision – Les mots réservés de Java
▶
Programmation et Conception Orientées Objet
Gestions des paquets :
package
import
▶
Bertrand Estellon
Définitions des classes, interfaces et énumérations :
class
interface
enum
Département Informatique et Interactions
Aix-Marseille Université
17 novembre 2016
▶
Héritage :
extends
implements
Bertrand Estellon (DII – AMU)
Prog. et Conception Orientées Objet
17 novembre 2016
1 / 466
Bertrand Estellon (DII – AMU)
Révision de la syntaxe Java
Révision – Les classes
17 novembre 2016
236 / 466
Révision – Interfaces
class Counter {
interface Printer {
/**
* Imprime la chaîne s.
* @param s chaîne à imprimer
*/
void print(String document);
int counter;
Counter(int initialValue) {
counter = initialValue;
}
/**
* Permet de savoir si l'instance est prête.
* @return true si l'instance est prête, false sinon
*/
boolean isReady();
void count() {
counter++;
}
}
Bertrand Estellon (DII – AMU)
Prog. et Conception Orientées Objet
Révision de la syntaxe Java
}
Prog. et Conception Orientées Objet
17 novembre 2016
237 / 466
Bertrand Estellon (DII – AMU)
Prog. et Conception Orientées Objet
17 novembre 2016
238 / 466
Révision de la syntaxe Java
Révision de la syntaxe Java
Révision – Implémentation d’une interface
Révision – Extension
class MyPrinter implements Printer {
String name;
class MyBracePrinter extends MyPrinter {
MyBracePrinter(String name) {
super(name);
}
MyPrinter(String name) { this.name = name; }
@Override
void print(String document) {
System.out.println(name+" : "+document);
}
@Override
void print(String document) {
System.out.println("{"+super.print(document)+"}");
}
@Override
boolean isReady() { return true; }
}
}
Bertrand Estellon (DII – AMU)
Prog. et Conception Orientées Objet
17 novembre 2016
239 / 466
Bertrand Estellon (DII – AMU)
Révision de la syntaxe Java
Prog. et Conception Orientées Objet
Révision – Polymorphisme
Révision – Les mots réservés
Qu’affiche ce programme ?
Modificateurs pour les membres et les variables :
Prog. et Conception Orientées Objet
240 / 466
17 novembre 2016
242 / 466
public
protected
private
static
final
abstract
throws
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");
}
Bertrand Estellon (DII – AMU)
17 novembre 2016
Révision de la syntaxe Java
17 novembre 2016
241 / 466
Bertrand Estellon (DII – AMU)
Prog. et Conception Orientées Objet
Révision de la syntaxe Java
Révision de la syntaxe Java
Révision – Modification de la visibilité
Révision – Données et méthodes statiques
Les méthodes et des données statiques sont associées à la classe et non
aux instances de la classe :
Private
Default
Protected
Public
Classe
✓
✓
✓
✓
Paquet
Extension
Extérieur
✓
✓
✓
✓
✓
✓
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 :
Counter.count();
Counter.count();
Counter.count();
System.out.println(Counter.value());
Bertrand Estellon (DII – AMU)
Prog. et Conception Orientées Objet
17 novembre 2016
243 / 466
Bertrand Estellon (DII – AMU)
Révision de la syntaxe Java
Prog. et Conception Orientées Objet
17 novembre 2016
Classes abstraites
Classes abstraites et extension
Une classe est abstraite si des méthodes ne sont pas implémentées :
É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 ?
public abstract class List {
private int[] list = new int[10];
private int size = 0;
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; }
}
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;
}
La classe ListSum n’est plus abstraite, toutes ses méthodes sont définies :
public abstract int neutral(); // méthode abstraite
public abstract int compute(int a, int b); // idem
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
244 / 466
Révision de la syntaxe Java
17 novembre 2016
245 / 466
Bertrand Estellon (DII – AMU)
Prog. et Conception Orientées Objet
17 novembre 2016
246 / 466
Révision de la syntaxe Java
Révision de la syntaxe Java
Classes abstraites et extension
Révision – Les mots réservés dans le code
É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
17 novembre 2016
247 / 466
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)
Révision de la syntaxe Java
Révision – Les mots réservés et les types simples
17 novembre 2016
248 / 466
Révision – Les types primitifs
byte
short
int
long
float
double
char
boolean
boolean
byte
char
short
int
long
double
float
void
Bertrand Estellon (DII – AMU)
Prog. et Conception Orientées Objet
Révision de la syntaxe Java
entier
entier
entier
entier
flotant
flotant
caractère
boolean
8 bits
16 bits
32 bits
64 bits
32 bits
64 bits
16 bits
1 bit
-128 à 127
-32768 à 32767
−231 à 231 − 1
−263 à 263 − 1
caractères Unicode
false ou true
0
0
0
0
0.0
0.0
\u0000
false
int intValue = 12;
double doubleValue = 13.5;
boolean booleanValue = true;
Prog. et Conception Orientées Objet
17 novembre 2016
249 / 466
Bertrand Estellon (DII – AMU)
Prog. et Conception Orientées Objet
17 novembre 2016
250 / 466
Révision de la syntaxe Java
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
17 novembre 2016
251 / 466
Téléchargement