Vous êtes sur la page 1sur 9

08/11/2012

Polymorphisme, Classes Abstraites et Interfaces

Le polymorphisme
Cest la possibilit de : 1. dclarer plusieurs fois la mme mthode avec la mme signature et des implmentations diffrentes dans plusieurs classes : redfinition. 2. dclarer plusieurs fois la mme mthode avec des signatures diffrentes et des implmentations diffrentes dans la mme classe : surcharge.

3. quune rfrence dobjet pointe sur un objet de la classe fille:


Si A est la super-classe et B la sous-classe (directe ou indirecte), on peut faire : A a; B b; a = b // et non b = a A e = new B();

08/11/2012

08/11/2012

Un langage orient objet est dit polymorphique, sil offre la possibilit de pouvoir percevoir un objet en tant quinstance de classes varies, selon les besoins, Un objet dune classe B qui hrite dune classe A est au mme temps une instance de type B et une instance de type A.

Question!

Soit B une classe fille de A, et M1 une mthode dfinie dans A et redfinie dans B.

A a = new B() ; a.M1() //quelle mthode va tre appele ? A a = new A() ; a.M1() //quelle mthode va tre appele ?

08/11/2012

Les mthodes abstraites


Cest une mthode dont on donne le prototype sans dcrire limplmentation:
[modificateur visibilit] abstract type aMethode(arguments);

Une mthode abstraite doit tre absolument redfinie dans une sous classe pour pouvoir tre utilise. Une mthode abstraite ne peut pas tre dclare static ou private ou final!

Les classes abstraites


Une classe qui possde une ou plusieurs mthodes abstraites doit tre dclare abstraite: public abstract class myclass {} Une classe abstraite ne peut pas tre instancie avec loprateur new

Mais on peut dclarer des rfrences du type de la classe abstraite. une classe fille qui ne donne pas une dfinition des mthodes abstraites de sa super classe reste abstraite.

08/11/2012

Intrt dune mthode abstraite !

On ne connat pas toujours le comportement dune mthode commune plusieurs sous-classes Ou la mthode na pas besoin tre dfinie dans la classe, mais on la dclare pour pouvoir utiliser le polymorphisme que les objets.

08/11/2012

Les interfaces
Une interface est une classe abstraite ne contenant que des mthodes abstraites et/ou des attributs constants
interface nom_interface {
public int CONSTANTE = 20; //dclaration dun attribut sans utiliser le mot cl final int methode1 (float x, String S); float //dclarations de la mthode abstraite

Lattribut dune interface


Lattribut dune interface est hrite par les classes qui limplmentent Lattribut dune interface est implicitement ou explicitement static et final, on peut crire:
int i = 5; ou static final int i= 5;

Cest static, alors les objets ne vont pas y avoir leur propore attribut et on y accde soit:
avec NomInterface.nomAttribut: y = NomInetface.i +5; Ou directement nomAttribut quand on est dans une classe qui implmente linterface: Y = i+5;

Cest final et en plus pas de constructeurs dans linterface, alors lattribut doit tre initialis explicitement la dclaration.

08/11/2012

Comparaison classe-interface
A l 'instar d'un classe, une interface : Peut avoir les diffrentes visibilits une interface peut hriter de plusieurs autres interfaces:
public interface InterfaceAB extends InterfaceA, InterfaceB { public void otherMethod(); }

Est compile en un fichier .class

Contrairement une classe, une interface : n'a pas de constructeurs peut pas tre instancie peut tre implmente par une classe ne peut pas hriter dune classe

Une classe peut implmenter une ou plusieurs interfaces:


classe Maclasse implements nom_interface1 nom_interface2 { } classe ClasseFille extends ClasseMere implements nom_interface1 nom_interface2 { }

Toute classe qui implmente linterface doit implmenter toutes les mthodes dfinies par linterface Une interface peut tre implmente par plusieurs classes. Une classe peut implmenter plusieurs interfaces: -Cest une solution partielle pour lhritage multiple interdit en Java

08/11/2012

La classe Object

Toute classe hrite directement ou indirectement dune classe prdfinie nomme Object. Les signatures de ses principales mthodes sont :
- Object clone() ; // recopie de lobjet - String toString() ; // renvoie une chaine de caractres - boolean equals(Object) ; // renvoie true si les deux objets sont gaux .

Tableaux dynamiques et htrognes


Tableau statique et homogne: taille fixe et tous les lments sont de mme type
Point[] monTableauPoint= new Point[4]

Tableau dynamique et htrogne: taille variable et les lments peuvent tre de types diffrents
Classe ArrayList

import java.util.*; ArrayList al = new ArrayList(3); //initial size 3 al.add(10); al.add( "hello"); al.add( "ENISo"); al.add(1, point1); al.remove("hello"); al.remove(2); //index 2

08/11/2012

Les mthodes sur ArrayList et Vector:

Informations sur l'tat de la liste


int size(); Rcupre le nombre d'lments dans la liste boolean isEmpty();Permet de savoir si la liste est vide boolean contains (Object o); Permet de savoir si la liste contient l'objet o Object get (int i); Renvoie l'objet se trouvant l'indice I

Agir sur les lments de la liste


void add (Object o); Ajoute l'objet o en fin de liste void add (int i, Object o); Ajoute l'objet o l'indice i void set (int i, Object o);Remplace l'objet de l'indice i par l'objet o Object remove (int i); Retire l'objet de l'indice i et le renvoie boolean remove (Object o); Retire l'objet o de la liste et renvoie true ou false si l'objet n'existe pas dans la liste void clear(); Vide compltement la liste