Mercurial > hg > Members > nobuyasu > scala
view chapter10/Element_main.scala @ 0:b316eec6fa7a draft default tip
add sample files
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Jan 2013 16:41:46 +0900 |
parents | |
children |
line wrap: on
line source
import Element.elem abstract class Element { def contents: Array[String] val height: Int = contents.length val width: Int = contents.length if (height == 0) 0 else contents(0).length def demo() { println("Element's implementation invoked") } def above(that: Element): Element = elem(this.contents ++ that.contents) def beside(that: Element): Element = { elem ( for ( (line1, line2) <- this.contents zip that.contents ) yield line1 + line2 ) } override def toString = contents mkString "\n" } class ArrayElement(conts: Array[String]) extends Element { def contents: Array[String] = conts final override def demo() { println("ArrayElement's implementation invoked") } } class LineElement(s: String) extends ArrayElement(Array(s)) { override def width = s.length override def height = 1 override def main() { println("LineElement's implementation invoked") } } /* class LineElement(s: String) extends Element { val contents = Array(s) override def width = s.length override def height = 1 } */ class Cat { val dengerous = false } class Tiger { override val dangerous: Boolean, private var age: Int } extends Cat class Tiger(param1: Boolean, param2: Int) extends Cat { override val dengerous = param1 private var age = param2 } class UniformElement { ch: Char, override val width: Int, override val height } extends Element { private val line = ch.toString * width def contents = Array.make(height, line) } def invokeDemo(e: Element) { e.demo() } def main() { val ae = new ArrayElement(Array("hello", "world")) println(ae.width) val e: Element = new ArrayElement(Array("hello")) println(e.width) val e1: Element = new ArrayElement(Array("hello", "world")) val ae: ArrayElement = new LienElement("hello") val e2: Element = ae val e3: Element= new UniformElement(Element('x', 2, 3)) } main()