Planificaciones 7507 - Algoritmos y Programación III Docente responsable: FONTELA MOISES CARLOS

Anuncio
7507 - Algoritmos y Programación III
PLANIFICACIONES
Planificaciones
7507 - Algoritmos y Programación III
Docente responsable: FONTELA MOISES CARLOS
1 de 8
Actualización: 1ºC/2016
7507 - Algoritmos y Programación III
PLANIFICACIONES
Actualización: 1ºC/2016
OBJETIVOS
- Desarrollar el paradigma de programación orientada a objetos (POO). Su aplicación en distintos tipos de
problemas.
- Brindar los conocimientos para la programación interactiva con interfaces gráficas.
- Estudiar una arquitectura que permita la separación de incumbencias.
- Estudiar la programación guiada por eventos.
- Conocer y aplicar elementos de documentación y prueba de programas orientados a objetos.
- Evaluar los problemas de concurrencia y persistencia.
- Introducir el concepto de usabilidad y del diseño de interfaces gráficas de usuario.
- Conocer y aplicar lenguajes de programación de POO.
- Adquirir un manejo integral de las técnicas estudiadas mediante la resolución de trabajos prácticos por
computadora.
CONTENIDOS MÍNIMOS
-
PROGRAMA SINTÉTICO
DESARROLLO DE SOFTWARE Y PROGRAMACIÓN
OBJETOS
CLASES
REUTILIZACIÓN
POLIMORFISMO
DOCUMENTACIÓN DE SOFTWARE EN EL PARADIGMA DE OBJETOS
PRUEBAS DE SOFTWARE EN EL PARADIGMA DE OBJETOS
EXCEPCIONES
PROGRAMACIÓN ORIENTADA A OBJETOS: OTROS CONCEPTOS
CALIDAD DE CÓDIGO
TEMAS BÁSICOS DE DISEÑO
DISEÑO DE INTERFACES GRÁFICAS DE USUARIO
INFORMACIÓN DE TIPOS EN TIEMPO DE EJECUCIÓN Y DISTINTOS MODELOS DE DATOS
CONCLUSIONES Y ESTADO DEL ARTE
PROGRAMA ANALÍTICO
UNIDAD 1:
DESARROLLO DE SOFTWARE Y PROGRAMACIÓN
Desarrollo de software. Disciplinas del desarrollo. Programas y sistemas. Problemas de los proyectos de
desarrollo de software.
UNIDAD 2:
OBJETOS
Objetos y mensajes. Objetos y clases. Estado, comportamiento, identidad. Paquetes. Historia hacia la POO.
POO vs. Procedural. Uso en Java, C# y Smalltalk.
UNIDAD 3:
CLASES
Implementación de clases: atributos, métodos y propiedades, constructores, excepciones. Diseño contractual.
TDD o diseño guiado por las pruebas. Objetivos de la orientación a objetos. Abstracción y ocultamiento de
información: encapsulamiento. Atributos de clase. Métodos de clase. Implementación en Java, C# y Smalltalk.
UNIDAD 3:
COLABORACIONES Y REUTILIZACIÓN
Delegación. Herencia. UML: clases, paquetes, secuencias. Cuándo usar herencia y cuándo delegación.
Redefinición. Clases abstractas. Herencia múltiple como concepto. Constructores, destructores, herencia y
composición. Atributos y métodos protegidos. Implementación en Java, C# y Smalltalk.
UNIDAD 4:
POLIMORFISMO
Métodos virtuales. Métodos abstractos. Polimorfismo como concepto. Polimorfismo y vinculación tardía.
Métodos abstractos. Interfaces. Clases internas. Implementación en Java, C# y Smalltalk.
UNIDAD 5:
2 de 8
7507 - Algoritmos y Programación III
PLANIFICACIONES
Actualización: 1ºC/2016
DOCUMENTACIÓN DE SOFTWARE EN EL PARADIGMA DE OBJETOS
Objetivos de la documentación de software. Tipos de documentación según a quién va dirigida. Documentación
para desarrolladores, para usuarios y para administradores y soporte. Diagramas de clases, de secuencia, de
estados y de actividades (notación UML). Autodocumentación de código: comentarios y estándares de
nomenclatura. Documentación en línea. Buena calidad de código.
UNIDAD 6:
PRUEBAS DE SOFTWARE EN EL PARADIGMA DE OBJETOS
Objetivos de las pruebas. Técnicas de prueba: caja blanca y caja negra. Tipos de pruebas: revisiones de
código, unitarias, de integración, de sistema, de aceptación. Pruebas en POO y en entornos interactivos: su
diferencias frente a las pruebas tradicionales. Axiomas sobre datos adecuados de pruebas. Automatización de
pruebas.
UNIDAD 7:
EXCEPCIONES
Dependencia de estados: enfoques conservadores y optimistas. Errores y excepciones. Los modelos
primitivos de excepciones. Los modelos de excepciones de los lenguajes orientados a objetos: lanzamiento y
captura. Excepciones en Java, C# y Smalltalk. Ventajas y desventajas cada modelo de excepciones.
UNIDAD 8:
PROGRAMACIÓN ORIENTADA A OBJETOS: OTROS CONCEPTOS
Colecciones e iteradores. Genericidad. Programación guiada por eventos. Estados, transiciones y diagramas de
estados. Persistencia: objetivos, principios, limitaciones de los lenguajes de POO; tipos de persistencia en
función de la forma de manejar objetos complejos. Concurrencia: introducción. Implementación en Java, C# y
Smalltalk.
UNIDAD 9:
CALIDAD DE CÓDIGO
Calidad en general. Temas de legibilidad. Guías para mejora de desempeño. Otros temas. Implementación en
Java, C# y Smalltalk.
UNIDAD 10:
TEMAS BÁSICOS DE DISEÑO
Modularización. Principios de diseño. Modularización de clases. Modularización de paquetes. Modularización de
métodos. Entropía y diseño. Refactorización. Concepto de patrón. MVC como patrón macro. Implementación en
Java, C# y Smalltalk.
UNIDAD 11:
DISEÑO DE INTERFACES GRÁFICAS DE USUARIO
Interacción humano-computadora (HCI). Por qué centrarse en el usuario. Importancia de la interfaz de usuario.
Aceptación práctica de un sistema. Concepto de usabilidad. Consecuencias de la falta de usabilidad. Estilos de
interfaces. Metodologías de diseño de interfaces. Guías de diseño. Uso de texto y caracteres. Uso de colores
e imágenes. Metáforas y símiles. Colores. Legibilidad. Elementos de control. La atención del usuario.
Estándares externos e internos. Definición de objetivos de usabilidad. Evaluación heurística de la usabilidad.
UNIDAD 12:
INFORMACIÓN DE TIPOS EN TIEMPO DE EJECUCIÓN Y DISTINTOS MODELOS DE DATOS
Transformación de tipos. Uso de información de tipo en tiempo de ejecución. Reflexión. Ventajas y riesgos. Objetos
estáticos y referencias a objetos. Inicialización y liberación de memoria. Copia y clonación. Igualdad e identidad
de objetos. Closures y lambdas. Los casos de Java, C# y Smalltalk.
UNIDAD 13:
CONCLUSIONES Y ESTADO DEL ARTE
Análisis global del paradigma. Objetos en otros lenguajes: C++, Python, otros. Metodología de desarrollo de
software: el caso de los métodos ágiles. Tendencias en desarrollo de software: software como servicio, cloud
computing y SOA. Prácticas y estado del arte en Test-Driven Development.
BIBLIOGRAFÍA
Principal:
Carlos Fontela, “Orientación a objetos, diseño y programación”.
Stephane Ducasse, "Pharo By Example".
Kent Beck, “Test Driven Development: By Example”.
3 de 8
7507 - Algoritmos y Programación III
PLANIFICACIONES
Actualización: 1ºC/2016
Opcional:
Steve McConnell, “Code Complete”.
Kent Beck, “Implementation Patterns”.
Bertrand Meyer, “Desarrollo de software orientado a objetos”.
Robert Martin, “UML para programadores Java”.
Carlos Fontela, "UML".
Bruce Eckel, “Thinking in Java, 3rd. edition”.
Bjarne Stroustrup, "El lenguaje de programación C++", edición especial.
Jakob Nielsen, “Usability Engineering”.
Donald Norman, “The Design of Everyday Things”.
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, “Design Patterns”.
Elizabeth Freeman, “Head-First Design Patterns”.
Martin Fowler, “Refactoring: Improving the Design of Existing Code”.
Kent Beck, “Extreme Programming Explained”.
Fred Brooks, “The Mythical Mon-Month”.
RÉGIMEN DE CURSADA
Metodología de enseñanza
- Clases teórico-prácticas con desarrollo de los temas incluidos en el programa.
- Clases de resolución de problemas y consulta.
- Desarrollo de trabajos prácticos sobre computadora, individuales y en equipos.
- Resolución de ejercicios individuales y en grupo.
Modalidad de Evaluación Parcial
Examen teórico–práctico que incluye la resolución de ejercicios y teoría, con 2 oportunidades de recuperación.
Coloquio integrador, que incluye resolución de ejercicios y teoría, con 3 oportunidades.
4 de 8
7507 - Algoritmos y Programación III
PLANIFICACIONES
Actualización: 1ºC/2016
CALENDARIO DE CLASES
Semana
Temas de
teoría
Resolución
de problemas
<1>
15/08 al 20/08
Presentación
de la materia.
Qué se vio
en las Algo I
y II y qué se
pretende en
esta.
Diferencias
entre POO y
estructurada.
Objetos y su
uso. Trabajo
con objetos
predefinidos.
Todo en
Smalltalk y
Java.
<2>
22/08 al 27/08
Laboratorio
Otro tipo
Fecha entrega
Informe TP
Bibliografía
básica
Presentación
de la
modalidad de
las clases
prácticas.
Introducción a
Smalltalk.
Resolución en
código de un
ejercicio
simple.
No determinado aún
Ver bibliografía en datos generales
de la materia
Implementació
n de objetos
con clases.
Diseño por
contrato. Uso
de
excepciones
sin herencia.
TDD y
pruebas
unitarias.
Todo en
Smalltalk y
Java. El
caso de
JavaScript.
Uso de
clases y
objetos.
Construcción
de clases.
No determinado aún
Ver bibliografía en datos generales
de la materia
<3>
29/08 al 03/09
Colaboracion
es de
objetos.
Delegación.
Diagramas
de clases y
paquetes. Un
ejercicio de
POO antes
de explicar
herencia, con
varias clases
y delegación.
Diagrama de
secuencia.
Herencia.
Delegación
vs.herencia.
Discusión de
la pila y el
vector.
Herencia y
delegación.
Polimorfismo.
No determinado aún
Ver bibliografía en datos generales
de la materia
<4>
05/09 al 10/09
Polimorfismo
con herencia
en Java.
Clases y
métodos
abstractos.
Polimorfismo
sin herencia
en Smalltalk.
Polimorfismo
en JavaScript.
Repaso
No determinado aún
Ver bibliografía en datos generales
de la materia
<5>
12/09 al 17/09
Excepciones
y clases de
excepciones:
lanzamiento
y captura.
Excepciones
y temas
básicos de
codificación.
No determinado aún
Ver bibliografía en datos generales
de la materia
5 de 8
7507 - Algoritmos y Programación III
Semana
Temas de
teoría
Resolución
de problemas
PLANIFICACIONES
Laboratorio
Otro tipo
Actualización: 1ºC/2016
Fecha entrega
Informe TP
Bibliografía
básica
Diagrama de
estados de
UML.
Discusión del
problema del
círculo y la
elipse.
<6>
19/09 al 24/09
Calidad de
código.
Algunas
buenas
prácticas
tomadas de
XP:
refactoring,
TDD,
simplicidad.
Repaso
No determinado aún
Ver bibliografía en datos generales
de la materia
<7>
26/09 al 01/10
Repaso.
Repaso
No determinado aún
Ver bibliografía en datos generales
de la materia
<8>
03/10 al 08/10
Primer
parcial 1ra.
Fecha
Resolución del
parcial
No determinado aún
Ver bibliografía en datos generales
de la materia
<9>
10/10 al 15/10
Repaso de
conceptos de
POO en
lenguajes de
comprobación
estática.
Genericidad.
Trabajo en
Java.
No determinado aún
Ver bibliografía en datos generales
de la materia
<10>
17/10 al 22/10
Principios de
diseño.
MVC.
Nociones de
patrones de
diseño,
como
concepto.
MVC
No determinado aún
Ver bibliografía en datos generales
de la materia
<11>
24/10 al 29/10
Recuperatorio
1er parcial
Temas de
diseño.
Persistencia.
No determinado aún
Ver bibliografía en datos generales
de la materia
<12>
31/10 al 05/11
RTTI,
reflexión.
Closures,
lambdas.
Copia,
clonación.
Recolección
de basura.
Por qué hay
que usar
estas cosas
con cuidado.
Todo en
Smalltalk y
Java.
Modelos de
objetos de
distintos
lenguajes.
Repaso
No determinado aún
Ver bibliografía en datos generales
de la materia
<13>
07/11 al 12/11
Desarrollo de
software y
programación.
Otras
disciplinas de
desarrollo.
Principales
problemas
del desarrollo
de software y
de la
administración
Repaso
No determinado aún
Ver bibliografía en datos generales
de la materia
6 de 8
7507 - Algoritmos y Programación III
Semana
Temas de
teoría
Resolución
de problemas
PLANIFICACIONES
Laboratorio
Otro tipo
Actualización: 1ºC/2016
Fecha entrega
Informe TP
Bibliografía
básica
de proyectos
de software.
Métodos
ágiles.
Scrum y
equipos de
trabajo.
<14>
14/11 al 19/11
Buffer
Repaso
No determinado aún
Ver bibliografía en datos generales
de la materia
<15>
21/11 al 26/11
Repaso
general
Repaso
No determinado aún
Ver bibliografía en datos generales
de la materia
<16>
28/11 al 03/12
FERIADO
Repaso
No determinado aún
Ver bibliografía en datos generales
de la materia
7 de 8
7507 - Algoritmos y Programación III
PLANIFICACIONES
Actualización: 1ºC/2016
CALENDARIO DE EVALUACIONES
Evaluación Parcial
Oportunidad
Semana
Fecha
Hora
1º
8
25/04
16:00
2º
11
16/05
16:00
3º
16
27/06
16:00
Aula
4º
Observaciones sobre el Temario de la Evaluación Parcial
Hace foco en programación orientada a objetos sobre Smalltalk, con énfasis en modelado con UML, decisiones de diseño entre formas
de reutilización (delegación, herencia), polimorfismo y excepciones.
8 de 8
Descargar