You are on page 1of 19

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA


GUIA COMPONENTE PRCTICO DEL CURSO: 301403 PROGRAMACION ORIENTADA A OBJETOS




UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA



GUA LABORATORIO PRCTICA 3




301403 PROGRAMACION ORIENTADA A OBJETOS
CESAR ORLANDO JIMENEZ ANGARITA
(Director Nacional)





Zona: Centro Bogot Cundinamarca,
Cead: Jos Acevedo y Gmez
Enero 2013

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

2. ASPECTOS DE PROPIEDAD INTELECTUAL Y VERSIONAMIENTO
Curso Acadmico Modulo Programacin Orientada a Objetos
Libros de la Biblioteca Virtual de Unad en Programacin Orientada a Objetos
Consulta de Internet Programacin Orientada a Objetos
Autor: Deitel y Deitel Introduccin DOO con UML y los Patrones de Diseo JDBC tm, SERVLETS,
JSP tm Editorial Pearson Prentice Hall Quinta Edicin.

David Arnow Gerald Weiss Introduccin a la Programacin con Java tm Actualizacin a la Versin
2 de Java Editorial Addison Wesley.

Fcd Javier Ceballos Java 2 Curso de Programacin 2 Edicin Editorial Alfaomega Ra-Ma.

Agustin Froute Java 2 Manual Usuario tutorial 3 Edicin Editorial Alfaomega Ra-Ma 5.

Herbert shildt Fundamentos de Programacin Java 2 Editorial Mc Graw Hill . para conocer el
lenguaje de programacin JAVA.

Arnow, D., Weiss, G., Introduccin a la programacin con JAVA, Addison wesley, 2000.

Larman, C., UML y patrones, Prentice Hall, 1998.

Meyer, B., Construccin de software orientado a objetos, Prentice Hall, segunda edicin, 1997.

Wu, T., Introduccin a la programacin orientada a objetos con Java, Mc Graw Hill, 2000.

Joyanes, L., Programacin orientada a objetos, Segunda edicin, Mc Graw Hill, 1998.

Grez Voss, Introduccin 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 Santamara, C++ Una Herramienta para la Programacin Orientada a Objetos,
Editorial Mc Graw Hill, 1.993.
Fco Javier Ceballos, Programacin Orientada a Objetos con C++,Editorial Alfaomega, 1.998.

Nathan Meyers, Programacin 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 PRCTICO DEL CURSO: 301403 PROGRAMACION ORIENTADA A OBJETOS

3. INDICE DE CONTENIDO

Pg.
1. PRESENTACION
2. ASPECTOS DE PROPIEDAD INTELECTUAL Y VERSIONAMIENTO
3. INDICE DE CONTENIDO
4. LISTADO DE TABLAS
5. CARACTERSTICAS GENERALES
6. DESCRIPCIN DE PRCTICAS

PRACTICA No. 01 Estructuras no dinmicas Utilizando Java Eclipse

Ejercicios Propuestos por el tutor:

Ejercicios a Realizar por el Estudiante:

PRACTICA No. 02 Estructuras dinmicas Utilizando Java Eclipse

Ejercicios Propuestos por el tutor:

Ejercicios a Realizar por el Estudiante:

PRACTICA No. 03 Base de Datos Modelo Relacional entidad Relacin 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 PRCTICO DEL CURSO: 301403 PROGRAMACION ORIENTADA A OBJETOS

5. CARACTERSTICAS GENERALES
Introduccin
Actualmente una de las reas ms importantes en la industria y el
mbito acadmico es la orientacin a objetos, el curso que a
continuacin se relaciona tiene el nombre de Programacin Orientada
a Objetos el cual es terico prctico, de 3 crditos y hace parte de la
formacin profesional en el programa de Ingeniera de Sistemas.

El curso est compuesto por tres unidades acadmicas didcticas:

Unidad Uno comprende la introduccin y elementos bsicos de la
programacin orientada a objetos (POO) y las propiedades bsicas
de la POO aplicado con JAVA.

