2015 IC EIF204

Anuncio
1/6
Universidad Nacional
Facultad de Ciencias Exactas y Naturales
Escuela De Informática
CARTA AL ESTUDIANTE
CODIGO:
NOMBRE:
REQUISITOS:
NATURALEZA:
AREA DISCIPLINARIA:
NIVEL
CICLO LECTIVO
PROFESOR(A/ES/AS):
EIF-204
Programación II
Programación I
Teórico/ Práctico
Ingeniería de software
II
I Ciclo del 2014
Karol Leiton Arrieta
Marianella Solano Orias
Santiago Caamaño P.
Andrés Araya Ayala
Santiago Caamaño P.
COORDINADOR:
Créditos
Horas semanales
4
11
Horas presenciales
Prácticas
Teóricas
2
2
Horas de estudio
independiente
7
DESCRIPCIÓN:
En este curso el estudiante fortalecerá y ampliará su conocimiento en el paradigma de la
programación orientada a objetos, y lo aplicará en la solución de problemas computacionales
diversos, utilizando un lenguaje de programación orientado a objetos con el fin de construir e
implementar modelos y diseños que no solamente representen los conceptos individuales de clase
y objeto sino también las múltiples relaciones y jerarquías que se dan entre éstos. Para ello utiliza
las diversas características del diseño y la programación orientada a objetos, tales como: herencia,
polimorfismo, asociación, agregación y composición. También se introducirá el concepto de
patrones de diseño, manejo de excepciones y manejo de flujos.
OBJETIVO GENERAL:
Adquirir por parte de los estudiantes las habilidades de la reutilización, modificación del
código, localización de errores y modularización.
OBJETIVOS ESPECÍFICOS:
Se busca que el estudiante esté en capacidad de:
1.
2.
Aplicar las abstracciones fundamentales de programación orientada a objetos para
modelar y resolver problemas.
Comprender en detalle el proceso de creación y manejo de objetos, con énfasis en la
definición correcta de privilegios de acceso y uso eficiente de los recursos de la memoria
3.
4.
5.
6.
7.
2/6
a través de la asignación y liberación de la memoria (manejo de constructores y
destructores).
Modelar e implementar diversos tipos de relaciones y jerarquías entre clases y objetos,
tales como: herencia, asociación, agregación y composición. Así como su manipulación
en memoria (constructores y destructores).
Comprender la importancia de la depuración y la definición de pruebas adecuadas para
asegurar la calidad del código para su reutilización.
Aplicar patrones básicos de diseño para reutilizar código y estructurar las aplicaciones
correctamente.
Introducir al estudiante en el tema de clases parametrizadas y programación genérica.
Estudiar la persistencia y sus principales características
HABILIDADES:
En el contexto del Paradigma Orientado a Objetos (POO) el estudiante al terminar el curso
debes ser capaz de:
1.
2.
3.
4.
5.
6.
7.
Resolver y modelar problemas de programación usando las características de la
programación orientada a objetos.
Identificar clases de objetos de un entorno y la relación entre las clases.
Identificar características y comportamientos de varias clases de objetos.
Desarrollar y presentar soluciones que permitan la reutilización de código.
Elaborar y ejecutar procesos de depuración y pruebas que permitan asegurar una
solución de calidad.
Trabajar adecuadamente en equipos de trabajo, asumiendo sus roles y
responsabilidades y resolviendo adecuadamente los conflictos.
Evaluar su proceso de aprendizaje y el de sus compañeros de grupo.
CONTENIDOS:
1.
Principales características de la POO (Repaso)
(1 semana) – Objetivo 1,2
Definiciones básicas:
 Clase – Objeto
 Atributos
 Operaciones y métodos: tipos de constructores, destructores, mutadores y otros métodos
(calculo - toString).
 Tipos de Acceso: público, privado, protegido, constante y estático
 Instanciación, creación de objetos, modificación de atributos y paso de mensajes.
 Concepto de Polimorfismo: Estático y Dinámico
 Manejo de Interfaces.
2.
Principios de Diseño
(2 semana) – Objetivo 1,2
 Principio Abierto - Cerrado
 Principio de Responsabilidad Única
 Principio de Inversión de Dependencias.
3/6
 Segregación de Interfaz.
 Principio de Sustituibilidad.
 Ley de Deméter.
3.
Jerarquías de clases
(2 semanas) – Objetivo 3
 Concepto de Herencia
 Tipos de Herencia: Simple – Múltiple.
 Definición de Jerarquía, niveles, clase base, clase derivada.
 Constructores y Destructores en jerarquía de clases.
 Constructor de clase base y derivadas. Inicialización de clase base.
 Inicialización de Objetos miembro.
 Sobrecarga.
 Restricciones de visibilidad de los miembros de una clase
 Clases y métodos abstractos.
4.
Relaciones
(2 semanas) – Objetivo 3
 Tipos de relaciones: Generalización, Dependencia y Asociación por Agregación y por Composición.
 Multiplicidad en cada relación.
 Asociaciones binarias y n-arias
 Comprobación del diseño de las clases: principios de diseño, análisis de dependencias, errores de
asociación.
 Detección de problemas de multiplicidad, pruebas para anomalías en la actualización o borrado.
5.
Depuración, pruebas y manejo de errores y excepciones
(2 semanas) – Objetivo 4
 Depuración y pruebas.
 Programación asertiva.
 Manejo de errores y excepciones.
6.
Clases parametrizadas y programación genérica
(2 semanas) – Objetivo 6
 Clases con parámetros de tipo.
 Ventajas y desventajas de la programación genérica.
 Manejo de la programación genérica en la memoria.
7.
Persistencia de datos
(2 semanas) – Objetivo 7
 Manejo de flujos. Flujos binarios y de texto.
 Serialización binaria: de objetos con atributos elementales, objetos con atributos no elementales,
atributos estáticos. Problemas de serialización con dependencias cíclicas.
8.
Patrones de diseño
(3 semanas) – Objetivo 5
 Patrones constructivos.
 Patrones estructurales: MVC (modelo-vista-controlador), implementación de colecciones y
patrones intermediarios.
 Patrones de comportamiento: adaptadores y observadores.
4/6
METODOLOGÍA:
El curso se basa en la exposición magistral por parte del profesor de cada uno de los
contenidos descritos. Además, se harán sesiones de resolución de problemas y prácticas de
laboratorio para enfrentar al estudiante de manera directa con las principales dificultades y técnicas
utilizadas en programación. De esta manera también se logra que el estudiante aplique los
conceptos expuestos en situaciones específicas.
También habrá proyectos de programación que requieren más tiempo del que se dispone
durante las lecciones, donde los estudiantes resuelven en grupo ejercicios de dificultad media o
alta, para conocer, estudiar y resolver problemas representativos.
También podrían hacerse exposiciones sobre diferentes temas, cuyo estudio no puede
hacerse dentro de las limitaciones de tiempo de la clase, pero cuyo conocimiento se considera
importante para conseguir cumplir cabalmente el objetivo general del curso. El contenido de las
exposiciones puede ser evaluado en las pruebas parciales. Para ello, los estudiantes deberán contar
a tiempo con el material correspondiente.
EVALUACIÓN DEL CURSO:
La evaluación del curso estará distribuida de la siguiente manera:
Descripción
Porcentaje
Primer examen parcial (Colegiado)
18%
Cubre los contenidos 1,2,3 y 4
Segundo examen parcial (Colegiado)
18%
Cubre los contenidos 5,6 y 7.
Examen Final (Colegiado)
20%
Cubre todos los contenidos (Incluyendo el 8vo).
Proyecto (Colegiado)
Se realizará un proyecto grupal que servirá para evaluar
aspectos prácticos concretos de los temas estudiados en el
curso. Pueden realizarse en grupos de máximo dos personas.
35%
(Se hará un proyecto,
con siete entregables ,
5 % c/u).
Laboratorios y Quíces. (A cargo del profesor del curso)
9% (Mínimo-tres).
Total
100%
Al ser un curso cuya evaluación contempla aspectos que se desarrollan a lo largo del mismo,
como los laboratorios y proyectos programados, este no tiene examen extraordinario, por lo que
la suma de los porcentajes obtenidos por el estudiante en los rubros anteriores determina su nota
de aprovechamiento (NA), si esta es superior o igual a 70 % el estudiante aprueba el curso, y si la
NA es menor a 70% el estudiante reprueba el curso.
5/6
CRONOGRAMA DE EVALUACIONES:
FECHA ESTIMADA
ACTIVIDAD
SEMANA 1 (9 de febrero al 14 de febrero)
Inicio de Lecciones, Contenido 1
SEMANA 2 (16 de febrero al 21 de febrero)
Contenido 2
SEMANA 3 (23 de febrero al 28 de febrero)
Contenido 3
SEMANA 4 (2 de marzo al 7 de marzo)
Contenido 3
SEMANA 5 (9 de marzo al 14 de marzo)
Contenido 3
SEMANA 6 (16 de marzo al 21 de marzo)
Contenido 4
SEMANA 7 (23 de marzo al 28 de marzo)
Contenido 4
SEMANA SANTA (29 de marzo al 5 de abril)
SEMANA 8 (6 de abril al 11 de abril)
I Examen Parcial (Domingo 12 de abril, 9:00 am)
(El Sábado 11 es Feriado – Día de Juan Santamaría).
Contenido 5
SEMANA 9 (13 de abril al 18 de abril)
Contenido 5
SEMANA 10 (20 de abril al 25 de abril)
Contenido 6
SEMANA 11 (29 de abril al 2 de mayo)
Contenido 7
(El Viernes 1 de Mayo es Feriado – Día del Trabajo)
SEMANA 12 (4 de mayo al 9 de mayo)
Contenido 7
SEMANA 13 (11 de mayo al 16 de mayo)
Contenido 7
SEMANA 14 (18 de mayo al 23 de mayo)
II Examen Parcial (Sábado 25 de mayo, 3:00pm)
Contenido 8
SEMANA 15 (25 de mayo al 30 de mayo)
Contenido 8
6/6
SEMANA 16 (1 de junio al 6 de junio)
Contenido 8.
SEMANA 17 (8 de junio al 13 de junio)
Examen Final (sábado 13 de junio, 3:00pm).
BIBLIOGRAFIA:






