まとめ - 生徒の成績
CoddyのLuaジャーニー「Object Oriented Programming」セクションの一部 — レッスン 18/70。
チャレンジ
簡単この章で学んだこと(インスタンス変数、ゲッター、セッター、計算されたプロパティ)をすべて組み合わせた、完全な Student クラスを作成しましょう!
コードは2つのファイルに分けて構成します:
Student.lua: 標準的なプロトタイプパターンを使用してStudentクラスを定義します。各学生はnameとgradeを保持する必要があります。クラスには以下のものが必要です::new(name, grade)コンストラクタ- 学生の名前を返す
:getName()ゲッター - 現在の成績を返す
:getGrade()ゲッター - 成績を更新する
:setGrade(newGrade)セッター - 学生の成績がしきい値(threshold)以上であれば
trueを、そうでなければfalseを返す:hasPassed(threshold)メソッド
main.lua: Student モジュールをrequireし、学生の作成、ステータスの確認、成績の更新、および変更の検証を行うことで、すべての機能を実演します。
4つの入力を受け取ります:
- 学生の名前
- 初期成績
- 判定に使用する合格しきい値
- 新しく設定する成績
メインファイルで、与えられた名前と初期成績を持つ学生を作成し、以下の内容を別々の行に出力してください:
- 学生の名前
- 学生の初期成績
- 与えられたしきい値で合格したかどうか(
trueまたはfalseを出力) - 新しい成績に更新した後の学生の成績
- 成績更新後、同じしきい値で合格したかどうか
例えば、入力が Emma、55、60、75 の場合、出力は以下のようになります:
Emma
55
false
75
trueEmmaの初期成績は55で、合格しきい値の60を満たしていませんでした。成績を75に更新した後は、合格となります!
自分で試してみよう
-- Studentモジュールを読み込む
local Student = require('Student')
-- 入力を読み込む
local name = io.read()
local initialGrade = tonumber(io.read())
local threshold = tonumber(io.read())
local newGrade = tonumber(io.read())
-- TODO: 指定された名前と初期成績で学生を作成する
-- TODO: ゲッターを使用して学生の名前を表示する
-- TODO: ゲッターを使用して学生の初期成績を表示する
-- TODO: 指定されたしきい値で学生が合格したかどうかを確認して表示する
-- TODO: セッターを使用して学生の成績を更新する
-- TODO: 学生の新しい成績を表示する
-- TODO: 成績更新後に学生が合格したかどうかを確認して表示する