Вы находитесь на странице: 1из 4

DUT Informatique S3 - Programmation Java

Jean-Claude MARTIN MARTIN@LIMSI.fr

Cours 5 : Classes abstraites et interfaces


Contexte : quel est le problme ?
En entreprise, un projet est gnralement dvelopp en quipe et sur parfois sur plusieurs mois / annes avec maintenance. Un dveloppeur doit donc prvoir que ses programmes seront utiliss par quelqu'un d'autre que lui-mme. C'est par exemple le cas du JDK (environ 1000 classes qui sont utilises par XX dveloppeurs Java).

Classes abstraites
Dfinition
Une classe abstraite est une classe dans laquelle au moins une mthode n'est pas implmente (cad n'a pas d'instructions).

Utilisation

Utiliser le mot-cl abstract devant le mot-cl class. Pour les mthodes qui ne sont pas implmentes, spcifier juste leur entte.

But dune classe abstraite


Une classe abstraite permet de dfinir les caractristiques communes plusieurs classes. Une classe abstraite permet un dveloppeur : - de fournir d'autres dveloppeurs une partie de l'implmentation d'une classe - de laisser aux autres dveloppeurs la manire d'implmenter le reste de la classe - d'imposer aux autres dveloppeurs d'implmenter certaines mthodes s'ils veulent pouvoir utiliser ses classes

Exemple de classe abstraite


Contexte

M. Pasquier est chef de projet et dveloppeur. Le but du projet est de dvelopper un diteur de dessin sur SmartPhone en Java. Il ne peut pas tout developper tout seul et doit collaborer avec M. Dupont.

Rpartition des tches

M. Pasquier va prendre en charge la partie affichage graphique et stockage en mmoire de toutes les formes graphiques dans un tableau. Il devra notament crire un programme affichant des statistiques avec toutes les formes cres classes par surface decroissante. M. Dupont va prendre en charge la partie implmentation de diffrentes formes graphiques : des cercles, des rectangles ... Cette liste pourra voluer au fur et mesure du projet.
Rpartition des classes programmer

M. Pasquier crit plusieurs classes : - une classe gnrale EditeurGraphique qui lance le programme entier et inclue une mthode afficherStats qui affiche une fenetre graphique avec toutes les informations sur une forme graphique (notamment surface, ) passe en parametre cette mthode. - une classe abstraite FormeGeometrique qui comporte deux mthodes implmentes : dplacer () et afficher () deux mthodes abstraites : perimetre () et surface ()
abstract public class FormeGeometrique { }

M. Dupont dveloppe la classe Rec:


public class Rec extends FormeGeometrique { } public class TestDupont{ }

Dans sa classe EditeurGraphique, M. Pasquier a mis des instructions du type :


class Editeur { }

M. Pasquier ne s'est pas pr-occup du type de FormeGraphique. M. Pasquier sait que pour utiliser ses classes, M. Dupont devra passer en paramtre la mthode afficherStats() une instance d'une classe qui implmente les mthodes spcifies comme abstraites dans la classe FormeGraphique.

Que se passe-t-il si M. Dupont n'implmente pas la classe abstraite FormeGraphique ? Est-ce qu'il peut toujours utiliser les classes dveloppes par M. Pasquier ? De mme, M. Dupont dveloppe la classe Cercle :
public class Cercle extends FormeGeometrique { double rayon; Cercle(double x, double y, double r) { posX=x; posY=y; rayon=r; } double surface() { return Math.PI*Math.pow(rayon, 2.); } double perimetre() { return 2*rayon*Math.PI; } }

Attention
Le compilateur n'accepte pas de crer des objets instance d'une classe abstraite. Pourquoi : .........................................

Exemple du JDK
classe Component : superclasse des objets qui ont une reprsentation graphique : Button, Scrollbar, Window (Cf Javadoc)

Interface
Dfinition
Une interface est une spcification compltement abstraite : aucune mthode n'est implmente. Une interface ne comporte que des constantes et des mthodes abstraites. ATTENTION : le terme "interface" n'a rien voir ici avec les "interfaces graphiques"

