Menu
Coddy logo textTech

Classe Círculo

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

challenge icon

Desafio

Fácil

Vamos continuar construindo nosso Shape Manager adicionando uma classe Circle junto ao Rectangle que você criou na lição anterior.

Você trabalhará com quatro arquivos para manter suas formas organizadas:

  • Shape.lua: sua classe Shape base com :new(name) e :getName().
  • Rectangle.lua: sua classe Rectangle do desafio anterior com :getArea().
  • Circle.lua: crie uma classe Circle que herde de Shape. O construtor deve aceitar um radius, chamar o construtor da classe pai com o nome "Circle" e armazenar o raio. Adicione um método :getArea() que calcule a área do círculo usando a fórmula πr². Use math.pi para o valor de π.
  • main.lua: exija os módulos Rectangle e Circle. Leia três valores da entrada: a largura de um retângulo, a altura de um retângulo e o raio de um círculo. Crie uma instância de cada forma e imprima quatro linhas: o nome do retângulo, a área do retângulo, o nome do círculo e a área do círculo.

Agora, ambas as formas compartilham a mesma interface por meio da herança: cada uma possui um método :getName() de Shape e sua própria implementação de :getArea(). Essa interface comum será útil nas próximas lições.

Entrada: Três linhas: largura (número), altura (número) e raio (número).

Saída: Quatro linhas: nome do retângulo, área do retângulo, nome do círculo e área do círculo.

Experimente você mesmo

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

-- Requer o módulo Circle
-- TODO: Requerer o módulo Circle aqui

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

-- TODO: Ler o raio da entrada

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

-- TODO: Criar uma nova instância de Circle com o raio fornecido

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

-- TODO: Imprimir o nome e a área do círculo

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

Pratique por conta própria: Compilador de Lua online