1151044 - Programación Orientada a Objetos
Institución: Universidad Autónoma Metropolitana, Azcapotzalco.
Instructor: Rodrigo Alexander Castro Campos.
Trimestre: 2026-I.
Grupo: CSI01 y CSI81.
Horario: Lunes, miércoles y viernes de 11:30 a 13:00 (CSI01) y de 13:00 a 14:30 (CSI81).
Salón: G-208 (CSI01) y G-206 (CSI81).
Contenido oficial del curso:
- El paradigma de programación orientada a objetos.
- Modelado en el paradigma orientado a objetos en UML.
- Clases y objetos.
- Herencia.
- Interfaces.
- Polimorfismo.
- Excepciones.
- Flujo de datos.
- Bibliotecas de estructuras de datos.
Calificación:
Habrá ocho tareas y cuatro exámenes con una calificación máxima de 10 cada uno. Las tareas consistirán en escribir programas que resuelvan el problema de programación indicado para la evaluación. Cada tarea estará disponible con al menos una semana de anticipación con respecto a la fecha de entrega. Los exámenes consistirán en escribir a papel la implementación de subrutinas o programas que resuelvan el o los problemas especificados. Los exámenes se llevarán a cabo de manera presencial en tiempo de clase y tendrán una duración de 25 minutos. Los exámenes comenzarán 30 minutos antes de terminar la sesión y se requiere asistencia puntual a ellos. La fecha de cada examen se anunciará con al menos una clase de anticipación. No habrá evaluación terminal. El curso se impartirá en los lenguajes C++ y Java.
Una evaluación no presentada recibe cero puntos. La escala de calificación en acta es:
- Al menos 6.0 de promedio en tareas y al menos 6.0 de promedio en exámenes para acreditar con S.
- Al menos 7.3 de promedio en tareas y al menos 7.3 de promedio en exámenes para acreditar con B.
- Al menos 8.7 de promedio en tareas y al menos 8.7 de promedio en exámenes para acreditar con MB.
Todas las actividades anteriormente mencionadas deben realizarse exclusivamente por el alumno a ser evaluado, y no por otras personas ni por herramientas de generación tales como las basadas en inteligencia artificial. De acuerdo al Reglamento de Alumnos de la UAM, es falta de los alumnos en contra de la institución el suplantar o permitir ser suplantado en la realización de actividades académicas, presentar como propios trabajos u obra intelectual que sean de la autoría o titularidad de otra persona, esto en las actividades que se requieran en las UEA, y engañar a una persona para obtener ilícitamente un bien o para alcanzar un beneficio indebido. Quienes incurran en estas faltas no tendrán derecho a aprobar el curso y podrán recibir sanciones por parte de la institución que van desde la amonestación escrita hasta la suspensión.
Pueden consultar esta lista de problemas de "Programación Estructurada" para que practiquen.
Calendario: El calendario es tentativo y podrá cambiar. Pueden consultar programas de ejemplo de los temas del curso.
- 19/01: Presentación del curso. Sistemas de tipos y entornos de ejecución de lenguajes de programación.
- 21/01: Programación estructurada en C++.
- 23/01: Paradigmas de programación.
- 26/01: Abstracción (programación basada en objetos, sobrecarga de operadores aritméticos).
- 28/01: Paso y retorno por valor y por referencia. Sobrecarga de operadores de E/S. Tarea 1 para el 09/02. Página de prueba. Calificaciones.
- 30/01: Apuntadores. Memoria automática y dinámica.
- 02/02: Arreglos como contenedores y arreglos dinámicos o redimensionables.
- 04/02: Implementación de arreglos dinámicos. Invariantes de un tipo de dato.
- 06/02: Encapsulamiento (niveles de acceso, funciones miembro, destructores).
- 09/02: Abstracción (técnica RAII, constructores, copia y asignación).
- 11/02: Abstracción (correctitud de constantes, constructores de varios parámetros).
- 13/02: Constructores explícítos. Uso de
this. Introducción a la programación genérica. Tarea 2 para el 23/02. Observación y página de prueba. Calificaciones.
- 16/02: Documentación de
std::vector. Apuntadores a función y objetos función.
- 18/02: Lambdas y cerraduras. Examen 1. Calificaciones.
- 20/02: Variables y funciones estáticas. Excepciones como mecanismo de reporte de errores.
- 23/02: Secuencias y contenedores de la biblioteca de C++ (arreglos, cadenas, colas dobles). Notas de la sesión.
- 25/02: Contenedores de la biblioteca de C++ (conjuntos y mapas). Flujos estándar. Tarea 3 para el 06/03. Observación y página de prueba. Calificaciones.
- 27/02: Herencia (disposición de miembros y clases base en memoria).
- 02/03: Polimorfismo (funciones virtuales y tablas virtuales).
- 04/03: Día de descanso obligatorio.
- 06/03: Polimorfismo (interfaces y tipos abstractos). Apuntadores inteligentes.
- 09/03: Determinación de tipos en tiempo de ejecución (
dynamic_cast). Niveles de acceso en herencia y constructores de tipos base. Tarea 4 para el 18/03. Observación y página de prueba. Calificaciones.
- 11/03: Determinación de tipos en tiempo de ejecución (
type_id). Polimorfismo y compilación separada.
- 13/03: Diagramas UML estructurales y de comportamiento. Examen 2. Calificaciones.
- 16/03: Programación estructurada en Java.
- 18/03: Distinción entre tipos nativos y objetos (semántica por valor y por referencia).
- 20/03: Manejo de memoria y recursos. Excepciones en Java. Tarea 5 para el 30/03. Observación y página de prueba. Calificaciones.
- 23/03: Clases concretas y herencia. Constructores y funciones miembro.
- 25/03: Paquetes y niveles de acceso.
- 27/03: Clases abstractas e interfaces. Examen 3. Calificaciones.
- 30/03: Determinación de tipos en tiempo de ejecución. Uso de
this. Clases anidadas. Tarea 6 para el 10/04 y página de prueba.
- 01/04: Genéricos y contenedores de Java. Flujos estándar de la biblioteca de Java. Tarea 7 para el 13/04. Observación y página de prueba.
- Día programado para el global: Examen 4 (pondré indicaciones adicionales aquí a más tardar el 3 de abril). Tarea 8 para el 13/04. Observación y página de prueba.
Compiladores de C++:
Entornos de programación de C++ que pueden usar localmente:
Compilador e intérprete de Java:
Entornos de programación de Java que pueden usar localmente:
Entornos de programación que pueden usar en línea:
Bibliografía:
- Eckel B., "Piensa en Java", Prentice Hall, 4a ed., 2007.
- Eckel B., "Thinking in C++", Prentice Hall, 2a ed., Nueva Jersey, 2003.
- Deitel H. M., Deitel P. J., "C++ How to Program - Introducing Object Oriented Design with the UML", Prentice Hall, 3a ed., Nueva Jersey, 2000.
- Fowler M., "UML gota a gota", Addison Wesley Longman, 1a ed., México, 1999.
- Stroustrup B., "The C++ Programming Language", Addison-Wesley, 4ta ed., 2013.
- Cline Marshall., "C++ FAQs", Addison-Wesley, 2da ed., 1999.
- Horstmann C., "Core Java, Volume I: Fundamentals", Pearson, 14va ed., 2025.
Enlaces de interés: