Está en la página 1de 12

Java Cliente Servidor

CAPITULO I

Cliente Servidor con

Java

Autor: MANUEL TORRES Telf. 996-396023 Email: manuel.torresr@hotmail.com

Autor: Lic. Manuel TORRES

Pagina N 1

Java Cliente Servidor

CAPITULO I

CAPITULO I
Multitarea Clase Thread Metodos principales Caso Desarrollado Caso Propuesto

Autor: Lic. Manuel TORRES

Pagina N 2

Java Cliente Servidor

CAPITULO I

MULTITAREA-MULTIPROCESO
INTRODUCCIN: normalmente las aplicaciones son ejecutadas de forma secuencial, en conclusion un programa con un unico flujo de control, ejecuta solo una tarea(hilo). Historicamente los sistemas de computo personales solo han tenido un unico CPU, al volverse mas poderosos se desarrollo Sistemas Operativos Multitarea (MultiHilo), Multiproceso. HILOS: Un Hilo o thread es un flujo de control secuencial de un programa. Una aplicacin puede generar dos o mas hilos de ejecucion, los cuales siempre dependeran de la aplicacin principal. Ejm: Imprimir diferentes mensajes desde una aplicacin principal. CARACTERISTICAS DE LOS HILOS: - Tipicamente las tareas controlan un unico aspecto dentro de un programa. - Todas las tareas comparten los mismo recursos.

Thread 2

Thread 1

Thread 3

Aplicacin Java

DIFERENCIA ENTRE MULTITAREA Y MULTIPROCESO MultiTarea MultiProceso Dos o mas tareas se ejecutan a la vez Dos o mas programas se ejecutan dentro de un mismo programa. aparentemente a la vez, sin necesidad de tener una relacion entre ellos.

LA CLASE THREAD
La forma ms directa para hacer un programa multi-thread es extender la clase Thread, y redefinir el mtodo run(). Este mtodo es invocado cuando se inicia el Thread (mediante una llamada al mtodo start() de la clase thread). El thread se inicia con la llamada al mtodo run y termina cuando termina ste.

Autor: Lic. Manuel TORRES

Pagina N 3

Java Cliente Servidor

CAPITULO I

Metodos Principales de la Clase Thread: Metodo activeCount() currentThread() getName() run() Descripcion Retornar el numero de hilos activos en el hilo actual Vuelve una referencia al objeto del hilo actualmente en ejecucion. Obtiene el nombre del Hilo Constituye el cuerpo de un hilo en ejecucion. Este es el unico metodo de la interfaz Runnable. Es llamado por el metodo Start() despues de que el hilo apropiado del sistema se haya inicializado. Siempre que el metodo run devuelva el control, el hilo se detendra. Suspende la ejecucion del hilo. Inicia la ejecucion del hilo, se ejecuta el metodo Run Retorna una cadena con informacion del hilo, incluye su nombre y su prioridad.

sleep() start() To String()

Autor: Lic. Manuel TORRES

Pagina N 4

Java Cliente Servidor

CAPITULO I

Caso Desarrollado:
Se desea controlar la marcacion de los empleados de una Empresa. Crear los siguientes Paquetes: Empresa Aqui se almacenaran todos las clases tipo Formulario. Empresa.Clases Aqu se almacenaran las clases y sus Arreglos. Empresa.Imagenes Aqu se almacenaran las imgenes utilizadas en el Menu. Crear las siguientes clases: Marcacion Arreglo de Marcacion Atributos privados para Dni, Fecha y Hora tipo String. Mtodo constructor que inicialice los atributos Metodos get de todos los atributos Declarar como privado el ArrayList Mat de tipo Marcacion. Mtodo constructor que cree el objeto Mat ArrayList de tipo Marcacion e invoque al mtodo cargar. Mtodo adiciona, que se encargara de agregar una marcacion en el ArrayList. Mtodo obtener, que devuelve la matriz de elementos de acuerdo a la posicion en el arreglo. Mtodo buscar, es el encargado de comparar si el dni ingresado existe en el ArrayList o no, dependiendo de eso deber devolver el objeto encontrado, caso contrario devolver null. Mtodo getTamao, que devuelva el tamao del Arraylist. Mtodo cargar que permita ingresar al archivo Marcacion.txt y devuelva los valores registrados. Mtodo grabar que permita almacenar los nuevos valores ingresados al archivo Marcacion.txt.

