Menu
Coddy logo textTech

Classe Retângulo

Parte da seção Programação Orientada a Objetos do Journey de Lua da Coddy. Lição 56 de 70.

challenge icon

Desafio

Fácil

Agora vamos expandir nosso Shape Manager criando uma classe Rectangle que herda da classe base Shape que você criou na lição anterior.

Você trabalhará com três arquivos para manter seu código organizado:

  • Shape.lua: sua classe base Shape do desafio anterior (com :new(name) e :getName()).
  • Rectangle.lua: crie uma classe Rectangle que herda de Shape. O construtor deve aceitar width e height, chamar o construtor da classe pai com o nome "Rectangle" e armazenar as dimensões. Adicione um método :getArea() que calcula e retorna a área do retângulo.
  • main.lua: importe seu módulo Rectangle, leia a largura e a altura da entrada, crie uma instância de Rectangle e imprima seu nome seguido de sua área em linhas separadas.

Lembre-se de configurar corretamente o vínculo de herança para que as instâncias de Rectangle possam acessar os métodos de Shape por meio da cadeia de protótipos.

Entrada: Duas linhas: a primeira contendo a largura (número), a segunda contendo a altura (número).

Saída: Duas linhas: o nome do retângulo obtido de :getName() e, em seguida, sua área obtida de :getArea().

Experimente você mesmo

-- Requer o módulo Rectangle
local Rectangle = require('Rectangle')

-- Lê a largura e a altura da entrada
local width = tonumber(io.read())
local height = tonumber(io.read())

-- Cria uma nova instância de Rectangle com as dimensões dadas
local rect = Rectangle:new(width, height)

-- Imprime o nome e a área do retângulo
print(rect:getName())
print(rect:getArea())

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Compilador de Lua online