Menu
Coddy logo textTech

まとめ - 生徒の成績

CoddyのLuaジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 18/70。

challenge icon

チャレンジ

簡単

この章で学んだすべて、つまりインスタンス変数、getter、setter、計算プロパティをすべて組み合わせた完全な Student クラスを作りましょう!

コードを2つのファイルに分けて整理します。

  • Student.lua:標準的なprototypeパターンを使って Student クラスをDefineします。各studentは namegrade を保持します。クラスには次の要素が必要です。
    • :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が与えられます。

  1. Studentの名前
  2. Initial grade
  3. Checkするpassing threshold
  4. 設定するnewGrade

mainファイルで、given nameとinitial gradeを使ってstudentをCreateし、次の内容をそれぞれ別の行にPrintします。

  1. studentの名前
  2. studentのinitial grade
  3. given thresholdでstudentがpassedかどうか(true または false をPrint)
  4. newGradeでupdateした後のstudentのgrade
  5. gradeのupdate後、同じthresholdでstudentがpassedかどうか

たとえば、inputsが Emma556075 の場合、outputは次のようになります。

Emma
55
false
75
true

Emmaの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オンラインコンパイラ