Universidad de Chile - Departamento de Ciencias de la Computación
Note
Este repositorio reúne ejemplos progresivos usados en el curso CC3002. Está pensado para estudiantes que vienen de Python y están aprendiendo OOP clásica en Scala por primera vez.
git clone https://github.com/dcc-cc3002/codigo-slides.git
cd codigo-slides
git switch <year>/<semester> # Ej: 2026/1 o 2025/2
sbt compile- Descarga el repositorio con Code > Download ZIP.
- Descomprime la carpeta.
- Abre una terminal dentro del proyecto.
- Ejecuta
sbt compile.
Tip
Abre la carpeta raíz del proyecto en IntelliJ IDEA o VS Code con Metals y espera la importación SBT antes de ejecutar ejemplos o tests.
sbt "project testing" test
sbt "project forComprehensions" "show discoveredMainClasses"Important
En sbt "project forComprehensions" ..., forComprehensions es el id del
proyecto SBT, no el nombre de carpeta. La carpeta correspondiente es
18-for-comprehensions/.
Este repo contiene código de apoyo y ejercicios del curso, organizado por clase
y por tema. Cada carpeta numerada (01-..., 02-..., etc.) es un subproyecto
independiente dentro de un build SBT multi-módulo.
El foco es pedagógico: los ejemplos son deliberadamente pequeños y priorizan claridad sobre robustez o sofisticación. No es un repositorio de código de producción ni incluye las cátedras o diapositivas oficiales.
Usa siempre la rama del semestre que te corresponda. En este repositorio
aparecen, por ejemplo, 2026/1 y 2025/2.
git fetch origin
git switch <year>/<semester>
git pull --ff-only origin <year>/<semester>Si no recuerdas el nombre exacto de la rama, puedes listar las remotas:
git branch -r --list "origin/*/*"Compilar todo:
sbt compileCompilar o probar un módulo específico:
sbt "project testing" compile
sbt "project testing" testListar entry points @main de un módulo:
sbt "project forComprehensions" "show discoveredMainClasses"Ejecutar uno específico:
sbt "project forComprehensions" "runMain cl.uchile.dcc.forcomprehensions.basics.basicsRunner"Si no aparece ningún
@main, compila primero consbt compiley confirma que estás en la rama correcta del semestre.
| Nº | Carpeta | Tema principal |
|---|---|---|
| 01 | static-typing | Tipado estático básico, valores y tipos |
| 02 | intro-oop | Primera mirada a clases, objetos y métodos |
| 03 | testing | Pruebas con MUnit y JUnit |
| 04 | programming-to-abstractions | Programar contra abstracciones |
| 05 | inheritance | Herencia simple y clases abstractas |
| 05x | media-player-exercise | Material extra/opcional: ejercicio aplicado de OOP |
| 06 | overriding-overloading | Overriding, sobrecarga y lookup |
| 07 | encapsulation-and-liskov | Encapsulación y principio de Liskov |
| 08 | double-dispatch | Doble despacho |
| 09 | exceptions | Manejo de excepciones |
| 10 | polymorphism | Polimorfismo revisitado |
| 12 | design-patterns-1 | Patrones introductorios: Observer, State y más |
| 13 | tamagotchi-exercise | Ejercicio Tamagotchi |
| 14 | design-patterns-2 | Factory, Singleton, Composite, Flyweight, Null Object |
| 15 | visitor | Patrón Visitor |
| 16 | expression-problem | Expression Problem, OOP vs FP |
| 17 | intro-functional | Introducción gradual a programación funcional |
| 18 | for-comprehensions | for como azúcar sobre map/flatMap/withFilter |
Las clases faltantes del semestre no siempre viven en este repo. Para material complementario adicional, revisa: dcc-cc3002/clases-2025-2.
Para el módulo 04, revisa su documentación específica en 04-programming-to-abstractions/README.md.
- Scala:
3.7.3 - SBT:
1.11.x - JDK:
17+ - Tests: MUnit en todos los módulos, JUnit 5 en
03-testing - Alias útil:
sbt ciejecuta;clean;compile;test - Documento histórico del curso: docs/CC3002-programa-primavera-2021-transcripcion.md
Este material se distribuye bajo CC BY 4.0. Texto completo: creativecommons.org/licenses/by/4.0.
Uso estrictamente educativo: algunas implementaciones se simplifican para destacar conceptos por sobre rendimiento o robustez extrema.