Practica IV POO

19
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUÍA COMPONENTE PRÁCTICO 301403 – PROGRAMACION ORIENTADA A OBJETOS CESAR ORLANDO JIMENEZ ANGARITA (Director Nacional) Zona: Centro Bogotá Cundinamarca, Cead: José Acevedo y Gómez Enero 2013

Transcript of Practica IV POO

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA

GUÍA COMPONENTE PRÁCTICO

301403 – PROGRAMACION ORIENTADA A OBJETOS

CESAR ORLANDO JIMENEZ ANGARITA

(Director Nacional)

Zona: Centro Bogotá Cundinamarca,

Cead: José Acevedo y Gómez

Enero 2013

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

2. ASPECTOS DE PROPIEDAD INTELECTUAL Y VERSIONAMIENTO

Curso Académico Modulo Programación Orientada a Objetos

Libros de la Biblioteca Virtual de Unad en Programación Orientada a Objetos

Consulta de Internet Programación Orientada a Objetos

Autor: Deitel y Deitel Introducción DOO con UML y los Patrones de Diseño JDBC tm, SERVLETS, JSP tm Editorial Pearson Prentice Hall Quinta Edición. David Arnow Gerald Weiss Introducción a la Programación con Java tm Actualización a la Versión 2 de Java Editorial Addison Wesley. Fcd Javier Ceballos Java 2 Curso de Programación 2 Edición Editorial Alfaomega Ra-Ma. Agustin Froute Java 2 Manual Usuario tutorial 3 Edición Editorial Alfaomega Ra-Ma 5. Herbert shildt Fundamentos de Programación Java 2 Editorial Mc Graw Hill . para conocer el lenguaje de programación JAVA. Arnow, D., Weiss, G., Introducción a la programación con JAVA, Addison wesley, 2000. Larman, C., UML y patrones, Prentice Hall, 1998. Meyer, B., Construcción de software orientado a objetos, Prentice Hall, segunda edición, 1997. Wu, T., Introducción a la programación orientada a objetos con Java, Mc Graw Hill, 2000. Joyanes, L., Programación orientada a objetos, Segunda edición, Mc Graw Hill, 1998. Grez Voss, Introducción Orientada a Objetos, Editorial Mc Graw Hill, 1994. Joyanes, L., C++ a su alcance un enfoque orientada a objetos, Editorial, Mc Graw Hill, 1994. Cesar Becerra Santamaría, C++ Una Herramienta para la Programación Orientada a Objetos, Editorial Mc Graw Hill, 1.993. Fco Javier Ceballos, Programación Orientada a Objetos con C++,Editorial Alfaomega, 1.998. Nathan Meyers, Programación JAVA en Linux, Editorial Prentice Hall, 2.000. www.lawebdelprogramador.com

www.programacion.com

http://www.cimat.mx/~jlabreu/CursoJava/

http://www.mindview.net/Books/TIJ

http://java.sun.com/docs/books/tutorial/

http://programacion.com/java/tutoriales/

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

3. INDICE DE CONTENIDO

Pág.

1. PRESENTACION

2. ASPECTOS DE PROPIEDAD INTELECTUAL Y VERSIONAMIENTO

3. INDICE DE CONTENIDO

4. LISTADO DE TABLAS

5. CARACTERÍSTICAS GENERALES

6. DESCRIPCIÓN DE PRÁCTICAS PRACTICA No. 01 – Estructuras no dinámicas Utilizando Java Eclipse Ejercicios Propuestos por el tutor: Ejercicios a Realizar por el Estudiante:

PRACTICA No. 02 – Estructuras dinámicas Utilizando Java Eclipse Ejercicios Propuestos por el tutor: Ejercicios a Realizar por el Estudiante: PRACTICA No. 03 – Base de Datos Modelo Relacional entidad Relación Access Utilizando Java Eclipse. Ejercicios Propuestos por el tutor: Ejercicios a Realizar por el Estudiante: PRACTICA No. 04 – Redes Encriptamiento y Desincriptamiento de un dato, Chat cliente Servidor, computacion Grafica Utilizando Java Eclipse Ejercicios Propuestos por el tutor: Ejercicios a Realizar por el Estudiante: 7. Fuentes Documentales

1

2

3

4

5

8

8

11

36

37

40

73

74

76

106

109

111

119

120

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

5. CARACTERÍSTICAS GENERALES

Introducción Actualmente una de las áreas más importantes en la industria y el ámbito académico es la orientación a objetos, el curso que a continuación se relaciona tiene el nombre de Programación Orientada a Objetos el cual es teórico – práctico, de 3 créditos y hace parte de la formación profesional en el programa de Ingeniería de Sistemas. El curso está compuesto por tres unidades académicas didácticas: Unidad Uno comprende la introducción y elementos básicos de la programación orientada a objetos (POO) y las propiedades básicas de la POO aplicado con JAVA. Unidad Dos hace referencia al diseño de la estructura y comportamiento de un objeto y se inicia con los Fundamentos de la programación en el lenguaje JAVA. Unidad tres se enfocan en el trabajo con las clases, el manejo de la herencia y la extensión de las clases aplicado con JAVA.

Justificación El uso de y aplicaciones de herramientas enfocadas a la POO, hacen que el profesional en Ingeniería sea capaz de diseñar y desarrollar aplicaciones que permitan dar soluciones integrales a las necesidades del medio que lo rodea utilizando un compilador de JAVA. El curso de POO le permite al estudiante desarrollar su creatividad con el animo de dar soluciones a problemas cotidianos de su trabajo, le da la capacitada de comparar la programación estructurada con la programación orientada a objetos y enfrentar los retos del cambio, le permite desarrollar su capacidad de comunicación, y su espíritu Investigativo y crítico con una lenguaje de programación orientado a objetos. Para lograr la apropiación de todo el contenido temático el estudiante aplicara en todo momento su autoformación y se apoyara en el tutor para la resolución de dudas, también se tendrán uso de herramientas tecnológicas para la interacción con los tutores y alumnos dentro de los laboratorios.

Intencionalidades

formativas

Propósitos: Dar a conocer a los estudiantes de una forma clara los conceptos fundamentales de la Programación Orientada a Objetos en JAVA. Dar a Conocer a los estudiantes las ventajas de aplicar la Programación Orientada a Objetos ya que simplifica la construcción de programas y lo motiva para estudiar las características del lenguaje JAVA. Capacitar a los estudiantes a comprender y utilizar herramientas de Programación Orientadas a Objetos como JAVA, para el diseño de aplicaciones.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

Objetivos: Que el estudiante Describa los conceptos que caracterizan al modelo Programación Orientada a Objetos Utilizando JAVA. Que el estudiante Valore en que medida las técnicas Programación Orientada a Objetos favorecen la calidad del software, analizando sobre todo cómo facilitan la reutilización y extensibilidad en JAVA.

Que el estudiante entienda la importancia de trabajar Herramientas Programación Orientadas a Objetos, para el desarrollo de nuevas aplicaciones empresariales en JAVA.

Que le estudiante Aprenda un lenguaje Programación Orientada a Objetos, junto a su entorno de programación.

Que el estudiante aplique técnicas de programación Orientada a Objetos en JAVA.

Que el estudiante identifique analice y diseñe ejemplos de aplicación en JAVA

Metas:

Al terminar este curso de Programación Orientada a Objetos el estudiante:

Desarrollara aplicaciones teniendo en cuenta los fundamentos teóricos, y el manejo de objetos como principal elemento de Construcción de soluciones en JAVA. Tendrá la capacidad de analizar, diseñar y desarrollar software utilizando el entorno de Programación Orientada a Objetos con JAVA. Adquiera destrezas en el uso de las herramientas como el JAVA para el desarrollo de aplicaciones que den soluciones confiables y permitan mejorar procesos.

Competencias:

El estudiante comprende e interpreta todos los conceptos fundamentales de la Programación Orientada a Objetos, para poder analiza, diseñar, desarrollar e implantar aplicaciones más robustas y con código reutilizable con JAVA. El estudiante adquiere destrezas en el uso de procedimientos que le permitan analizar, diseñar y desarrollar aplicaciones haciendo uso de la programación Orientada a Objetos con JAVA.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

El estudiante aprende un lenguaje Programación Orientada a Objetos, junto a su entorno de programación JAVA.

Denominación de

practicas

Práctica 01: Estructuras no dinámicas Utilizando Java Eclipse

Practica 02: Estructuras dinámicas Utilizando Java Eclipse

Practica 03: Base de Datos Modelo Relacional entidad Relación

Access Utilizando Java Eclipse

Practica 04: Redes Encriptamiento y desincriptamiento de un dato,

Chat cliente Servidor Utilizando Java Eclipse

Practica 05: Computación Grafica 2D y 3D Utilizando Jcreator Java

Eclipse

Número de horas 4 Horas por laboratorio, 4 Cinco Laboratorios, un total 16 Horas

Porcentaje 25 Puntos de la plataforma Campus Virtual

Curso Evaluado por

proyecto

SI___ NO_X_

Seguridad

industrial

No Ingresar Alimentos líquidos o sólidos al Laboratorio. Para que se presente algún corto circuito. No ingresar fumando al Laboratorio. Para que moleste a los compañeros. No ingresar otros aparatos electrónicos como radios, Walkman, para que no interfieran en el desarrollo del laboratorio. No Cambiar los computadores de sitio sin autorización del monitor del laboratorio. No reconfigurar los equipos de computo ya que este presta servicio a toda la comunidad unadista.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

PRACTICA No. 04 – Redes Encriptamiento y Desincriptamiento de un dato, Chat cliente Servidor, computacion Grafica 2D con Java 2 Utilizando Jcreator LE

Tipo de practica

Presencial Autodirigida Remota X

Porcentaje de evaluación 7.5 % del 60 %

Horas de la practica 3 Horas Laboratorio ST 12 Horas Independientes

Temáticas de la práctica Redes Encriptamiento y Desincriptamiento de un dato, Chat cliente Servidor, computacion Grafica 2D con Java 2 Utilizando

Jcreator LE

Intencionalidades formativas

Propósitos:

Aportar a la fundamentación teórica del estudiante, como base para la construcción de un discurso coherente y sustentado, a través de la profundización en la terminología a través del lenguaje de programación Java, Introducir al estudiante en el conocimiento de los principales algoritmos y estructuras de datos utilizados en Computación Gráfica, especialmente en la generación degráficos en dos dimensiones con lenguaje de programación Java. Proporcionar al estudiante los lineamientos tecnológicos básicos que le permitan utilizar API gráficas en conjunto con lenguajes de programación de alto nivel, para el proceso de modelamiento y construcción de escenarios gráficos en 2D y 3D..

Objetivos:

Que el estudiante utilice y comprenda los diferentes conceptos relacionados con el la representación de gráficos en el computador y los componentes hardware – software necesarios partiendo de los fundamentos teóricos y tecnológicos de esta disciplina con es el lenguaje de programación Java. Que el estudiante explique los algoritmos necesarios para el trazado de curvas en dos dimensiones, a partir del estudio de su origen matemático, geométrico y construya aplicaciones básicas que las implementen utilizando lenguajes de alto nivel o lenguaje de programación Java

Metas:

Definir y comparar términos relacionados comúnmente con la computación gráfica y con el lenguaje de programación Java. Relacionar los diferentes componentes que intervienen en la

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

apreciación de la luz y el color en el computador y con el lenguaje de programación Java. Usar API gráficas para la construcción de gráficos computacionales. Utilizar y construir algoritmos para dibujo de gráficos en 2D y 3D.· Describir el funcionamiento matemático y geométrico que permite el dibujo de gráficos en el computador y con el lenguaje de programación Java..

Competencias:

El estudiante programa y utiliza algoritmos que permiten dibujar las principales figuras geométricas de dos dimensiones. El estudiante conoce los fundamentos matemáticos de la representación de gráficos computacionales en dos dimensiones y utiliza algoritmos que las realizan. El estudiante utiliza las principales clases proporcionadas por el API 2D y 3D de Java, en la programación de ejercicios que exigen la representación de gráficos en dos y 3 dimensiones.

Fundamentación Teórica

Computacion Grafica

Algoritmos básicos de dibujo en dos Dimensiones

Trabajar con API Grafica

Introduccion a las redes de computador

Redes de Datos

Redes de Area local

Descripción de la practica

El estudiante debe instalar una maquina virtual y Jcretor JE en su casa, este software debe ser

bajado a través de internet de la página Sum Macrosystem

El estudiante debe bajar la Guía de Laboratorio para la práctica de la Plataforma campus Virtual

del curso Académico de Programación Orientada a Objetos.

El estudiante mediante la herramienta de copiar y pegar debe practicar los diferentes ejercicios

propuestos en esta guía para que vaya adquiriendo destreza en el lenguaje de programación Java.

El estudiante debe de estar en capacidad de investigar los diferentes códigos de java ya que todos

los ejercicios que propone la guía de laboratorio están propuestos java.swing.*, o ambiente grafico

y el estudiante debe tener las condiciones de pasarlo en java.io.*, o ambiente en código de línea

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

todos los propuestos en estas.

Recursos a utilizar en la práctica (Equipos / instrumentos)

Computadores Modernos con buena Configuración y con software licenciado

Software a utilizar en la practica

Instalación de la maquina virtual e Instancian del Jcreator LE, de la casa Sum Macrosystem

Metodología

Conocimiento previo para el desarrollo de la práctica. El estudiante de ver el Curso Académico de Programación Orientada a Objetos tiene que tener buenas bases de Algoritmos, Introducción a Programación, Estructura de Datos, Bases de Datos, Redes de Comunicación,

Forma de trabajo: El estudiante analizara primero todo los programas propuestos por el tutor de laboratorio los cuales están analizados, diseñados y desarrollados completamente listos para que su código sea copiado y pegado en JAVA y luego ser ejecutados, luego el estudiante de haber analizado el código se enfrentara a la tarea de desarrollar una serie de programas por sí solo. Procedimiento: El Estudiante debe investigar como puede hacer estos mismos programas

utilizando las librerías import java.io.* y applet

Sistema de Evaluación

El sistema de evaluación estará a cargo de los tutores de Laboratorio ya que ellos son

autónomos de calificar bien sea en grupos o de forma individual el trabajo realizado en los

laboratorios

Informe o productos a entregar

Los estudiantes debe entregar los ejercicios propuestos en la guía de laboratorio en

java.io.*; y applet

Rúbrica de evaluación

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA "UNAD"

ESCUELA CIENCIAS BASICAS TECNOLOGIA E INGENIERIA

PROGRAMA INGENIERIA DE SISTEMAS

Practica 04 Redes de Comunicación y Computación Grafica con Java Utilizando Jcretor LE

Rúbrica de Evaluación:

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

Ítem

Evaluado

Valoración

Baja

Valoración

Media

Valoración

Alta

Máximo

Puntaje

Estructura del

Programa

codificado en

Jcreator LE

Programas sin

formato (0)

Programas sin

ejecutables (2)

Programas

ejecutables (3)

2

Redacción y

Ortografía

documentación

del programa

Programas No

documentado

(0)

Programas

Medio

documentado

(2)

Programas Bien

documentado

(3)

1

Fines del

programa

Programa no

cumple con lo

sugerido (0)

Programa

regular con lo

sugerido (7)

Programa

Cumple con lo

sugerido (15)

2

TOTAL DE

PUNTOS

POSIBLES

5

Nota: Estudiante que no se presente al componente practico en las fechas propuestas

por los diferentes Cead o Ceres y que no desarrollen las guías propuestas para estos

laboratorios, tendrá una nota total de CERO: (0)

Retroalimentación

La retroalimentación de los diferentes productos entregados en el laboratorio serán

evaluados por el tutor de laboratorio directamente ya que el es el encargo de entregar la

nota del 30 % con respecto al componente practico.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

Ejercicios Propuestos por el tutor: Guía de Laboratorio Comunicacion utilizando el lenguaje de programación Java trabajos con java.swing.*; o ambiente grafico Servidor import java.io.*; import java.net.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Servidor extends JFrame { private JTextField campoIntroducir; private JTextArea areaPantalla; private ObjectOutputStream salida; private ObjectInputStream entrada; private ServerSocket servidor; private Socket conexion; private int contador = 1; // configurar GUI public Servidor() { super( "Servidor" ); Container contenedor = getContentPane(); // crear campoIntroducir y registrar componente de escucha campoIntroducir = new JTextField(); campoIntroducir.setEditable( false ); campoIntroducir.addActionListener( new ActionListener() { // enviar mensaje al cliente public void actionPerformed( ActionEvent evento ) { enviarDatos( evento.getActionCommand() ); campoIntroducir.setText( "" ); } } ); contenedor.add( campoIntroducir, BorderLayout.NORTH ); // crear areaPantalla areaPantalla = new JTextArea(); contenedor.add( new JScrollPane( areaPantalla ), BorderLayout.CENTER ); setSize( 300, 150 ); setVisible( true ); } // fin del constructor de Servidor // configurar y ejecutar el servidor public void ejecutarServidor() { // configurar servidor para que reciba conexiones; procesar las conexiones try { // Paso 1: crear un objeto ServerSocket. servidor = new ServerSocket( 12345, 100 );

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

while ( true ) { try { esperarConexion(); // Paso 2: esperar una conexión. obtenerFlujos(); // Paso 3: obtener flujos de entrada y salida. procesarConexion(); // Paso 4: procesar la conexión. } // procesar excepción EOFException cuando el cliente cierre la conexión catch ( EOFException excepcionEOF ) { System.err.println( "El servidor terminó la conexión" ); } finally { cerrarConexion(); // Paso 5: cerrar la conexión. ++contador; } } // fin de instrucción while } // fin del bloque try // procesar problemas con E/S catch ( IOException excepcionES ) { excepcionES.printStackTrace(); } } // fin del método ejecutarServidor // esperar que la conexión llegue, después mostrar información de la conexión private void esperarConexion() throws IOException { mostrarMensaje( "Esperando una conexión\n" ); conexion = servidor.accept(); // permitir al servidor aceptar la conexión mostrarMensaje( "Conexión " + contador + " recibida de: " + conexion.getInetAddress().getHostName() ); } // obtener flujos para enviar y recibir datos private void obtenerFlujos() throws IOException { // establecer flujo de salida para los objetos salida = new ObjectOutputStream( conexion.getOutputStream() ); salida.flush(); // vaciar búfer de salida para enviar información de encabezado // establecer flujo de entrada para los objetos entrada = new ObjectInputStream( conexion.getInputStream() ); mostrarMensaje( "\nSe recibieron los flujos de E/S\n" ); } // procesar la conexión con el cliente private void procesarConexion() throws IOException { // enviar mensaje de conexión exitosa al cliente String mensaje = "Conexión exitosa"; enviarDatos( mensaje ); // habilitar campoIntroducir para que el usuario del servidor pueda enviar mensajes establecerCampoTextoEditable( true ); do { // procesar los mensajes enviados por el cliente // leer el mensaje y mostrarlo en pantalla try { mensaje = ( String ) entrada.readObject(); mostrarMensaje( "\n" + mensaje ); }

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

// atrapar problemas que pueden ocurrir al tratar de leer del cliente catch ( ClassNotFoundException excepcionClaseNoEncontrada ) { mostrarMensaje( "\nSe recibió un tipo de objeto desconocido" ); } } while ( !mensaje.equals( "CLIENTE>>> TERMINAR" ) ); } // fin del método procesarConexion // cerrar flujos y socket private void cerrarConexion() { mostrarMensaje( "\nFinalizando la conexión\n" ); establecerCampoTextoEditable( false ); // deshabilitar campoIntroducir try { salida.close(); entrada.close(); conexion.close(); } catch( IOException excepcionES ) { excepcionES.printStackTrace(); } } // enviar mensaje al cliente private void enviarDatos( String mensaje ) { // enviar objeto al cliente try { salida.writeObject( "SERVIDOR>>> " + mensaje ); salida.flush(); mostrarMensaje( "\nSERVIDOR>>> " + mensaje ); } // procesar problemas que pueden ocurrir al enviar el objeto catch ( IOException excepcionES ) { areaPantalla.append( "\nError al escribir objeto" ); } } // método utilitario que es llamado desde otros subprocesos para manipular a // areaPantalla en el subproceso despachador de eventos private void mostrarMensaje( final String mensajeAMostrar ) { // mostrar mensaje del subproceso de ejecución despachador de eventos SwingUtilities.invokeLater( new Runnable() { // clase interna para asegurar que la GUI se actualice apropiadamente public void run() // actualiza areaPantalla { areaPantalla.append( mensajeAMostrar ); areaPantalla.setCaretPosition( areaPantalla.getText().length() ); } } // fin de la clase interna ); // fin de la llamada a SwingUtilities.invokeLater } // método utilitario que es llamado desde otros subprocesos para manipular a // campoIntroducir en el subproceso despachador de eventos private void establecerCampoTextoEditable( final boolean editable ) { // mostrar mensaje del subproceso de ejecución despachador de eventos SwingUtilities.invokeLater( new Runnable() { // clase interna para asegurar que la GUI se actualice apropiadamente

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

public void run() // establece la capacidad de modificar a campoIntroducir { campoIntroducir.setEditable( editable ); } } // fin de la clase interna ); // fin de la llamada a SwingUtilities.invokeLater } public static void main( String args[] ) { Servidor aplicacion = new Servidor(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); aplicacion.ejecutarServidor(); } } // fin de la clase Servidor

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

Cliente import java.io.*; import java.net.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Cliente extends JFrame { private JTextField campoIntroducir; private JTextArea areaPantalla; private ObjectOutputStream salida; private ObjectInputStream entrada; private String mensaje = ""; private String servidorChat; private Socket cliente; // inicializar servidorChat y configurar GUI public Cliente( String host ) { super( "Cliente" ); servidorChat = host; // establecer el servidor al que se va a conectar este cliente Container contenedor = getContentPane(); // crear campoIntroducir y registrar componente de escucha campoIntroducir = new JTextField(); campoIntroducir.setEditable( false ); campoIntroducir.addActionListener( new ActionListener() { // enviar mensaje al servidor public void actionPerformed( ActionEvent evento ) { enviarDatos( evento.getActionCommand() ); campoIntroducir.setText( "" ); } } ); contenedor.add( campoIntroducir, BorderLayout.NORTH ); // crear areaPantalla areaPantalla = new JTextArea(); contenedor.add( new JScrollPane( areaPantalla ), BorderLayout.CENTER ); setSize( 300, 150 ); setVisible( true ); } // fin del constructor de Cliente // conectarse al servidor y procesar mensajes del servidor private void ejecutarCliente() { // conectarse al servidor, obtener flujos, procesar la conexión try { conectarAServidor(); // Paso 1: crear un socket para realizar la conexión obtenerFlujos(); // Paso 2: obtener los flujos de entrada y salida procesarConexion(); // Paso 3: procesar la conexión } // el servidor cerró la conexión catch ( EOFException excepcionEOF ) { System.err.println( "El cliente termino la conexión" ); }

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

// procesar los problemas que pueden ocurrir al comunicarse con el servidor catch ( IOException excepcionES ) { excepcionES.printStackTrace(); } finally { cerrarConexion(); // Paso 4: cerrar la conexión } } // fin del método ejecutarCliente // conectarse al servidor private void conectarAServidor() throws IOException { mostrarMensaje( "Intentando realizar conexión\n" ); // crear Socket para realizar la conexión con el servidor cliente = new Socket( InetAddress.getByName( servidorChat ), 12345 ); // mostrar la información de la conexión mostrarMensaje( "Conectado a: " + cliente.getInetAddress().getHostName() ); } // obtener flujos para enviar y recibir datos private void obtenerFlujos() throws IOException { // establecer flujo de salida para los objetos salida = new ObjectOutputStream( cliente.getOutputStream() ); salida.flush(); // vacíar búfer de salida para enviar información de encabezado // establecer flujo de entrada para los objetos entrada = new ObjectInputStream( cliente.getInputStream() ); mostrarMensaje( "\nSe recibieron los flujos de E/S\n" ); } // procesar la conexión con el servidor private void procesarConexion() throws IOException { // habilitar campoIntroducir para que el usuario del cliente pueda enviar mensajes establecerCampoTextoEditable( true ); do { // procesar mensajes enviados del servidor // leer mensaje y mostrarlo en pantalla try { mensaje = ( String ) entrada.readObject(); mostrarMensaje( "\n" + mensaje ); } // atrapar los problemas que pueden ocurrir al leer del servidor catch ( ClassNotFoundException excepcionClaseNoEncontrada ) { mostrarMensaje( "\nSe recibió un objeto de tipo desconocido" ); } } while ( !mensaje.equals( "SERVIDOR>>> TERMINAR" ) ); } // fin del método procesarConexion // cerrar flujos y socket private void cerrarConexion() { mostrarMensaje( "\nCerrando conexión" ); establecerCampoTextoEditable( false ); // deshabilitar campoIntroducir try { salida.close(); entrada.close();

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

cliente.close(); } catch( IOException excepcionES ) { excepcionES.printStackTrace(); } } // enviar mensaje al servidor private void enviarDatos( String mensaje ) { // enviar objeto al servidor try { salida.writeObject( "CLIENTE>>> " + mensaje ); salida.flush(); mostrarMensaje( "\nCLIENTE>>> " + mensaje ); } // procesar los problemas que pueden ocurrir al enviar el objeto catch ( IOException excepcionES ) { areaPantalla.append( "\nError al escribir el objeto" ); } } // método utilitario que es llamado desde otros subprocesos para manipular a // areaPantalla en el subproceso despachador de eventos private void mostrarMensaje( final String mensajeAMostrar ) { // mostrar mensaje del subproceso de ejecución de la GUI SwingUtilities.invokeLater( new Runnable() { // clase interna para asegurar que la GUI se actualice apropiadamente public void run() // actualiza areaPantalla { areaPantalla.append( mensajeAMostrar ); areaPantalla.setCaretPosition( areaPantalla.getText().length() ); } } // fin de la clase interna ); // fin de la llamada a SwingUtilities.invokeLater } // método utilitario que es llamado desde otros subprocesos para manipular a // campoIntroducir en el subproceso despachador de eventos private void establecerCampoTextoEditable( final boolean editable ) { // mostrar mensaje del subproceso de ejecución de la GUI SwingUtilities.invokeLater( new Runnable() { // clase interna para asegurar que la GUI se actualice apropiadamente public void run() // establece la capacidad de modificar campoIntroducir { campoIntroducir.setEditable( editable ); } } // fin de la clase interna ); // fin de la llamada a SwingUtilities.invokeLater } public static void main( String args[] ) { Cliente aplicacion; if ( args.length == 0 ) aplicacion = new Cliente( "127.0.0.1" ); else aplicacion = new Cliente( args[ 0 ] );

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); aplicacion.ejecutarCliente(); } } // fin de la clase Cliente

