Sous-sections de Programmation Orientée Objet

Notion objet - Scratch

Lang 01

Résumé de l’activité

scène scène L’activité Scratch permet d’illustrer la notion d’objet.

Un objet:

  • représente une entité physique, un concept…
  • possède des données qui lui sont propres: les attributs,
  • possède des actions qui lui sont propres: les méthodes,
  • peut interagir avec les autres objets.

Un objet est un modèle (un squelette) qui permet de créer des instances autonomes.

scène scène Chaque instance possède ses valeurs propres pour chaque attribut.

Principe POO

Lang 01

Résumé du cours

Programmation Orientée Objet

Un objet:

  • représente une entité physique, un concept…
  • est autonome,
  • peut interagir avec les autres objets.

La POO consiste à réunir les données caractérisant un objet et leur traitement, dans une unité autonome.

À retenir

Une classe est une modélisation d’un élément du monde réel. Une classe possède:

  • des attributs: il s’agit des caractéristiques spécifiques de l’objet (données),
  • des méthodes: il s’agit des fonctionnalités que peut réaliser l’objet (traitements et services).

Instanciation

Lang 02

Résumé du cours

Méthodes de la classe Utilisateur
  • verifier_mdp
    • compare le mot de passe saisi à celui de l’utilisateur
    • paramètre: (str) le mot de passe saisi
    • renvoi: (bool) True si les mots de passe correspondent
  • get_identifiant
    • renvoi: (str) l’identifiant
  • set_identifiant
    • paramètre: (str) le nouvel identifiant
  • get_mdp
    • renvoi: (str) le mot de passe
  • set_mdp
    • change le mot de passe seulement si le nouveau fait 8 caractères ou plus
    • paramètre: (str) le nouveau mot de passe
    • renvoi: (bool) True si le mot de passe a été changé
  • acheter
    • ajouter un article dans le panier
    • paramètre: (Article) l’article acheté
  • calculer_prix
    • renvoi: (float) la somme des prix de tous les articles dans le panier
  • calculer_remise
    • renvoi: (float) la valeur de la remise de 25% si au moins 3 articles achetés, 0 sinon
Méthodes de la classe Article
  • get_nom
    • renvoi: (str) le nom
  • get_description
    • renvoi: (str) la description
  • get_prix
    • renvoi: (float) le prix
  • set_nom
    • change le nom de l’article
    • paramètre: (str) le nouveau nom
  • set_description
    • change la description de l’article
    • paramètre: (str) la nouvelle description
  • set_prix
    • change le prix de l’article
    • paramètre: (float) le nouveau prix
À retenir

Une classe (ou objet) est un modélisation d’un objet réel. Une classe possède:

  • des attributs: les données qui caractérisent l’objet
  • des méthodes: les fonctionnalités de l’objet.
À retenir

Une instance est une construction concrète, produite à partir de l’objet modèle. L’instance est manipulable dans le programme.

instances instances

# Instanciation
u1 = Utilisateur("Superman", "azerty00")

# Utilisation des méthodes
print(u1.get_mdp())
u1.set_mdp("xyz")

0bjets Python

Lang 04

Résumé du cours

Information

En Python, tout est objet et presque tout dispose d’attributs et de méthodes.

Conséquences:

  • Les structures Python (list, tuple, dict) sont des classes prédéfinies.
  • Les fonctionnalités présentées dans la documentation (len, append) sont des méthodes de ces classes.
tab = [1, 2, 3]
# méthode qui ajoute un élément en fin de liste
tab.append(42)
# méthode qui retire et renvoie l'élément d'indice 0
print(tab.pop(0))

Dans un programme, quand on écrit l’instruction :

tab = [1, 2, 3]
print(len(tab))
# est équivalent à
print(tab.__len__())

l’interpréteur Python appelle la méthode __len__() de la classe list.

QCM instanciation

