P.O.O.
(Programmation
Orientée Objet)
CHOUITI Sidi Mohammed
Cours pour L2 en Informatique
Département d’Informatique
Université de Tlemcen
2023-2024
Plan du cours
1. Introduction à la Programmation Orientée Objet
2. Classes & Objets
3. Héritage & polymorphisme
4. Abstraction & déclaration finale
5. Interfaces
6. Paquetage & Encapsulation
7. Classes Courantes en Java
8. Gestion des Exceptions
9. Interfaces graphiques
UABB-Tlemcen – Département d’Informatique 2
Interface
Il existe une autre technique pour introduire de l'abstraction
une interface est une "classe" complètement abstraite,
c’est-à-dire, qu’elle est faite de :
• Méthodes publiques abstraites
• Variables publiques statiques finales (des constantes
de classe)
UABB-Tlemcen – Département d’Informatique - cours de POO pour L2 3
Interface
• Toutes les méthodes sont implicitement déclarées
public abstract
• Toutes les variables sont implicitement déclarées
public static final
interface I {
int field = 10; // équivaut à public final static int field = 10;
double surface(); // équivaut à public abstract double surface();
}
UABB-Tlemcen – Département d’Informatique - cours de POO pour L2 4
Interface
En java, une classe n’hérite qu’une seule classe mais elle
peut implémenter plusieurs interfaces.
class MyClass
extends MotherClass
implements Interface1, Interface2, … {
...
}
UABB-Tlemcen – Département d’Informatique - cours de POO pour L2 5
Interface
Exemple
interface Pile {
boolean estVide();
void empiler(Object x);
Object depiler();
}
UABB-Tlemcen – Département d’Informatique - cours de POO pour L2 6
Interface
Exemple
class PileTab implements Pile {
Object[] tab = new Object[100];
int n = 0; // n indique le nombre d’éléments
public boolean estVide() {return n == 0;}
public void empiler(Object val) {tab[n++] = val;}
public Object depiler() {return tab[--n];}
}
UABB-Tlemcen – Département d’Informatique - cours de POO pour L2 7
Interface
class PPile{
public static void main(String[] args) {
Pile unePile = new PileTab();
unePile.empiler("A"); unePile.empiler("B");
unePile.empiler(5);
System.out.println(((PileTab) unePile).n);
for (int i=0;i<((PileTab) unePile).n;i++)
System.out.println(((PileTab) unePile).tab[i]);
Object o;
while (!unePile.estVide()){
o=unePile.depiler();
System.out.println(o); }
}
}
UABB-Tlemcen – Département d’Informatique - cours de POO pour L2 8
Interface
interface I1 {
void m();
}
abstract class C1 {
abstract void g();
}
class C2 extends C1 implements I1{
void m(){ // Le code de m }
void g(){ // Le code de g }
}
UABB-Tlemcen – Département d’Informatique - cours de POO pour L2 9
Interface
Héritage entre interfaces
interface I2 extends I1 {
void n();
}
abstract class C3 implements I2 {
void n(){
// Le code de ();
}
}
UABB-Tlemcen – Département d’Informatique - cours de POO pour L2 10
Interface
Héritage simple vs Héritage multiple
class MyClass
extends MotherClass
implements Interface1, Interface2 {
...
}
UABB-Tlemcen – Département d’Informatique - cours de POO pour L2 11
Interface
interface Iterator
Fournit la même technique pour parcourir les éléments de
n’importe quelle collection (liste, tableau, etc.) sans avoir besoin
de connaitre sa structure et son mode d’accès.
Possède les méthodes suivantes :
hasNext() retourne vrai si l’itérateur contient encore un
élément
next() retourne l’élément suivant
remove() supprime le dernier élément retourné par next() de
la collection
UABB-Tlemcen – Département d’Informatique - cours de POO pour L2 12
Interface
Iterator <E>
« interface »
Iterator<E>
+ hasNext() : boolean
+ next() : E
+ remove():void
UABB-Tlemcen – Département d’Informatique - cours de POO pour L2 13
Interface
Default Method
interface MonInterface {
default void defaultMethod() {
// default method implementation
}
}
En fournissant une implémentation par défaut, cela rend
l’implémentation de la méthode optionnelle.
UABB-Tlemcen – Département d’Informatique - cours de POO pour L2 14
Interface
Méthode remove()
remove() de Iterator est une méthode optionnelle.
default void remove()
UABB-Tlemcen – Département d’Informatique - cours de POO pour L2 15
Interface
Exercice
1- Ecrire une classe BitSetIterator qui implémente Iterator. BitSet
est une classe qui implémente un vecteur de taille dynamique et
dont les éléments sont des booléens. Sa méthode set(i :int) permet
de modifier (par True) et sa méthode get(i :int) permet de renvoyer,
la valeur du ième élément.
2- Ecrire le programme TestClientBitSet qui permettra d’initialiser
un objet BitSet, d’accéder aux éléments de ce dernier à travers un
objet BitSetIterator et de les afficher.
UABB-Tlemcen – Département d’Informatique - cours de POO pour L2 16
Interface
Quelques informations
BitSetIterator « interface »
- BitSet bitset Iterator<Boolean>
- int index
+ hasNext() : boolean + hasNext() : boolean
+ next() : Boolean + next() : Boolean
+ remove():void + remove():void
TestClientBitSet
+main(String[] args) : void
UABB-Tlemcen – Département d’Informatique - cours de POO pour L2 17
Interface
Quelques informations
//L’attribut index sera initialisé par 0
import java.util.BitSet; // BitSet une classe du package Util
BitSet bitset;
bitset.length() // retourne la taille de bitset
bitset.set(1); // bitset = {false, true}
bitset.set(5); // bitset = {false, true, false , false , false , true}
Bitset.get (2) // retourne false
UABB-Tlemcen – Département d’Informatique - cours de POO pour L2 18