Claude/csharp poo pedagogical fix x7ix2z - #10
Merged
Conversation
U1 (rehecha, 4 → 6 lecciones): separa la lección comprimida en seis pasos que agregan una idea a la vez. pensar-en-objetos ya sólo enseña class/ campos con dominio Producto (sin new/objeto/método); crear-un-objeto es nueva y aísla new/objeto/instancia/acceso con punto; clase-objeto- instancia deja de usar un método Mostrar() para demostrar independencia de estado; estado-y-comportamiento se queda sólo con la traza antes/ después; responsabilidad-del-objeto es nueva y aísla "quién debe hacer la operación" (con if, sin private); abstraccion-con-criterio no cambia. U2: visibilidad ya no mezcla símbolos UML (+/-/#) con la explicación de public/private; protected se menciona en una frase y se remite a U5. Práctica Conversor (utilidad sin estado, instanciada porque sí) se reemplaza por Cronometro, con estado real acumulado por las dos sobrecargas de Registrar. U3: el paso final de csharp-a-uml ya no es "usa Semaforo desde Main" (sólo evaluaba C#); ahora hay un fill_blank que evalúa extracción real de UML antes del challenge de uso. Práctica de Estudiante ya no exige un constructor que el contrato UML no declaraba. Práctica codigo-a-uml-pelicula deja de evaluar sólo C# y ahora pide imprimir el diagrama UML de una clase ya escrita (código→UML real, verificado por stdout). U4: elegir-relacion ya no nombra la relación en el enunciado (antes decía "se asocia con"/"compone"); ahora describe el dominio y el alumno decide. Práctica "Equipo y entrenador" deja de construir el Entrenador inline dentro de new Equipo(...) — ahora se crea aparte, para visualizar una parte preexistente e independiente, como pide la lección. U5: generalizacion-herencia usaba base(...) antes de que base-protected lo explicara — se corrigió a constructores vacíos + campos públicos, aislando sólo la relación es-un. virtual-override-polimorfismo ahora abre con una predicción (Empleado e = new Vendedor(); e.Pago(); SIN virtual/override) antes de introducir el mecanismo, y separa el salto a arreglo+ciclo en su propio paso guiado. Práctica Medicion (Temperatura/ Distancia, abstracción sin significado compartido) se reemplaza por Figura (Rectangulo/Circulo, Area()). U6: Cuenta ahora valida el saldo inicial no negativo desde el constructor (antes prometía el invariante y no lo exigía al nacer). RenglonPedido corrige su vocabulario: es asociación con un Articulo de catálogo, no composición. miniproyecto-dominio corrige "composición" → "asociación" para Alumno/Laboratorio recibidos por Reserva. U7: Saludador, Cotizador y ContadorServicio ganan structureContract (antes se aprobaban con sólo stdout, sin verificar que fueran clases). U8 (unpublished): requisitos-uml-aceptacion ya no promete Cliente y CalculadorDescuento para luego implementar sólo Producto/Cotizacion — el modelo es uno solo, consistente en toda la unidad. Corrige "Cotizacion contiene sus renglones" (composición) → asociación con un Producto existente. implementar-capa-dominio gana structureContract obligatorio (antes el reto final de dominio se aprobaba reproduciendo stdout desde un Main sin clases). Las cuatro prácticas independientes ganan structureContract; la de Orden corrige "compone" → asociación. Verificación: 79/79 piezas de C# compilan y producen la salida esperada (mcs/mono), 96/96 tests de contenido/estructura, 440/440 suite completa, typecheck y lint limpios, build compila (falla sólo por DATABASE_URL/ BETTER_AUTH_SECRET ausentes del sandbox, confirmado con valores dummy). U7/U8 siguen published: false. Sin POO II, sin colecciones genéricas, sin interfaces C#. Slugs existentes conservados; sólo se añadieron los dos slugs de lección que pedía el spec de U1.
1. U1 prácticas (u01-modelar.ts, no tocado antes): Mascota ya no exige
clase+método+objeto+I/O a la vez — la clase y Describir() ya vienen
escritos, sólo se evalúa crear+usar el objeto. Lampara deja de usar
Encender() para demostrar independencia: ahora reasigna un campo y
compara con Console.WriteLine directo, como la lección. Bateria
conserva Main/parsing ya resueltos (el objetivo es dónde vive la
regla, no leer datos). Casillero plantea una decisión real (5
candidatos, sólo 3 pertenecen al modelo) antes de dar la forma exacta
que se califica.
2. U1 estado-y-comportamiento: progresión mínima añadida entre "ordenar
un método" y "escribir Marcador con dos métodos": un fill_blank que
separa completar CUERPO (firma dada) de completar FIRMA (cuerpo
dado), y un code_challenge autónomo de un solo método (Reiniciar())
antes de integrar Sumar+Restar.
3. U3 modelar-requerimientos: la quiz genérica ("qué demuestra mejor
abstracción") se reemplazó por una decisión concreta sobre ESTE
requerimiento — elegir el conjunto correcto de miembros de Articulo
entre cuatro opciones (correcta, con dato inventado, con dato
faltante que la regla necesita, con responsabilidad de GUI) — antes
de implementar exactamente ese modelo.
4. U3/U8 multiplicidades: nunca se enseñaron en U3/U4, así que se
quitaron como requisito del UML final de U8 en vez de enseñarlas
tarde; se documenta explícitamente por qué no se piden.
5. U6 instancia-y-static: secuencia reordenada a instancia-vs-clase →
caso static SEGURO (constante Pi + función pura Area) → caso static
MUTABLE (contador Creados) → costo de usar static como almacén
global accidental. El reto del contador (Entrada/Total) se mantiene
al final, sin cambios.
6. U7 (unidad-07-gui.ts, no tocada antes): la primera lección ahora
explica, en términos concretos para quien abre WinForms por primera
vez: qué es Form, qué es el Toolbox y cómo arrastrar controles,
Name vs Text, cómo conectar un Click, y Form1.cs vs el código del
Designer — sin volverse tutorial gigante. La última lección separa
cognitivamente Parte 1 (estado/referencia que sobrevive entre
eventos) de Parte 2 (organización visual y publicación), cada una
con su propia teoría y evaluación, dentro del mismo slug. Sigue
published: false.
No se reabrió U2/U4/U5 ni el resto de U6/U8 fuera de lo señalado.
Verificación: 81/81 piezas de C# compilan y producen la salida esperada
(mcs/mono), 97/97 tests de contenido/estructura, 441/441 suite completa,
typecheck y lint limpios. No se tocó infraestructura: no se repitió build.
csharp-poo-abstraer-casillero enumeraba los cinco candidatos y, en la misma respiración, revelaba cuáles tres eran correctos y la estructura exacta a implementar (Numero/Propietario/Ocupado/Ocupar/Liberar/ Mostrar). El alumno nunca tenía que derivar nada. El nuevo enunciado plantea los datos posibles de un casillero real, pide identificar cuáles ayudan a registrar un préstamo sin decir cuáles son, y describe el comportamiento requerido (identificar, consultar, ocupar, liberar, mostrar con el formato exacto) en términos de la acción, no del nombre del miembro — remitiendo a la convención PascalCase del curso para que el alumno derive los nombres. El structureContract sigue exigiendo internamente la estructura correcta. Slug, starterCode, solutionCode, structure y testCases sin cambios. Verificación dirigida: tests/content/structure-contracts.test.ts (53/53) y verify-content.ts csharp-poo-1 (81/81 piezas compilan y producen la salida esperada).
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.