En este módulo, exploraremos uno de los conceptos fundamentales de la programación orientada a objetos (POO) en Scala: las clases y los objetos. Scala es un lenguaje que combina características de la programación funcional y la programación orientada a objetos, lo que lo hace muy poderoso y flexible.
Objetivos del Módulo
- Comprender qué son las clases y los objetos en Scala.
- Aprender a definir y utilizar clases y objetos.
- Conocer la diferencia entre clases y objetos.
- Implementar ejemplos prácticos para reforzar los conceptos.
- ¿Qué es una Clase?
Una clase es una plantilla o un plano a partir del cual se crean objetos. Define un conjunto de propiedades (atributos) y métodos (funciones) que los objetos creados a partir de la clase pueden tener.
Definición de una Clase
En Scala, una clase se define utilizando la palabra clave class. Aquí hay un ejemplo básico:
class Persona {
var nombre: String = _
var edad: Int = _
def saludar(): Unit = {
println(s"Hola, mi nombre es $nombre y tengo $edad años.")
}
}Explicación del Código
class Persona: Define una nueva clase llamadaPersona.var nombre: String = _: Declara una variablenombrede tipoString. El guion bajo (_) es un valor por defecto.var edad: Int = _: Declara una variableedadde tipoInt.def saludar(): Unit: Define un métodosaludarque no devuelve ningún valor (Unites similar avoiden otros lenguajes).
- ¿Qué es un Objeto?
Un objeto es una instancia de una clase. Cuando se crea un objeto, se asigna memoria para las variables de la clase y se pueden invocar los métodos definidos en la clase.
Creación de un Objeto
Para crear un objeto en Scala, utilizamos la palabra clave new seguida del nombre de la clase:
Explicación del Código
val persona1 = new Persona: Crea un nuevo objeto de la clasePersonay lo asigna a la variablepersona1.persona1.nombre = "Juan": Asigna el valor"Juan"a la variablenombredel objetopersona1.persona1.edad = 30: Asigna el valor30a la variableedaddel objetopersona1.persona1.saludar(): Llama al métodosaludardel objetopersona1, que imprime un saludo en la consola.
- Constructores
Los constructores son métodos especiales que se utilizan para inicializar objetos. En Scala, el constructor principal se define junto con la clase.
Constructor Principal
class Persona(var nombre: String, var edad: Int) {
def saludar(): Unit = {
println(s"Hola, mi nombre es $nombre y tengo $edad años.")
}
}
val persona2 = new Persona("Ana", 25)
persona2.saludar()Explicación del Código
class Persona(var nombre: String, var edad: Int): Define un constructor principal que toma dos parámetros:nombreyedad.val persona2 = new Persona("Ana", 25): Crea un nuevo objetopersona2de la clasePersonay lo inicializa con los valores"Ana"y25.
- Objetos Singleton
En Scala, un objeto singleton es una clase que solo tiene una instancia. Se define utilizando la palabra clave object.
Definición de un Objeto Singleton
object MiSingleton {
def saludar(): Unit = {
println("Hola desde el objeto singleton!")
}
}
MiSingleton.saludar()Explicación del Código
object MiSingleton: Define un objeto singleton llamadoMiSingleton.def saludar(): Unit: Define un métodosaludardentro del objeto singleton.MiSingleton.saludar(): Llama al métodosaludardel objeto singletonMiSingleton.
Ejercicios Prácticos
Ejercicio 1: Definir una Clase y Crear un Objeto
Define una clase Coche con las propiedades marca y modelo, y un método detalles que imprima la marca y el modelo del coche. Luego, crea un objeto de la clase Coche y llama al método detalles.
class Coche(var marca: String, var modelo: String) {
def detalles(): Unit = {
println(s"Marca: $marca, Modelo: $modelo")
}
}
val miCoche = new Coche("Toyota", "Corolla")
miCoche.detalles()Ejercicio 2: Crear un Objeto Singleton
Define un objeto singleton Contador con una variable cuenta y un método incrementar que aumente el valor de cuenta en 1. Luego, llama al método incrementar y muestra el valor de cuenta.
object Contador {
var cuenta: Int = 0
def incrementar(): Unit = {
cuenta += 1
}
}
Contador.incrementar()
println(s"Cuenta: ${Contador.cuenta}")Resumen
En esta sección, hemos aprendido sobre las clases y los objetos en Scala. Hemos visto cómo definir clases, crear objetos, utilizar constructores y trabajar con objetos singleton. Estos conceptos son fundamentales para la programación orientada a objetos y nos preparan para explorar temas más avanzados en Scala.
En el próximo módulo, profundizaremos en la herencia y los rasgos, que son características clave de la programación orientada a objetos en Scala.
Curso de Programación en Scala
Módulo 1: Introducción a Scala
- Introducción a Scala
- Configuración del Entorno de Desarrollo
- Conceptos Básicos de Scala: Sintaxis y Estructura
- Variables y Tipos de Datos
- Operaciones Básicas y Expresiones
Módulo 2: Estructuras de Control y Funciones
- Sentencias Condicionales
- Bucles e Iteraciones
- Funciones y Métodos
- Funciones de Orden Superior
- Funciones Anónimas
Módulo 3: Colecciones y Estructuras de Datos
- Introducción a las Colecciones
- Listas y Arreglos
- Conjuntos y Mapas
- Tuplas y Opciones
- Coincidencia de Patrones
Módulo 4: Programación Orientada a Objetos en Scala
- Clases y Objetos
- Herencia y Rasgos
- Clases Abstractas y Clases Caso
- Objetos Compañeros
- Objetos Singleton
Módulo 5: Programación Funcional en Scala
- Inmutabilidad y Funciones Puras
- Estructuras de Datos Funcionales
- Mónadas y Funtores
- Comprensiones For
- Manejo de Errores en Programación Funcional
Módulo 6: Conceptos Avanzados de Scala
- Conversiones y Parámetros Implícitos
- Clases de Tipo y Polimorfismo
- Macros y Reflexión
- Concurrencia en Scala
- Introducción a Akka
