ボクらのScala練習問題その5

第9章 クラスとオブジェクト

object

キーワードobjectを用いて「YamadaTaro」オブジェクトを定義するScalaスクリプトを定義してください。

object YamadaTaro{ }
class

ScalaスクリプトでCustomerクラスを定義してください。

class Customer{ }
new

練習問題「class」で作成したCustomerクラスのインスタンスオブジェクトをnewで生成してください。

val c = new Customer()
シングルトンオブジェクト

練習問題「class」で作成したCustomerクラスのシングルトンオブジェクト「YamadaTaro」を定義するScalaスクリプトを定義してください。

object YamadaTaro{
  val c = new Customer()
}
インスタンス変数

練習問題「class」で作成したCustomerクラスに、名前と住所を格納するためのインスタンス変数を追加してください。

class Customer{
  var name = ""
  var adress = ""
}
メソッド

練習問題「インスタンス変数」で作成したCustomerクラスに、名前と住所を参照と更新するためのメソッドを追加してください。

class Customer{
  var name = ""
  var adress = ""

  def getAdress = {
    adress
  }

  def setAdress(str: String) = {
    adress = str
  }

  def getName = {
    name
  }

  def setName(str: String) = {
    name = str
  }
}
コンストラク

練習問題「メソッド」で作成したCustomerクラスに、名前をパラメータにしたコンストラクタを追加してください。この名前はインスタンス変数に格納され、更新されないようにします。

class Customer(val name: String){
  var adress = ""

  def getAdress = {
    adress
  }

  def setAdress(str: String) = {
    adress = str
  }

  def getName = {
    name
  }
}
補助コンストラク

練習問題「コンストラクタ」で作成したCustomerクラスに、名前の姓と名をパラメータにした補助コンストラクタを追加してください。補助コンストラクタでは引数を空白を区切り記号にして連結して、コンストラクタに渡すこととします。

class Customer(val name: String){
  var adress = ""

  def this(front: String, back: String) = this(front + " " + back)

  def getAdress = {
    adress
  }

  def setAdress(str: String) = {
    adress = str
  }

  def getName = {
    name
  }
}
統一アクセス

練習問題「コンストラクタ」で作成したCustomerクラスに、インスタンス変数として格納している名前と住所に対して統一アクセスできるようにメソッドを追加してください。

class Customer(val nVal: String){
  private var aVal = ""

  def this(front: String, back: String) = this(front + " " + back)

  def adress: String = {
    aVal
  }

  def adress_= (str: String) {
    aVal = str
  }

  def name: String = {
    nVal
  }
}
パッケージとインポート

練習問題「コンストラクタ」で作成したCustomerクラスをパッケージに所属させてください。またREPLでこのCustomerクラスをインポートしてから、newでCustomerクラスのオブジェクトを生成してください。

package customer

class Customer(val nVal: String){
  private var aVal = ""

  def this(front: String, back: String) = this(front + " " + back)

  def adress: String = {
    aVal
  }

  def adress_= (str: String) {
    aVal = str
  }

  def name: String = {
    nVal
  }
}

customer.scalaコンパイル後REPLでimport customer.Customer、new Customer("Toto", "Book")。