Académique Documents
Professionnel Documents
Culture Documents
Révision Mi-Session
Hiver 2023
int[ ] monTableau;
monTableau = new int[10];
System.out.println(monTableau[8]);
Les types références
monTableau
❑ Tableau de conversion :
Classe
Boolean Byte Short Character Integer Long Float Double
Enveloppante
Type primitif boolean byte short char int long float double
Les méthodes: Appel par valeur
❑ On dit que l’appel des méthodes en Java est un appel par valeur
❑ Si vous changez la valeur du paramètre, la valeur de l’argument ne change pas.
Exemple d’une Classe
❑ Pour déclarer une nouvelle classe (nouveau type de données) on
utilise la syntaxe suivante:
class Rectangle {
double longueur;
Attributs ou les Variables
double largeur;
Rectangle
Rectangle longueur = 4.5
largeur = 2.6
rect1
Accès aux variables et méthodes d’instance
Rectangle
Rectangle longueur = 4.5
largeur = 2.6
rect1
Exemple:
❑ Toutes les variables définies dans une interface sont public, final et static.
NB: On peut omettre le mot clé abstract lorsqu’on déclare les méthodes
d’une interface du moment que toutes les méthodes étant abstraites.
Les mots clés final et static peuvent être omis également lors de la
définition des variables de l’interface.
Interface
❑ Une interface est comme un contrat.
Exemple:
Pour être un quadrilatère, une figure doit être construite selon l’interface
suivante.
interface Quadrilatere {
int NBRE_COTES = 4; Variables final, static
double perimetre();
double surface(); Méthodes abstraite
}
Héritage: super
class Cercle extends FormeGeometrique {
private double radius;
Cercle(){
super();
this.radius = 0;
}
Cercle(double x, double y , double radius){
super(x, y);
this.radius = radius;
}
}
❑ La ligne super(…) est un appel explicite au constructeur de la
superclasse immédiate.
❑ Cette forme d’appel, super(…), n’apparaît que dans un constructeur
et doit être la première instruction.
❑ Par défaut, un appel de la forme super() est automatiquement
inséré dans le constructeur de la sous classe.
Polymorphisme « ad hoc »
class Test {
public static void somme(int a, int b) {
System.out.println("La somme des 02 entiers est: " + (a + b));
}
public static void somme(int a, int b, int c) {
System.out.println ("La somme des 03 entiers est: " + (a + b + c));
}
public static void somme(double a, double b) {
System.out.println ("La somme des 02 decimaux est: " + (a + b));
}
public static void main(String[] arguments) {
somme(2, 3);
somme(2, 3, 5);
somme(3.14, 5.91);
}
}
Polymorphisme par sous-typage
import java.lang.Math;
abstract class Forme {
private double x, y;
public double surface() {
double s = 0;
//Cacule de la surface ...
return s;
}
}
class Cercle extends Forme {
private double rayon;
public double surface() {
return rayon * rayon * Math.PI;
} Overriding
}
class Rectangle extends Forme {
private double longueur, largeur;
public double surface() {
return longueur * largeur;
}
}
Types génériques (Polymorphisme paramétré)
class Couple <T>{
private T element1, element2;
Couple(T x, T y){
this. element1 = x;
this. element2 = y;
}
public T getElement1() {
return element1;
}
public T getElement2() {
return element2;
}
}
class Test {
public static void main(String[] arguments) {
Couple <Integer> c1;
Couple <String> c2;
c1 = new Couple<Integer>(Integer.valueOf(1), Integer.valueOf(2));
c2 = new Couple<String>("first", "second");
Integer a = c1.getElement1();
String s = c2.getElement1();
System.out.println("a = " + a);
System.out.println("S = " + s);
}
}
Types génériques: plusieurs types
Méthodes génériques
class Test {
public static <T> void display(T[] maListe) {
for (T x : maListe) {
System.out.println(x); Boucle for-each
}
}
public static void main(String[] arguments) {
Integer [] monTableau = { 2, 6, -8, 10, 12 };
display(monTableau);
String [] monTableau2 = {"Bonjour","Bonsoir","Bonne journee"};
display(monTableau2);
}
}