Unidad Dos hace referencia al diseo de la estructura y
comportamiento de un objeto y se inicia con los Fundamentos de la
programacin en el lenguaje JAVA.

Unidad tres se enfocan en el trabajo con las clases, el manejo de la
herencia y la extensin de las clases aplicado con JAVA.

Justificacin
El uso de y aplicaciones de herramientas enfocadas a la POO, hacen
que el profesional en Ingeniera sea capaz de disear 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 programacin estructurada con la
programacin orientada a objetos y enfrentar los retos del cambio, le
permite desarrollar su capacidad de comunicacin, y su espritu
Investigativo y crtico con una lenguaje de programacin orientado a
objetos.

Para lograr la apropiacin de todo el contenido temtico el estudiante
aplicara en todo momento su autoformacin y se apoyara en el tutor
para la resolucin de dudas, tambin se tendrn uso de herramientas
tecnolgicas para la interaccin con los tutores y alumnos dentro de
los laboratorios.

Intencionalidades
formativas
Propsitos:

Dar a conocer a los estudiantes de una forma clara los conceptos
fundamentales de la Programacin Orientada a Objetos en JAVA.

Dar a Conocer a los estudiantes las ventajas de aplicar la
Programacin Orientada a Objetos ya que simplifica la construccin
de programas y lo motiva para estudiar las caractersticas del
lenguaje JAVA.

Capacitar a los estudiantes a comprender y utilizar herramientas de
Programacin Orientadas a Objetos como JAVA, para el diseo de
aplicaciones.

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


Objetivos:

Que el estudiante Describa los conceptos que caracterizan al modelo
Programacin Orientada a Objetos Utilizando JAVA.

Que el estudiante Valore en que medida las tcnicas Programacin
Orientada a Objetos favorecen la calidad del software, analizando
sobre todo cmo facilitan la reutilizacin y extensibilidad en JAVA.

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

Que le estudiante Aprenda un lenguaje Programacin Orientada a
Objetos, junto a su entorno de programacin.

Que el estudiante aplique tcnicas de programacin Orientada a
Objetos en JAVA.

Que el estudiante identifique analice y disee ejemplos de aplicacin
en JAVA

Metas:
Al terminar este curso de Programacin Orientada a Objetos el
estudiante:

Desarrollara aplicaciones teniendo en cuenta los fundamentos
tericos, y el manejo de objetos como principal elemento de
Construccin de soluciones en JAVA.

Tendr la capacidad de analizar, disear y desarrollar software
utilizando el entorno de Programacin 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 Programacin Orientada a Objetos, para poder
analiza, disear, desarrollar e implantar aplicaciones ms robustas y
con cdigo reutilizable con JAVA.

El estudiante adquiere destrezas en el uso de procedimientos que le
permitan analizar, disear y desarrollar aplicaciones haciendo uso de
la programacin Orientada a Objetos con JAVA.


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

El estudiante aprende un lenguaje Programacin Orientada a Objetos,
junto a su entorno de programacin JAVA.

Denominacin de
practicas
Practica 04: Redes Encriptamiento y desincriptamiento de un dato,
Chat cliente Servidor, Computacin Grafica 2D y 3D Utilizando
Jcreator Java Eclipse
Nmero de horas
4 Horas por laboratorio, 4 Cinco Laboratorios, un total 16 Horas
Porcentaje
35 Puntos de la plataforma Campus Virtual
Curso Evaluado por
proyecto
SI___ NO_X_
Seguridad
industrial
No Ingresar Alimentos lquidos o slidos al Laboratorio. Para
que se presente algn corto circuito.

No ingresar fumando al Laboratorio. Para que moleste a los
compaeros.

No ingresar otros aparatos electrnicos como radios, Walkman,
para que no interfieran en el desarrollo del laboratorio.

