Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
classes
133
Héritage multiple
134
Interface
Interface
Un ensemble de méthodes (comportements) exigées
Permet de savoir qu’une classe contient les implantations de certaines méthodes
On peut utiliser ces méthodes sans connaître les détails de leur implantation
Souvent utilisée pour des types abstraits de données (e.g. pile, queue, …)
Une classe peut se déclarer conforme à (implanter) une interface: dans ce cas, elle doit
implanter toutes les méthodes exigées
E.g.
public abstract interface Inter {
public abstract int carre(int a);
public abstract void imprimer();
}
class X implements Inter {
public int carre(int a) { return a*a; }
public void imprimer() {System.out.println("des informations"); }
}
135
Une solution avec les interfaces
136
Interface
Une interface permet de regrouper les objets qui
peuvent manifester le même type de
comportement (mêmes méthodes)
Interface n’a pas la même contrainte d’héritage
simple pour les classe
Une classe peut se conformer à plusieurs
interfaces
137
Interface
Pour implémenter une interface, on utilise: implements
La classe doit expliciter le code de chaque méthode définie
dans l’interface
… }
138
Exemple d’Interface
139
Exemple d’Interface
// …
// …
if(sombre == true)
c = monAmpoule;
else
c = maRadio;
c.allumer();
…
c.eteindre();
// …
140
Utilisation des interfaces
■Une variable peut être définie selon le type d’une interface
■Une classe peut implémenter plusieurs interfaces différentes
■L’opérateur instanceof peut être utilisé sur les interfaces
Exemple :
interface Electrique
…
interface Lumineux
…
class Ampoule implements Electrique, Lumineux
…
Electrique e;
Object o = new Ampoule();
if (o instanceof Electrique) {e=(Electrique)o;e.allumer();}
141
Classe abstraite vs. Interface
Classe abstraite
Certaines méthodes peuvent être abstraites
Peut contenir des attributs
Peut implanter des méthodes
Héritage simple
Interface = contrat
Aucune implantation de méthode
Différentes classes peuvent signer le même contrat
Classe = famille
posséder le même nom de famille
a la même habileté (peut être une méthode abstraite)
Interface = contrat
Contrat commun pour différentes familles
142
Polymorphisme- Rappel
Le polymorphisme est la capacité de faire correspondre à un
même message plusieurs méthodes selon le type de l'objet
receveur. Il permet de spécialiser une classe héritée en lui
ajoutant les modifications de traitement spécifiques à la classe.
Le polymorphisme permet :
- de programmer plusieurs méthodes avec un même nom
- de sélectionner la méthode lors de l'exécution.
L'appel à une méthode fonctionne au moyen d'une liaison
dynamique : la recherche de la méthode à utiliser est réalisée
lors de l'exécution. C'est dans la classe de cet objet que l'on
définira le comportement de l'objet.
143
Polymorphisme en java
Le polymorphisme est permis mais est soumis à quelques
contraintes.
On peut appliquer ce concept qu'entre des classes d'une même
branche d'héritage ou partageant une même interface.
Le fait que le code Java soit exécuté par une machine virtuelle
qui intègre la technologie objet fait que la gestion du
polymorphisme est assurée par la machine virtuelle qui
décharge le programmeur de la complexité de l'opération.
144
Polymorphisme en java
// Animal avec nom obtenir nom, afficher
abstract class Animal{
private String nom;
Animal(String chaine){
nom= chaine;
}
String getNom(){ return nom; }
abstract void parle();
void afficher(){
System.out.println(nom);
}
} 145
Polymorphisme en java
class Chien extends Animal{
Chien(String chaine){
super(chaine);
System.out.println("\nCreer le chien " + chaine);
}
void afficher(){
System.out.print("\nJe suis le chien ");
super.afficher();
}
void parle(){
System.out.println(" Ouarf! Ouarf!");
}
} 146
Polymorphisme en java
class Chat extends Animal{
Chat(String chaine){
super(chaine); //
constructeur de Animal
System.out.println("\nCreer le chat " + chaine);
}
void afficher(){
System.out.print("\nJe suis le chat ");
super.afficher( );
}
void parle(){
System.out.println(" Miaou! Miaou!");
} 147
}
// Polymorphisme: illustre le polymorphisme etVector
import java.util.*;
public class TestPolymorphisme
{
public static void main (String[] args)
{
Vector animaux = new Vector();
Animal unAnimal;
149