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