Chapitre 5

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 14

Cours: Programmation Java

Filière: 2 ème LSI


Enseignante: Dr. Majdoub Manel

2023-2024 Programmation JAVA 2eme SI 1


Plan du cours

Chapitre 1 Introduction
Chapitre 2 Objets et Classes
Chapitre 3 Encapsulation et Surcharge
Chapitre 4 Héritage et Polymorphisme
Chapitre 5 Classes abstraites et Interfaces
Cha6
Chapitre Les collections
pitre
57
Chapitre Les exceptions

18/09/2023 POO 2eme SI 2


Chapitre V: Classes abstraites et Interfaces
Plan

I. Classes abstraites
II. Les interfaces
III. Classes abstraites VS Interfaces

18/09/2023 POO 2eme SI 4


Classes abstraites

• Une méthode est dite abstraite, si on la déclare sans donner son


implémentation.
– Cette méthode est déclarée « abstract »
– Le corps de cette méthode est remplacé par « ; »
• une classe contenant au moins une méthode abstraite est une classe
abstraite.
• Une classe abstraite est une classe qui ne permet pas d’instancier des
objets, elle ne peut servir que de classe de base pour une dérivation.
abstract class A {
//f est définie dans A
public void f() {……} A a = new A (….) ;
public abstract void g (int n) ;
//g est une méthode abstraite elle n’est pas définie dans A
}

18/09/2023 POO 2eme SI 5


Classes abstraites

• Dès qu’une classe abstraite comporte une ou plusieurs méthodes


abstraites, elle est abstraite.
• Une méthode abstraite doit être obligatoirement déclarée « public », ce
qui est logique puisque sa vacation est d’être redéfinie dans une classe
dérivée.
• Les noms d’arguments muets doivent figurer dans la définition d’une
méthode abstraite

public abstract void g(int) ; //Erreur : nom argument fictif est obligatoire

18/09/2023 POO 2eme SI 6


Classes abstraites

• Une classe dérivée d’une classe abstraite n’est pas obligée de redéfinir
toutes les méthodes abstraites, elle peut ne redéfinir aucune, mais elle
reste abstraite tant qu’il y a encore des méthodes abstraites non
implémentées.
• Une classe dérivée d’une classe non abstraite peut être déclarée abstraite.

18/09/2023 POO 2eme SI 7


Classes abstraites

Exemple:
public class Rectangle extends Forme
abstract public class Forme { double largeur, hauteur;
{double posX, posY; public Rectangle()
void deplacer(double x,double y) { { posX=0; posY=0; largeur=0; hauteur=0; }
posX=x; posY=y; } public Rectangle7(double x, double y, double la,
void afficher() { double lo) {
System.out.println("position : (" posX=x; posY=y;
+posX+","+posY+")"); } largeur=la; hauteur=lo; }
abstract double surface() ; double surface() { return largeur * hauteur; }
} void affiche () {
System.out.println (« C’est un rectangle L=» +
largeur + « \t H=»+ hauteur) ;
➢Cette classe est abstraite car Super.affiche() ; }}
ses méthodes surface et
perimetre sont abstraites, ➢La classe Rectangle hérite de la classe abstraite.
➢Une telle classe n'est pas ➢Elle définie toutes ses méthodes, en particulier
instanciable celles abstraites héritées.
18/09/2023 POO 2eme SI 8
Classes abstraites

• Exemple

class Cercle extends Forme{ class test {


private double rayon =1 ; public static void main (String [] args) {
void affiche () { Forme[] tab = new Forme [6];
System.out.println (« C’est un cercle de /*tab[0] = new Forme(3,2); Erreur car une
rayon » + rayon) ; classe abstraite ne peut pas être
Super.affiche() ; } instanciée*/
tab[0] = new Cercle (3,2,7);
double surface () tab[1] = new Cercle (10,7,3) ;
{return ( rayon * 2* 3.14) ;} } tab[2] = new Rectangle (4,7,8,6) ;
tab[3] = new Rectangle (8,10,12,10);
for (int i=0 ; i <=3 ; i++) {tab[i].affiche();}
}
}

18/09/2023 POO 2eme SI 9


Les interfaces

• Pourquoi les interfaces ?


– L’héritage multiple, une classe peut hériter en même temps de
plusieurs super classes
– Le mécanisme d’héritage multiple n’existe pas en JAVA!
– Les interfaces permettent de mettre en œuvre un mécanisme de
remplacement

18/09/2023 POO 2eme SI 10


Les interfaces

• Une interface est un ensemble de constantes et de déclarations de


méthodes abstraites (implicitement).
• Plusieurs interfaces peuvent être implémentées par la même classe.
• L’interface est totalement indépendante de l’héritage : Une classe
dérivée peut implémenter une ou plusieurs interfaces.

interface I1 {…..}
interface I2 {…..}
class A implements I1 {……}
class B extends A implements I1, I2 {…..}

18/09/2023 POO 2eme SI 11


Les interfaces

• Exemple
public class Rectangle implements Polygone {
public double Longueur;
public interface Polygone { public double largeur;
public double périmètre(); public Rectangle(double L,double l){
public int nombreCotes(); } this.Longueur=L; this.largeur=l; }
public double périmètre(){
return 2*(this.Longueur+this.largeur); }
public int nombreCotes(){ return 4; }
public void afficher(){
System.out.println("La périmètre du rectangle est : "+
this.périmètre()); }}

Class Test {
public static void main(String[] args) {
Polygone R1=new Rectangle(7,4);
Rectangle R2=new Rectangle(9,3);
R1.afficher(); R2.afficher(); } }
18/09/2023 POO 2eme SI 12
Classes abstraites Vs. Interfaces

• Classe abstraite
– une classe abstraite peut posséder des attributs
– une classe abstraite peut avoir des méthodes possédant
une implantation
– par contre, on est obligé d’utiliser une notion d’héritage
classique
• Interface
– on peut faire de l’héritage multiple entre interfaces
– Une interface ne possède ni attributs (sauf les constantes) ni
des méthodes implantées
→ Le choix dépend du problème !

18/09/2023 POO 2eme SI 13


Exercice

1. Ecrire la classe Figure, contenant l’attribut privé nom de la figure et les méthodes
suivantes :
– un constructeur avec argument
– - getNom()
– setNom(String) –
– une méthode abstraite float calculAire ()
– une méthode abstraite void afficher ()
2. Ecrire la classe Rectangle, contenant les attributs longueur et largeur. Elle dispose des
méthodes suivantes :
― un constructeur par défaut
― un constructeur avec deux arguments
― une méthode calculAire () –
― une méthode afficher ()
3. Ecrire une classe TestFigure qui permet d’instancier un rectangle, de l’afficher et de
calculer son aire.

18/09/2023 POO 2eme SI 14

Vous aimerez peut-être aussi