En la clase frmMenu disear un Menu de opciones como se muestra en las siguientes imgenes.

Autor: Lic. Manuel TORRES

Pagina N 5

Java Cliente Servidor

CAPITULO I

Formulario de Marcacion del Dia:

Formulario de Reporte de Marcacion:

Clase Marcacion: package Empresa.Clases; public class Marcacion { private String dni; private String fecha; private String hora; public Marcacion(String dni,String fecha,String hora){ this.dni=dni; this.fecha=fecha; this.hora=hora; } public String getDni(){ return dni; }
Autor: Lic. Manuel TORRES Pagina N 6

Java Cliente Servidor

CAPITULO I

public String getFecha(){ return fecha; } public String getHora(){ return hora; } } Clase ArregloMarcacion: package Empresa.Clases; import import import import import import import import java.io.BufferedReader; java.io.File; java.io.FileReader; java.io.FileWriter; java.io.PrintWriter; java.util.ArrayList; java.util.StringTokenizer; javax.swing.JOptionPane;

public class ArregloMarcacion { private ArrayList <Marcacion> Mar; public ArregloMarcacion(){ Mar=new ArrayList<Marcacion>(); cargar(); } public void adiciona(Marcacion m){ Mar.add(m); } public Marcacion obtener(int pos){ return Mar.get(pos); } public Marcacion buscar(String dni){ for(Marcacion m:Mar){ if (m.getDni().equals(dni)) return m; } return null; } public int getTamao(){ return Mar.size(); }

Autor: Lic. Manuel TORRES

Pagina N 7

Java Cliente Servidor

CAPITULO I

public void cargar(){ try{ File archivo = new File("Marcacion.txt"); if (archivo.exists()){ BufferedReader br=new BufferedReader(new FileReader("Marcacion.txt")); String linea; while((linea=br.readLine())!=null){ StringTokenizer st=new StringTokenizer(linea,","); String dni=st.nextToken().trim(); String fecha=st.nextToken().trim(); String hora=st.nextToken().trim(); Marcacion x=new Marcacion(dni,fecha,hora); adiciona(x); } br.close(); } else JOptionPane.showMessageDialog(null, "El archivo de texto no existe"); } catch(Exception x){ JOptionPane.showMessageDialog(null, "Se produjo un Error "+x); } } public void grabar(){ try{ PrintWriter pw=new PrintWriter(new FileWriter("Marcacion.txt")); for(int i=0;i<getTamao();i++){ pw.println(obtener(i).getDni()+","+ obtener(i).getFecha()+","+ obtener(i).getHora()); } pw.close(); JOptionPane.showMessageDialog(null, "Registro su Entrada Correctamente"); }catch(Exception ex){ JOptionPane.showMessageDialog(null,"Error de Datos","Aviso", JOptionPane.ERROR_MESSAGE); } } } Clase frmMarcacion: package Empresa; import Empresa.Clases.ArregloMarcacion; import Empresa.Clases.Marcacion; import Empresa.Clases.reloj; import java.util.Calendar; import java.util.GregorianCalendar;
Autor: Lic. Manuel TORRES Pagina N 8

Java Cliente Servidor

CAPITULO I