Budd, Timothy. An Introduction To Object Oriented Programming. Addison-Wesley, 1991.
Deitel, Harvey y Deitel Paul. C++: cómo programar. Prentice Hall. 6ta edición 2008.
Ellis, Margaret y Stroustrup, Bjarne. C++. Manual de referencia con anotaciones.
Addison-Wesley, 1994.
Savitech Walter. Resolución de problemas con C++. Prentice Hall, 1era edición. 2000
Stroustrup, Bjarne. The C++ Programming Language. Addison-Wesley, 3era edición. 2000
Ceballos, Francisco Javier. Programación Orientada a Objetos en C++. Editor. México. 2004
ESPECIFICACIONES GENERALES :










El proyecto ha sido pensado para ser realizado en grupo (parejas especialmente), pero también
puede ser realizado de manera individual. Además dicho proyecto, es único, separado en siete partes
que se irán solicitando en el transcurso del ciclo. Cada parte tiene un valor promedio de 5%, además
cada grupo (parejas o estudiante individual) se apegará a las fechas de envío de cada entregable, que
están establecidas en la tabla de fechas asignadas, en el enunciado del proyecto.
Es requisito indispensable para ganar el curso la presentación de todos los entregables del proyecto.
En caso, que un entregable no sea presentado o no compile o que no tenga funcionalidad mínima,
la nota es cero, pero el grupo deberá terminarlo para que sirva de base del siguiente entregable.
Debe entenderse por funcionalidad mínima, aquel entregable que realiza no menos de un 50% de su
funcionalidad normal en el momento de su ejecución.
Los entregables del proyecto deben ser realizados en pareja o individualmente y entregados vía
correo electrónico, (o la manera, como el profesor del curso lo disponga) con su respectiva portada,
y todos los archivos tales como con los .docx los .cpp los .h y los .exe respectivamente. El manual
técnico, deberá contener una descripción detallada de cada una de las clases así como de los
atributos y métodos que las conforman de manera que cualquier conocedor de la materia pueda
fácilmente entender cuál es el objetivo de la clase y cuál es el objetivo de cada uno de los atributos
y métodos que lo componen. A su vez, el manual de usuario deberá contener una guía detallada con
pantallas del sistema que explique paso a paso como se llevan a cabo cada una de las funcionalidades
del sistema.
El mismo día de presentación de los entregables (si el profesor de curso así lo dispone) se debe de
realizar una defensa oral del proyecto por parte de todo el grupo
Los exámenes parciales y final se realizarán de manera colegiada por todos los profesores,
preferiblemente un único día para todos los grupos, como establecen las fecha en el cronograma.
En caso de corroborarse algún fraude en la aplicación de alguna evaluación escrita o en la
documentación, algoritmos o implementación de las tareas o proyectos, la Escuela de Informática
aplicará las sanciones establecidas en el reglamento interno de la Universidad Nacional.
El horario disponible para la atención a estudiantes será programado y comunicado por cada
profesor, la asistencia oportuna y comprometida del estudiante le permitirá obtener del profesor en
este espacio: orientación en trabajos asignados durante todo el curso, evacuación de dudas de temas
abordados y la articulación conjunta de ideas para el desarrollo de los trabajos. Este horario no
descarta la posibilidad de que los estudiantes planteen dudas y soliciten orientación vía correo
electrónico.
Por la naturaleza del curso, no hay examen extraordinario.
Descargar