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

Étendons 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 parfait exemple de polymorphisme en action.

Tu continueras à travailler avec tes fichiers existants :

  • Shape.lua : ta classe Shape de base reste inchangée.
  • Rectangle.lua : ajoute une méthode :getPerimeter() qui renvoie le périmètre du rectangle à l’aide de la formule 2 × (width + height).
  • Circle.lua : ajoute une méthode :getPerimeter() qui renvoie la circonférence du cercle à l’aide de la formule 2 × π × radius. Utilise math.pi pour π.
  • main.lua : importe les deux modules de formes, lis les dimensions saisies, 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 sont 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 : nom du rectangle, aire du rectangle, périmètre du rectangle, nom du cercle, aire du cercle, périmètre du cercle.

Essayez vous-même

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

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

-- Lire 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éer une nouvelle instance de Rectangle avec les dimensions données
local rect = Rectangle:new(width, height)

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

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

-- Afficher 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