import javax.swing.JOptionPane; public class frmMarcacion extends javax.swing.JInternalFrame { GregorianCalendar fecha=new GregorianCalendar(); ArregloMarcacion aM=new ArregloMarcacion(); public frmMarcacion() { initComponents(); reloj objR=new reloj(lblReloj); objR.start(); int dia=fecha.get(Calendar.DAY_OF_MONTH); int mes=fecha.get(Calendar.MONTH); int ao=fecha.get(Calendar.YEAR); lblFecha.setText(""+dia+"/"+(mes+1)+"/"+ao); } private void btnRegistrarActionPerformed() { try{ Marcacion m=aM.buscar(getDni()); if (m==null){ m=new Marcacion(getDni(),getFecha(),getHora()); aM.adiciona(m); aM.grabar(); limpiaCajas(); } } catch(Exception ex){ JOptionPane.showMessageDialog(this, "Error al Registrar datos"); } } //Metodos Propios public String getDni(){ return txtDni.getText(); } public String getFecha(){ return lblFecha.getText(); } public String getHora(){ return lblReloj.getText(); } void limpiaCajas(){ txtDni.setText(""); txtDni.requestFocus(); }

Autor: Lic. Manuel TORRES

Pagina N 9

Java Cliente Servidor

CAPITULO I

Clase frmReporte: package Empresa; import Empresa.Clases.ArregloMarcacion; import Empresa.Clases.Marcacion; public class frmReporte extends javax.swing.JInternalFrame { ArregloMarcacion aM=new ArregloMarcacion(); public frmReporte() { initComponents(); listar(); } void listar(){ for(int i=0;i<aM.getTamao();i++){ Marcacion m=aM.obtener(i); tMarcacion.setValueAt(m.getDni(), i, 0); tMarcacion.setValueAt(m.getFecha(), i, 1); tMarcacion.setValueAt(m.getHora(), i, 2); } } private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) { this.dispose(); } Clase frmMenu: private void miMarcacionActionPerformed(java.awt.event.ActionEvent evt) { frmMarcacion objM=new frmMarcacion(); Fondo.add(objM); objM.show(); } private void miReporteActionPerformed(java.awt.event.ActionEvent evt) { frmReporte objR=new frmReporte(); Fondo.add(objR); objR.show(); }

Autor: Lic. Manuel TORRES

Pagina N 10

Java Cliente Servidor

CAPITULO I

import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.JLabel; //Creando la Clase Reloj heredada de la Clase Thread (Hilo) public class Reloj extends Thread { JLabel lblReloj;
//Creando el Constructor

public Reloj(JLabel lblReloj) { this.lblReloj=lblReloj; } //Codigo de Funcionamiento del Reloj public void run(){ while(true){ Date Hoy=new Date(); SimpleDateFormat sdf=new SimpleDateFormat("hh:mm:ss aa"); lblReloj.setText(sdf.format(Hoy)); try{ sleep(1000); } catch(Exception ex) { ; } } } }

Caso Propuesto:
Se desea controlar la Venta de los productos de una Tienda. Crear los siguientes Paquetes: Tienda Tienda.Clases Tienda.Imagenes Aqui se almacenaran todos las clases tipo Formulario. Aqu se almacenaran las clases y sus Arreglos. Aqu se almacenaran las imgenes utilizadas en el Menu.

Crear las siguientes clases: Venta Atributos privados para Numero de Venta, Fecha, Hora y Monto Total de la Venta. Mtodo constructor que inicialice los atributos. Metodos get de todos los atributos. Declarar como privado el ArrayList Ven de tipo Venta. Mtodo constructor que cree el objeto Ven ArrayList de tipo Venta e invoque al mtodo cargar. Mtodo adiciona, que se encargara de agregar una venta en el ArrayList. Mtodo obtener, que devuelve la matriz de elementos de acuerdo a la posicion en el arreglo. Mtodo buscar, es el encargado de comparar si el Numero de Venta ingresado existe en el ArrayList o no, dependiendo de eso deber devolver el objeto encontrado, caso contrario devolver null. Mtodo getTamao, que devuelva el tamao del Arraylist. Mtodo cargar que permita ingresar al archivo Ventas.txt y devuelva los

Arreglo de Venta

Clase Reloj

Autor: Lic. Manuel TORRES

Pagina N 11

Java Cliente Servidor

CAPITULO I

valores registrados. Mtodo grabar que permita almacenar los nuevos valores ingresados al archivo Ventas.txt.

Autor: Lic. Manuel TORRES

Pagina N 12

También podría gustarte