Vous êtes sur la page 1sur 18

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

Vous aimerez peut-être aussi