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 Dart¶
| Idea | En Dart |
|---|---|
| Constructor principal | Persona(this.nombre, this.edad); |
| Constructores con nombre (en vez de sobrecarga) | Persona.sinNombre(this.edad) : nombre = ''; |
| Propiedad calculada de solo lectura | double get imc => peso / (altura * altura); |
| Privado | nombre que empieza por _ (privado a la biblioteca) |
| Validar al crear | assert(...) o throw ArgumentError(...) en el cuerpo del constructor |
| Herencia | class B extends A, con super.parametro |
| Clase abstracta / interfaz | abstract class / abstract interface class |
| Enumerado | enum Color { blanco, negro } (admite campos y métodos) |
| Datos con igualdad por valor | sobrescribe == y hashCode (o usa el paquete equatable) |
| Parámetro por defecto | {int cantidad = 200} (con nombre) o [int cantidad = 200] (posicional) |
| Extensión | extension X on List<String> { ... } |
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: