750081M INTRODUCCI´ON A LA PROGRAMACI´ON ORIENTADA

Anuncio
750081M
INTRODUCCIÓN A LA PROGRAMACIÓN
ORIENTADA A OBJETOS
Lunes 18:00-20:00, Edf. 331 Salón 2026 – MG
Martes 18:00-20:00, Edf. 331 Sala 1 – MG
MARISOL GOMEZ RAMIREZ.
[email protected]
Lugar de atención: Sala de profesores cátedra
Horario de atención: Lunes 5 a 6 pm.
((Creativity Is Intelligence Having Fun.))Albert Einstein.
Descripción del curso: Introducción a la programación orientada a objetos (IPOO) es un curso
de primeros semestre de Ingeneirı́a de sistemas y de Tecnologı́a en sistemas de información de la
Universidad del Valle. El curso es de 4 (cuatro) créditos, es decir: una intensidad horaria de 4 horas
a la semana de clases y 8 horas a la semana de trabajo adicional, extra-clase. La materia no es
habilitable, si es validable. En la siguiente tabla se resume la información.
Asignatura
Código
Créditos
Intensidad
Habilitable
Validable
Prerrequisitos
Areas ACM – IEEE
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
750081M
4
3 horas magistrales + 1 hora taller a la semana
No
Si
750082M
PF1’, PF2’, PF3’, PF4, PF5’, PF7’
Cuadro 1: Descripción del curso.
Nota(s): La nota mı́nima para aprobar el curso es 3.
1
Textos guı́a:
Eckel, B. (2000). Thinking in C++ Vol. 1 y Vol. 2. Se puede descargar desde: http://www.
bruceeckel. com http://www. teleco. upct. es/docencia.
Stroustrup, B. (2013). The C++ programming language. Pearson Education.
Stroustrup, B. (2013). A Tour of C++. Addison-Wesley.
Stroustrup, B. (2014). Programming: principles and practice using C++. Pearson Education.
Villalobos, S., Jorge, A. (2006). Fundamentos de programación: aprendizaje activo basado
en casos: un enfoque moderno usando Java, UML, Objetos y Eclipse. Naucalpán de Juárez,
Pearson Educación.
Booch, G. (2006). Object Oriented Analysis Design with Application. Pearson Education
India.
Objetivos:
Objetivo general.
Capacitar al estudiante para comprender y aplicar el paradigma OO en la solución de problemas,
mediante la utilización de un lenguaje orientado a objetos.
Objetivos especı́ficos.
Al finalizar el curso el estudiante estará en capacidad de:
1. Analizar y explicar el comportamiento de programas sencillos, que involucren todas las construcciones de control fundamentales.
2. Abordar un problema, descomponiéndolo en pasos elementales, para solucionarlo. Desarrollar
algoritmos para resolver problemas sencillos, e implementar, verificar y depurar algoritmos
en un lenguaje orientado a objetos.
3. Depurar un programa.
4. Resolver problemas con base en el paradigma de programación orientada a objetos, siendo
capaza de seleccionar y aplicar las estructuras de control más apropiadas en cada momento.
5. Identificar las estructuras de datos básicas que sirven para representar información y reconocer
cuando se debe emplear cada una.
6. Resolver problemas con base en el concepto de recursión y que sea capaz de escribir, verificar
y depurar programas recursivos sencillos.
7. Interpretar la documentación de APIs y biliotecas de objetos, y utilizarlas para resolver
problemas.
8. Mantener un buen estilo de programación.
Metodologı́a:
Metodologı́a del curso:
Las clases se dictan con video beam y se utiliza el campus virtual. En el curso se utilizan el
lenguaje de programación C++. Se recomienda utilizar el compilador que trae Linux por defecto
(la distribución puede ser Ubuntu), Se utilizará el IDE de programación Anjuta.
2
El curso está diseñado para trabajar en tres espacios de aprendizaje: clases donde se presentan
los temas y se explica mediante ejemplos (ver temas del curso sección contenidos del curso). Los
talleres que son espacios donde los estudiantes aprenden haciendo, es decir resuelven problemas en
la clase con el acompañamiento del profesor; talleres en grupo y el juego programadores y novatos
(este se describe a continuacion). Finalmente un proyecto donde el estudiante tiene la posibilidad
de desarrollar con mayor autonomı́a un programa basado en programacion orientada a objetos.
Juego Programadores y novatos descripción:
Este juego se llevará a cabo cuatro veces en el semestre, en cada juego se acumulan máximo 5
puntos (es decir al final del semestre la actividad se califica sobre 20 puntos), para cada jugada los
estudiantes inician en 0 puntos.
En cada juego se propone un reto y todos los estudiantes tienen la posibilidad de resolverlo en 30
minutos, se juega la primera iteración del juego, la cual se conoce como Iteración Programadores
Lı́der (IPL), los 5 primeros estudiantes que resuelvan el reto entran en el grupo de Programadores
Lı́der (PL) y obtendrán 4 puntos.
Después se juegan otras 3 iteraciones conocidas como Iteración Programadores Novatos (IPN). En
cada una de ellas los estudiantes que resuelvan el reto entran en el grupo de Programadores Novatos
(PN) y obtendrán 3 puntos (para cada iteración 5 estudiantes entran en el grupo de PN y cada
iteración tiene una duración de 20 minutos). En estas iteraciones del juego tanto los PL como los
PN pueden explicar a los otros estudiantes del curso—cómo resolver el reto.
Si un estudiante resuelve el reto e informa que fué gracias a la explicación de uno de los PL o PN,
llamémoslo Programador P, entonces P obtendrá 0.25 puntos adicionales.
Finalmente se juega una última ronda donde todos los miembros de ese grupo que entreguen el
reto resuelto se llamarán Novatos y obtendrán 2.5 puntos. Si un estudiante no resuelve el reto
obtendrá la nota de 1. En esta iteración final, todos quienes ya resolvieron el reto pueden explicar
a los estudiantes novatos y obtendrán 0.5 puntos adicionales, esto si, el estudiante informa que
fué gracias a la explicación de uno de sus compañeros. En la siguiente tabla se presenta en resumen
las iteraciones y los puntajes.
Iteracion
IPL
IPN
N
No entrega
Programador
4
3
X
X
Novato
X
X
2.5
X
No entrega
X
X
X
1
Explicar
0
0.25
0.5
X
Cuadro 2: Descripcion puntos juego programadores y novatos
3
Evaluación del curso:
Proyecto – Juego Programadores y novatos
Proyecto
Talleres en general y talleres preparcial
Examen final - Primer parte
Examen final - Segunda parte
Total
20 puntos.
20 puntos.
20 puntos.
20 puntos.
20 puntos.
100 puntos
Cuadro 3: Evaluación curso de introducción a la programación orientada a objetos
Contenidos del curso:
Sesión
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Actividad
Presentación del curso, que es la POO, reglas del curso, presentación del programa, dinámica
para conocimiento del grupo.
Introducción a la POO, relaciones entre clases. Ejemplo para aterrizar conceptos.
Problemas, soluciones y programas: motivación, problemas y soluciones, especificación del
problema, procesos y herramientas, la solución a un problema. Ejemplo simulador bancario,
triángulo. Clases en C++, tipos de datos, atributos, métodos (algoritmos), instrucciones de
retorno, llamado a los métodos, instanciar objetos.
Taller. Compilar y ejecutar programas, depuración, verificación y estilo. Organización de los
elementos de trabajo.
Juego Programadores y Novatos.
Encapsulación.
Uso constantes, operadores, expresiones. Condicionales simples y dobles.
Instrucciones repetitivas, for while.
Ciclos dobles.
Práctica sesión 7, 8 y 9.
Juego Programadores y Novatos.
Arreglos, ejemplos (reserva vuelo, tienda libros) Clase Vector, Librerı́a estándar.
Práctica sesión 12.
Arreglos de objetos - Entrega enunciado taller preparcial 1.
Práctica sesión 14 - Entrega enunciado proyecto.
Parcial Primera Parte y entrega del taller preparcial 1.
4
Sesión
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
36
Actividad
Paso de argumentos a métodos, referencias punteros.
Práctica sesión 17.
Sobrecarga de métodos y operadores, argumentos por defecto, constructor copia.
Práctica sesión 19 - Juego Programadores y Novatos.
Recursión y Práctica recursión.
Primera entrega proyecto.
Primera entrega proyecto.
Objetos estáticos y dinámicos. Manejo dinámico de memoria y excepciones.
Práctica sesión 24.
Juego Programadores y Novatos.
Relación entre objetos, copia superficial y copia profunda.
Práctica sesión 27.
Relaciones entre clases, herencia, constructores y destructores, lista de inicialización en constructor, función protected, funciones virtuales.
Práctica sesión 29.
Destructores virtuales, polimorfismo, herencia múltiple - Entrega enunciado taller preparcial 2.
Práctica sesión 31.
Entrega final del proyecto.
Parcial Segunda Parte y entrega del taller preparcial 2.
Opcional Parcial.
Bibliografı́a adicional:
Ricardo Devis Botella. Ç++. STL. Plantillas. Excepciones. Roles y Objetos”, Ed. Paraninfo,
Madrid-España, 1997.
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, ”Design Patterns”, Addison
Wesley, 2000.
Documentación de STL (Standard Template Library). Se consigue gratis en http://www.sgi.com/Technology/
James O. Coplien, .Advanced C++ Programming Styles and Idioms”, Addison-Wesley, 1992.
Tom Cargrill, Ç++ Programming Style”, Prentice-Hall, 1992.
S. Meyers, .Effective C++”, Addison-Wesley, 1998.
S. Meyers, ”More Effective C++”, Addison-Wesley, 1996.
D. R. Musser, A. Saini, ”STL Tutorial and Reference Guide”, Addison-Wesley, 1996. Herbert
Schildt, Ç++ Manual de Referencia”, Mc Graw-Hill, 1995.
5
Descargar