sábado, 30 de noviembre de 2013

Scala ... ejemplos sencillos no. 5

Herencia y clase abstracta en Scala

Herencia: Es la propiedad que permite definir nuevas clases a partir de clases base ya existentes.

Las clases abstractas nos ayudan a representar objetos generales de un objeto,es decir, sus propiedades comunes. Como puede ser el nombre, el tamaño, el tipo, etc.

Las clases abstractas no pueden ser instanciadas. Solo las clases que extienden de ella.


En este ejemplo se define una clase base llamada Vehiculo y una clase hija llamada Moto. La clase Vehiculo tendra las siguientes características:
  • marca
  • tipo y
  • color
A su vez la clase hija tendrá solo una característica: tamaño


[Sintaxis]
class ClaseHija extends ClaseBase{ ... }

Definimos la clase Vehiculo:
abstract class Vehiculo(val _marcax:String=null,val _tipox:String=null,val _colorx:String=null){

  private var _marca:String=_marcax
  private var _tipo:String=_tipox
  private var _color:String=_colorx
 
  //getter 
  def marca = _marca
  //setter 
  def marca_= (value:String):Unit = _marca = value
 
  def tipo=_tipo
  def tipo_=(value:String):Unit=_tipo=value
 
  def color=_color
  def color_=(value:String):Unit=_color=value
 
  def getInfo():String={"marca: "+_marca+" ,tipo: "+_tipo+" , color: "+_color}
 
}


Definimos la clase Moto:

class Moto(override val _marcax:String,override val _tipox:String,override val _colorx:String,val _tamanyox:String=null) extends Vehiculo(_marcax,_colorx,_tipox){

  private var _tamanyo:String=_tamanyox
 
  def tamanyo = _tamanyo
  def tamanyo_= (value:String):Unit = _tamanyo = value
 
  override def getInfo():String={super.getInfo+" ,tamaño: "+_tamanyo}
}

Como se puede ver esto es  similar a Java.  La clase base y la clase hija tendrán código en común. Por último creamos la instancia de la clase Moto:

object Codemonkey extends App{
  val moto=new Moto("Toyota","rojo","sencilla","pequeña")
  println(moto.getInfo)
}

Código: http://www.pasteall.org/47735/java



No hay comentarios:

Publicar un comentario