No Cambiar los computadores de sitio sin autorizacin 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 PRCTICO 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 o Java
Eclipse
Tipo de practica
Presencial Autodirigida Remota X
Porcentaje de evaluacin
35 Puntos Plataforma Campus Virtual
Horas de la practica
3 Horas Laboratorio ST 12 Horas Independientes
Temticas de la prctica
Redes Encriptamiento y Desincriptamiento de un dato, Chat
cliente Servidor, computacion Grafica 2D con Java 2 Utilizando
Jcreator LE
Intencionalidades
formativas
Propsitos:
Aportar a la fundamentacin terica del estudiante, como base
para la construccin de un discurso coherente y sustentado, a
travs de la profundizacin en la terminologa a travs del
lenguaje de programacin Java,

Introducir al estudiante en el conocimiento de los principales
algoritmos y estructuras de datos utilizados en Computacin
Grfica, especialmente en la generacin degrficos en dos
dimensiones con lenguaje de programacin Java.

Proporcionar al estudiante los lineamientos tecnolgicos
bsicos que le permitan utilizar API grficas en conjunto con
lenguajes de programacin de alto nivel, para el proceso de
modelamiento y construccin de escenarios grficos en 2D y
3D..

Objetivos:
Que el estudiante utilice y comprenda los diferentes conceptos
relacionados con el la representacin de grficos en el
computador y los componentes hardware software necesarios
partiendo de los fundamentos tericos y tecnolgicos de esta
disciplina con es el lenguaje de programacin Java.

Que el estudiante explique los algoritmos necesarios para el
trazado de curvas en dos dimensiones, a partir del estudio de
su origen matemtico, geomtrico y construya aplicaciones
bsicas que las implementen utilizando lenguajes de alto nivel
o lenguaje de programacin Java

Metas:
Definir y comparar trminos relacionados comnmente con la
computacin grfica y con el lenguaje de programacin Java.

Relacionar los diferentes componentes que intervienen en la
apreciacin de la luz y el color en el computador y con el
lenguaje de programacin Java.

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


Usar API grficas para la construccin de grficos
computacionales. Utilizar y construir algoritmos para dibujo de
grficos en 2D y 3D. Describir el funcionamiento matemtico y
geomtrico que permite el dibujo de grficos en el computador
y con el lenguaje de programacin Java..

Competencias:
El estudiante programa y utiliza algoritmos que permiten dibujar
las principales figuras geomtricas de dos dimensiones. El
estudiante conoce los fundamentos matemticos de la
representacin de grficos 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 programacin de ejercicios que
exigen la representacin de grficos en dos y 3 dimensiones.



Fundamentacin Terica
Computacion Grafica
Algoritmos bsicos de dibujo en dos Dimensiones
Trabajar con API Grafica
Introduccion a las redes de computador
Redes de Datos
Redes de Area local
Descripcin de la practica
El estudiante debe instalar una maquina virtual y Jcretor JE en su casa, este software debe ser
bajado a travs de internet de la pgina Sum Macrosystem
El estudiante debe bajar la Gua de Laboratorio para la prctica de la Plataforma campus Virtual
del curso Acadmico de Programacin Orientada a Objetos.
El estudiante mediante la herramienta de copiar y pegar debe practicar los diferentes ejercicios
propuestos en esta gua para que vaya adquiriendo destreza en el lenguaje de programacin Java.
El estudiante debe de estar en capacidad de investigar los diferentes cdigos de java ya que todos
los ejercicios que propone la gua de laboratorio estn propuestos java.swing.*, o ambiente grafico
y el estudiante debe tener las condiciones de pasarlo en java.io.*, o ambiente en cdigo de lnea
todos los propuestos en estas.

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

Recursos a utilizar en la prctica (Equipos / instrumentos)
Computadores Modernos con buena Configuracin y con software licenciado
Software a utilizar en la practica
Instalacin de la maquina virtual e Instancian del Jcreator LE o Java Eclipse , de la casa Sum
Macrosystem
Metodologa
Conocimiento previo para el desarrollo de la prctica. El estudiante de ver el Curso Acadmico de
Programacin Orientada a Objetos tiene que tener buenas bases de Algoritmos, Introduccin a
Programacin, Estructura de Datos, Bases de Datos, Redes de Comunicacin,

