まとめ - 生徒の成績
CoddyのLuaジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 18/70。
チャレンジ
簡単この章で学んだすべて、つまりインスタンス変数、getter、setter、計算プロパティをすべて組み合わせた完全な Student クラスを作りましょう!
コードを2つのファイルに分けて整理します。
Student.lua:標準的なprototypeパターンを使ってStudentクラスをDefineします。各studentはnameとgradeを保持します。クラスには次の要素が必要です。:new(name, grade)constructor- studentの名前を返す
:getName()getter - current gradeを返す
:getGrade()getter - gradeをupdateする
:setGrade(newGrade)setter - studentのgradeがthreshold以上の場合は
true、otherwiseはfalseを返す:hasPassed(threshold)method
main.lua:Student moduleをRequireし、studentをCreateしてstatusをCheckし、gradeをupdateして変更を確認することで、すべての機能を実演します。
4つのinputsが与えられます。
- Studentの名前
- Initial grade
- Checkするpassing threshold
- 設定するnewGrade
mainファイルで、given nameとinitial gradeを使ってstudentをCreateし、次の内容をそれぞれ別の行にPrintします。
- studentの名前
- studentのinitial grade
- given thresholdでstudentがpassedかどうか(
trueまたはfalseをPrint) - newGradeでupdateした後のstudentのgrade
- gradeのupdate後、同じthresholdでstudentがpassedかどうか
たとえば、inputsが Emma、55、60、75 の場合、outputは次のようになります。
Emma
55
false
75
trueEmmaのinitial gradeは55で、passing thresholdの60を満たしていませんでした。gradeを75にupdateした後、studentはpassedになります!
自分で試してみよう
-- 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: 成績更新後に学生が合格したかどうかを確認して出力する
オブジェクト指向プログラミングのすべてのレッスン
自分で練習してみよう: Luaオンラインコンパイラ