Skip to content

Claude/csharp poo pedagogical fix x7ix2z - #10

Merged
CesarManzoCode merged 3 commits into
mainfrom
claude/csharp-poo-pedagogical-fix-x7ix2z
Sep 1, 2026
Merged

Claude/csharp poo pedagogical fix x7ix2z#10
CesarManzoCode merged 3 commits into
mainfrom
claude/csharp-poo-pedagogical-fix-x7ix2z

Conversation

@CesarManzoCode

Copy link
Copy Markdown
Owner

No description provided.

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).
@vercel

vercel Bot commented Sep 1, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
cpp-ceti Ready Ready Preview Sep 1, 2026 2:13am UTC

@CesarManzoCode
CesarManzoCode merged commit 2a937d8 into main Sep 1, 2026
3 checks passed
@CesarManzoCode
CesarManzoCode deleted the claude/csharp-poo-pedagogical-fix-x7ix2z branch September 5, 2026 00:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants