Scala es un lenguaje orientado a objetos (con ciertas características funcionales) y como tal, tiene el concepto de Clase Abstracta (Abstract Class).
En cualquier lenguaje de programación, una clase es un patrón que define a muchos objetos. Por ejemplo, si vamos a representar usuarios, podemos tener una clase Person, con campos como nombre, edad, etc. A partir de ese patrón (la clase) podemos crear infinidad de personas diferentes.
Pues bien, una clase abstracta en Scala es una clase creada con el objetivo (aparentemente extraño) de no ser instanciada jamás. Es decir, una clase abstracta jamás tendrá subclases.
Esto se hace así, cuando queremos añadir funcionalidades extra, no a una sola jerarquía de clases, sino a varias. Un ejemplo clásico es cuando queremos que todos los objetos del sistema puedan hacer un log de ciertas actividades para dejar una rastro que pueda ser analizado a posteriori. En ese caso, crearíamos una clase abstracta llamada Logger que define el método log. Cualquier clase que tenga que hacer un log de su actividad, implementaría esa clase abstracta.
¿Qué es una clase abstracta en Scala?
Cuando se habla de clase abstracta en Scala se hace referencia a una clase en la que se tienen métodos que no están implementados. De manera que defines la variable o método que va a tener para que lo implemente otra clase por ti.
Class
En primer lugar, resulta necesario identificar a la opción de Clase antes de la Clase Abstracta en Scala, ya que esta última deriva de la primera. Pues bien, class consiste en designar la clase de determinado objeto, por ejemplo, marcar una categoría de alumno, profesor o hacer un parámetro según un apellido, nombre, etc.
A continuación, te ilustramos cómo se desarrolla en la consola:
class User(val name: String, val lastName: String, var active: Boolean = false) {
val fullName: String = s"$name $lastName"
val role: String = {
if (name == "Carlos") "admin"
else "guess"
}
println("Init block expression")
println(s"Role is: $role")
def greet(): Unit = println(s"Hello i'm $fullName")
}
val user = new User("John", "Doe")
println(user.fullName)
user.active = true
println(user.greet())
Clase Abstracta
Clase Abstracta en Scala se refiere a los comandos en los que se oculta algo, de manera que se abstraen. Además, debes considerar que no admite herencias múltiples.
A continuación, te presentamos cómo se ve su sintaxis en la consola:
abstract class Pet(val name: String, val age: Int) {
val greeting: String
protected val ageMultiplier: Int = 1
def greet(): Unit = {
println(greeting)
}
def getHumanAge(): Int = ageMultiplier * age
def sleep(): Unit
class Dog(name: String, age: Int) extends Pet(name, age) {
val greeting = "I'm a Dog"
override protected val ageMultiplier = 7
override def sleep(): Unit = {
println("Sleeping")
}
}
val dog = new Dog("Rex", 5)
dog.greet()
En este post, te has familiarizado con el comando de clase y Clase Abstracta en Scala, desde la teoría hasta el desarrollo práctico de su sintaxis en la consola. Sin embargo, estos son solo dos componentes de los fundamentales para comprender en profundidad este popular lenguaje de programación. ¡Aún queda mucho por aprender sobre el Big Data!
Si planeas ser todo un experto en los principales sistemas y lenguajes del universo Big Data, desde KeepCoding te traemos nuestro Bootcamp Full Stack Big Data, Inteligencia Artificial & Machine Learning. Durante un periodo de menos de nueve meses, podrás poner a prueba tus destrezas de la mano de profesionales gracias a nuestra metodología hands on, a partir de la que podrás contar con el aprendizaje teórico y práctico. ¡No esperes más para seguir aprendiendo sobre el Big Data y matricúlate!