Rectangleクラス
CoddyのLuaジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 56/70。
チャレンジ
簡単前のレッスンで作成した基底 Shape を継承する Rectangle class を作成して、Shape Manager を拡張しましょう。
コードを整理するために、次の3つのファイルを扱います。
Shape.lua:前のチャレンジで作成した基底 Shape class(:new(name)と:getName()を含む)。Rectangle.lua:Shape を継承する Rectangle class を作成します。constructor はwidthとheightを受け取り、"Rectangle"という名前で parent constructor を呼び出し、dimensions を保存します。長方形の area を計算して返す:getArea()method を追加します。main.lua:Rectangle module を Require し、input から width と height を読み取り、Rectangle instance を作成して、その名前を表示した後、別の行に area を表示します。
Rectangle instance が prototype chain を通じて Shape の method にアクセスできるように、inheritance のリンクを適切に設定してください。
入力: 2行です。1行目には width(number)、2行目には height(number)が含まれます。
出力: 2行です。まず :getName() による rectangle の名前、次に :getArea() による area を出力します。
自分で試してみよう
-- 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())
オブジェクト指向プログラミングのすべてのレッスン
自分で練習してみよう: Luaオンラインコンパイラ