Video 1 · Herencia
La clase hija que hereda de la clase padre. Cómo evitar copiar una clase completa para hacerle una variante, usando class Hijo(Padre) y super().__init__(), y el error silencioso de olvidarlo.
Video 2 · Composición
«Tiene un» contra «es un». La pregunta de una sola línea que decide entre heredar o guardar un objeto completo como atributo, y por qué elegir mal no truena pero sí miente.
Video 3 · Excepciones
Por qué un programa no debería morir por un error. Capturar con try/except un error antes de que tumbe el programa, y ubicar ValueError, TypeError y ZeroDivisionError dentro de la familia que desciende de Exception.
Video 4 · Crea tu propia excepción
Definir una clase de error propia heredada de Exception, lanzarla con raise y atraparla por su nombre, para que el mensaje diga la verdad de lo que pasó.
Sesión de Práctica Semana 1
Dos videos de práctica: construir el padrón Persona → Estudiante con el anexo de domicilio engrapado, y protegerlo con una excepción propia para que la ventanilla no se caiga.
Transferencia 1 · La flotilla que reparte garrafones
Modela con clases la flotilla de una purificadora — herencia con super(), polimorfismo sin un solo if y una relación resuelta con composición — en un dominio que ves por primera vez y sin andamiaje que te diga qué clases crear.
Transferencia 2 · Los cobros de la veterinaria que se caen a media tarde
Rescata el corte de caja de una veterinaria con una excepción propia lanzada con raise y atrapada por su tipo, y defiende por escrito qué problemas decidiste atrapar y cuáles dejar pasar.
Reto 2.1 · Karla no distingue lo urgente de lo que puede esperar
TareaUrgente hereda de Tarea: la jerarquía de tareas de Karla. Aplica herencia y super() sobre tu propio Sistema de Gestión de Inadaptados: TareaUrgente hereda de Tarea, sobreescribe mostrar() y logra que un mismo for recorra tareas de tipos distintos sin un solo if.
Reto 2.2 · Regina tumbó el sistema con un número que no existía
El gestor que no se cae: excepciones propias en GestorDeTareas. Declara TareaNoEncontradaError, lánzala desde marcar_completada() y eliminar_tarea() cuando el índice no existe, y atrápala con try/except para que Regina reciba un aviso en vez de un traceback.
Sesión de práctica: TareaUrgente y el gestor que no se cae, en vivo
Dos videos de práctica: construir TareaUrgente y Responsable sobre tu propio proyecto desde cero, y depurar en vivo un sistema_roto.py con tres errores en cadena más el bug que no truena, con la prueba de paridad antes.txt/después.txt.
Video 5 · Módulos y paquetes
Tu proyecto deja de ser un solo archivo. Separa tu Sistema de Gestión de Inadaptados en excepciones.py, modelos.py, gestor.py y main.py, conéctalos con import, y comprueba con diff que el programa hace exactamente lo mismo antes y después.
Transferencia 3 · El reporte de la lavandería que vive en un solo archivo
Separa en módulos conectados con import el reporte semanal de una lavandería que hoy cabe en un solo archivo, y comprueba que la salida no cambió ni una línea.
El corte del día que no cuadra con las notas de papel
Diagnostica con el método de cuatro pasos por qué el corte del taller Rueda Libre no cuadra con la libreta del mostrador: el programa no truena, no marca error, y aun así cobra mal en silencio.
Qué tienes que entregar (DoD v5) y con qué se te evalúa
Entregable Sprint 2: Sistema de Gestión de Inadaptados v5. Cierra el sprint con herencia, composición y errores bajo control sobre tu propio proyecto repartido en módulos, la evidencia de paridad de comportamiento, la rúbrica de evaluación y las tres transferencias obligatorias a dominios distintos.