Forma de trabajo: El estudiante analizara primero todo los programas propuestos por el tutor de
laboratorio los cuales estn analizados, diseados y desarrollados completamente listos para que
su cdigo sea copiado y pegado en JAVA y luego ser ejecutados, luego el estudiante de haber
analizado el cdigo 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 libreras import java.io.* y applet
Sistema de Evaluacin
El sistema de evaluacin estar a cargo de los tutores de Laboratorio ya que ellos son
autnomos 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 gua de laboratorio en
java.io.*; y applet
Rbrica de evaluacin

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA "UNAD"
ESCUELA CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
PROGRAMA INGENIERIA DE SISTEMAS
Practica 04 Redes de Comunicacin y Computacin Grafica con
Java Utilizando Jcretor LE o Java Eclipse


Rbrica de Evaluacin:

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

tem
Evaluado
Valoracin
Baja
Valoracin
Media
Valoracin
Alta
Mximo
Puntaje
Estructura del
Programa
codificado en
Java Eclipse o
Jcreator Le
Programas sin
formato (0)
Programas
Medianamente
con formato
(3)
Programas con
formato (7)
7

Redaccin y
Ortografa
documentacin
del programa
Programas No
documentados
(0)
Programas
Medianamente
documentados
(3)
Programas Bien
documentados
(7)
7
Los Programas
Compilan
Correctamente
Los Programas
No Compilan
Correctamente
(0)
Los Programas
Compilan
Medianamente
(3)
Los Programas
Compilan
Correctamente
(7)
7
Los Programas
Ejecutan
Correctamente
Los Programas
No Ejecutan
Correctamente
(0)
Los Programas
Ejecutan
Medianamnete
(3)
Los Programas
Ejecutan
Correctamente
(7)
7
Fines del
programa

Programa no
cumple con lo
sugerido (0)
Programa
regular con lo
sugerido (3)
Programa
Cumple con lo
sugerido (7)
7
TOTAL DE
PUNTOS
POSIBLES
35

Nota: Estudiante que no se presente al componente practico en las fechas propuestas
por los diferentes Cead o Ceres y que no desarrollen las guas propuestas para estos
laboratorios, tendr una nota total de CERO: (0)

Retroalimentacin
La retroalimentacin de los diferentes productos entregados en el laboratorio sern
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 PRCTICO DEL CURSO: 301403 PROGRAMACION ORIENTADA A OBJETOS

Ejercicios Propuestos por el tutor:

Gua de Laboratorio Comunicacion utilizando el lenguaje de programacin 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 );

while ( true ) {


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
GUIA COMPONENTE PRCTICO DEL CURSO: 301403 PROGRAMACION ORIENTADA A OBJETOS
try {
esperarConexion(); // Paso 2: esperar una conexin.
obtenerFlujos(); // Paso 3: obtener flujos de entrada y salida.
procesarConexion(); // Paso 4: procesar la conexin.
}

// procesar excepcin EOFException cuando el cliente cierre la conexin
catch ( EOFException excepcionEOF ) {
System.err.println( "El servidor termin la conexin" );
}

finally {
cerrarConexion(); // Paso 5: cerrar la conexin.
++contador;
}

} // fin de instruccin while

} // fin del bloque try

// procesar problemas con E/S
catch ( IOException excepcionES ) {
excepcionES.printStackTrace();
}

} // fin del mtodo ejecutarServidor

// esperar que la conexin llegue, despus mostrar informacin de la conexin
private void esperarConexion() throws IOException
{
mostrarMensaje( "Esperando una conexin\n" );
conexion = servidor.accept(); // permitir al servidor aceptar la conexin
mostrarMensaje( "Conexin " + 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 bfer de salida para enviar informacin 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 conexin con el cliente
private void procesarConexion() throws IOException
{
// enviar mensaje de conexin exitosa al cliente
String mensaje = "Conexin 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 );
}

// atrapar problemas que pueden ocurrir al tratar de leer del cliente
catch ( ClassNotFoundException excepcionClaseNoEncontrada ) {

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
GUIA COMPONENTE PRCTICO DEL CURSO: 301403 PROGRAMACION ORIENTADA A OBJETOS
mostrarMensaje( "\nSe recibi un tipo de objeto desconocido" );
}

} while ( !mensaje.equals( "CLIENTE>>> TERMINAR" ) );

} // fin del mtodo procesarConexion

