C# para Unity · Sección 6

POO, composición y objetos válidos

Encapsulación, herencia, polimorfismo, abstracción y composición para repartir responsabilidades sin crear jerarquías frágiles.

3
lecciones
3
ejercicios resueltos
CONTENIDO ORIGINAL

Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.

ANTES DE EMPEZAR

Ubícate antes de avanzar

01 / PUNTO DE PARTIDA

Conviene haber comprendido Decisiones, bucles y estados.

02 / META OBSERVABLE

Al terminar deberías poder relacionar Encapsulación con Polimorfismo y abstracción y resolver un caso nuevo.

03 / TIEMPO SUGERIDO

Reserva entre 35 y 55 minutos para lectura, ejemplos, tres comprobaciones y cierre.

04 / PREPARA EL LABORATORIO

Instala Unity Hub, una versión LTS compatible y un IDE con integración para C#. Conserva un proyecto de laboratorio separado.

Abrir la guía de herramientas →
Diagnóstico rápido: ¿cómo se relacionan Encapsulación y Polimorfismo y abstracción? +

No necesitas acertar todavía. Escribe una hipótesis de dos líneas y compárala con tu respuesta al finalizar; si puedes corregirla y justificar el cambio, hubo aprendizaje.

Ruta guiada · 3 lecciones

Aprende el tema paso a paso

Modelarás estado y comportamiento protegiendo invariantes, y decidirás cuándo usar herencia, contratos o composición.

Al terminar podrás
  • Encapsular significa impedir objetos inválidos
  • Polimorfismo sirve cuando los subtipos cumplen el mismo contrato
  • La composición permite cambiar piezas sin multiplicar subclases
01
Proteger el estado

Encapsular significa impedir objetos inválidos

Campos privados, propiedades de solo lectura y métodos significativos controlan cómo cambia un objeto. La meta no es esconder todo, sino mantener reglas como vida entre cero y máximo.

01

El constructor valida clases C# comunes.

02

Los métodos expresan acciones del dominio.

03

Los eventos comunican cambios después de actualizar el estado.

Comprueba lo aprendido · 01

¿Por qué un setter público para Vida debilita el modelo?

Mostrar respuesta +

Porque permite saltarse límites, eventos y reglas. El objeto deja de ser responsable de conservar su propio estado válido.

02
Especializar

Polimorfismo sirve cuando los subtipos cumplen el mismo contrato

Una clase base puede compartir estado y declarar métodos virtuales o abstractos. Una referencia base ejecuta la implementación concreta. La relación debe ser realmente es-un y cada subtipo debe respetar las expectativas del consumidor.

01

abstract obliga a completar una operación.

02

override hace visible el punto de variación.

03

Una subclase no debe desactivar operaciones normales del contrato.

Comprueba lo aprendido · 02

¿Qué señal indica que una jerarquía de herencia está mal elegida?

Mostrar respuesta +

Que un subtipo debe lanzar excepciones, ignorar métodos o cambiar las precondiciones del contrato para poder encajar.

03
Componer capacidades

La composición permite cambiar piezas sin multiplicar subclases

Un GameObject ya es una composición de componentes. Separar movimiento, salud, ataque y presentación crea capacidades combinables. Las interfaces permiten que colaboren sin conocer detalles concretos.

01

Prefiere tiene-un para capacidades intercambiables.

02

Entrega dependencias explícitas y valida su presencia.

03

Evita que un componente central se convierta en objeto dios.

Comprueba lo aprendido · 03

¿Por qué la composición suele adaptarse bien a Unity?

Mostrar respuesta +

Porque el modelo de GameObject permite agregar y reemplazar componentes, y muchas capacidades cambian de forma independiente durante el diseño.

Resumen de la sección

Tu recorrido en tres ideas

  1. Encapsular significa impedir objetos inválidos
  2. Polimorfismo sirve cuando los subtipos cumplen el mismo contrato
  3. La composición permite cambiar piezas sin multiplicar subclases
CIERRE DE LA SECCIÓN

Comprueba que puedes usarlo

Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.

ERROR 01

Usar herencia solo para reutilizar código aunque la relación no sea es-un.

ERROR 02

Exponer setters que permiten saltarse límites, eventos y reglas.

DESAFÍO INTEGRADOR

Ahora hazlo sin guía

Refactoriza un personaje monolítico en salud, movimiento, ataque y presentación; permite intercambiar dos armas.

Mostrar pauta de corrección +
Una respuesta sólida:
  • Cada componente conserva una responsabilidad y estado válido.
  • Las colaboraciones son explícitas y no dependen de tipos concretos innecesarios.
  • El cambio de arma no exige nuevas subclases de personaje.