SlideShare une entreprise Scribd logo
1  sur  9
Télécharger pour lire hors ligne
Programmation générique
Master WISD
AU: 2017/2018
Introduction
 La programmation générique implique d'écrire du code qui puisse être
réutilisé pour des objets de types différents
 écrire un code source unique utilisable avec des objets de types quelconques.
 Nous n'avons plus besoin, par exemple, de programmer des classes
différentes pour collecter et gérer les objets des objets de n'importe quelle
classe.
 Par exemple définir une classe permettant de manipuler des ensembles
d’objets de différentes classes.
11/12/2017 -A.Y- 2
Notion de classes génériques
Une classe générique est une classe comprenant un ou plusieurs attributs de type
paramétrable (classe paramétrée).
Une classe générique peut se présenter comme suit:
public class Couple <T> {
private T premier, deuxieme;
public Couple(){
premier=null;
deuxieme=null;
}
public Couple(T p1, T p2){
premier=p1;
deuxieme=p2;
}
11/12/2017 -A.Y- 3
public void afficher(){
System.out.println("Premier élément: "+premier
+"nDeuxième élément: "+deuxieme);
}
public T getPremier(){
return premier;
}
public void setPremier(T valeur){
premier=valeur;
}
}
Il s’agit d’une classe Couple qui modélise une paire de deux éléments du même type.
Notion de classes génériques
 On note la présence d’un type générique nommé ici T (appelé aussi
paramètre de type) qui apparaît dans la déclaration de classe Couple.
 Il sert à préciser que, dans la définition de classe T représente un type
quelconque.
 Ce paramètre T peut alors être utilisé là où un type précis peut l’être
normalement.
 Ici, on le rencontre dans les déclarations des attributs et dans l’entête de la
classe et ces méthodes.
11/12/2017 -A.Y- 4
Notion de classes génériques
Utilisation de la classe Couple:
 Lors de la déclaration d’un objet de type Couple, on devra préciser le type
effectif correspondant à T, de cette manière :
 Couple<Integer>ci;
 Couple<String> cs;
 La seule contrainte à respecter à ce niveau est que ce type doit
obligatoirement être une classe ; ainsi la déclaration suivante serait rejetée :
 Couple <int> ci ; // erreur : int n’est pas une classe
 L’appel du constructeur devra également préciser le type voulu.
 cs = new Couple<String> (str1, str2) ;
11/12/2017 -A.Y- 5
Notion de classes génériques
 Il est possible, au moment de la définition de la classe, d’imposer certaines
contraintes.
 On peut par exemple imposer à la classe correspondant à un paramètre de
type d’être dérivée d’une classe donnée ou d’implémenter une ou plusieurs
interfaces.
class Couple <T extends Personne> {
// la définition précédente reste inchangée
}
Ici on impose au type désigné par T de dériver de la classe Personne, comme par
exemple Etudiant, Employe, ….
11/12/2017 -A.Y- 6
Notion de classes génériques
Remarques
 On ne peut pas créer des tableaux d’éléments d’un type générique:
Couple <Point> courbe[]= new Couple<Point>[100];
 Il est impossible de lever une exception (throw) à l’aide d’un objet d’une classe
générique : throw (Couple<String>)  Erreur de compilation
 Un attribut statique ne peut pas être d’un type paramétré :
static T minMax ;
11/12/2017 -A.Y- 7
Méthodes génériques
 La même démarche peut s’appliquer aux méthodes.
 On peut définir une seule méthode avec des paramètres de type; on parle
alors de "méthodes génériques".
Exemple:
class Tableau {
…
public static <T> T getMilieu(T[] tab) {
return tab[tab.length/2];
}
…
}
11/12/2017 -A.Y- 8
Méthodes génériques
 il est possible d’imposer le type voulu pour T lors de l’appel de la méthode(Si
on veut davantage de vérifications à la compilation).
 On utilise la syntaxe suivante :
NomClasse.<type>nomMethode().
Exemple:
String jours[]={"Lundi", "Mardi", …, "Dimanche"};
String jour= Tableau.getMilieu(jours);
//ou aussi Tableau.<String>getMilieu(jours);
11/12/2017 -A.Y- 9

Contenu connexe

Similaire à Pres_ java_Générique_cours sur les calsse generiques.pdf

Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objetAmir Souissi
 
Les structures en c++ (1)
Les structures en c++ (1)Les structures en c++ (1)
Les structures en c++ (1)Wael Ismail
 
Les structures en c++
Les structures en c++Les structures en c++
Les structures en c++Wael Ismail
 
Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Rahma Boufalgha
 
Chap 03 poo en java partie2
Chap 03 poo en java partie2Chap 03 poo en java partie2
Chap 03 poo en java partie2Yassine Badri
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetkemenaran
 
Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objetsAbdoulaye Dieng
 
JAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVAJAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVAAymen Bedwivski
 
Java uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 javaJava uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 javaAmel Morchdi
 
Correction TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / TunisieCorrection TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / TunisieMariem ZAOUALI
 
Interface collectionsinter
Interface collectionsinterInterface collectionsinter
Interface collectionsinterRYMAA
 
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCSiratiSoufiane
 
Csharp2 : classes et objets
Csharp2 : classes et objetsCsharp2 : classes et objets
Csharp2 : classes et objetsAbdoulaye Dieng
 
Chap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdfChap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdframadanmahdi
 
Chap1lla génèricité.pptx
Chap1lla génèricité.pptxChap1lla génèricité.pptx
Chap1lla génèricité.pptxSana REFAI
 

