Menu
Coddy logo textTech

Rectangleクラス

CoddyのLuaジャーニー「Object Oriented Programming」セクションの一部 — レッスン 56/70。

challenge icon

チャレンジ

簡単

それでは、前のレッスンで作成したベースとなる Shape クラスを継承する Rectangle クラスを作成して、Shape Manager を拡張しましょう。

コードを整理するために、3つのファイルを扱います:

  • Shape.lua: 前回のチャレンジで作成したベースとなる Shape クラスです(:new(name):getName() を含みます)。
  • Rectangle.lua: Shape を継承する Rectangle クラスを作成します。コンストラクタは widthheight を受け取り、親のコンストラクタを "Rectangle" という名前で呼び出し、寸法を保存する必要があります。また、長方形の面積を計算して返す :getArea() メソッドを追加してください。
  • main.lua: Rectangle モジュールをロードし、入力から幅と高さを読み取り、Rectangle インスタンスを作成して、その名前と面積を別々の行に出力します。

Rectangle インスタンスがプロトタイプチェーンを通じて Shape のメソッドにアクセスできるように、継承のリンクを正しく設定することを忘れないでください。

入力: 2行。1行目は幅(数値)、2行目は高さ(数値)です。

出力: 2行。:getName() による長方形の名前、続いて :getArea() によるその面積です。

自分で試してみよう

-- Rectangleモジュールを読み込む
local Rectangle = require('Rectangle')

-- 入力から幅と高さを読み取る
local width = tonumber(io.read())
local height = tonumber(io.read())

-- 指定された寸法で新しいRectangleインスタンスを作成する
local rect = Rectangle:new(width, height)

-- 長方形の名前と面積を表示する
print(rect:getName())
print(rect:getArea())

Object Oriented Programmingのすべてのレッスン