SlideShare une entreprise Scribd logo
1  sur  98
Conception par Objet et Programmation Java
Plan du cours Séances Chapitres 1 Introduction à Java 2 Classe et objet 3 Encapsulation 4 Héritage 5 Polymorphisme 6 Exceptions 7 Interface et collection 8 Interface graphique
Contenu du cours ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Rappel sur l’héritage ,[object Object],[object Object],[object Object],[object Object]
Les interfaces  Déclaration d’une interface : ,[object Object],[object Object],[object Object],import java.awt.*; public interface Dessinable { public void dessiner(Graphics g); void effacer(Graphics g); } •  Toutes les méthodes sont implicitement abstraites et publiques •  Possibilité de définir des attributs à condition qu’il s’agisse d ’attributs de type primitif •  Ces attributs sont implicitement déclarés comme  static final(Constante) Dessinable.java Opérations abstraites Interfaces «interface» Dessinable dessiner(g : Graphics) effacer(g: Graphics)
Les interfaces  « réalisation » d’une interface ,[object Object]
Les interfaces  « réalisation » d’une interface ,[object Object],[object Object],class RectangleDessinable extends Rectangle  implements Dessinable { public void dessiner(Graphics g){ g.drawRect((int) x, (int) y, (int) largeur, (int) hauteur); } public void effacer(Graphics g){ g.clearRect((int) x, (int) y, (int)largeur, (int) hauteur); } } si la classe est une classe concrète  elle doit fournir une implémentation (un corps) à  chacune des méthodes abstraites définies dans l'interface (qui doivent être déclarées publiques)
Les interfaces  « réalisation » d’une interface ,[object Object],Pour cela la liste des noms des interfaces à implémenter séparés par des virgules doit suivre le mot clé implements class RectangleDessinable extends Rectangle  implements Dessinable,Comparable { public void dessiner(Graphics g){ g.drawRect((int) x, (int) y, (int) largeur, (int) hauteur); } public void effacer(Graphics g){ g.clearRect((int) x, (int) y, (int)largeur, (int) hauteur); } public int compareTo(Object o) { if (o instanceof Rectangle) ... } } Méthodes de l’interface Comparable Méthodes de l ’interface Dessinable
Les interfaces  Interface et polymorphisme ,[object Object],[object Object],public class Fenetre { private nbFigures; private  Dessinable[] figures; ... public void ajouter( Dessinable d){ ... } public void supprimer( Dessinable o){ ... } public void dessiner() { for (int i = 0; i < nbFigures; i++) figures[i].dessiner(g); } } Dessinable d; … d = new RectangleDessinable(…); ... d.dessiner(g); d.surface(); permet de s’intéresser uniquement à certaines caractéristiques d’un objet règles du polymorphisme s’appliquent de la même manière que pour les classes : •  vérification statique du code •  liaison dynamique
Les interfaces  Héritage d’interface De la même manière qu'une classe peut avoir des sous-classes, une interface peut avoir des &quot;sous-interfaces&quot; Une sous interface  - hérite de toutes les méthodes abstraites et des constantes de sa    &quot;super-interface&quot; -  peut définir de nouvelles constantes et méthodes abstraites interface Set  extends Collection { ... } Une classe qui implémente une interface doit implémenter toutes les méthodes abstraites définies dans l'interface et dans les interfaces dont elle hérite.
Les interfaces  Héritage d’interface A la différence des classes une interface peut étendre plus d'une interface à la fois représente une connexion ouverte vers une entité telle qu’un dipositif hardware, un fichier, une “socket” réseau, ou tout composant logiciel capable de réaliser une ou plusieurs opérations d’entrée/sortie. package java.nio; interface ByteChannel  extends ReadableByteChanel, WriteableByteChanel { }
Les interfaces  Interêt ,[object Object],[object Object],[object Object],[object Object],[object Object]
Les interfaces  abstract class Animal { ... abstract void talk(); } class Dog extends Animal { ... void talk() { System.out.println(&quot;Woof!&quot;); } } class Bird extends Animal { ... void talk() { System.out.println(&quot;Weet&quot;); } } class Cat extends Animal { ... void talk() { System.out.println(« Miaw!&quot;); } } Polymorphisme signifie qu’une référence d’un type (classe) donné peut désigner un objet de n’importe quelle sous classe et selon nature de cet objet produire un comportement différent Animal animal = new Dog(); ... animal = new Cat(); animal  peut être un Chien, un Chat ou n’importe quelle sous classe d ’Animal En JAVA le polymorphisme est rendu possible par la  liaison dynamique ( dynamic binding) class Interrogator { static void makeItTalk(Animal subject) { subject.talk(); } } JVM  décide à l’exécution ( runtime) quelle méthode invoquer en se basant sur la classe de l’objet Exemple :
Les interfaces  Exemple : Comment utiliser  Interrogator pour faire parler aussi un CuckooClock ? abstract class Animal { ... abstract void talk(); } class Dog extends Animal { ... void talk() { System.out.println(&quot;Woof!&quot;); } } class Bird extends Animal { ... void talk() { System.out.println(&quot;Weet&quot;); } } class Cat extends Animal { ... void talk() { System.out.println(« Miaw!&quot;); } } abstract class Robot{ ... } class Humanoïde{ ... void talk() { System.out.println(« cuckoo »); } } Pas d’héritage multiple Faire passer CuckooClock dans la hiérarchie d’animal? class Interrogator { static void makeItTalk( Animal subject) { subject.talk(); } } class  HumanoîdeInterrogator { static void makeItTalk( Humanoïde subject) { subject.talk(); } } Se passer du polymorphisme?
Les interfaces  Exemple : abstract class Animal implements Talkative { ... abstract void talk(); } class Dog extends Animal { ... void talk() { System.out.println(&quot;Woof!&quot;); } } class Bird extends Animal { ... void talk() { System.out.println(&quot;Weet&quot;); } } class Cat extends Animal { ... void talk() { System.out.println(« Miaw!&quot;); } } abstract class Robot{ ... } class Humanoïde implements Talkative { void talk() { System.out.println(« cuckoo »); }} class Interrogator { static void makeItTalk( Animal  subject) { subject.talk(); } } interface Talkative { public void talk(); } Association de ce type à différentes classes de la hiérarchie d’héritage Tolkative Utilisation de ce type abstrait Définition d’un type abstrait (interface) Les interfaces permettent  plus de polymorphisme  car avec les interfaces il n’est pas nécessaire de tout faire rentrer dans une seule famille (hiérarchie) de classe
Les collections  Introduction ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Rappel : Tableaux ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Les collections ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Les collections en Java ,[object Object]
Quelques structures de données classiques ,[object Object],[object Object],[object Object],[object Object]
Les collections  Généricité •  Avant le JDK 5.0, les collections peuvent contenir des objets de n’importe quel type •  A partir du JDK 5.0, on peut indiquer le type des objets contenus dans une collection grâce à la généricité •     On privilégie ici l’API du JDK 5.0.
Les collections  Les interfaces ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Les collections  Hiérarchie des interfaces Collections Iterable <E> Collection <E> Set <E> List <E> Queue <E> SortedSet <E>
Les collections  Hiérarchie des interfaces Maps Map<K, V> SortedMap <K, V>
Les collections  Les classes •  Classes  abstraites  :  AbstractCollection<E>, AbstractList<E>, AbstractMap<K,V>,… qui implantent les méthodes de base communes aux collections (ou  map) •  Classes  concrètes  :  ArrayList<E>, LinkedList<E>, HashSet<E>, TreeSet<E>, HashMap<K,V>, TreeMap<K,V>,… qui héritent des classes abstraites ; elles implantent, en particulier, les méthodes d’accès aux données ( get, put, add,…)
Les collections  Classes concrètes d'implantation des interfaces
Les collections  Classes étudiées •  Nous étudierons essentiellement les classes ArrayList  et  HashMap  comme classes d'implémentation de List et de Map •  Elles permettront d'introduire des concepts et informations qui sont aussi valables  pour les autres classes d'implantation
Les collections  Les classes utilitaires •  Collections  (avec un  s final) fournit des  méthodes  static  pour, en particulier, –  trier une collection –  faire des recherches rapides dans une collection triée •  Arrays  fournit des méthodes  static  pour, en particulier, –  trier –  faire des recherches rapides dans un tableau trié –  transformer un tableau en liste
Les collections  Exemple de liste public class Main { public static void main(String[] args) { List <String> l = new ArrayList <String>(); l.add(&quot;Pierre Jacques&quot;); l.add(&quot;Pierre Paul&quot;); l.add(&quot;Jacques Pierre&quot;); l.add(&quot;Paul Jacques&quot;); Collections.sort(l); System.out.println(l); } }
Les collections  Exemple de Map public class Main { public static void main(String[] args) { Map <String, Integer> frequences = new HashMap <String, Integer> (); for (String mot : args) { Integer freq = frequences.get(mot); if (freq == null) freq = 1; else freq = freq + 1; frequences.put(mot, freq); } System.out.println(frequences);
Collections et types primitifs ,[object Object],[object Object],[object Object],[object Object]
Exemple de Map sans (un)boxing Map <String, Integer> frequences = new HashMap <String, Integer> (); String [] args = { ….} for (String mot : args) { Integer freq = frequences.get(mot); if (freq == null) freq = 1; else freq = freq + 1; frequences.put(mot,  new Integer (freq) ); les  collections ne peuvent contenir des types primitifs
Exemple avec boxing List<Integer> l =new ArrayList<Integer>(); l.add(10); l.add(-678); l.add(87); l.add(7); Collections.sort(l); System.out.println(l);
INTERFACE COLLECTION<E>
Définition ,[object Object],[object Object]
Méthodes communes héritées de Collection ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Collections : les implémentations
Notion de méthode optionnelle ,[object Object],[object Object],[object Object],[object Object],[object Object]
Méthode optionnelle ,[object Object],[object Object],[object Object],[object Object],[object Object]
Constructeurs ,[object Object],[object Object],[object Object]
Transformation en tableau ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Transformation en tableau (2) ,[object Object],[object Object],[object Object],[object Object],[object Object]
INTERFACE SET & implémentations ,[object Object]
Définition de l'interface  Set<E> ,[object Object],[object Object],[object Object],[object Object]
Méthodes de  Set<E> ,[object Object],[object Object],[object Object],[object Object]
Interface SortedSet ,[object Object],[object Object],[object Object],[object Object],[object Object]
Interface NavigableSet <java 6> ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Implémentations ,[object Object],[object Object],[object Object],[object Object]
Classe HashSet<E> ,[object Object],[object Object],[object Object]
Exemple hashSet ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TreeSet ,[object Object],[object Object],[object Object]
Exemple  TreeSet ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
INTERFACE LIST<E> & implémentations ,[object Object]
Interface List <E> ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Nouvelles méthodes de  List ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Classe  ArrayList<E> ,[object Object],[object Object]
Exemples List <Employe> le =new  ArrayList <Employe>(); Employe e = new Employe(&quot;Dupond&quot;); le.add(e); . . . // Ajoute d’autres employés for (int i = 0; i < le.size(); i++) { System.out.println(le.get(i).getNom()); }
Classe Vector ,[object Object],[object Object],[object Object],[object Object]
Classe LinkedList ,[object Object],[object Object]
INTERFACES ITERATOR<E> ET  boucle FOR ,[object Object]
Parcourir une Collection ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Parcourir une Collection ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Obtenir un itérateur ,[object Object],[object Object],[object Object],[object Object]
Exemple ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Itérateur et modification de la collection parcourue ,[object Object]
Itérateur de liste et ajout dans la  liste parcourue ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TRI ET RECHERCHE DANS UNE COLLECTION ,[object Object]
Classe  Collections ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Trier une liste ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Interface  Comparable<T> ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Interface  Comparable  ,[object Object],[object Object],[object Object],[object Object]
Exemple ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Interface  Comparator<T> ,[object Object],[object Object],[object Object],[object Object]
Interface  Comparator<T> ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exemple ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Utilisation d’un comparateur ,[object Object],[object Object],[object Object],[object Object],[object Object]
INTERFACE MAP ,[object Object]
Définition ,[object Object],[object Object],[object Object]
Implémentation ,[object Object],[object Object],[object Object]
Fonctionnalités ,[object Object],[object Object],[object Object],[object Object]
Méthodes de  Map ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Itérer sur les Map ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exemple : Equals & hashcode ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exemple: equals & hashcode ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Interface  interne  Entry<K,V> de Map ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Modification des clés ,[object Object],[object Object]
Récupérer les valeurs d’une  Map ,[object Object],[object Object],[object Object]
Récupérer les clés d’une  Map ,[object Object],[object Object]
Récupérer les entrées d’une  Map ,[object Object],[object Object]
Itérateur et suppression dans la  map parcourue ,[object Object],[object Object],[object Object]
Interfaces et classes d’implémentation <<interface>> Map<K, V> <<interface>> SortedMap <K, V> <<abstrract>> AbstractMap<K, V> HashMap<K, V> TreeMap<K, V>
Classe  HashMap  Implémentation ,[object Object],[object Object]
Exemple d’utilisation de  HashMap ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Classe  TreeMap  Implémentation ,[object Object],[object Object],[object Object],[object Object]
Exemple d’utilisation de  TreeMap ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exemple d’utilisation de  TreeMap ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
HashCode () ,[object Object],[object Object],[object Object]

Contenu connexe

Tendances

Dotnet csharp
Dotnet csharpDotnet csharp
Dotnet csharpSDFG5
 
Csharp2 : classes et objets
Csharp2 : classes et objetsCsharp2 : classes et objets
Csharp2 : classes et objetsAbdoulaye Dieng
 
INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3PGambette
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage PythonAziz Darouichi
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonAbdoulaye Dieng
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Aziz Darouichi
 
Csharp3 heritage-polymorphisme-interface
Csharp3 heritage-polymorphisme-interfaceCsharp3 heritage-polymorphisme-interface
Csharp3 heritage-polymorphisme-interfaceAbdoulaye Dieng
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux javaInes Ouaz
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Aziz Darouichi
 
Chapitre 2: String en Java
Chapitre 2:  String en JavaChapitre 2:  String en Java
Chapitre 2: String en JavaAziz Darouichi
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objetAmir Souissi
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Chapitre6: Surcharge des opérateurs
Chapitre6:  Surcharge des opérateursChapitre6:  Surcharge des opérateurs
Chapitre6: Surcharge des opérateursAziz Darouichi
 

Tendances (20)

Dotnet csharp
Dotnet csharpDotnet csharp
Dotnet csharp
 
Csharp2 : classes et objets
Csharp2 : classes et objetsCsharp2 : classes et objets
Csharp2 : classes et objets
 
INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
Polymorphisme
PolymorphismePolymorphisme
Polymorphisme
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en Python
 
Part1
Part1Part1
Part1
 
POO
POOPOO
POO
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019
 
Csharp3 heritage-polymorphisme-interface
Csharp3 heritage-polymorphisme-interfaceCsharp3 heritage-polymorphisme-interface
Csharp3 heritage-polymorphisme-interface
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
 
Modélisation avec UML
Modélisation avec UMLModélisation avec UML
Modélisation avec UML
 
Chapitre 2: String en Java
Chapitre 2:  String en JavaChapitre 2:  String en Java
Chapitre 2: String en Java
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Polymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraitePolymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraite
 
Chapitre6: Surcharge des opérateurs
Chapitre6:  Surcharge des opérateursChapitre6:  Surcharge des opérateurs
Chapitre6: Surcharge des opérateurs
 
Chap2fonctionscpp
Chap2fonctionscppChap2fonctionscpp
Chap2fonctionscpp
 

En vedette

Rappel de cours traitement de signal
Rappel de cours traitement de signalRappel de cours traitement de signal
Rappel de cours traitement de signalmanahil2012
 
Lamini&farsane traitement de_signale
Lamini&farsane traitement de_signaleLamini&farsane traitement de_signale
Lamini&farsane traitement de_signaleAsmae Lamini
 
Administration reseau
Administration reseauAdministration reseau
Administration reseaunadimoc
 
Traitement de signal -chapitre 1
Traitement de signal -chapitre 1Traitement de signal -chapitre 1
Traitement de signal -chapitre 1Samir Tabib
 
569036 bases-de-traitement-du-signal
569036 bases-de-traitement-du-signal569036 bases-de-traitement-du-signal
569036 bases-de-traitement-du-signalMohammed moudine
 
Partie 8: Objets et Classes — Programmation orientée objet en C++
Partie 8: Objets et Classes — Programmation orientée objet en C++Partie 8: Objets et Classes — Programmation orientée objet en C++
Partie 8: Objets et Classes — Programmation orientée objet en C++Fabio Hernandez
 
Presentacion 5 sentidos
Presentacion 5 sentidosPresentacion 5 sentidos
Presentacion 5 sentidoscharito0911
 
Biserica alba din tailanda
Biserica alba din tailandaBiserica alba din tailanda
Biserica alba din tailandaParaschiv Sorin
 
Propuestas concepto c. mype ce 2011
Propuestas concepto c. mype ce 2011Propuestas concepto c. mype ce 2011
Propuestas concepto c. mype ce 2011B2B Group
 
Analyse du blog2 roubaix lille3
Analyse du blog2 roubaix   lille3Analyse du blog2 roubaix   lille3
Analyse du blog2 roubaix lille3CQH
 
Tour pour personnes à mobilité réduite
Tour pour personnes à mobilité réduiteTour pour personnes à mobilité réduite
Tour pour personnes à mobilité réduiteWalter Fano
 
Finalistes du prix Antoine-Desilets 2013
Finalistes du prix Antoine-Desilets 2013Finalistes du prix Antoine-Desilets 2013
Finalistes du prix Antoine-Desilets 2013fpjq
 

En vedette (20)

Rappel de cours traitement de signal
Rappel de cours traitement de signalRappel de cours traitement de signal
Rappel de cours traitement de signal
 
Cours s5 réseau FSO
Cours s5 réseau FSOCours s5 réseau FSO
Cours s5 réseau FSO
 
Cours1
Cours1Cours1
Cours1
 
Lamini&farsane traitement de_signale
Lamini&farsane traitement de_signaleLamini&farsane traitement de_signale
Lamini&farsane traitement de_signale
 
Administration reseau
Administration reseauAdministration reseau
Administration reseau
 
Traitement de signal -chapitre 1
Traitement de signal -chapitre 1Traitement de signal -chapitre 1
Traitement de signal -chapitre 1
 
569036 bases-de-traitement-du-signal
569036 bases-de-traitement-du-signal569036 bases-de-traitement-du-signal
569036 bases-de-traitement-du-signal
 
Partie 8: Objets et Classes — Programmation orientée objet en C++
Partie 8: Objets et Classes — Programmation orientée objet en C++Partie 8: Objets et Classes — Programmation orientée objet en C++
Partie 8: Objets et Classes — Programmation orientée objet en C++
 
Club utilisateurs Open System Aunis Marais Poitevin
Club utilisateurs Open System Aunis Marais PoitevinClub utilisateurs Open System Aunis Marais Poitevin
Club utilisateurs Open System Aunis Marais Poitevin
 
Presentacion 5 sentidos
Presentacion 5 sentidosPresentacion 5 sentidos
Presentacion 5 sentidos
 
Biserica alba din tailanda
Biserica alba din tailandaBiserica alba din tailanda
Biserica alba din tailanda
 
Propuestas concepto c. mype ce 2011
Propuestas concepto c. mype ce 2011Propuestas concepto c. mype ce 2011
Propuestas concepto c. mype ce 2011
 
irena Sendler
irena Sendlerirena Sendler
irena Sendler
 
Tecnologia
TecnologiaTecnologia
Tecnologia
 
2011 hiver-6.2
2011 hiver-6.22011 hiver-6.2
2011 hiver-6.2
 
Analyse du blog2 roubaix lille3
Analyse du blog2 roubaix   lille3Analyse du blog2 roubaix   lille3
Analyse du blog2 roubaix lille3
 
Joshua bell violoniste.pps
Joshua bell violoniste.ppsJoshua bell violoniste.pps
Joshua bell violoniste.pps
 
Tour pour personnes à mobilité réduite
Tour pour personnes à mobilité réduiteTour pour personnes à mobilité réduite
Tour pour personnes à mobilité réduite
 
Finalistes du prix Antoine-Desilets 2013
Finalistes du prix Antoine-Desilets 2013Finalistes du prix Antoine-Desilets 2013
Finalistes du prix Antoine-Desilets 2013
 
Principe de Deucalion
Principe de DeucalionPrincipe de Deucalion
Principe de Deucalion
 

Similaire à Interface collectionsinter

11-Cours de Géniel Logiciel
11-Cours de Géniel Logiciel11-Cours de Géniel Logiciel
11-Cours de Géniel Logiciellauraty3204
 
Héritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdfHéritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdfAabidiHafid
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scalaSOAT
 
Chapitre4 cours de java
Chapitre4 cours de javaChapitre4 cours de java
Chapitre4 cours de javainfo1994
 
chapitre5-Classesabstraitesetinterfaces.pdf
chapitre5-Classesabstraitesetinterfaces.pdfchapitre5-Classesabstraitesetinterfaces.pdf
chapitre5-Classesabstraitesetinterfaces.pdfMoez Moezm
 
De java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDe java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDidier Plaindoux
 
Java 8 : Un ch'ti peu de lambda
Java 8 : Un ch'ti peu de lambdaJava 8 : Un ch'ti peu de lambda
Java 8 : Un ch'ti peu de lambdaCh'ti JUG
 
7_Chapitre6_Les collections.pdf
7_Chapitre6_Les collections.pdf7_Chapitre6_Les collections.pdf
7_Chapitre6_Les collections.pdffatimakhdidr
 
intro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APPintro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APPfrwebhelp
 
POO - Chapitre6.pptx
POO - Chapitre6.pptxPOO - Chapitre6.pptx
POO - Chapitre6.pptxRAYENBOUAFIF1
 
Le système d&rsquo;E/S en Java
Le système d&rsquo;E/S en JavaLe système d&rsquo;E/S en Java
Le système d&rsquo;E/S en JavaKorteby Farouk
 
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#MSDEVMTL
 

Similaire à Interface collectionsinter (20)

XB-Java.ppt
XB-Java.pptXB-Java.ppt
XB-Java.ppt
 
11-Cours de Géniel Logiciel
11-Cours de Géniel Logiciel11-Cours de Géniel Logiciel
11-Cours de Géniel Logiciel
 
Hibernate
HibernateHibernate
Hibernate
 
Héritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdfHéritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdf
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scala
 
Chapitre4 cours de java
Chapitre4 cours de javaChapitre4 cours de java
Chapitre4 cours de java
 
chapitre5-Classesabstraitesetinterfaces.pdf
chapitre5-Classesabstraitesetinterfaces.pdfchapitre5-Classesabstraitesetinterfaces.pdf
chapitre5-Classesabstraitesetinterfaces.pdf
 
De java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDe java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvements
 
Java 8 : Un ch'ti peu de lambda
Java 8 : Un ch'ti peu de lambdaJava 8 : Un ch'ti peu de lambda
Java 8 : Un ch'ti peu de lambda
 
Memo java
Memo javaMemo java
Memo java
 
7_Chapitre6_Les collections.pdf
7_Chapitre6_Les collections.pdf7_Chapitre6_Les collections.pdf
7_Chapitre6_Les collections.pdf
 
intro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APPintro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APP
 
cours1.ppt
cours1.pptcours1.ppt
cours1.ppt
 
cours1.ppt
cours1.pptcours1.ppt
cours1.ppt
 
cours2.ppt
cours2.pptcours2.ppt
cours2.ppt
 
POO - Chapitre6.pptx
POO - Chapitre6.pptxPOO - Chapitre6.pptx
POO - Chapitre6.pptx
 
POO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdfPOO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdf
 
Le système d&rsquo;E/S en Java
Le système d&rsquo;E/S en JavaLe système d&rsquo;E/S en Java
Le système d&rsquo;E/S en Java
 
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#
 
Csharp2014
Csharp2014Csharp2014
Csharp2014
 

Plus de RYMAA

Cours referencement web_analytics
Cours referencement web_analyticsCours referencement web_analytics
Cours referencement web_analyticsRYMAA
 
Atelier HTML
Atelier HTMLAtelier HTML
Atelier HTMLRYMAA
 
E marketing
E marketingE marketing
E marketingRYMAA
 
Ajax intro 2pp
Ajax intro 2ppAjax intro 2pp
Ajax intro 2ppRYMAA
 
Concevoir un jeu-concours
Concevoir un jeu-concoursConcevoir un jeu-concours
Concevoir un jeu-concoursRYMAA
 
Analyseur sax
Analyseur saxAnalyseur sax
Analyseur saxRYMAA
 
Les clés du e marketing et e-commerce
Les clés du e marketing et e-commerceLes clés du e marketing et e-commerce
Les clés du e marketing et e-commerceRYMAA
 
Angluars js
Angluars jsAngluars js
Angluars jsRYMAA
 
Ch 1-la-révolution-des-tic-2010
Ch 1-la-révolution-des-tic-2010Ch 1-la-révolution-des-tic-2010
Ch 1-la-révolution-des-tic-2010RYMAA
 
Programme MOOC
Programme MOOCProgramme MOOC
Programme MOOCRYMAA
 
Programme officiel-journée-des-mooc
Programme officiel-journée-des-moocProgramme officiel-journée-des-mooc
Programme officiel-journée-des-moocRYMAA
 
C2 écrire en français (formules)
C2   écrire en français (formules)C2   écrire en français (formules)
C2 écrire en français (formules)RYMAA
 
6 1-ergonomie du web
6 1-ergonomie du web6 1-ergonomie du web
6 1-ergonomie du webRYMAA
 
Formation joomla 1ere_session
Formation joomla 1ere_sessionFormation joomla 1ere_session
Formation joomla 1ere_sessionRYMAA
 

Plus de RYMAA (14)

Cours referencement web_analytics
Cours referencement web_analyticsCours referencement web_analytics
Cours referencement web_analytics
 
Atelier HTML
Atelier HTMLAtelier HTML
Atelier HTML
 
E marketing
E marketingE marketing
E marketing
 
Ajax intro 2pp
Ajax intro 2ppAjax intro 2pp
Ajax intro 2pp
 
Concevoir un jeu-concours
Concevoir un jeu-concoursConcevoir un jeu-concours
Concevoir un jeu-concours
 
Analyseur sax
Analyseur saxAnalyseur sax
Analyseur sax
 
Les clés du e marketing et e-commerce
Les clés du e marketing et e-commerceLes clés du e marketing et e-commerce
Les clés du e marketing et e-commerce
 
Angluars js
Angluars jsAngluars js
Angluars js
 
Ch 1-la-révolution-des-tic-2010
Ch 1-la-révolution-des-tic-2010Ch 1-la-révolution-des-tic-2010
Ch 1-la-révolution-des-tic-2010
 
Programme MOOC
Programme MOOCProgramme MOOC
Programme MOOC
 
Programme officiel-journée-des-mooc
Programme officiel-journée-des-moocProgramme officiel-journée-des-mooc
Programme officiel-journée-des-mooc
 
C2 écrire en français (formules)
C2   écrire en français (formules)C2   écrire en français (formules)
C2 écrire en français (formules)
 
6 1-ergonomie du web
6 1-ergonomie du web6 1-ergonomie du web
6 1-ergonomie du web
 
Formation joomla 1ere_session
Formation joomla 1ere_sessionFormation joomla 1ere_session
Formation joomla 1ere_session
 

Interface collectionsinter

  • 1. Conception par Objet et Programmation Java
  • 2. Plan du cours Séances Chapitres 1 Introduction à Java 2 Classe et objet 3 Encapsulation 4 Héritage 5 Polymorphisme 6 Exceptions 7 Interface et collection 8 Interface graphique
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. Les interfaces Héritage d’interface De la même manière qu'une classe peut avoir des sous-classes, une interface peut avoir des &quot;sous-interfaces&quot; Une sous interface - hérite de toutes les méthodes abstraites et des constantes de sa &quot;super-interface&quot; - peut définir de nouvelles constantes et méthodes abstraites interface Set extends Collection { ... } Une classe qui implémente une interface doit implémenter toutes les méthodes abstraites définies dans l'interface et dans les interfaces dont elle hérite.
  • 11. Les interfaces Héritage d’interface A la différence des classes une interface peut étendre plus d'une interface à la fois représente une connexion ouverte vers une entité telle qu’un dipositif hardware, un fichier, une “socket” réseau, ou tout composant logiciel capable de réaliser une ou plusieurs opérations d’entrée/sortie. package java.nio; interface ByteChannel extends ReadableByteChanel, WriteableByteChanel { }
  • 12.
  • 13. Les interfaces abstract class Animal { ... abstract void talk(); } class Dog extends Animal { ... void talk() { System.out.println(&quot;Woof!&quot;); } } class Bird extends Animal { ... void talk() { System.out.println(&quot;Weet&quot;); } } class Cat extends Animal { ... void talk() { System.out.println(« Miaw!&quot;); } } Polymorphisme signifie qu’une référence d’un type (classe) donné peut désigner un objet de n’importe quelle sous classe et selon nature de cet objet produire un comportement différent Animal animal = new Dog(); ... animal = new Cat(); animal peut être un Chien, un Chat ou n’importe quelle sous classe d ’Animal En JAVA le polymorphisme est rendu possible par la liaison dynamique ( dynamic binding) class Interrogator { static void makeItTalk(Animal subject) { subject.talk(); } } JVM décide à l’exécution ( runtime) quelle méthode invoquer en se basant sur la classe de l’objet Exemple :
  • 14. Les interfaces Exemple : Comment utiliser Interrogator pour faire parler aussi un CuckooClock ? abstract class Animal { ... abstract void talk(); } class Dog extends Animal { ... void talk() { System.out.println(&quot;Woof!&quot;); } } class Bird extends Animal { ... void talk() { System.out.println(&quot;Weet&quot;); } } class Cat extends Animal { ... void talk() { System.out.println(« Miaw!&quot;); } } abstract class Robot{ ... } class Humanoïde{ ... void talk() { System.out.println(« cuckoo »); } } Pas d’héritage multiple Faire passer CuckooClock dans la hiérarchie d’animal? class Interrogator { static void makeItTalk( Animal subject) { subject.talk(); } } class HumanoîdeInterrogator { static void makeItTalk( Humanoïde subject) { subject.talk(); } } Se passer du polymorphisme?
  • 15. Les interfaces Exemple : abstract class Animal implements Talkative { ... abstract void talk(); } class Dog extends Animal { ... void talk() { System.out.println(&quot;Woof!&quot;); } } class Bird extends Animal { ... void talk() { System.out.println(&quot;Weet&quot;); } } class Cat extends Animal { ... void talk() { System.out.println(« Miaw!&quot;); } } abstract class Robot{ ... } class Humanoïde implements Talkative { void talk() { System.out.println(« cuckoo »); }} class Interrogator { static void makeItTalk( Animal subject) { subject.talk(); } } interface Talkative { public void talk(); } Association de ce type à différentes classes de la hiérarchie d’héritage Tolkative Utilisation de ce type abstrait Définition d’un type abstrait (interface) Les interfaces permettent plus de polymorphisme car avec les interfaces il n’est pas nécessaire de tout faire rentrer dans une seule famille (hiérarchie) de classe
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21. Les collections Généricité • Avant le JDK 5.0, les collections peuvent contenir des objets de n’importe quel type • A partir du JDK 5.0, on peut indiquer le type des objets contenus dans une collection grâce à la généricité •  On privilégie ici l’API du JDK 5.0.
  • 22.
  • 23. Les collections Hiérarchie des interfaces Collections Iterable <E> Collection <E> Set <E> List <E> Queue <E> SortedSet <E>
  • 24. Les collections Hiérarchie des interfaces Maps Map<K, V> SortedMap <K, V>
  • 25. Les collections Les classes • Classes abstraites : AbstractCollection<E>, AbstractList<E>, AbstractMap<K,V>,… qui implantent les méthodes de base communes aux collections (ou map) • Classes concrètes : ArrayList<E>, LinkedList<E>, HashSet<E>, TreeSet<E>, HashMap<K,V>, TreeMap<K,V>,… qui héritent des classes abstraites ; elles implantent, en particulier, les méthodes d’accès aux données ( get, put, add,…)
  • 26. Les collections Classes concrètes d'implantation des interfaces
  • 27. Les collections Classes étudiées • Nous étudierons essentiellement les classes ArrayList et HashMap comme classes d'implémentation de List et de Map • Elles permettront d'introduire des concepts et informations qui sont aussi valables pour les autres classes d'implantation
  • 28. Les collections Les classes utilitaires • Collections (avec un s final) fournit des méthodes static pour, en particulier, – trier une collection – faire des recherches rapides dans une collection triée • Arrays fournit des méthodes static pour, en particulier, – trier – faire des recherches rapides dans un tableau trié – transformer un tableau en liste
  • 29. Les collections Exemple de liste public class Main { public static void main(String[] args) { List <String> l = new ArrayList <String>(); l.add(&quot;Pierre Jacques&quot;); l.add(&quot;Pierre Paul&quot;); l.add(&quot;Jacques Pierre&quot;); l.add(&quot;Paul Jacques&quot;); Collections.sort(l); System.out.println(l); } }
  • 30. Les collections Exemple de Map public class Main { public static void main(String[] args) { Map <String, Integer> frequences = new HashMap <String, Integer> (); for (String mot : args) { Integer freq = frequences.get(mot); if (freq == null) freq = 1; else freq = freq + 1; frequences.put(mot, freq); } System.out.println(frequences);
  • 31.
  • 32. Exemple de Map sans (un)boxing Map <String, Integer> frequences = new HashMap <String, Integer> (); String [] args = { ….} for (String mot : args) { Integer freq = frequences.get(mot); if (freq == null) freq = 1; else freq = freq + 1; frequences.put(mot, new Integer (freq) ); les collections ne peuvent contenir des types primitifs
  • 33. Exemple avec boxing List<Integer> l =new ArrayList<Integer>(); l.add(10); l.add(-678); l.add(87); l.add(7); Collections.sort(l); System.out.println(l);
  • 35.
  • 36.
  • 37. Collections : les implémentations
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57. Exemples List <Employe> le =new ArrayList <Employe>(); Employe e = new Employe(&quot;Dupond&quot;); le.add(e); . . . // Ajoute d’autres employés for (int i = 0; i < le.size(); i++) { System.out.println(le.get(i).getNom()); }
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92. Interfaces et classes d’implémentation <<interface>> Map<K, V> <<interface>> SortedMap <K, V> <<abstrract>> AbstractMap<K, V> HashMap<K, V> TreeMap<K, V>
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.