Menu
Coddy logo textTech

Méthode Périmètre

Fait partie de la section Object Oriented Programming du Journey Lua de Coddy — leçon 58 sur 70.

challenge icon

Défi

Facile

Étends notre gestionnaire de formes en ajoutant une méthode :getPerimeter() aux classes Rectangle et Circle. Tout comme :getArea(), chaque forme calcule son périmètre différemment, mais elles partagent le même nom de méthode — un exemple parfait de polymorphisme en action.

Tu continueras à travailler avec tes fichiers existants :

  • Shape.lua : Ta classe de base Shape reste inchangée.
  • Rectangle.lua : Ajoute une méthode :getPerimeter() qui retourne le périmètre du rectangle en utilisant la formule 2 × (width + height).
  • Circle.lua : Ajoute une méthode :getPerimeter() qui retourne la circonférence du cercle en utilisant la formule 2 × π × radius. Utilise math.pi pour π.
  • main.lua : Importe les deux modules de forme, lis les dimensions depuis l'entrée, crée un Rectangle et un Circle, puis affiche six lignes : le nom, l'aire et le périmètre du rectangle, suivis du nom, de l'aire et du périmètre du cercle.

Les deux formes disposent désormais d'une interface complète avec :getName(), :getArea() et :getPerimeter() — toutes accessibles via les mêmes noms de méthodes malgré des implémentations différentes.

Entrée : Trois lignes — width (nombre), height (nombre) et radius (nombre).

Sortie : Six lignes dans l'ordre : le nom du rectangle, l'aire du rectangle, le périmètre du rectangle, le nom du cercle, l'aire du cercle, le périmètre du cercle.

Essayez vous-même

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

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

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

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

-- Crée une nouvelle instance de Circle avec le rayon donné
local circ = Circle:new(radius)

-- Affiche le nom, l'aire et le périmètre du rectangle
print(rect:getName())
print(rect:getArea())
print(rect:getPerimeter())

-- Affiche le nom, l'aire et le périmètre du cercle
print(circ:getName())
print(circ:getArea())
print(circ:getPerimeter())

Toutes les leçons de Object Oriented Programming