Programa_POO

Anuncio
N° DE DISPOSICIÓN: _______________
DEPARTAMENTO DE CIENCIAS BÁSICAS:
CIENCIAS BASICAS
CARRERA:
LICENCIATURA EN SISTEMAS
PROGRAMA DE LA ASIGNATURA:
PROGRAMACION III (ORIENTADA A OBJETOS)
EQUIPO RESPONSABLE:
JAVIER BLANQUE
HORAS DE CLASE:
96 Horas
TEORICAS: 48 Horas
PRACTICAS: 48 Horas
ASIGNATURAS CORRELATIVAS PRECEDENTES
APROBADAS
Esta asignatura no tiene precorrelativas específicas, 11407
no obstante, el cursado regular del ciclo de grado
presupone la aprobación completa de los ciclos
anteriores que corresponden en cada caso.
CURSADAS
OBJETIVOS:





El objetivo fundamental de la materia Programación III es introducir a los alumnos a las técnicas
actuales de desarrollo de software, en particular, en aspectos de análisis, diseño y programación
orientados a objetos.
El alumno debe ser capaz de desarrollar un proyecto donde aplique los conceptos fundamentales del
Análisis, Diseño y la Programación Orientada a Objetos. Es necesario que demuestre a través del
mismo que ha aprendido a pensar de una manera no centrada en bloques de procedimientos, sino que
describa la globalidad de propiedades, estados y comportamiento de cada objeto modelizado en su
proyecto, pensando a partir de los mismos, y de las interacciones entre ellos. Se requerirá que el
alumno al término del curso esté razonablemente capacitado en alguno de los lenguajes orientados a
objetos recomendados y que haya realizado un proyecto de mediana complejidad incorporando a ese
lenguaje como un componente esencial o central del mismo.
Se pondrá énfasis en metodologías como UML (Unified Modeling Language) y en “Desarrollo Agil”
(Programación Extrema).
Se mostrará un análisis comparativo entre los lenguajes actuales de programación orientados a
objetos (C++, Java y Python) y se realizarán prácticas sobre ambientes de desarrollo modernos como
Eclipse, o NetBeans, por lo que se brinda libertad de elección del lenguaje y del ambiente de
desarrollo para la realización del proyecto final.
Se considera que para el correcto aprendizaje de los fundamentos de C++ es necesaria la realización
de una actualización (o introducción) de los alumnos al lenguaje C.
N° DE DISPOSICIÓN: _______________
Tipo de Evaluación
Se realizarán prácticas y pequeños desarrollos orientados a objetos durante el cursado de la materia. La
evaluación tendrá el formato de un proyecto que se realiza durante alrededor de dos meses (60 días). Será un
trabajo en equipo que se definirá durante los dos primeros meses del cuatrimestre, los equipos deberán ser
idealmente de tres personas pudiendo excepcionalmente (con causa justificada, como lejanía del resto de los
alumnos, grado de dificultad del proyecto, etc.) ser de 1 a 5 personas. La evaluación final se deriva de un
proyecto al que los alumnos dedican como mínimo 100 horas y como máximo 300 horas. La complejidad de
este proyecto depende de las herramientas elegidas por el grupo y de la cantidad de gente que lo compone, es
decir a más gente en el grupo, más complejo debe ser el proyecto.
El grupo presenta un anteproyecto con objetivos concretos, que describe las tecnologías, arquitectura y
topología a usar, cómo se dividirán las tareas (quién hace qué cosa, cuándo), una carta GANTT, y una
justificación de porqué se eligieron ese proyecto y esas tecnologías para desarrollarlo.
La evaluación se realiza sobre el proyecto, como una aplicación que debe ser funcional, como resultado del
mismo se entrega un CD / DVD con la aplicación funcional, y una carpeta completa de documentación, donde
se detalla el trabajo de forma total, con las actividades de todos los integrantes a lo largo del mismo, con una
explicación de los problemas encontrados durante el desarrollo y cómo se resolvieron.
Durante el final el equipo de trabajo realiza la Demo del producto o aplicación, que podrá considerarse el
PROTOTIPO del proyecto y su manifestación concreta, pudiendo cualquier integrante ser preguntado sobre
aspectos del mismo.
Todos los integrantes de cada equipo deben conocer todos los aspectos de sus respectivos proyectos.
VIGENCIA AÑO: 2010
N° DE DISPOSICIÓN: _______________
2) CONTENIDOS
UNIDADES TEMÁTICAS:
(MESES 1, 2, 3)
2.1- Introducción al Pensamiento Orientado a Objetos y Conceptos.
Programación Orientada a Objetos - Introducción.
Que és, Qué esperamos, Explicación del Programa.
Explicación y Formato para la Presentación de los Proyectos.
Metodología de Trabajo Durante el Curso.
Bibliografía y Fuentes de Acceso.
Arquitecturas de Hardware y Software Básicas y Orientaciones.
2.2- Historia de la Programación Orientada a Objetos.
Paradigmas de Programación.
La programación tipo “Plato de Fideos”. El assembler.
Programación Estructurada. El C.
Programación Orientada a Objetos. C++, Java, Python.
Programación Funcional. El Lisp (CLOS, SCHEME).
Programación Lógica. El Prolog.
Programación Centrada en Procesos.
Programación Centrada en Datos.
Programación Centrada en Interfases.
Como Obtener lo Mejor de Cada Metodología.
Profundización de Conceptos en Lenguaje C/C++ y Java
Clases, Estructuras y Objetos. Encapsulamiento. Caja Negra y Caja Blanca.
Herencia.
Métodos.
Excepciones.
Streams o Librería de Entrada/Salida.
Standard Template Library (Stepanov).
Interfases Gráficas y Programación Dirigida por Eventos.
Java. Applets. Servlets. Aplicaciones Java. Ejemplos.
Python. Ejemplos.
El stack LAMP (Linux-Apache-MySQL/PostgreSQL-PHP/Python/Perl).
2.3- Orígenes.
Inserción en la Inteligencia Artificial.
Entornos de Programación Explorativos. El SmallTalk-80. El GNU SmallTalk (GST).
Entornos de Programación Orientados al Desarrollo Rápido (RAD).
Inserción en la Ingeniería de Software.
Entornos Derivados de CASE.
Entornos Derivados de CAD-CAM-CIM.
El Simula-67. El ADA. El C++.
2.4- Análisis y Diseño Orientado a Objetos.
Técnicas.
Booch-Rumbaugh. Jacobson Use Cases. UML (Unified Modeling Language).
Diseño por Implementación Evolutiva.
Diseño Out-In/In-Out.
Conexiones y Diferencias con Diseño Estructurado.
Problemas de Complejidad y Niveles.
Técnicas de Medición y Reducción de la Complejidad. Líneas de código, Puntos de Función. Clases.
Metodologías de Desarrollo Agiles. Programación Extrema.
2.5- Bases de Datos Orientadas a Objetos.
OODBMS
Bases de Datos de Red.
Bases de Datos Relacionales y Relacionales Extendidas. El caso PostgreSQL.
Bases de Datos de Conexión Semántica y de Conocimiento.
Temas de Implementación.
Concurrencia.
Seguridad.
Versioning.
Mecanismos de Acceso y Almacenamiento.
Optimización.
N° DE DISPOSICIÓN: _______________
2) CONTENIDOS (CONTINUACIÓN)
2.6- Arquitecturas Client-Server.
Bases de Datos Relacionales.
Arquitecturas MultiUsuario.
SQL, ODBC (Open Data Base Connectivity).
Entornos Distribuidos, Sockets.
2.7- Objetos Distribuidos.
Problemas Epistemológicos.
Ergonomía y Usabilidad de Aplicaciones.
Programación Orientada a Objetos Distribuidos.
Arquitecturas Inteligentes.
2.8- Construcción de Programas Orientados a Objetos.
Programación Dirigida por Eventos.
Métodos de Comunicación entre Objetos.
Conceptos.
Clase y Objeto.
Herencia y Herencia Múltiple (El concepto IS-A).
Propiedades (El concepto HAVE).
Métodos, Precondiciones y Poscondiciones.
Polimorfismo y Protocolo.
Mecanismos de 'Garbagge-Collection'.
Variables de clase y variables de instancia (objeto).
2.10- Desarrollo de Proyectos Orientados a Objetos.
Mecanismos de Flexibilidad y Eficiencia.
Intérpretes y Compiladores.
Programación, Lenguajes Alternativos y Ejemplos.
LISP (CLOS, SCHEME).
SmallTalk (GST, Squeak).
Arquitecturas Paralelas y Entornos Futuros.
Elección y desarrollo de un trabajo de investigación
(MES 4)
9- Algunas alternativas de Proyectos de Desarrollo e Investigación Grupal.
a) Realización de una aplicación Funcional implantable en Internet, en una intranet o una extranet.
c) Realización de una aplicación distribuida (por ejemplo Client/Server) implantable en LAN.
d) Realización de una aplicación de Inteligencia Artificial o que incuya Multimedia.
e) Realización de un Juego como First o 3rd person shooter, de estrategia o de simulación.
f) Realización de una aplicación propuesta por el Grupo.
Sera consensuada con el docente y se pondrán puntos de control para administrar la complejidad.
Lenguajes habilitados para los proyectos son Python, Java, C/C++ o PHP5, puede proponerse otro.
(FINAL)
10-Presentación de Proyectos y examen final sobre el mismo.
N° DE DISPOSICIÓN: _______________
3) TRABAJOS PRACTICOS
4) MODALIDAD DE APROBACION
4.1
4.2
4.3
4.4
Regularización
Promoción
Examen regular
Examen libre
5) BIBLIOGRAFIA:
Internet:
Googlear.
La biblioteca UNLu:
En revistas y libros existentes allí.
A los alumnos de la materia se les brinda un CD con los siguientes libros, artículos o documentos
en formato Adobe Acrobat Reader (PDF o Portable Document Format)
Thinking in C++, Bruce Eckel
Thinking in C++, Bruce Eckel
Thinking in Java, Bruce Eckel
J2EE Tutorial, MassLight
J2EE Optimization, Scott Marlow
EJB Design Patterns, Floyd Marinescu
Maszterig Enterprise Java Beans, Ed Roman, Scott Ambler, Tyler Jewell
J2EE and XML Development, Kurt Gabrick, David Weiss
Java Data Objects and Transparent Persistence, Sun Microsystems
JBOSS, java application server presentation
JDO 1.0 Specification
CPP HOWTO, Alavoor Vasudevan
JavaScript Manuals
Postgresql Introduction and Concepts, Bruce Momjian
Struts templates in Java Tutorial
XML Programming in Java Tutorial
UML Guia Visual, Josep Vilalta
The Essence of OOP Using Java, Richard Baldwin
...
Descargar