Similaire à Pres_ java_Générique_cours sur les calsse generiques.pdf (20)

Cours c++
Cours c++Cours c++
Cours c++
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
 
POO-chapitre6.pptx
POO-chapitre6.pptxPOO-chapitre6.pptx
POO-chapitre6.pptx
 
Les structures en c++ (1)
Les structures en c++ (1)Les structures en c++ (1)
Les structures en c++ (1)
 
Les structures en c++
Les structures en c++Les structures en c++
Les structures en c++
 
Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02
 
Chap 03 poo en java partie2
Chap 03 poo en java partie2Chap 03 poo en java partie2
Chap 03 poo en java partie2
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objet
 
Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objets
 
JAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVAJAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVA
 
Java uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 javaJava uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 java
 
Ch06
Ch06Ch06
Ch06
 
Langage c partie_2
Langage c partie_2Langage c partie_2
Langage c partie_2
 
Correction TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / TunisieCorrection TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / Tunisie
 
Interface collectionsinter
Interface collectionsinterInterface collectionsinter
Interface collectionsinter
 
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
 
Cours de JAVA de base
Cours de JAVA  de baseCours de JAVA  de base
Cours de JAVA de base
 
Csharp2 : classes et objets
Csharp2 : classes et objetsCsharp2 : classes et objets
Csharp2 : classes et objets
 
Chap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdfChap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdf
 
Chap1lla génèricité.pptx
Chap1lla génèricité.pptxChap1lla génèricité.pptx
Chap1lla génèricité.pptx
 

Pres_ java_Générique_cours sur les calsse generiques.pdf

  • 2. Introduction  La programmation générique implique d'écrire du code qui puisse être réutilisé pour des objets de types différents  écrire un code source unique utilisable avec des objets de types quelconques.  Nous n'avons plus besoin, par exemple, de programmer des classes différentes pour collecter et gérer les objets des objets de n'importe quelle classe.  Par exemple définir une classe permettant de manipuler des ensembles d’objets de différentes classes. 11/12/2017 -A.Y- 2
  • 3. Notion de classes génériques Une classe générique est une classe comprenant un ou plusieurs attributs de type paramétrable (classe paramétrée). Une classe générique peut se présenter comme suit: public class Couple <T> { private T premier, deuxieme; public Couple(){ premier=null; deuxieme=null; } public Couple(T p1, T p2){ premier=p1; deuxieme=p2; } 11/12/2017 -A.Y- 3 public void afficher(){ System.out.println("Premier élément: "+premier +"nDeuxième élément: "+deuxieme); } public T getPremier(){ return premier; } public void setPremier(T valeur){ premier=valeur; } } Il s’agit d’une classe Couple qui modélise une paire de deux éléments du même type.
  • 4. Notion de classes génériques  On note la présence d’un type générique nommé ici T (appelé aussi paramètre de type) qui apparaît dans la déclaration de classe Couple.  Il sert à préciser que, dans la définition de classe T représente un type quelconque.  Ce paramètre T peut alors être utilisé là où un type précis peut l’être normalement.  Ici, on le rencontre dans les déclarations des attributs et dans l’entête de la classe et ces méthodes. 11/12/2017 -A.Y- 4
  • 5. Notion de classes génériques Utilisation de la classe Couple:  Lors de la déclaration d’un objet de type Couple, on devra préciser le type effectif correspondant à T, de cette manière :  Couple<Integer>ci;  Couple<String> cs;  La seule contrainte à respecter à ce niveau est que ce type doit obligatoirement être une classe ; ainsi la déclaration suivante serait rejetée :  Couple <int> ci ; // erreur : int n’est pas une classe  L’appel du constructeur devra également préciser le type voulu.  cs = new Couple<String> (str1, str2) ; 11/12/2017 -A.Y- 5
  • 6. Notion de classes génériques  Il est possible, au moment de la définition de la classe, d’imposer certaines contraintes.  On peut par exemple imposer à la classe correspondant à un paramètre de type d’être dérivée d’une classe donnée ou d’implémenter une ou plusieurs interfaces. class Couple <T extends Personne> { // la définition précédente reste inchangée } Ici on impose au type désigné par T de dériver de la classe Personne, comme par exemple Etudiant, Employe, …. 11/12/2017 -A.Y- 6
  • 7. Notion de classes génériques Remarques  On ne peut pas créer des tableaux d’éléments d’un type générique: Couple <Point> courbe[]= new Couple<Point>[100];  Il est impossible de lever une exception (throw) à l’aide d’un objet d’une classe générique : throw (Couple<String>)  Erreur de compilation  Un attribut statique ne peut pas être d’un type paramétré : static T minMax ; 11/12/2017 -A.Y- 7
  • 8. Méthodes génériques  La même démarche peut s’appliquer aux méthodes.  On peut définir une seule méthode avec des paramètres de type; on parle alors de "méthodes génériques". Exemple: class Tableau { … public static <T> T getMilieu(T[] tab) { return tab[tab.length/2]; } … } 11/12/2017 -A.Y- 8
  • 9. Méthodes génériques  il est possible d’imposer le type voulu pour T lors de l’appel de la méthode(Si on veut davantage de vérifications à la compilation).  On utilise la syntaxe suivante : NomClasse.<type>nomMethode(). Exemple: String jours[]={"Lundi", "Mardi", …, "Dimanche"}; String jour= Tableau.getMilieu(jours); //ou aussi Tableau.<String>getMilieu(jours); 11/12/2017 -A.Y- 9