Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| teaching:cc4101:tareas:2025-1:tarea3 [2025/06/19 20:35] – [Parte 3 (extra). Campos de Clase (1 pt)] dibanez | teaching:cc4101:tareas:2025-1:tarea3 [2025/07/09 20:04] (current) – [Objetos (1.5 pts)] dibanez | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Tarea 3 (Entrega: | + | ====== Tarea 3 (Entrega: |
| - | Esta tarea se distribuye con un archivo zip (<< | + | Esta tarea se distribuye con un archivo zip ({{ : |
| Debe entregar via U-cursos **un archivo .zip** que contenga los archivos main.rkt y tests.rkt. | Debe entregar via U-cursos **un archivo .zip** que contenga los archivos main.rkt y tests.rkt. | ||
| Line 7: | Line 7: | ||
| <note important> | <note important> | ||
| - | **Recuerde que el testing y calidad de código se evalúan de acuerdo a [[https:// | + | **Recuerde que el testing y calidad de código se evalúan de acuerdo a [[https:// |
| ====== Resumen ====== | ====== Resumen ====== | ||
| Line 204: | Line 204: | ||
| {def init {x y} {begin {set x x} | {def init {x y} {begin {set x x} | ||
| {set y y}}}}}} | {set y y}}}}}} | ||
| - | {init A}}) | + | {new A}}) |
| ; Retorna una instancia donde x e y no están inicializados. | ; Retorna una instancia donde x e y no están inicializados. | ||
| </ | </ | ||
| Line 302: | Line 302: | ||
| </ | </ | ||
| - | ===== Parte 3 (extra). Campos de Clase (1 pt) ===== | + | ===== Parte 3 (extra): Campos de Clase (1 pt de Bonus) ===== |
| - | En las parte 1 implementamos clases con campos y métodos de instancia, además de estos la mayoría de lenguajes que permiten POO soportan campos y métodos de clase, como también campos y métodos estáticos. | + | En la parte 1 implementamos clases con campos y métodos de instancia, además de estos la mayoría de lenguajes que permiten POO soportan campos y métodos de clase, como también campos y métodos estáticos. |
| En esta parte extenderemos el lenguaje con campos de clase, para ello modificaremos la sintáxis de esta forma: | En esta parte extenderemos el lenguaje con campos de clase, para ello modificaremos la sintáxis de esta forma: | ||
| Line 317: | Line 317: | ||
| Tenga en consideración: | Tenga en consideración: | ||
| - | * Un campo de clase solo puede ser modificado por objetos de esa clase. | + | |
| - | * Un campo de clase puede ser leído usando '' | + | * Un campo de clase solo puede ser modificado por objetos de esa clase. |
| - | * No pueden haber campos de clase o instancia con el mismo nombre. Esto debe comprobarse de forma estática. En caso de encontrarse, | + | * Un campo de clase puede ser leído usando '' |
| - | * Si un campo de clase no incluye un valor inicial, entonces se encuentra no inicializado. Intentar acceder a un campo de clase no inicializado debe lanzar el error "class field <id> not initialized" | + | * No pueden haber campos de clase o instancia con el mismo nombre. Esto debe comprobarse de forma estática. En caso de encontrarse, |
| + | * Si un campo de clase no incluye un valor inicial, entonces se encuentra no inicializado. Intentar acceder a un campo de clase no inicializado debe lanzar el error "class field <id> not initialized" | ||
| Programas de ejemplo: | Programas de ejemplo: | ||
| Line 328: | Line 329: | ||
| | | ||
| {set y {+ 1 {get self y}}}}}}} | {set y {+ 1 {get self y}}}}}}} | ||
| - | {o1 {init A 5}} | + | {o1 {new A 5}} |
| - | {o2 {init A 10}} | + | {o2 {new A 10}} |
| - | {o3 {init A 0}}} | + | {o3 {new A 0}}} |
| {get A y}}) | {get A y}}) | ||
| 3 | 3 | ||
| Line 354: | Line 355: | ||
| {o1 {init Test}} | {o1 {init Test}} | ||
| {o2 {init Test}} | {o2 {init Test}} | ||
| - | {begin {-> set-b o1 #t} | + | {begin {-> |
| {get o2 b}}}) | {get o2 b}}}) | ||
| + | #t | ||
| </ | </ | ||
| + | |||
| + | * Realize las modificaciones necesarias para extender el lenguaje con campos de clase. | ||

