Академический Документы
Профессиональный Документы
Культура Документы
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.
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.
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. 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
2) Comparable
Liens
http://www.u-picardie.fr/~ferment/java/cours/chap12_d.html http://www.siteduzero.com/tutoriel-3-10373-les-classes-abstraites.html