Información Básica
-
Créditos: 3
-
Horas de trabajo acompañado: 4 horas por semana
-
Horas de taller : 2 horas cada dos semanas
-
Horas de trabajo independiente: 3 horas por semana
-
Pre-requisitos:
-
Tipo de curso: Núcleo de Formación Fundamental.
Descripción del Curso
El curso de programación Orientada a Objetos y Programación presenta los conceptos de diseño y programación orientada a objetos (OO). El curso se caracteriza por usar la aproximación “Objetos Primero”, la cual es la base del paradigma OO. Adicionalmente se abordarán temas de programación segura y programación orientada a eventos. Se introducen también nociones de ingeniería de software tales como ciclos de vida, diagramas UML, patrones de diseño y PSP (Personal Software Process).
Objetivos
Al finalizar el curso los participantes podrán: Identificar las características del paradigma orientado a objetos. Modelar un problema en el paradigma orientado a objetos. Describir los conceptos básicos de ingeniería de software. Analizar, diseñar e implementar una solución a un problema de mediana escala utilizando el paradigma OO.
Se desarrollan competencias en
* Habilidades específicas: Lenguaje de Programación: C++. Ambiente de Desarrollo: Eclipse. Sistema Operativo: Linux.
-
Conceptos Fundamentales de Computación: Mecanismos de Abstracción, Programación Orientada a Objetos, Diseño de Software, Uso de APIs, Herramientas y Ambientes para Desarrollo de Software, Procesos de Software, Programación Orientada por Eventos.
-
Competencias Generales:
-
Análisis de problemas (desde diferentes perspectivas)
-
Diseño de Soluciones (análisis de alternativas de solución)
-
Análisis-Diseño-Creación-Verificación/pruebas
-
Depuración
-
Aproximación a un modelo a través del ensayo y el error.
-
Introducir la cultura de la normalización
-
Habilidades de comunicación: oral, escrita, escucha.
-
Experiencia significativa en el desarrollo de proyectos
-
Habilidades para trabajar en grupo, habilidades de colaboración
-
Motivación, iniciativa, flexibilidad, adaptabilidad, auto-confianza
-
Mantenerse actualizado, aprendizaje continúo, auto-aprendizaje.
-
Contenido
Capítulo 1: El modelo orientado a objetos
Sesión | Horas teóricas | Práct. acomp. | Temas | Profundidad | Bibliografía |
---|---|---|---|---|---|
1 | 2 | 2 | Presentación del curso | Familiaridad | [1,3] |
Introducción al modelo Orientado a objetos | |||||
2 | 2 | Clases y objetos: descomposición en objetos con estado y comportamiento | Evaluación | [3,5,6] | |
3 | 2 | Clases Abstractas | Evaluación | [3,5,6] | |
4-5 | 4 | Jerarquía de clases: subclases, herencia, agrupación de clases, relación entre subtipos y herencia | Evaluación | [3,5,6] | |
6 | 2 | 2 | Sobrecarga y anulación de operadores | Evaluación | [3,5,6] |
7-8 | 4 | Polimorfismo: Polimorfismo con subtipos, “cast” implícito en lenguajes tipados. Comparación entre el polimorfismo ad hoc (sobrecarga) y el polimorfismo por subtipos | Evaluación | [3,5,6] | |
Despacho dinámico: definición del método de llamado. | |||||
9-10 | 4 | Uso de clases contenedoras, iteradores y otros componentes. | Evaluación | [3,5,6] | |
11 | 2 | imposición de invariantes durante el desarrollo y el mantenimiento de código vs Posponer decisión de tipo en prototipos de manera que permita tanto patrones de codificación flexibles como creación de colecciones heterogéneas | Evaluación | [3,5,6] |
Total de Horas: Teóricas 22. Prácticas 4.
Capítulo 2: Programación segura
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Profundidad | Bibliografía |
---|---|---|---|---|---|
12 | 2 | 2 | Principios básicos. Mediación completa. Economía de mecanismo (Reduciendo la base de computación segura, minimizando la superficie de ataque). Practicas de codificación: Técnicas, dialectos/patrones, mecanismos para construir programas de calidad Codificación defensiva, Codificación segura, manejo de excepciones para hacer programas más robustos y más tolerante a fallas |
Uso | [9, 10] |
13 | 2 | 2 | Problemas potenciales de seguridad en los programas: Desbordamientos de Buffer, enteros y en otros tipo. Condiciones de carrera. Inicialización impropia, incluyendo selección de privilegios. Revisión de entradas, Asumiendo éxitos y corrección, asumiendo validación. Mecanismos para detectar y mitigar errores y saneamiento en entradas y datos. |
Uso | [9,10] |
14 | 2 | Validación con datos al azar (Fuzzing). Estándares de codificación |
Familiaridad | [9, 10] | |
15 | 2 | Lenguajes con tipos seguros y selección del lenguaje de programación. Concepto de verificación y validación. Inspección, revisión y auditoría. Evitando mal uso del código vs permitir más reuso del código. Detectar programas incompletos vs Permitir que programas incompletos corran. Detección de errores tempranos vs detección de errores tardío o evadirlos |
Familiaridad | [9,10] |
Total de Horas: Teóricas 8. Prácticas 4
Capítulo 3: Análisis y diseño
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Profundidad | Bibliografía |
---|---|---|---|---|---|
16 | 2 | Introducción al proceso de modelado de objetos. Paradigmas de diseño: estructurado (descomposición funcional, análisis y diseño O.O, etc..). Programación individual vs programación en gran escala. Consideraciones de los distintos niveles de los sistemas. |
Uso | [4, 8, 9 ] | |
17 | 2 | 2 | Principios de diseño de sistemas: niveles de abstracción (diseño de arquitectura y diseño detallado), separación de responsabilidades, ocultamiento de información, cohesión y acoplamiento, reuso de estructuras estándar) | Uso | [4, 8, 9 ] |
18 | 2 | Descripción funcional de requisitos (caso de usos, historias de usuarios, etc..). Propiedades de los requisitos: consistencia, validez, completitud y viabilidad. Herramientas para el modelado del análisis y el diseño. Describiendo la información del sistema usando por ejemplo diagramas de clases o el modelo entidad relación. |
Familiaridad | [4, 8, 9 ] | |
19 | 2 | Diseño conducido por eventos, diseño a nivel de componentes, centrado en la estructura de datos, orientado a funciones, orientado a servicios. | Familiaridad | [4, 8, 9 ] | |
20 | 2 | Diseño de software de modelos estructurales y de comportamiento. | Familiaridad | [4, 8, 9 ] | |
21 | 2 | 2 | Patrones de diseño | Familiaridad | [4, 8, 9 ] |
22 | 2 | El uso de componentes en diseño: Selección de componentes, diseño, adaptación y ensamblaje de componente y patrones, componentes y objetos (construir una GUI usando un conjunto estándar de widget) | Familiaridad | [4, 8, 9 ] | |
23 | 2 | Estimación del esfuerzo a nivel personal(PSP) | Familiaridad | [4, 8, 9 ] |
Total de Horas: Teóricas 16. Prácticas 4
Capítulo 4: Programación reactiva y dirigida por eventos
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Profundidad | Bibliografía |
---|---|---|---|---|---|
24-25 | 2 | Patrones de arquitectura de Software, I,e., Model-View controller; command objects, online, offline | Uso | [7, 10] | |
26-27 | 4 | 2 | Usos canónicos tales como GUIs dispositivos móviles, robots, servidores: – Definiendo el evento Manejador / Escuchas. – Ciclo principal del evento que no está bajo el control del programador del manejador de eventos. – Eventos externos y eventos generados por el programa. |
Evaluación | [7, 10] |
28 | 2 | Widgets y bibliotecas de widgets | Uso | [7, 10] | |
29-30 | 4 | 1 | Uso de estándares APIs para la construcción de UIS y exhibición de estándares de formatos de medios | Familiaridad | [7, 10] |
Total de Horas: Teóricas 14. Prácticas 3
Uso de material en exámenes
Asistencia
Bibliografía
-
Grady Booch y otros, Object-Oriented Analysis and Design with Applications (3rd Edition). Pearson Education, 2007.
-
Rebecca Wirfs-Brock, Brian Wilkerson, Lauren Wiener, Designing Object Oriented Software. Prentice Hall 1990, ISBN 0136298257
Signatura Biblioteca Javeriana: 005.1 W798d -
Timothy A Budd. An Introduction to Object-Oriented Programming. Addison Wesley Longman. 2002.
-
Rumbaugh, Jacobson y Booch. El Lenguaje Unificado de Modelado. Manual de Referencia.Addison Wesley. 1999.
Signatura Biblioteca Javeriana: 005.1R936u e1 -
David J. Barnes y Michael Kölling. Programación Orientada a Objetos con Java. Una Introducción Práctica usando BlueJ. 3ra Edición. Pearson-Prentice Hall. 2007.
En la Biblioteca Javeriana lo pueden encontrar como Objects first with Java : a practical introduction using BlueJ. – 3ed.. Signatura: 005.117B261o e1 -
Bjarnes Stroustrup, The C++ Programming language, fourth Edition, Addison-wesley.2013
-
Alan Ezust and Paul Ezust, An Introduction to Design Patterns in C++ with Qt. 2nd Edition. Pearson-Prentice Hall. 2012
-
Service-Oriented Architecture : Concepts, Technology, and Design. Thomas Erl. Pearson.
-
Software Architecture in Practice. Len Bass, Paul Clements,Rick Kazman.2012.
-
Matt Bishop, introduction to Computer Security. Prentice All.
Instalaciones
Salón de clase con computador y proyector. Laboratorio de Ingeniería de Sistemas y Computación.