Esta asignatura contribuye al desarrollo de la competencia

Anuncio
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
FACULTAD DE INGENIERIA
SYLLABUS
PROYECTO CURRICULAR: Ingeniería de Sistemas
NOMBRE DEL DOCENTE:
ESPACIO ACADÉMICO (Asignatura): Programación Orientado a Objetos
Obligatorio (X )
Electivo
( )
: Básico (X)
: Intrínsecas ( X )
Complementario (
Extrínsecas ( )
CÓDIGO:
)
NUMERO DE ESTUDIANTES:
GRUPO:
NÚMERO DE CREDITOS: 3
TIPO DE CURSO:
TEÓRICO ( )
PRACTICO ( )
TEO-PRAC (X)
Alternativas metodológicas:
Clase Magistral (X), Seminario ( ), Seminario – Taller ( ), Taller (X), Prácticas (X), Proyectos tutoriados (X),
Otro: ________________________
HORARIO:
DIA
HORAS
SALON
I. JUSTIFICACIÓN DEL ESPACIO ACADÉMICO
Competencias del perfil a las que
contribuye la asignatura:
Esta asignatura contribuye al desarrollo de la competencia “Resuelve
problemas computacionales algorítmicamente” que se encuentra en
el dominio de “programación” del área “básicas de ingeniería” del
proyecto curricular de ingeniería de sistemas
Contribución a la formación:
En este espacio académico se establecen las bases de la aplicación
del paradigma orientado a objetos y se le brindan al estudiante las
herramientas para la aplicación de los principios y características de
este paradigma para fortalecer en el estudiante las habilidades en el
desarrollo de programas computacionales. Estas habilidades se
reconocen como claves dentro del dominio del perfil de
“Programación”.
Puntos de apoyo para otras
asignaturas:
En Ingeniería de Sistemas herramienta fundamental para:


Estructura lógica conceptual basada en paradigmas de
programación.
Programación orientada a objetos, Programación avanzada y
modelos de programación. Ingeniería de software. Bases de
datos, Redes, Ciencias de la computación.
En Ingeniería Industrial herramienta fundamental para:

Programación lineal, gestión tecnológica, teoría de colas y
simulación, programación y control de producción, logística,
gestión de operaciones.
En Ingeniería Catastral herramienta fundamental para:

 SIG, bases de datos, interfaces SIG
En Ingeniería Eléctrica herramienta fundamental para:

 Área de circuitos, área de electrónica, probabilidad y
estadística, sistemas dinámicos, redes de comunicaciones,
digitales, herramientas computacionales, campos, generación
hidráulica y generación térmica.
En Ingeniería Electrónica herramienta fundamental para:






Requisitos previos:
Sobre escritura, variables polimórficas y genericidad.
Entiende las relaciones entre los distintos tipos de
polimorfismo.
Entiendo los mecanismos de gestión de errores que ofrecen
algunos lenguajes de programación.
Entiende el concepto de persistencia.
Entiende y aplica los conceptos básicos sobre modelado de
datos.
Entiende los conceptos básicos sobre modelado.
Programación básica
II. PROGRAMACION DEL CONTENIDO
OBJETIVO GENERAL
Presentar al estudiante la conceptualización y aplicación del paradigma orientado a objetos, enfatizando
en los elementos conceptuales propios de este que permitan plantear y aplicar modelos bien formados
utilizando un lenguaje de programación orientado a objetos
OBJETIVOS ESPECÍFICOS
1. Determinar los tipos de aplicación y las situaciones en las que se debe aplicar el paradigma
orientado a objetos.
2. Comprender, interpretar y analizar el cambio de enfoque en el modo de resolver problemas que
supone el uso del paradigma orientado a objetos respecto a otros paradigmas.
3. Aplicar los conceptos del paradigma de programación orientada a objetos tales como:
polimorfismo, encapsulamiento, herencia, sobrecarga, funciones virtuales, etc.
4. Manejar adecuadamente conceptos tales como: recursividad, objetos transientes, residentes y
persistentes; generalización y generacidad; clases plantillas; asociación, agregación y
composición.
5. Identificar problemas de: portabilidad, efectos colaterales y transparencia referencial.
6. Comprender la enorme importancia de crear software fiable, reutilizable y mantenible.
7. Dominar estrategias básicas de reutilización como son el uso de librerías o paquetes de software.
8. Aplicar el modelo orientado a objetos en programación de dispositivos de cómputo
COMPETENCIAS DE FORMACIÓN:
Competencias que compromete la
asignatura:
Competencias específicas de la
asignatura:


Conoce y aplica los estándares y recomendaciones para la
codificación de programas computacionales.
Conoce la evolución de los esquemas y mecanismos de






Competencias Transversales a las
que contribuye la asignatura:



