Intermédiaire
🧠 Fondamentaux
20 XP
0 personnes ont réussi
Classe abstraite
Une classe abstraite est un modèle qu'on ne peut pas instancier directement. Elle sert de contrat : elle dit "toute classe qui herite de moi DOIT implémenter telle méthode".
C'est comme un formulaire a remplir : le formulaire definit les champs obligatoires, mais c'est a chaque personne de les remplir avec ses propres informations.
En Python, on utilise ABC (Abstract Base Class) et @abstractmethod du module abc.
Exemple :
from abc import ABC, abstractmethod
class Instrument(ABC): @abstractmethod def jouer(self): pass
class Guitare(Instrument): def jouer(self): return 'Bling bling'
# Instrument() leveait TypeError, impossible a créer directement g = Guitare() print(g.jouer()) # Bling bling
Crée une classe abstraite Forme avec une méthode abstraite aire(). Puis Cercle(rayon) et Carre(cote) qui implementent aire().
Rappel : aire du cercle = pi * rayon au carre, aire du carre = cote au carre.
Exemple : Cercle(5).aire() renvoie environ 78.54 Carre(4).aire() renvoie 16
Tests (2/4)
Cercle
import math
assert abs(Cercle(5).aire() - math.pi * 25) < 0.01
Carré
assert Carre(4).aire() == 16
+ 0 tests cachés
Indices (3 disponibles)
Solution officielle
from abc import ABC, abstractmethod
import math
class Forme(ABC):
@abstractmethod
def aire(self):
pass
class Cercle(Forme):
def __init__(self, rayon):
self.rayon = rayon
def aire(self):
return math.pi * self.rayon ** 2
class Carre(Forme):
def __init__(self, cote):
self.cote = cote
def aire(self):
return self.cote ** 2