QCM 01

    QCME - Instanciation

    QCME 01

    Évaluation sur Pronote

    Création de classe

    Lang 05

    Résumé du cours

    audioRésumé audio généré par IA IA

    • Pour créer une classe en Python on utilise le mot-clé class.
    • La classe est un squelette, donc pour pouvoir faire une référence interne à l’instance, on utilise le mot-clé self.
    • Pour accéder aux attributs, on définit des méthodes appelées mutateurs et accesseurs.
    class Article:
        def __init__(self, nom: str, desc: str, prix: float):
            self.nom = nom
            self.description = desc
            self.prix = prix
    
        def get_nom(self) -> str:
            return self.nom
    
        def get_description(self) -> str:
            return self.description
    
        def get_prix(self) -> float:
            return self.prix
    
        def set_nom(self, nouv: str) -> None:
            self.nom = nouv
    
        def set_description(self, nouv: str) -> None:
            self.description = nouv
    
        def set_prix(self, nouv: float) -> None:
            self.prix = round(nouv, 2)
    
    class Utilisateur:
        def __init__(self, ident: str, mdp: str):
            self.identifiant = ident
            self.mot_de_passe = mdp
            self.panier = []
    
        def verifier_mdp(self, mdp_saisi: str) -> bool:
            return self.mot_de_passe == mdp_saisi
    
        def get_identifiant(self) -> str:
            return self.identifiant
    
        def set_identifiant(self, nouveau: str) -> None:
            self.identifiant = nouveau
    
        def get_mdp(self) -> str:
            return self.mot_de_passe
    
        def set_mdp(self, nouveau: str) -> bool:
            if len(nouveau) >= 8:
                self.mot_de_passe = nouveau
                return True
            return False
    
        def acheter(self, article: Article) -> None:
            self.panier.append(article)
    
        def calculer_prix(self) -> float:
            prix = 0
            for article in self.panier:
                prix = prix + article.get_prix()
            return prix
    
        def calculer_remise(self) -> float:
            prix = self.calculer_prix()
            remise = 0
            if len(self.panier) >= 3:
                remise = prix * 0.25
            return round(remise, 2)

    Exercices POO

    Lang 06

    Exercices

    Exercice 1 *

    1. Écrire la classe Personne qui possède:
    • les attributs:

      • nom: str
      • age: int
    • la méthode:

      • se_presenter: qui renvoie une chaîne de caractère présentant la personne.
    1. Créer au moins deux instances de Personne

    Exercice 2 *

    1. Définir la classe Rectangle avec les attributs longueur et largeur. Ces attributs seront initialisés par deux arguments passés au moment de l’instanciation.
    2. Ajouter les méthodes:
      • perimetre: renvoie le périmètre du rectangle (nombre flottant),
      • aire: renvoie l’aire du rectangle (nombre flottant),
      • est_carre: renvoie True si le rectangle est un carré.
    3. Écrire un programme qui:
      • crée un rectangle de dimensions 5.3 et 2.8,
      • affiche l’aire et le périmètre du rectangle,
      • vérifie si c’est un carré.

    Exercice 3 *

    1. Créer une classe Menu qui permettra de calculer le prix de l’addition dans un restaurant. Il devra posséder les attributs entree, plat, accompagnement, dessert initialisés à None.

    2. Créer les méthodes prendre_entree, prendre_plat, prendre_accompagnement, prendre_dessert qui auront toutes un paramètre de type str.

    3. Créer la méthode calculer_note qui additionne les prix des mets s’ils ont été choisis:

      • entrée: 8€
      • plat: 10€
      • accompagnement: 3€
      • dessert: 8€

      La méthode renverra la somme à payer.

    4. Instancier un Menu et prendre les plats:

      • plat: steak
      • accompagnement: frites
      • dessert: glace

    Exercice 4 **

    1. Écrire la classe Livre qui possède les attributs ci-après. Ces attributs seront initialisés par trois paramètres passés au moment de l’instanciation.
    Livre
    titre (str)
    auteur (str)
    prix (float)
    1. Créer les mutateurs et accesseurs de ces 3 attributs.

    2. Ajouter la méthode afficher qui renvoie une description du livre sous forme de la chaîne de caractères:

      Le livre titre a été écrit par auteur; il coûte prix €.

    3. Créer des instances de la classe Livre:

    • premier livre:
      • Le guide du voyageur galactique
      • Douglas Adams
      • 6.42
    • deuxième livre:
      • Germinal
      • Émile Zola
      • 7.50
    1. Créer la classe Bibliotheque qui stocke des livres dans un tableau. Créer un accesseur pour cet attribut.
    2. Proposer la signature de sa méthode ajouter_livre et la construire.
    3. Construire la méthode afficher_livres qui crée une chaîne de caractères de l’ensemble des livres de la bibliothèque.
    4. Créer une instance de Bibliothèque et ajouter les livres.
    5. Afficher le premier livre de la bibliothèque.
    6. Afficher tout le contenu de la bibliothèque.

    Exercice 5 **

    Chaque combattant de Fortnite est extrêmement personnalisable. C’est une des caractéristiques qui fait le succès du jeu. Dans cet exercice, on considère qu’il est possible de choisir les éléments:

    • tenue,
    • parachute,
    • trainee.

    De plus, chaque personnage possède un niveau d’énergie et un bouclier, tous les deux initialisés à 100. Enfin, il possède un sac à dos qui peut contenir trois éléments maximum.

    skin fortnite skin fortnite

    Un combattant peut ramasser un élément et le mettre dans son sac à dos, si ce dernier n’est pas plein. On représentera les éléments ramassés par des chaînes de caractères (“Gun”, “shield”,…). Quand un objet est ramassé, un message devra être affiché (qu’il soit ajouté ou non au sac).

    Il peut également subir une attaque d’une certaine valeur (entière). Le bouclier subit l’attaque en premier puis c’est le niveau d’énergie qui baisse si le bouclier atteint zéro.

    1. Modéliser un combattant de Fortnite.
    2. Implémenter en Python, le modèle créé.

    Exercice 6 **

    On définit une classe Date pour représenter une date avec trois nombres entiers pour attributs : jour, mois, annee.

    1. Écrire son constructeur.
    2. Écrire la méthode afficher qui renvoie une chaîne de la forme 8 mai 1945.
    3. Écrire la méthode est_avant qui prend une Date pour paramètre et renvoie True si la date en cours est plus ancienne que celle passée en paramètre.
    4. Écrire un programme qui teste cette classe.

    TP authentification

    Lang 07

    Résumé du TP

    • Création de classes
    • Instanciation
    • Interactions entre objets