Utilisation
Une classe qui implmente une interface doit dfinir le corps (les instructions) de toutes ses mthodes abstraites. Le mot-clef implements permet de rendre une classe conforme une interface particulire (ou un groupe d'interfaces). L'interface spcifie ce quoi la classe ressemble, mais maintenant on va spcifier comment cela fonctionne .

But
Le but est le mme que pour les classes abstraites mais l'extrme : aucune implmentation n'est fournie !

Exemple 1
Version interface de FormeGeometrique.

Exemple 2
MinMax MinMaxPaire MinMaxTriplet Mediane Application

Exemple du JDK
1) Set est une interface qui modlise les fonctionnalits des ensembles : isEmpty() mthode qui dtermine si l'ensemble est vide contains() dtermine si un lment est dans l'ensemble containsAll() dtermine si une collection d'lment est incluse dans l'ensemble add() ajoute un lment l'ensemble ... TreeSet est un arbre d'lments ordonns selon l'ordre ascendant HashSet est une table d'lment accessible par une clef de recherche. L'interface Comparable modlise les objets qui possdent un ordre total : La seule mthode est compareTo(autre) qui renvoie un entier positif si l'objet est suprieur l'autre, 0 s'ils sont gaux, et ngatif sinon. Cette interface permet d'utiliser des collections d'objets ordonns comme TreeSet

TreeSet et HashSet sont 2 classes qui implmente l'interface Set :

2) Comparable

Applications l'hritage et au polymorphisme


tableau de formes graphiques dans l'diteur : on peut parcourir le tableau et appeler sur les cases du tableau des mthodes de la classe abstraite / interface Hritage multiple : une classe C2 peut tendre une classe C1 et implmenter une interface I

Liens
http://www.u-picardie.fr/~ferment/java/cours/chap12_d.html http://www.siteduzero.com/tutoriel-3-10373-les-classes-abstraites.html

Вам также может понравиться

  • Java Printing
    Java Printing
    Документ4 страницы
    Java Printing
    Dreamof Jannah
    Оценок пока нет
  • Rapport
    Rapport
    Документ27 страниц
    Rapport
    Said Elfazni
    Оценок пока нет
  • 01 Java JDBC
    01 Java JDBC
    Документ35 страниц
    01 Java JDBC
    Dreamof Jannah
    Оценок пока нет
  • Lecon 4
    Lecon 4
    Документ18 страниц
    Lecon 4
    Dreamof Jannah
    Оценок пока нет
  • 1 ApplicationsInteractives MVC
    1 ApplicationsInteractives MVC
    Документ24 страницы
    1 ApplicationsInteractives MVC
    Dreamof Jannah
    Оценок пока нет
  • Ccna4 Final Francais
    Ccna4 Final Francais
    Документ21 страница
    Ccna4 Final Francais
    azerty369
    100% (1)
  • 01 Java JDBC
    01 Java JDBC
    Документ35 страниц
    01 Java JDBC
    Dreamof Jannah
    Оценок пока нет
  • Cours Jun It
    Cours Jun It
    Документ42 страницы
    Cours Jun It
    Dreamof Jannah
    Оценок пока нет
  • Java Printing
    Java Printing
    Документ4 страницы
    Java Printing
    Dreamof Jannah
    Оценок пока нет
  • 06 Java EE Persistance
    06 Java EE Persistance
    Документ12 страниц
    06 Java EE Persistance
    Latifa Hadek
    Оценок пока нет
  • Java Printing
    Java Printing
    Документ4 страницы
    Java Printing
    Dreamof Jannah
    Оценок пока нет
  • 05 Interfaces v2
    05 Interfaces v2
    Документ4 страницы
    05 Interfaces v2
    Dreamof Jannah
    Оценок пока нет
  • Cours-Base DE Donnée
    Cours-Base DE Donnée
    Документ114 страниц
    Cours-Base DE Donnée
    labraidji
    100% (4)
  • Rsa
    Rsa
    Документ4 страницы
    Rsa
    Dreamof Jannah
    Оценок пока нет