División Académica de Ciencias Básicas PROGRAMA DE ESTUDIOS Programación IV Licenciatura en Ciencias Computacionales Área a la que pertenece: Horas teóricas: Horas prácticas: Créditos: Clave: Área Sustantiva Profesional 3 2 8 F0166 Asignaturas antecedentes y subsecuentes Programación III, Programación V PRESENTACIÓN Las tecnologías Orientadas a Objetos se han convertido desde la década de los noventas en uno de los motores claves de la industria del software. El desarrollo de programas orientados a objetos es un enfoque diferente en el mundo informático. Implica la creación de modelos del mundo real y de programas informáticos basados en esos modelos. El principio básico de la programación orientada a objetos es que un sistema de software se ve como una secuencia de “transformaciones” en un conjunto de objetos. Esta materia introduce al alumno en esta nueva forma de abstraer la información y posteriormente programarlo en un lenguaje particular. OBJETIVO GENERAL EL alumno aprenderá una nueva forma de pensar sobre lo que significa programar, es decir, como se puede estructurar un programa para la computadora, cuyo código pueda ser reutilizado. F0166_Programación IV 1/6 División Académica de Ciencias Básicas Licenciatura en Ciencias Computacionales CONTENIDO Unidad 1 No. Objetivo particular Hrs estimadas ELEMENTOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS ( POO) Introducir al alumno en los conceptos básicos que conforman la Programación Orientada a Objetos. Temas 1.0. Programación Estructurada vs. Programación Orientada a Objetos. 1.2. Diferencia entre los lenguajes basados en objetos, basados en clases y orientados a objetos. 1.3. Definición de Programación Orientada a Objetos. 1.4. Orientación a Objetos. 1.5. Elementos del Modelo Orientado a Objetos. 1.6. Abstracción de datos. 1.7. Encapsulamiento 1.8. Modularidad 1.9. Jerarquía 1.10. Polimorfismo Unidad No. Objetivo particular 2 Resultados del aprendizaje El alumno podrá diferenciar entre la programación estructurada y la programación orientada a objetos; así como las características de los Lenguajes OO. OBJETOS El elemento básico de la Programación Orientada a Objetos es el Objeto. En esta unidad el alumno aprenderá las propiedades de los objetos. Hrs estimadas Temas 2.1. Definición de Objeto. 2.2. Métodos y mensajes. 2.3. Clases 2.4. Implementación de clases en un lenguaje de programación. 2.5. Duración de los objetos. 2.6. Diferencia entre Clase y Objeto. 2.7. Herencia. 2.8. Tipos de Herencia. F0166_Programación IV Resultados del aprendizaje El alumno podrá crear clases y objetos (instancias de las clases) y manipularlos. 2/6 División Académica de Ciencias Básicas 2.9. 2.10. 2.11. 2.12. 2.13. 2.14. Licenciatura en Ciencias Computacionales Activación de Objetos. Estructura interna de un objeto. Clases abstractas.. Anulación y sustitución. Sobrecarga. Objetos Compuestos. Unidad 3 No. Objetivo particular Hrs estimadas CONSTRUCCIÓN DE OBJETOS Implementar a través de un lenguaje de programación el paradigma de la Programación Orientada a Objetos. Temas 3.1. Construcción de clases en C++. 3.2. Miembros. 3.3. Privados. 3.4. Públicos. 3.5. Protegidos. 3.6. Constructores y Destructores. 3.7. Declaración de Objetos. 3.8. Especificación e implementación de clases. 3.9. Compilación separada de clases. 3.10. Técnicas de creación e inicialización de objetos 3.11. Objetos dinámicos. 3.12. Inicialización y limpieza de objetos. 3.13. Funciones miembro. 3.14. Control de acceso a los miembros de una clase. Unidad No. Objetivo particular 4 Resultados del aprendizaje El alumno podrá diseñar objetos considerando cada uno de los miembros que debe contener así como el tipo al que pertenece. CLASES ABSTRACTAS Y HERENCIA Las jerarquías de clase forman un papel importante en el diseño y la Programación Orientada a Objetos; las clases de una jerarquía pueden ser abstractas o concretas. En esta unidad el alumno aprenderá a crear clases abstractas y clases derivadas (Herencia). Hrs estimadas Temas 4.1. Clases Abstractas. 4.2. Herencia Simple 4.3. Herencia Múltiple 4.4. Funciones virtuales puras. F0166_Programación IV Resultados del aprendizaje Conocer como programar las herencias en un lenguaje Orientado a Objetos 3/6 División Académica de Ciencias Básicas Unidad No. Objetivo particular 5 Licenciatura en Ciencias Computacionales POLIMORFISMO El polimorfismo permite referirse a objetos de diferentes clases por medio del mismo elemento de programa y realizar la misma operación en forma diferente. En esta unidad se programara el polimorfismo usando ligadura dinámica entre llamadas a funciones y los cuerpos reales de dichas funciones. Hrs estimadas Temas 5.1. Ventajas del Polimorfismo. 5.2. Ligadura. 5.3. Funciones Virtuales. 5.4. Ligadura dinámica mediante funciones virtuales. 5.5. Polimorfismo con y sin ligadura dinámica. Resultados del aprendizaje El alumno podrá abstraer situaciones de la vida real donde se observe claramente el polimorfismo y podrá representarlo en un lenguaje OO. Unidad No. Objetivo particular PLANTILLAS 6 Una de las ideas claves del mundo de la programación es la posibilidad de diseñar clases y funciones generalizadas que actúen sobre tipos arbitrarios o genéricos. El alumno aprenderá como crear plantillas y su utilización Hrs estimadas Temas 6.1. Conceptos fundamentales de las plantillas. 6.2. Definición de plantillas de funciones. 6.3. Problemas en las funciones plantillas. 6.4. Plantillas de Clase. 6.5. Plantillas frente a polimorfismo. Unidad No. Objetivo particular 7 Resultados del aprendizaje El alumno podrá diseñar clases que al ser instanciados puedan ser utilizados con distintos tipos de datos. EXCEPCIONES Cuando una situación anormal se produce durante la ejecución, el programa puede terminar. Es esta unidad el alumno aprenderá a recoger información en el momento exacto antes de que el programa termine, para analizar las causas que provocaron la falla. Hrs estimadas F0166_Programación IV 4/6 División Académica de Ciencias Básicas Temas 7.1. Concepto de excepciones 7.2. Manejo de excepciones 7.3. El mecanismo de excepción. 7.4. Lanzamiento de excepciones 7.5. Manejadores de excepciones. 7.6. Especificación de excepción. Licenciatura en Ciencias Computacionales Resultados del aprendizaje El alumno aprenderá a controlar situaciones que causen que el programa pueda causar un error. Sugerencias didácticas UNIDAD 1 Proporcione ejemplos donde el alumno claramente observe como cambia la abstracción para la solución del problema utilizando la POO. UNIDAD 2 Se recomienda utilizar un lenguaje de POO que no sea visual para que el alumno no se confunda con los componentes que ya se encuentran definidos en este tipo de lenguajes. Puede utilizar estructuras de datos como ejemplos para que el alumno aplique los conceptos de la programación orientada a objetos. El lenguaje recomendado es Turbo C++. UNIDAD 3 El alumno debe elaborar ejercicios prácticos para que observe como funciona el objeto. Es recomendable que utilice objetos conocidos para que el abstraiga sus características y pueda modelarlo correctamente. El lenguaje considerado para impartir el curso el Turbo C++, sin embargo puede utilizar otro lenguaje Orientado a Objetos como JAVA; ó inclusive puede implementar un objeto con los dos lenguajes para que el alumno observe las diferencias. UNIDAD 4 Proporcione ejemplos tipo, para que el alumno observe claramente los tipos de herencias y pueda posteriormente abstraer nuevos casos. Procure que el alumno programe ejercicios donde aplique los tipos de herencia. UNIDAD 5 Esta Unidad está orientada al lenguaje Turbo C++, sin cualquier lenguaje orientado a objetos que sigan estrictamente el paradigma orientado a Objetos ofrecen ligadura dinámica, postergada o retardada. Proporcione ejemplos tipo, para que el alumno comprenda el polimorfismo. UNIDAD 6 Se recomienda hacer plantillas de las estructuras de datos pilas, colas, listas. Esta Unidad está orientada a Turbo C++; Si usted esta empleando otro lenguaje OO puede enseñar algo específico del mismo. UNIDAD 7 Proporcione al alumnos casos en los que observe claramente donde ocurren errores que deben ser controlados. F0166_Programación IV 5/6 División Académica de Ciencias Básicas Licenciatura en Ciencias Computacionales Estrategias de evaluación del aprendizaje El alumno debe realizar tareas donde proporcione ejemplos de cada una de las características de la POO. EL profesor debe evaluar que el alumno domine los conceptos de la POO. El alumno deberá realizar programas donde aplique los temas vistos en la Unidad; estos programas le darán puntos para obtener su nivel de competencia; para obtener su calificación final realice un examen escrito. Para obtener el nivel de competencia de esta Unidad aplique un examen escrito y promedie con las calificaciones obtenidas de cada uno de los programas que el alumno entregó de tarea. Bibliografía Básica Bibliografía Complementaria 1. Joyanes, Luis; Programación Orientada a Objetos. 2da Edición. Madrid:McGraw Hill; 1998. ISBN 84-481-2015-9 2. CEBALLOS, Francisco Javier; El Lenguaje de Programación JAVA; Alfa Omega Grupo Editor, 2002. ISBN 970-15-0793-2 CEBALLOS, Francisco Javier; Programación orientada a objetos con C++ (2ª Edición);Coedición: ComputecRama, 1998. Walnum, Clayton / Stevens, Al; Programación con C++ (Colección: Programación);Editorial Anaya Multimedia. 1a. edición. 19 Octubre 2000. ISBN: 84-415-1083-0. JOYANES Aguilar, Luis; C++ iniciación y referencia; Editorial McGraw-Hill Interamericana. 1999. Deitel, Harvey M. / Deitel, Paul J.; C++ Cómo programar (2ª edición); PRENTICE HALL. 1999. 1184 págs. 19x23.5 cm. BRONSON GARY J.; C++ para ingeniería y ciencias;Editorial INTERNAL. THOMSON EDRS. SA CV. 1999. JAMSA, Kris; Aprenda C++ paso a paso (2ª Edición);Alfaomega Grupo Editor (Computec) 1997. SCHILDT HERBERT;C++ para programadores; Editorial MCGRAW HILL DE MÉXICO. 1996. Stroustrup, Bjarne; El lenguaje de programación C++ (2ª edición);Prentice Hall. 1993. 3. 4. 5. 6. 7. 8. 9. 10. F0166_Programación IV 6/6