Ejercicios a Realizar por el Estudiante: El estudiante después de adquirir destreza y conocimiento acerca de lenguaje de programación JAVA en comunicaciones el estudiante de elaborar un programa que no solo envía mensajes a través del servidor y cliente sino que puedan enviar archivos acjuntos, crear un gragicador en 3d

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUIA COMPONENTE PRÁCTICO DEL CURSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

7. FUENTES DOCUMENTALES

Curso Académico Modulo Programación Orientada a Objetos

Libros de la Biblioteca Virtual de Unad en Programación Orientada a Objetos

Consulta de Internet Programación Orientada a Objetos

Autor: Deitel y Deitel Introducción DOO con UML y los Patrones de Diseño JDBC tm, SERVLETS, JSP tm Editorial Pearson Prentice Hall Quinta Edición.

David Arnow Gerald Weiss Introducción a la Programación con Java tm Actualización a la Versión 2 de Java Editorial Addison Wesley. Fcd Javier Ceballos Java 2 Curso de Programación 2 Edición Editorial Alfaomega Ra-Ma. Agustin Froute Java 2 Manual Usuario tutorial 3 Edición Editorial Alfaomega Ra-Ma 5. Herbert shildt Fundamentos de Programación Java 2 Editorial Mc Graw Hill . para conocer el lenguaje de programación JAVA. Arnow, D., Weiss, G., Introducción a la programación con JAVA, Addison wesley, 2000. Larman, C., UML y patrones, Prentice Hall, 1998. Meyer, B., Construcción de software orientado a objetos, Prentice Hall, segunda edición, 1997. Wu, T., Introducción a la programación orientada a objetos con Java, Mc Graw Hill, 2000. Joyanes, L., Programación orientada a objetos, Segunda edición, Mc Graw Hill, 1998. Grez Voss, Introducción Orientada a Objetos, Editorial Mc Graw Hill, 1994. Joyanes, L., C++ a su alcance un enfoque orientada a objetos, Editorial, Mc Graw Hill, 1994. Cesar Becerra Santamaría, C++ Una Herramienta para la Programación Orientada a Objetos, Editorial Mc Graw Hill, 1.993. Fco Javier Ceballos, Programación Orientada a Objetos con C++,Editorial Alfaomega, 1.998. Nathan Meyers, Programación JAVA en Linux, Editorial Prentice Hall, 2.000. www.lawebdelprogramador.com www.programacion.com http://www.cimat.mx/~jlabreu/CursoJava/ http://www.mindview.net/Books/TIJ

http://java.sun.com/docs/books/tutorial/

http://programacion.com/java/tutoriales/