abstracción.
Comprende el modelo orientado a objetos y sus divisiones.
Modela clases, interfaces, sistemas y sus relaciones
mediante diagramas de clases.
Realiza un estudio de requerimientos para problemas
sencillos.
Descubre las clases que permiten modelar una solución
basado en los requerimientos.
Hace uso de las tarjetas CRC para plantear clases.
Implementa clases basado en los principios de diseño de
clases.
El alumno tiene la capacidad de discernir que tecnología debe
utilizar para la resolución de problemas particulares.
Comunica ideas de manera clara de forma oral o escrita.
Actúa estratégicamente dentro de un grupo de trabajo para el
desarrollo de proyectos.
PROGRAMA SINTÉTICO:
1. Introducción al paradigma Orientado a Objetos
1.1. Paradigmas de Programación: definición y características
1.2 Generalidades de los paradigmas: Abstracción y Encapsulamiento
1.3 Introducción al Paradigma Orientado a Objetos
1.4. Lenguajes orientados a objetos
1.5. Fases del Ciclo de vida de Desarrollo de Software
1.6. Identificación y evolución de los esquemas de abstracción.
1.6.1. Identificación de necesidades del problema
1.6.2 Tarjetas CRC
2. Fundamentos de la programación orientada a objetos
2.1 Aplicación de Abstracción
2.1.1 Clases
2.1.2 Atributos
2.1.3. Operaciones (métodos)
2.2. Aplicación de Encapsulación y ocultamiento de la información.
2.3. Modularidad (criterios, principios y reglas)
2.4. El concepto de interfaz
2.5. El concepto de objeto
2.6. Metaclases
2.7. El diseño de aplicaciones OO
2.8. Relaciones entre clases: asociación, generalización, especialización, composición, agregación
3. Herencia y polimorfismo
3.1. Introducción a la Herencia
3.2. Herencia Simple
3.3. Herencia Múltiple
3.4. Herencia de Interfaz
3.5. Herencia de Implementación
3.6. Beneficios y costes de la herencia
3.7. Elección de la técnica de reutilización
3.8. Polimorfismo y reutilización
3.9. Sobrecarga
3.10. Polimorfismo en jerarquías de herencia
3.11. Variables Polimórficas
3.12. Genericidad
4. Diagramas de clases
4.1. Heurística general para encontrar las clases.
4.2. Otras fuentes de clases.
4.3. Herramientas para el planteamiento y modelamiento de clases, tarjetas CRC.
4.4. Modelamiento de clases.
4.5. Modelamiento de interfaces.
4.6. Modelamiento de relaciones.
4.7. Modelamiento de sistemas.
4.8 Identificación de estrategias de almacenamiento según cardinalidad
5. Principios de Diseño y Buenas Prácticas
5.1 Principios de Diseño de Clase
5.1.1 Principios de Cohesión
5.1.1.1 El principio de Responsabilidad Simple
5.1.1.2. El principio de abierto/cerrado.
5.1.2 Principios de Acoplamiento
5.1.2.1 El principio de sustitución de Liskov.
5.1.2.2 El principio de inversión e inyección de dependencia.
5.1.2.3 El principio de separación de interface.
5.1.3 Diseño por Contrato
5.2 Buenas Prácticas en Diseño O.O.
5.2.1. Principio del Egoísmo.
5.2.2. Clase-instancia-objeto.
5.2.3. Principio de seguridad en una clase mediante el this.
5.2.4. Control de acceso e interfaces de una clase.
5.2.5. Acceso en clases e instancias.
5.2.6. Atributos de una clase.
5.2.7. Seguridad de los atributos.
5.2.8. Ley de Demeter.
5.3 Estándares de Codificación y Gestión de Errores
5.3.1. Revisiones de Código y Estándares: identación, nombramiento, comentarios, declaraciones
5.3.2. Técnicas de Codificación
5.3.3. Convenciones de Código y Estructura de Programas: variables, constantes, clases, atributos, estructuras,
métodos, paquetes
5.3.4. Documentación del Código
5.3.5. Tipos de Errores: lógicos, sintácticos y semánticos
5.3.6. Depuración frente a errores
5.3.7. Captura y Gestión de Errores
6. Temas Complementarios
6.1 Introducción a Persistencia en archivos
6.2 Identificación y uso de prototipos de clase: abstracta, concreta, interface
6.3 Introducción al diseño por capas (MVC)
6.4 Introducción al diseño de interfaz gráfica
6.5 Uso herramientas documentación
III. ESTRATEGIAS
Metodología Pedagógica y Didáctica:




Asistencia a clases expositivas y de discusión
Elaboración y lectura de paper (documentación).
Se debe procurar incentivar el trabajo de grupo más que el trabajo individual. (se recomienda
trabajar en grupos de dos o tres estudiantes)
Implementación y prueba de prototipos (programas) en laboratorio de computación
Horas
Tipo de
Curso
Horas
profesor /
semana
Horas
Estudiante / semana
Total Horas
Estudiante /
semestre
TD
TC
TA
(TD + TC)
(TD + TC +TA)
X 16 semanas
2
4
6
6
12
192
Créditos
3
Trabajo Presencial Directo (TD): trabajo de aula con plenaria de todos los estudiantes.
Trabajo Mediado_Cooperativo (TC): Trabajo de tutoría del docente a pequeños grupos o de forma
individual a los estudiantes.
Trabajo Autónomo (TA): Trabajo del estudiante sin presencia del docente, que se puede realizar en
distintas instancias: en grupos de trabajo o en forma individual, en casa o en biblioteca, laboratorio, etc.)
IV. RECURSOS
Medios y Ayudas:








Aula normal con tablero para sesiones de cátedra y para sesiones de discusión.
Disponibilidad para acceder a proyector multimedia.
Laboratorio de computación, para las sesiones de laboratorio.
IDE’s para desarrollar en java (Eclipse, Netbeans, …)
Página web para publicar material didáctico, guías de ejercicios, soluciones, tareas, etc.
Acceso al material bibliográfico recomendado.
Asignación de una persona que tenga las plenas competencias del curso (monitor) para asesorar
a los estudiantes en dudas durante las sesiones del laboratorio de computación.
Acceso a material digital a través de bibliotecas digitales
TEXTOS GUIA



Bertrand Meyer. Construcción de Software Orientado a Objetos. Prentice Hall.
Bruce Eckel. Thinking Java. Pretince Hall
Deitel & Deitel. Java2 How To Program. Prentice Hall
TEXTOS COMPLEMENTARIOS



Agustín Froufe Quintas. Java 2 Manual de usuario y tutorial. Alfaomega.
Horstmann Cornell, Core Java 2 vol 1 y vol 2. Pretince Hall.
Horstmann Cornell, Core Java 1. Pretince Hall.
DIRECCIONES DE INTERNET


http://download.oracle.com/javase/6/docs/api/
http://download.oracle.com/javase/6/docs/
V. ORGANIZACIÓN / TIEMPOS
Espacios, Tiempos, Agrupamientos:
Se recomienda trabajar una unidad cada cuatro semanas, trabajar en pequeños grupos de estudiantes,
utilizar Internet para comunicarse con los estudiantes para revisiones de avances y solución de preguntas
(esto considerarlo entre las horas de trabajo cooperativo).
1
2
3
4
5
6
7
8
9
10 11 12 13 14 15 16
VI. EVALUACIÓN
TIPO DE EVALUACIÓN
FECHA
PRIMER CORTE
Parcial escrito, Guías de ejercicios resueltas,
Informes de conceptos basado en análisis
(Paper's), Pruebas orales/escritas rápidas
(Quizes), Ejercicios de laboratorio.
SEGUNDO CORTE
Parcial escrito, Guías de ejercicios resueltas,
Informes de conceptos basado en análisis
(Paper's), Pruebas orales/escritas rápidas
(Quizes), Ejercicios de laboratorio. Desarrollo
de Proyecto
PROYECTO FINAL
Desarrollo
de
Proyecto.
Informe
de
desempeño y sustentación de un prototipo
funcional que evalúe las competencias
exigidas.
PORCENTAJE
35%
Las fechas estarán
acorde a las
programadas por el
calendario académico
para el periodo en
curso
35%
30%
ASPECTOS A EVALUAR DEL CURSO










Claridad y entendimiento de los conceptos.
Que se haya identificado correctamente el problema y que el modelo lo represente adecuadamente.
Que la solución diseñada resuelva el problema.
Apego a la formalidad y estándares requeridos.
Que el análisis de corrección sea exhaustivo.
Que el prototipo corresponda al modelo diseñado y no presente errores de sintaxis.
La asistencia a las clases magistrales y a los laboratorios.
El esfuerzo y dedicación en la resolución de problemas.
Que la documentación permita reconocer la forma en que se ha abordado el problema y la
estructura del programa implementado.
En las pruebas escritas se consideran en forma parcial los aspectos considerados en proyectos de
programación bajo problemas que requieren un menor tiempo de desarrollo y en una modalidad que
no requiere uso del computador, así como la comprensión conceptual.
DATOS DEL DOCENTE
NOMBRE :
PREGRADO :
POSTGRADO :
ASESORIAS: FIRMA DE ESTUDIANTES
NOMBRE
FIRMA
1.
2.
FIRMA DEL DOCENTE
_________________________________
FECHA DE ENTREGA: __________________________
CÓDIGO
FECHA
Descargar