Menu
Coddy logo textTech

Méthode Périmètre

Fait partie de la section Programmation orientée objet 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 Programmation orientée objet

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