// cerrar flujos y socket
private void cerrarConexion()
{
mostrarMensaje( "\nFinalizando la conexin\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" );
}
}

// mtodo 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 ejecucin 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
}

// mtodo 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 ejecucin despachador de eventos
SwingUtilities.invokeLater(
new Runnable() { // clase interna para asegurar que la GUI se actualice apropiadamente

public void run() // establece la capacidad de modificar a campoIntroducir
{

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
GUIA COMPONENTE PRCTICO DEL CURSO: 301403 PROGRAMACION ORIENTADA A OBJETOS
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 PRCTICO 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 conexin
try {
conectarAServidor(); // Paso 1: crear un socket para realizar la conexin
obtenerFlujos(); // Paso 2: obtener los flujos de entrada y salida
procesarConexion(); // Paso 3: procesar la conexin
}

// el servidor cerr la conexin
catch ( EOFException excepcionEOF ) {
System.err.println( "El cliente termino la conexin" );
}


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
GUIA COMPONENTE PRCTICO 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 conexin
}

} // fin del mtodo ejecutarCliente

// conectarse al servidor
private void conectarAServidor() throws IOException
{
mostrarMensaje( "Intentando realizar conexin\n" );

// crear Socket para realizar la conexin con el servidor
cliente = new Socket( InetAddress.getByName( servidorChat ), 12345 );

// mostrar la informacin de la conexin
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(); // vacar bfer de salida para enviar informacin 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 conexin 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 mtodo procesarConexion

// cerrar flujos y socket
private void cerrarConexion()
{
mostrarMensaje( "\nCerrando conexin" );
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 PRCTICO 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" );
}
}

// mtodo 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 ejecucin 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
}

// mtodo 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 ejecucin 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 PRCTICO 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 despus de adquirir destreza y conocimiento acerca de lenguaje de
programacin JAVA en comunicaciones el estudiante de elaborar un programa que no solo
enva mensajes a travs 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 PRCTICO DEL CURSO: 301403 PROGRAMACION ORIENTADA A OBJETOS

7. FUENTES DOCUMENTALES
Curso Acadmico Modulo Programacin Orientada a Objetos
Libros de la Biblioteca Virtual de Unad en Programacin Orientada a Objetos
Consulta de Internet Programacin Orientada a Objetos
Autor: Deitel y Deitel Introduccin DOO con UML y los Patrones de Diseo JDBC tm, SERVLETS,
JSP tm Editorial Pearson Prentice Hall Quinta Edicin.

David Arnow Gerald Weiss Introduccin a la Programacin con Java tm Actualizacin a la Versin
2 de Java Editorial Addison Wesley.

Fcd Javier Ceballos Java 2 Curso de Programacin 2 Edicin Editorial Alfaomega Ra-Ma.
Agustin Froute Java 2 Manual Usuario tutorial 3 Edicin Editorial Alfaomega Ra-Ma 5.

Herbert shildt Fundamentos de Programacin Java 2 Editorial Mc Graw Hill . para conocer el
lenguaje de programacin JAVA.

Arnow, D., Weiss, G., Introduccin a la programacin con JAVA, Addison wesley, 2000.

Larman, C., UML y patrones, Prentice Hall, 1998.

Meyer, B., Construccin de software orientado a objetos, Prentice Hall, segunda edicin, 1997.

Wu, T., Introduccin a la programacin orientada a objetos con Java, Mc Graw Hill, 2000.

Joyanes, L., Programacin orientada a objetos, Segunda edicin, Mc Graw Hill, 1998.

Grez Voss, Introduccin 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 Santamara, C++ Una Herramienta para la Programacin Orientada a Objetos,
Editorial Mc Graw Hill, 1.993.

Fco Javier Ceballos, Programacin Orientada a Objetos con C++,Editorial Alfaomega, 1.998.

Nathan Meyers, Programacin 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/

You might also like