Menu
Coddy logo textTech

Класс Circle

Часть раздела Object Oriented Programming путешествия по Lua на Coddy — урок 57 из 70.

challenge icon

Задание

Легко

Давайте продолжим создание нашего менеджера фигур, добавив класс Circle наряду с классом Rectangle, который вы создали в предыдущем уроке.

Вы будете работать с четырьмя файлами, чтобы организовать свои фигуры:

  • Shape.lua: Ваш базовый класс Shape с методами :new(name) и :getName().
  • Rectangle.lua: Ваш класс Rectangle из предыдущего задания с методом :getArea().
  • Circle.lua: Создайте класс Circle, который наследуется от Shape. Конструктор должен принимать radius, вызывать конструктор родителя с именем "Circle" и сохранять радиус. Добавьте метод :getArea(), который вычисляет площадь круга по формуле πr². Используйте math.pi для значения π.
  • main.lua: Подключите модули Rectangle и Circle. Прочитайте три значения из входных данных: ширину прямоугольника, высоту прямоугольника и радиус круга. Создайте по одному экземпляру каждой фигуры и выведите четыре строки — имя прямоугольника, площадь прямоугольника, имя круга и площадь круга.

Обе фигуры теперь имеют одинаковый интерфейс благодаря наследованию — у каждой есть метод :getName() от Shape и собственная реализация :getArea(). Этот общий интерфейс пригодится в следующих уроках.

Ввод: Три строки — ширина (число), высота (число) и радиус (число).

Вывод: Четыре строки — имя прямоугольника, площадь прямоугольника, имя круга, площадь круга.

Попробуйте сами

-- Подключить модуль Rectangle
local Rectangle = require('Rectangle')

-- Подключить модуль Circle
-- TODO: Подключите модуль Circle здесь

-- Считать ширину и высоту из ввода
local width = tonumber(io.read())
local height = tonumber(io.read())

-- TODO: Считать радиус из ввода

-- Создать новый экземпляр Rectangle с заданными размерами
local rect = Rectangle:new(width, height)

-- TODO: Создать новый экземпляр Circle с заданным радиусом

-- Вывести имя и площадь прямоугольника
print(rect:getName())
print(rect:getArea())

-- TODO: Вывести имя и площадь круга

Все уроки раздела Object Oriented Programming