¿Qué son las classes en Scala y cómo funcionan?

| Última modificación: 21 de junio de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Scala se ha convertido en un lenguaje de programación de referencia en Big Data. Por este motivo, es importante conocer los distintos componentes que lo forman. En este post, te compartiremos las classes en Scala y su funcionamiento.

¿Que son las classes en Scala?

Una clase es un proyecto o prototipo definido por el usuario a partir del cual se crean objetos. Es decir, una clase que combina los campos y métodos (función miembro que define acciones) en una sola unidad. Básicamente, en un constructor de clase se usa para iniciar nuevos objetos, los campos son variables que proporcionan el estado de la clase y sus objetos, y los métodos se usan para implementar el comportamiento de la clase y sus objetos.

Declaración de clase

En Scala, una declaración de clase contiene la palabra clave class, seguida de un identificador (name) de la clase. Pero hay algunos atributos opcionales que se pueden usar con la declaración de clase de acuerdo con los requisitos de la aplicación. En general, las declaraciones de clase pueden incluir los siguientes componentes:

  • Keyword class: una keyword class se utiliza para declarar la type class.
  • Class name: El nombre debe comenzar con una letra inicial (normalmente en mayúscula).
  • Superclass: el nombre de class’s parent (superclass), si existe, debe ir precedido por la palabra clave extends. Una class solo puede ir precedido por un parent.
  • Traits: una lista separada por comas de los traits implementados por la class, si existe, precedido por la palabra clave extends. Una class puede implementar más de un trait scala.
  • Body: el class body está rodeado por llaves ( { } ).

Case classes

Además de las clases comunes en el lenguaje de programación scala, tenemos un tipo especial de clase, las llamadas case classes. Las case classes scala son clases que sirven para modelar datos inmutables de manera que te ayudarán en la tarea de definir nuevas instancias pero con un twist en inmutabilidad.

Existen varias ventajas al usar case classes, ventajas sobre la estructura, en como evitamos el boilerplate cuando creamos y usamos una instancia, además de su uso en pattern matching, el compilador te ayuda agregando elementos a tu definición de case classes para simplificar la forma de expresar ciertas operaciones sobre objetos sin demasiado código. Repasemos sus ventajas.

Una case class debe comenzar con case class seguido de un identificador y una lista opcional de parámetros.

Los parámetros de una case class son declarados val y public por default, es por eso que en el ejemplo, en la última línea el compilador detectará que la propiedad sender es val y que dicha propiedad ya fue asignada al momento de crear la instancia asignada a “message1” con el valor de “gil@…”, de esta forma el compilador asegura que la case clase es inmutable. En otros lenguajes que no tienen este tipo de construcciones, es muy complicado detectar esto.

Además, una case class no necesita de la palabra reservada new para crear una instancia pues existe un método apply() (agregado por el compilador) el cual se encarga de su construcción.

Por otro lado, una case class es comparada por su estructura y no por su referencia y todo esto es posible gracias a que el compilador genera por nosotros los métodos toString(), hasCode() y equals(), métodos que implementaríamos manualmente al modelar datos. Por último el compilador nos ayuda agregando un método copy() que es útil para crear nuevas instancias de clase que son las mismas que otras instancias pero con la diferencia de uno o dos atributos.

Si lo comparamos con los java beans o POJO de Java podemos notar lo simple que es crear un clase para modelar datos portables en nuestras aplicaciones. Y si quisiéramos añadir más “poder” a nuestro código las case classes se pueden usar en conjunto con el pattern matching para ayudarnos en la escritura y modelado de estos datos.

Hemos explicado qué son las classes en Scala y algunos tipos que hay y su funcionamiento.

Ahora que sabes qué son las classes en Scala, ¿quieres seguir profundizando en el área? Con nuestro Bootcamp Full Stack en Big Data, Inteligencia Artificial & Machine Learning dominarás todo el ecosistema de lenguajes y herramientas de Big Data en tan solo 9 meses.

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado