Menu
Coddy logo textTech

口座情報

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

challenge icon

チャレンジ

簡単

あなたのデジタルバンクはよりプロフェッショナルになりつつあります!次は、アカウントをプリントしたときに綺麗に表示されるようにしましょう。__tostring メタメソッドを追加することで、アカウントの表示方法を正確に制御できます。アカウントIDと現在の残高の両方を、クリーンで読みやすい形式で表示するようにします。

既存のファイルをベースに構築を続けます:

  • Account.lua: Accountクラスを2つの新機能で拡張します:
    • 各アカウントを識別する id パラメータを受け取るように :new() コンストラクタを修正します
    • アカウントの情報を表示するフォーマット済み文字列を返す __tostring メタメソッドを追加します
    既存のすべての機能(deposit、withdraw、getBalanceメソッド)はそのまま保持してください。
  • main.lua: IDを持つアカウントを作成し、プリントしたときにどのように表示されるかを実演します。

__tostring メソッドは、以下の正確な形式で文字列を返す必要があります:

Account [ID]: Balance = BALANCE

ここで、ID はアカウントのID、BALANCE は現在の残高です。

4つの入力を受け取ります:

  1. 1つ目のアカウントのID
  2. 1つ目のアカウントの入金額
  3. 2つ目のアカウントのID
  4. 2つ目のアカウントの入金額

メインファイルで、指定されたIDを持つ2つのアカウントを作成し、それぞれに指定された金額を入金し、print() を使用して各アカウントを直接プリントしてください。アカウントオブジェクトをプリントすると、__tostring メタメソッドが自動的に呼び出されます。

例えば、入力が 10015001002750 の場合、出力は以下のようになります:

Account [1001]: Balance = 500
Account [1002]: Balance = 750

各アカウントが固有のアイデンティティを持ち、自分自身を明確に説明できるようになりました。よりプロフェッショナルな銀行体験の完成です!

自分で試してみよう

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

-- 4つの入力を読み込む
local id1 = io.read()
local deposit1 = tonumber(io.read())
local id2 = io.read()
local deposit2 = tonumber(io.read())

-- ID を指定して2つのアカウントを作成する
local account1 = Account:new(id1)
local account2 = Account:new(id2)

-- それぞれの金額を入金する
account1:deposit(deposit1)
account2:deposit(deposit2)

-- 各アカウントを出力する(__tostring を使用)
print(account1)
print(account2)

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