Classes et objets – références, encapsulation et héritage

InformatiqueAlgorithmique et résolution de problèmes17–18 ans

Utiliser avec ma classe ✨ Personnaliser avec l'IA Signaler un problème

Exécutez pas à pas de petits programmes Python ou Java qui définissent des classes, créent des objets et appellent des méthodes, et observez la mémoire : les variables de la pile contiennent des flèches (références) vers les objets du tas, à côté d'un diagramme de classes UML. Six exemples traitent des constructeurs et de l'état, de l'aliasing et de null, des objets passés en paramètre et renvoyés, de l'encapsulation avec accesseurs et mutateurs, de l'héritage avec redéfinition et polymorphisme, et des membres statiques. Le mode Expérimenter vous laisse créer des objets et copier des références, et une Tâche de conception vous demande de construire un diagramme de classes à partir d'une spécification écrite.

Leçon : Programmation orientée objet : classes, objets, références, encapsulation, héritage et polymorphisme

Ce qu’elle montre

Une classe est un plan qui définit des attributs (données) et des méthodes (comportement) ; chaque objet créé à partir d'elle est une instance qui possède sa propre copie des attributs. Une variable de type classe ne contient pas l'objet mais une référence vers lui : affecter une variable à une autre crée un alias, et une référence peut valoir null (None en Python). L'encapsulation garde les attributs privés et les expose par des méthodes qui peuvent vérifier les valeurs. Une sous-classe hérite des membres de sa superclasse et peut redéfinir des méthodes ; à l'exécution, la classe réelle de l'objet choisit la version exécutée : c'est le polymorphisme.

Mode d’emploi

Choisissez Exécuter pas à pas, un Langage et un Exemple, puis appuyez sur Pas ou Lancer et suivez la ligne surlignée, les flèches de la mémoire et la méthode surlignée dans le diagramme de classes. Dans Expérimenter, créez des objets Account ou SavingsAccount, copiez des références avec Affecter et utilisez Appeler pour voir l'aliasing, les objets inaccessibles et la redéfinition. Dans Tâche de conception, lisez la spécification, cliquez sur les membres pour les placer et appuyez sur Vérifier.

Paramètres modifiables

  • Mode Exécuter pas à pas, Expérimenter, Tâche de conception
  • Exemple Classes, objets et méthodes, Références, aliasing et null, Objets en paramètre et en valeur de retour, Encapsulation : accesseurs et mutateurs, Héritage et polymorphisme, Membres statiques (de classe)
  • Langage Python, Java
  • Vitesse d'exécution 0,5–5 pas/s
  • Tâche de conception Livre de bibliothèque, Formes (héritage), Élèves (membres statiques)

Questions à explorer

  1. Après c2 = c1 et c2.increment(), pourquoi c1.count change-t-il aussi ?
  2. Pourquoi reset(p) ne modifie-t-il pas la variable de l'appelant, alors que move_right(p, dx) modifie son objet ?
  3. Dans la boucle sur pets, pourquoi p.describe() donne-t-il un cri différent pour Dog et pour Cat ?