Menu
Coddy logo textTech

Класс Circle

Часть раздела Объектно-ориентированное программирование путешествия по Lua на Coddy. Урок 57 из 70.

challenge icon

Задание

Легко

Продолжим создавать наш Shape Manager, добавив класс Circle рядом с Rectangle, который вы создали в предыдущем уроке.

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

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

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

Ввод: три строки: width (число), height (число) и radius (число).

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

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

-- Подключить модуль 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: Вывести имя и площадь круга

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Онлайн-компилятор Lua