U4 · Programación orientada a objetos¶
Leer el resumen
En esta unidad pasas del código suelto a la programación orientada a objetos. Una clase es un molde, y un objeto es cada cosa creada con ese molde. Cada clase tiene atributos, que son sus datos, y métodos, que son lo que sabe hacer. Aprenderás a crear objetos con constructores, a validar los datos al crearlos, y a proteger los atributos con el encapsulamiento, para que nadie los cambie de cualquier manera. También guardarás colecciones de objetos. Y terminas con un proyecto propio.
Pasar del código suelto a clases y objetos: atributos, métodos, constructores, validación, encapsulamiento y colecciones de objetos. Termina con un proyecto personal o en grupo.
Teoría¶
- 4.A Clases y objetos: atributos, métodos, constructor y referencias.
- 4.B Encapsulamiento: visibilidad, validación, propiedades e igualdad.
- 4.C Constructores y enumerados: varias formas de crear un objeto y tipos cerrados.
- 4.D Colecciones y miembros estáticos: objetos que contienen objetos y lo que pertenece a la clase.
- 4.E Del problema al programa: cómo decidir las clases y pasar comportamiento como parámetro.
Antes de empezar: qué debes dominar¶
- Clase, objeto, atributo y método.
- Constructores (principal y alternativos) y valores por defecto.
- Encapsulamiento: visibilidad y propiedades de solo lectura.
- Enumerados, sobrecarga y
toString/igualdad. - Colecciones de objetos y validación con excepciones.
Ejercicios de la unidad¶
Equivalencias de POO en Kotlin¶
| Idea | En Kotlin |
|---|---|
| Constructor principal | class Persona(val nombre: String, var edad: Int) |
| Constructor secundario | constructor(...) : this(...) |
| Propiedad calculada de solo lectura | val imc: Double get() = peso / (altura * altura) |
| Privado | private; private set para modificar solo desde dentro |
| Validar al crear | init { require(...) } |
| Herencia | clases open; class B : A() |
| Clase abstracta / interfaz | abstract class / interface |
| Enumerado | enum class Color { BLANCO, NEGRO } |
| Datos con igualdad por valor | data class |
| Parámetro por defecto | fun agregar(cantidad: Int = 200) |
| Jerarquía cerrada | sealed class |
| Extensión | fun List<String>.filtrar(...) |
Antes de pasar a los ejercicios¶
Cuando hayas leído y practicado la teoría, marca la casilla para desbloquear los ejercicios de esta unidad: