Download Taller de Programación Concurrente y Distribuida
Document related concepts
no text concepts found
Transcript
Universidad Tecnológica Nacional Facultad Regional Concepción del Uruguay Ingeniería en Sistemas de Información Taller de Programación Concurrente y Distribuida - Planificación de cátedra Prof. Ing. Ulises M. A. Rapallini Año 2008 Ingeniería en Sistemas de Información 5to año Primer Cuatrimestre 6 horas semanales Universidad Tecnológica Nacional Facultad Regional Concepción del Uruguay Ingeniería en Sistemas de Información Taller de Programación Concurrente y Distribuida – 5to año Contenidos Objetivos ...................................................................................................................................... 3 Objetivos Generales .................................................................................................................. 3 Objetivos Específicos ................................................................................................................ 3 Programa analítico de la asignatura - 2008 .............................................................................. 3 Unidad 1: Repaso de POO ........................................................................................................ 3 Unidad 2: Paquetes y mecanismos básicos en Java ................................................................ 3 Unidad 3: Programación concurrente........................................................................................ 4 Unidad 4: Programación distribuida .......................................................................................... 4 Unidad 5: Interfaces Gráficas .................................................................................................... 5 Metodología de trabajo ............................................................................................................... 5 Evaluaciones ............................................................................................................................... 5 Diagnostico ................................................................................................................................ 5 Evaluación continua................................................................................................................... 5 Evaluación de acreditación........................................................................................................ 5 Bibliografía................................................................................................................................... 6 Bibliografía general.................................................................................................................... 6 Bibliografía por unidad............................................................................................................... 6 Listado de trabajos prácticos .................................................................................................... 6 TP 1: Introducción a Java - Tipos de Variables, Manejo de Arrays, Clases y Objetos............. 6 TP 2: Clases Abstarctas, Herencia, Sobrecarga y Polimorfismo, Clase Vector, modelo OOP y UML. .......................................................................................................................................... 7 TP 3: Uso de Paquetes, Clases Wrappers, Casting y Excepciones ......................................... 7 TP 4: Programación concurrente, Streams E/S, Manejo básico de threads............................. 7 TP 5: Programación concurrente, Threads y Aplicaciones MultiThreads ................................. 7 TP 6: Programación Distribuida, UDP y TCP ............................................................................ 7 TP 7: Programación Distribuida, RMI ........................................................................................ 7 TP 8: Programación Distribuida, acceso a datos con JDBC ..................................................... 7 TP 9: AWT y SWING, Modelo Vista-Controlador ...................................................................... 7 TP 10: Programación Distribuida, Applets y la WWW............................................................... 8 Condiciones de regularidad y/o promoción ............................................................................. 9 Regularidad ............................................................................................................................... 9 Promoción.................................................................................................................................. 9 Recursos necesarios .................................................................................................................. 9 Prof. Ing. Ulises Rapallini -2 Universidad Tecnológica Nacional Facultad Regional Concepción del Uruguay Ingeniería en Sistemas de Información Taller de Programación Concurrente y Distribuida – 5to año Objetivos Dado que se trata de una asignatura de “Taller” los objetivos están referidos a aplicación de conceptos a trabajos prácticos, en particular a la herramienta de programación “Java”. Objetivos Generales Que el alumno adquiera los conocimientos básicos requeridos para programar aplicaciones de forma concurrente y distribuida. Objetivos Específicos Que el alumno sea capaz de desarrollar aplicaciones concurrentes en Java. Que el alumno sea capaz de desarrollar aplicaciones distribuidas en Java. Que el alumno sea capaz de modelar aplicaciones multihilo y distribuidas en Java con acceso a bases de datos. Programa analítico de la asignatura - 2008 Unidad 1: Repaso de POO 1. Orientación a Objetos en JAVA 1.1. Conceptos de : Clases. Objetos. Atributos. Métodos y Constructores. 1.2. Conceptos de : Clases Abstractas. Interfaces. Implementaciones. 1.3. Conceptos de : Herencia y Polimorfismo en Java. 1.4. Terminología Básica de Java. 2. Sintaxis Básica de Java 2.1. Tipos de datos primitivos. Variables. Operadores. 2.2. Estructuras de control. Objetos y Estructuras de datos. 2.3. Crear una Clase. Definir atributos. Definir métodos. 2.4. Variables miembro. Modificadores de ámbito. Uso de clases. 2.5. Datos Numéricos. Caracteres y Strings. Casting. Bibliografia Deitel/Deitel [DD1] : Capitulos: 2,4,5,6, 11 Horstmann/ Corrnell [WC1]: Capítulos 1,2,3 y 4. Unidad 2: Paquetes y mecanismos básicos en Java 1. Introducción a los paquetes de Java - Explorando el paquete java.lang 1.1. Streams. Systems. Strings. Wrappers. Math. 1.2. Arrays y matrices en Java : Definiciones. Declaraciones. Datos en los arrays. Uso. 1.3. Matrices o vector multidimencional. Clase Vector. 2. Excepciones 2.1. Captura de Excepciones try, catch, finally. 2.2. Programación de Excepciones, lanzamiento. Throw y Throws. 3. Herencia, Sobrecarga y polimorfismo. 3.1. Herencia Simple, Ámbito y Visibilidad en la herencia. Prof. Ing. Ulises Rapallini -3 Universidad Tecnológica Nacional Facultad Regional Concepción del Uruguay Ingeniería en Sistemas de Información Taller de Programación Concurrente y Distribuida – 5to año 3.2. Superclase, llamada a constructores de la superclase, referencia a la clase y la superclase. 4. Archivos, Streams, Entrada y salida 4.1. Entrada y salida de Java. Clases File. 4.2. Streams. DataInputStream. DataOutPutStream. Bibliografia Deitel/Deitel [DD1] : Capítulos: 7,8,9,10,15,17 Horstmann/ Corrnell [WC1]: Capítulos 3, 4, 5, 6, 11 y 12. Horstmann/ Corrnell [WC2]: Capitulo 2 E. Rusty Harol [ER1] : Capitulo 4 Unidad 3: Programación concurrente 1. Concurrencia en Java 1.1. Clase Thread, objetos. usos. 1.2. Clases derivadas de Threads. 2. Mecanismos utilizados en Concurrencia 2.1. Sincronización entre hilos 2.2. Grupos de hilos 2.3. Recursos Compartidos 3. Aplicaciones Multithreads. Bibliografia Deitel/Deitel [DD1] : Capitulos: 16 S. Oaks/H. Wong [OW1] : todo el libro E. Rusty Harol [ER1] : Capitulo 2, 3, 5, 6, 7, 10,11, 12, 13 , 15 y 16 Horstmann/ Corrnell [WC2]: Capitulo 1, 3, 5 Horstmann/ Corrnell [WC1]: Capitulos 1,2 y 4. Unidad 4: Programación distribuida 1. Comunicación entre procesos distribuidos 2. 3. 4. 5. 1.1. Conceptos sobre el modelo Cliente/Servidor. 1.2. Sockets TCP , Cliente y Servidor 1.3. Sockets UDP, Cliente y Servidor Envío y recepción de datos. 2.1. Caracteres ASCII, Caracteres UNICODE, UTF (Universal Tranfer Format). 2.2. Serialización de datos, Clases se soporte para la serialización de objetos. Objetos distribuidos 3.1. RMI, Utilización de RMI 3.2. Invocación a métodos remotos. World Wide Web 4.1. Clase URL 4.2. HTML y Applets. 4.3. Creación de Applets. Ciclo de vida. Limitaciones, Paso de parametros 4.4. Las clases Graphics y Canvas. La clase Image. Bases de Datos 5.1. JDBC 5.2. Clases principales para manejar un DBMS. Bibliografia Deitel/Deitel [DD1] : Capitulos: 18,23 Horstmann/ Corrnell [WC1]: Capitulos 7, 10. Horstmann/ Corrnell [WC2]: Capitulo 10 E. Rusty Harol [ER1] : Capitulo 9 Prof. Ing. Ulises Rapallini -4 Universidad Tecnológica Nacional Facultad Regional Concepción del Uruguay Ingeniería en Sistemas de Información Taller de Programación Concurrente y Distribuida – 5to año Unidad 5: Interfaces Gráficas 1. Abstract Window Toolkit (AWT) 1.1. Frames. LayOut, Paneles, Botones, Textos, Listas, Option 1.2. Manejo de Eventos AWT, escuchadores. 1.3. Programación de Interfaces de Usuario Con Herramientas RAD. 2. Interfaz SWING 2.1. JFrames, J”Controles”, Escritorio, 2.2. Eventos en Swing. Bibliografia Deitel/Deitel [DD1] : Capitulos: 12,13,14 M Robinson/P Vorobiew [RV1] : todo el libro. Horstmann/ Corrnell [WC1]: Capitulos 7,8,9. Horstmann/ Corrnell [WC2]: Capitulo 6, 7 Metodología de trabajo Distribución del tiempo Se dictan clases 1 vez por semana, correspondientes a 6 horas cátedras, los días Martes de 19 hs a 23:45hs. Metodología El tiempo de dictado de clases se divide aproximadamente en dos partes, la primer parte Teórica donde los docentes expondrán una introducción a los temas de clase, con ejemplos de programación y ejercicios a completar por el alumno. La segunda parte de la clase se propone realizar ejercicios guiados por el docente y el auxiliar en el laboratorio. En las guías existen ejercicios a entregar, el tiempo de realización y de entrega dependerá de la complejidad del trabajo, los trabajos están diseñados para entregar 15 o 21 días a partir de la clase presentación del tema. Evaluaciones Diagnostico Se tomara una evaluación de diagnostico sobre temas fundamentales básicos de programación orientada a objetos, modelos de programacion y modelado UML. Evaluación continua Se podrán realizar evaluaciones periódicas parciales con el objetivo de determinar y corregir posibles problemas en el proceso de enseñanza – aprendizaje. Evaluación de acreditación Se realizaran una evaluación con dos recuperatorios, más una evaluación integradora final . Esta última consiste en un trabajo integrador de programación donde se apliquen los conceptos estudiados durante el curso. Prof. Ing. Ulises Rapallini -5 Universidad Tecnológica Nacional Facultad Regional Concepción del Uruguay Ingeniería en Sistemas de Información Taller de Programación Concurrente y Distribuida – 5to año Bibliografía Bibliografía general Libros que el alumno deberá leer y/o estudiar de acuerdo al detalle bibliográfico en el programa analítico y las indicaciones del docente a cargo. [SM1] Sun Microsystems : Java 2 SDK, Standard Edition Documentation - http://java.sum.com – 2008 [DD1] Deite/Deitel : Java Como programar Ed. 5ta – 2004 [HC1] Cay S. HorstMann / Gary Cornell : Java 2 – Fundamentos – Prentice Hall / Sun Microsystems 2003 [HC2] Cay S. HorstMann / Gary Cornell : Java 2 – Características Avanzadas – Prentice Hall/Sun Microsystems 2003 [ER1] Elliotte Rusty Harold : Java Network Programming 2da ed. O’Reilly 2001 [OW1] Scoot. Oaks & Henry Wong : Java Threads 2da ed. O’Reilly 2000. [RV1] Matthew Robinson/ Pavel Vorobiew : Swing – http://theadmin.data.bg 2002. Bibliografía por unidad La bibliografía esta detallada en programa analítico Listado de trabajos prácticos TP 1: Introducción a Java - Tipos de Variables, Manejo de Arrays, Clases y Objetos Tipos primitivos de Datos. Estructuras de Control. Clases. Ejemplos y problemas para resolver. Crear clases utilizando diferentes tipos de variables, armar clases base para una aplicación o utilizar las clases programadas. Problemas para resolver Ejemplos y ejercicios utilizando arrays. Vectores del tipo primitivos. Vectores de Objetos. Vectores de Vectores, Manejo dinámico Utilizar la clase Vector. Prof. Ing. Ulises Rapallini -6 Universidad Tecnológica Nacional Facultad Regional Concepción del Uruguay Ingeniería en Sistemas de Información Taller de Programación Concurrente y Distribuida – 5to año TP 2: Clases Abstarctas, Herencia, Sobrecarga y Polimorfismo, Clase Vector, modelo OOP y UML. Ejemplos y ejercicios para programar clases abstractas. Planteo de problemas para desarrollar modelos utilizando herencia. Planteo de problemas para utilizar sobrecarga. Ejemplos de Clases polimorficas. Se plantea el desarrollo de aplicaciones donde el alumno deberá diseñar clases y modelar el problema, también tendrá que utilizar vectores. TP 3: Uso de Paquetes, Clases Wrappers, Casting y Excepciones Planteo de problemas para utilizar las clases del paquete java.lang y java.util. Realizar Casting de variables. Ejemplos y ejercicios utilizando Excepciones. Utilización de excepciones de Java, Programación de excepciones. Lanzamiento y captura de excepciones. TP 4: Programación concurrente, Streams E/S, Manejo básico de threads Ejemplos y ejercicios de E/S. Manejo de Archivos, Entrada y Salida estándar. Streams de E/S Programación de Hilos, aplicaciones de ejemplo. Planteo de problemas para utilizar hilos. TP 5: Programación concurrente, Threads y Aplicaciones MultiThreads Aplicaciones multiThreads. Aplicaciones de ejemplo. Acceso Sincronizado a variables y objetos. Planteo de problemas para utilizar hilos. TP 6: Programación Distribuida, UDP y TCP Ejemplos de programación de Sockets. Sockets TCP y UDP (DatagramSocket). Comunicación entre dos aplicaciones utilizando Sockets UDP y TCP. Codificación UTF, Formato de los mensajes, Serialización de Objetos Transferencia de mensajes utilizando Sockets. TP 7: Programación Distribuida, RMI Utilización de la Clase URL. Comunicación entre Aplicaciones utilizando Llamada a Métodos Remotos (RMI). TP 8: Programación Distribuida, acceso a datos con JDBC Conexiones a bases de datos, conectarse a PostgreSQL, consultas SQL, acceso a procedimientos almacenados. TP 9: AWT y SWING, Modelo Vista-Controlador Ejemplos de uso para AWT. Planteo de problemas utilizando AWT. Manejo de eventos. Ejemplos y Ejercicios de Aplicaciones Utilizando SWING. Prof. Ing. Ulises Rapallini -7 Universidad Tecnológica Nacional Facultad Regional Concepción del Uruguay Ingeniería en Sistemas de Información Taller de Programación Concurrente y Distribuida – 5to año TP 10: Programación Distribuida, Applets y la WWW Creación de Applets. Inserción en una pagina WEB. Gráficos en un Applet. Dibujar en un Applet Prof. Ing. Ulises Rapallini -8 Universidad Tecnológica Nacional Facultad Regional Concepción del Uruguay Ingeniería en Sistemas de Información Taller de Programación Concurrente y Distribuida – 5to año Condiciones de regularidad y/o promoción Regularidad Para regularizar la materia el alumno deberá cumplir con las siguientes condiciones mínimas: • • Entregar los trabajos prácticos según un cronograma de entrega Aprobar la evaluación parcial con nota mayor a 4. Promoción Para promocionar la materia el alumno deberá cumplir con las siguientes condiciones mínimas: • • • Aprobar la evaluación con nota mayor a 7. Entrega de Todos los trabajos prácticos en termino. Entrega y aprobación del trabajo final de programación antes del cierre del Cuatrimestre. Recursos necesarios Se utilizara un aula y/o el laboratorio de computación en horarios de clase. Se utilizaran las computadoras disponibles, y se necesita el siguiente software : Sitio Virtual Todo el material se distribuirá a través del sitio de cursos virtuales de la frcu. Software necesario JDK / SDK de Sun Microsystems preferentemente la ultima versión. Netbeans / SDK Free Java o un editor de Programación como Context. Sistema Operativo Linux y/o Sistema Operativo Windows Win Zip o WinRar Acrobar Reader Acceso a Internet Se requiere acceso a Internet para : • Acceder al sitio de cursos virtuales de la FRCU • Acceder a la documentación del lenguaje • Buscar información relacionada con el lenguaje Java. Software de Aplicación general Ing. Ulises M. A. Rapallini Prof. Ing. Ulises Rapallini -9