Fiche de révision : POO Java : polymorphisme et collections

Plan du Cours

  1. Polymorphisme et redéfinition
  2. Classes abstraites
  3. Interfaces et contrats
  4. Conversions et héritage
  5. Collections et listes
  6. Implémentations des listes
  7. Maps et parcours
  8. Tri et comparaison

1. Polymorphisme et redéfinition

Notions clés & Définitions

  • Polymorphisme : Permet à une même référence de désigner des objets de types différents, le comportement exécuté dépendant de l’objet réel.
  • Upcasting : L’upcasting consiste à utiliser un objet d’une sous-classe comme un objet de sa super-classe, par exemple « Animal animal = new Chien(); ».

★ À maîtriser

  • Lors d’un appel polymorphe, la référence de type Animal peut désigner un Chien ou un Chat, puis la version redéfinie de faireSon() correspondant à l’objet réel est exécutée.

Compléments

📌 L’annotation @Override signale qu’une méthode fournit une nouvelle implémentation d’une méthode héritée.

Astuce mémo

Référence générale → objet réel → méthode redéfinie

2. Classes abstraites

Notions clés & Définitions

  • Classe abstraite : Représente un concept général, peut contenir des attributs, des constructeurs, des méthodes normales et des méthodes abstraites, mais ne peut pas être instanciée directement.
  • Méthode abstraite : Méthode déclarée sans corps, qui impose à toute sous-classe concrète de fournir son implémentation.

Points essentiels

📌 Une classe qui contient au moins une méthode abstraite doit être déclarée abstraite.

📌 Une classe qui hérite d’une classe abstraite doit implémenter toutes ses méthodes abstraites ou être elle-même déclarée abstraite.

Astuce mémo

Classe abstraite = base commune, objet concret = sous-classe

3. Interfaces et contrats

Notions clés & Définitions

  • Interface : Contrat qui définit les services qu’une classe doit fournir sans définir leur implémentation dans le modèle présenté.

Points essentiels

📌 Dans le modèle du cours, les méthodes d’une interface sont implicitement public abstract et ses données sont implicitement static et final.

📌 Une classe implémente une interface avec le mot-clé implements et une classe concrète doit fournir les implémentations publiques de ses méthodes.

  • Une classe Java peut implémenter plusieurs interfaces, mais elle ne peut hériter que d’une seule classe dans le modèle du cours.

Astuce mémo

extends hérite d’une classe, implements respecte une interface

4. Conversions et héritage

★ À maîtriser

  • Le downcasting transforme une référence de super-classe en référence de sous-classe, comme dans « Chien chien = (Chien) animal; ».

📌 L’opérateur instanceof vérifie qu’un objet peut réellement être considéré comme une classe donnée avant d’effectuer un downcasting.

Compléments

📌 L’héritage est pertinent lorsque la relation conceptuelle « A est un B » est vraie, comme dans « Un chien est un animal ».

  • Lors de la construction d’un objet, les constructeurs des classes parentes sont appelés avant ceux des classes filles, puis les membres sont initialisés selon leur ordre de déclaration.

Astuce mémo

Upcasting → instanceof → downcasting

5. Collections et listes

Notions clés & Définitions

  • Collection : Conteneur destiné à stocker plusieurs objets, tandis que Map est indépendante de l’interface Collection.
  • List : Collection ordonnée, accessible par indice et autorisant les doublons.

Points essentiels

  • Les méthodes principales de Collection sont:

    • add()
    • addAll()
    • remove()
    • clear()
    • contains()
    • isEmpty()
    • size()
    • iterator()
  • Les opérations essentielles d’une List comprennent:

    • add()
    • get(index)
    • indexOf()
    • remove(index)
    • isEmpty()
    • size()

Astuce mémo

List = ordre et doublons ; Map = clé et valeur

6. Implémentations des listes

Notions clés & Définitions

  • ArrayList : Implémentation de List basée sur un tableau dynamique dont la taille peut évoluer.
  • LinkedList : Implémentation de List reposant sur une liste dynamique doublement chaînée, adaptée à certaines insertions et suppressions.

Points essentiels

📌 ArrayList offre un accès par indice efficace, tandis que LinkedList est moins adaptée à cet accès mais convient davantage aux insertions et suppressions.

Astuce mémo

ArrayList = tableau dynamique ; LinkedList = chaîne double

7. Maps et parcours

Notions clés & Définitions

  • Map : Associe une clé unique à une valeur selon le modèle clé → valeur.

★ À maîtriser

  • Les principales méthodes de Map sont:
    • put()
    • get()
    • containsKey()
    • containsValue()
    • remove()
    • keySet()

📌 HashMap utilise une table de hachage, est non ordonnée et non synchronisée, tandis que TreeMap repose sur un arbre binaire équilibré, est ordonnée et non synchronisée.

Compléments

  • Hashtable est une implémentation de Map synchronisée qui conserve des méthodes historiques.

  • Pour parcourir une Map avec la méthode présentée, on récupère ses clés avec keySet(), on obtient un Iterator, puis on récupère chaque valeur avec get(clé).

Astuce mémo

HashMap non ordonnée ; TreeMap ordonnée ; Hashtable synchronisée

8. Tri et comparaison

Notions clés & Définitions

  • Comparable : Permet à une classe de définir son ordre naturel au moyen de la méthode compareTo().
  • Comparator : Permet de définir dans une classe externe la comparaison de deux objets au moyen de la méthode compare().

★ À maîtriser

📌 La méthode compareTo() renvoie une valeur négative si this est inférieur à l’autre objet, zéro s’ils sont considérés égaux et une valeur positive si this est supérieur.

  • Le tri d’une List peut utiliser Collections.sort(liste) pour l’ordre naturel ou Collections.sort(liste, comparator) avec un comparateur.

Compléments

  • Une Map triée s’appuie sur SortedMap et TreeMap, tandis qu’un Set trié s’appuie sur SortedSet et TreeSet.

Astuce mémo

Comparable compareTo() interne ; Comparator compare() externe

Tableaux de synthèse

Classe abstraite et interface

DimensionClasse abstraiteInterface
Déclarationabstract classinterface
RôleBase communeContrat
Constructeur et attributsConstructeur et attributs possiblesDonnées static et final dans le modèle
Relation avec une classeextendsimplements
MultiplicitéUne seule classe héritéePlusieurs interfaces implémentables

Comparable et Comparator

DimensionComparableComparator
Lieu de comparaisonDans la classe comparableDans une classe externe
MéthodecompareTo()compare()
RôleDéfinit l’ordre naturelDéfinit un critère de comparaison externe

Teste tes connaissances

Teste tes connaissances sur POO Java : polymorphisme et collections avec 11 questions à choix multiples et corrections détaillées.

1. En polymorphisme, qu’est-ce qui détermine la méthode redéfinie exécutée lorsqu’une référence désigne un objet ?

2. Quelle instruction illustre un upcasting en Java ?

Faire le QCM →

Révisez avec les flashcards

Mémorisez les concepts clés de POO Java : polymorphisme et collections avec 11 flashcards interactives.

Qu'est-ce que le polymorphisme en programmation orientée objet ?

Une même référence peut désigner des objets de types différents avec comportement dépendant de l'objet réel.

Que signale l'annotation @Override en Java ?

Qu'une méthode redéfinit une méthode héritée avec une nouvelle implémentation.

Qu'est-ce qu'une classe abstraite en programmation orientée objet ?

Une classe abstraite représente un concept général et ne peut pas être instanciée directement.

Voir les flashcards →

Cours similaires

Crée tes propres fiches de révision

Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.

Générateur de fiches