Menu
Coddy logo textTech

Classe Cercle

Fait partie de la section Object Oriented Programming 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 aux côtés 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 de base Shape 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 en utilisant la formule πr². Utilisez math.pi pour la valeur de π.
  • main.lua : Importez vos modules Rectangle et Circle. Lisez trois valeurs à partir de l'entrée : 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 — le nom du rectangle, l'aire du rectangle, le nom du cercle, l'aire du cercle.

Essayez vous-même

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

-- Requiert le module Circle
-- TODO: Requiert le module Circle ici

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

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

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

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

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

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

Toutes les leçons de Object Oriented Programming