Menu
CoddyTech

周长方法

本课属于 Coddy Lua 学习旅程的“面向对象编程”单元。第 58 课,共 70 课。

challenge icon

挑战

简单

让我们扩展 Shape Manager,为 Rectangle 和 Circle 类都添加一个 :getPerimeter() 方法。和 :getArea() 一样,每种形状计算周长的方式都不同,但它们使用相同的方法名,这是多态的绝佳实例。

你将继续使用已有的文件:

  • Shape.lua:基类 Shape 保持不变。
  • Rectangle.lua:添加一个 :getPerimeter() 方法,使用公式 2 × (width + height) 返回矩形的周长。
  • Circle.lua:添加一个 :getPerimeter() 方法,使用公式 2 × π × radius 返回圆的周长。使用 math.pi 表示 π。
  • main.lua:引入两个形状模块,从输入中读取尺寸,创建一个 Rectangle 和一个 Circle,然后打印六行:依次输出矩形的名称、面积和周长,再输出圆的名称、面积和周长。

现在,这两种形状都有了完整的接口,包含 :getName()、:getArea() 和 :getPerimeter():尽管实现方式不同,都可以通过相同的方法名调用。

输入:三行:宽度(数字)、高度(数字)和半径(数字)。

输出:按顺序输出六行:矩形的名称、矩形的面积、矩形的周长、圆的名称、圆的面积、圆的周长。

亲手试试

-- 加载 Rectangle 模块
local Rectangle = require('Rectangle')

-- 加载 Circle 模块
local Circle = require('Circle')

-- 从输入中读取宽度和高度
local width = tonumber(io.read())
local height = tonumber(io.read())
local radius = tonumber(io.read())

-- 用给定的尺寸创建一个新的 Rectangle 实例
local rect = Rectangle:new(width, height)

-- 用给定的半径创建一个新的 Circle 实例
local circ = Circle:new(radius)

-- 输出矩形的名称、面积和周长
print(rect:getName())
print(rect:getArea())
print(rect:getPerimeter())

-- 输出圆形的名称、面积和周长
print(circ:getName())
print(circ:getArea())
print(circ:getPerimeter())

面向对象编程中的所有课

自己练习: Lua 在线编译器