MatheX – Licence CC BY-NC-SA 4.0 - https://www.mathexien.com

Terminale - spécialité Numérique et Sciences Informatiques

1. Programmation Orientée Objet (POO)

Objectifs:

  • Introduire le principe de POO
  • Définir le vocabulaire la POO
  • Programmer en paradigme objet sous Python
  • Ouvrir sur des aspects plus avancés de la POO

Rappel

Avant d'introduire la POO, nous allons remobiliser des notions du programme de 1ère.

Mission 1.1.

Rappeler les différents types de données vus en 1ère avec leurs caractéristiques

Proposer une implémentation sous Python de votre classe.
Identifier les difficultés potentielles en terme d'utilisation et d'évolution

Rappeler les principes des paradigmes de programmation vus en 1ère


# Vos réponses aux questions ici (et/ou insertion d'images)






Principe et vocabulaire de la POO

Les objets, constitués de leurs données et de leurs actions, sont le coeur de la programmation orientiée objet, plutôt que les fonctions, la séquentialité ou la logique globale.

Les propriétés des objets similaires sont définies par un modèle appelé classe

Chaque classe définit :

Dans le paradigme objet, le principe d'encapsulation permet de cacher les détails d'implémentation de la classe et d'offrir des interfaces d'accès aux objets à travers les méthodes.

Une fois la classe définie ( le model, le moule), on peut créer des des objets appelés aussi "instances de classe" ( des objets concrets créés par le moule)

class objet instance.png

Par exemple, on peut modéliser différentes voitures à travers une classe Car qui possède les attributs et les méthodes suivants:

car UML.png

Une fois la classe Car crée, on peut l'instancier, c'est à dire créer différents objets représentant une voiture précise:

car class objet.jpg

Mission 1.2.

Proposer une modélisation orientée objet de votre lycée à travers la définition d'attributs et de méthodes pour les classes:

  • Lycee
  • Classe (du lycée)
  • Eleve
  • Prof
  • Cours

    Vous pouvez utiliser le formalisme de l'exemple de la classe Car ci-dessus (UML)


# Vos réponses aux questions ici (et/ou insertion d'images)






POO avec Python

Python est un langage multipardigme qui permet la programmation orientée objet, même si quelques principes de la POO ne sont pas vraiment respectés.

Un même prorgamme Python peut mélanger plusieurs paradigmes.

Vous avez déjà utilisé la programmation objet dans Python en 1ère, sans forcément le savoir, par exemple lorsque vous utilisiez des méthodes (et non pas des fonctions) sur une liste:

# création d'un objet (d'une instance) de la classe list
myList = [1, 2, 3]

# appel de la méthode append() sur cet objet (cette instance
myList.append(4)

Nous allons maintenant voir comment:

Mission 1.3.

Implémenter en Python les classes Classe et Eleve que vous avez modélisé à la mission 1.2 avec au minimum:

Les méthodes vues plus haut (accesseur, mutateur, infos)
La comparaison d'un objet de la classe Eleve à un autre élève
L'ajout et la suppression d'un élève dans une classe avec des tests (doublons, existence)

Les attributs que nous avons vu étaient propre à chaque instance de la classe, on les appele des attributs d'instance.

Mais on peut aussi définir des attributs dont la valeur est partagée par toutes les instances de la classe, ainsi que par la classe elle même, on les appele des attributs de classe.

On peut également définir des méthodes de classe accessibles depuis la classe, il suffit de ne pas mettre le paramètre self

Pour protéger l'accès direct aux attributs en Python, on peut faire précéder leur nom par deux fois le caractère _

L'attribut devient alors un attribut privé, accessible directement uniquement à l'intérieur de la classe, une instance devra passer par un accesseur.

Idem pour les méthodes.

Mission 1.4.

Implémenter en Python l'ensemble des classes la mission 1.2

On s'assurera que chaque élève a un identifiant unique

Concepts plus avancés

Projet

En option (++):