Les Interfaces Java
Les Interfaces Java
Les Interfaces Java
Filière : L2SIL
Enseignant : Ben Rkaya Moez
Interface
Exercice1
On vous demande d’écrire :
1. Une interface nommé Homme possédant une seul méthode : void identite () dont le
rôle est d’afficher les informations concernant un homme
2. Une classe Personne implémentant cette interface et possédant deux attributs privés
nom, prenom de type String et un constructeur paramétré.
3. Une classe Client héritant de la classe Personne et implémentant l’interface Homme
avec un attribut privé numero de type entier et un constructeur paramétré en
conséquence.
4. Une classe Peuple contenant deux attributs privés : un tableau d’Homme nommés
pays de capacité 100 et un entier nbHommes représentant le nombre d’hommes d’un
pays.
Cette classe contient également deux méthodes
- void naissance (Homme h) : permet d’ajouter un homme dans pays.
- void explorer () : affiche l’identité de tous les hommes dans pays.
Tester les méthodes naissance et explorer après avoir placé dans pays des personnes et
des clients
Solution
- Interface Homme
package com.interf.exercice;
public interface Homme {
void identite();
}
- class Personne
package com.interf.exercice ;
public class Personne implements Homme {
private String nom,prenom;
Personne(String nom,String prenom){
this.nom=nom;this.prenom=prenom;
}
// Méthode identite : affiche les infos concernant une personne
@Override
Page | 1
Matière : POO2
Filière : L2SIL
Enseignant : Ben Rkaya Moez
- class Client
package com.interf.exercice;
public class Client extends Personne implements Homme{
private int numero;
Client(String nom,String prenom,int numero){
super(nom,prenom);
this.numero=numero;
}
public void identite(){
super.identite();
System.out.println("Numero: " + numero);
}
}
- class Peuple
package com.interf.exercice;
public class Peuple {
//attribut
private Homme pays[]=new Homme[100];
private int nbHommes;
void naissance(Homme h){
pays[nbHommes++]=h;
}
void explorer(){
for(int i=0;i<nbHommes;i++)
pays[i].identite();
}
}
- class Test
package com.interf.exercice;
public class Test {
public static void main(String[] args){
Peuple p = new Peuple();
p.naissance(new Personne("Moez","Rkik"));
Page | 2
Matière : POO2
Filière : L2SIL
Enseignant : Ben Rkaya Moez
p.naissance(new Client("Moez","Farhani",25632));
p.explorer();
}
}
Résultat du programme
Si n=1 on obtient à l’écran : Je suis un point de coordonnées 1,2
Si n=2 on obtient à l’écran : Je suis un cercle de surface 28.26
Si n=3 on obtient à l’écran : Je suis un cylindre de surface 244.92
Autrement on obtient à l’écran : Je suis un point de coordonnées 0.0
Rappel
- Surface d’un cercle = 3,14*rayon*rayon
- Surface d’un cylindre = 2*surface cercle + 2*314*rayon*hauteur
Page | 3
Matière : POO2
Filière : L2SIL
Enseignant : Ben Rkaya Moez
Indication
Comment peut-on déduire que Forme est une interface
D’après notre programme on a :
Forme f ;
f= new Point (...)
f= new Cercle (...)
f= new Cylindre (...)
Ceci nous amène à faire les deux hypothèses suivantes :
1/ Forme est une classe et les classes Point, Cercle et Cylindre héritent de Forme
2/ Forme est une interface et les classes Point, Cercle et Cylindre implémentent cette
interface
Vu que Cercle hérite de Point et que l’héritage multiple n’est pas autorisé en Java, donc
Cercle ne peut pas hériter de Forme → la deuxième hypothèse est confortée.
Page | 4