Menu
Coddy logo textTech

Classe Cercle

Fait partie de la section Programmation orientée objet du Journey Lua de Coddy. Leçon 57 sur 70.

challenge icon

Défi

Facile

Continuons à construire notre gestionnaire de formes en ajoutant une classe Circle à côté du Rectangle que vous avez créé dans la leçon précédente.

Vous travaillerez avec quatre fichiers pour organiser vos formes :

  • Shape.lua : votre classe Shape de base avec :new(name) et :getName().
  • Rectangle.lua : votre classe Rectangle du défi précédent avec :getArea().
  • Circle.lua : créez une classe Circle qui hérite de Shape. Le constructeur doit accepter un radius, appeler le constructeur parent avec le nom "Circle" et stocker le rayon. Ajoutez une méthode :getArea() qui calcule l’aire du cercle à l’aide de la formule πr². Utilisez math.pi pour la valeur de π.
  • main.lua : requirez vos modules Rectangle et Circle. Lisez trois valeurs saisies : la largeur d’un rectangle, la hauteur d’un rectangle et le rayon d’un cercle. Créez une instance de chaque forme et affichez quatre lignes : le nom du rectangle, l’aire du rectangle, le nom du cercle et l’aire du cercle.

Les deux formes partagent désormais la même interface grâce à l’héritage : chacune possède une méthode :getName() provenant de Shape et sa propre implémentation de :getArea(). Cette interface commune deviendra utile dans les prochaines leçons.

Entrée : trois lignes : largeur (nombre), hauteur (nombre) et rayon (nombre).

Sortie : quatre lignes : nom du rectangle, aire du rectangle, nom du cercle, aire du cercle.

Essayez vous-même

-- Charger le module Rectangle
local Rectangle = require('Rectangle')

-- Charger le module Circle
-- TODO: Charger le module Circle ici

-- Lire la largeur et la hauteur depuis l'entrée
local width = tonumber(io.read())
local height = tonumber(io.read())

-- TODO: Lire le rayon depuis l'entrée

-- Créer une nouvelle instance de Rectangle avec les dimensions données
local rect = Rectangle:new(width, height)

-- TODO: Créer une nouvelle instance de Circle avec le rayon donné

-- Afficher le nom et l'aire du rectangle
print(rect:getName())
print(rect:getArea())

-- TODO: Afficher le nom et l'aire du cercle

Toutes les leçons de Programmation orientée objet

Entraînez-vous par vous-même : Compilateur Lua en ligne