Menu
Coddy logo textTech

Classe Retângulo

Parte da seção Object Oriented Programming do Journey de Lua da Coddy — lição 56 de 70.

challenge icon

Desafio

Fácil

Agora vamos expandir nosso Gerenciador de Formas criando uma classe Rectangle que herda da classe base Shape que você construiu 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 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 o link de herança corretamente para que as instâncias de Rectangle possam acessar os métodos de Shape através 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 vindo de :getName(), seguido por sua área vinda 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 fornecidas
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 Object Oriented Programming