trajan's salon

to be simple :j

Kotlinゆったり入門(3日目)

こんばんわ、@trajanmeです。
平日は飲み会や他にやりたいことがあったりするので、週末に書いていければ、と思っています。

trajanme.hateblo.jp

余談ですが、仙台で今ジョジョ展をやっていまして、今日はそれを見てきました。
25周年のときは東京で見ましたが、杜王町のモデルとなった仙台で見ることができて感激でした:)

クラス(オブジェクトベース)

クラスはオブジェクトの1つで、無理やり書くとこんな感じでしょうか。
銀行口座の例で簡単に作ってみましたが、この辺はJavaのクラスとだいたい一緒ですかね。
(実際には、オブジェクトを意識せずに書いたり、インタフェースを使わずに書くこともできますが…)

interface BankInterface {
  fun deposit(quantity: Int)
  fun debit(quantity: Int)
  fun transfer(dest: BankInterface, quantity: Int)

  val account: Int
  var balance: Int
}

class Bank(_account: Int): BankInterface {
  override val account = _account
  override var balance: Int = 0

  override fun deposit(quantity: Int) {
    balance += quantity
  }

  override fun debit(quantity: Int) {
    if (balance >= quantity)
      balance -= quantity
  }

  override fun transfer(dest: BankInterface, quantity: Int) {
    if (balance >= quantity) {
      balance -= quantity
      dest.deposit(quantity)
    } else {
      println("[!] Don\'t have enough money! Please deposit to account.")
    }
  }
}

fun main(args: Array<String>) {
  val bank1: BankInterface = Bank(1234567)
  val bank2: BankInterface = Bank(2345678)

  bank1.deposit(120000)
  bank1.transfer(bank2, 50000)

  println(bank1.balance)
  println(bank2.balance)

  bank1.transfer(bank2, 80000)
}

今日は、オブジェクトとクラスの関係、インタフェースがオブジェクトに型を持たせることができることを学びました。
明日はクラスのsetget、コンストラクタなどを学習していこうと思います。

コードが長くなってきてしまっているので、そろそろGithubに適当なリポジトリを作って管理することも検討します。
バナーでKotlinがなかったので、一応Javaで登録してみました。笑

にほんブログ村 IT技術ブログ Javaへ
にほんブログ村