SlideShare una empresa de Scribd logo
1 de 17
INFORME  Tema: *NOMINA DE EMPLEADOS SENCILLA   *USO DE ARCHIVOS Objetivos: Adquirir un mayor desempeño en cuanto a manejo y uso de expresiones regulares, validaciones, etc. En general poder plasmas en un codigo fuente el conocimiento adquirido. Mostrar que el uso de aplicaciones java es muy variado. Introducción: En palabras simples pero muy efectivas, el uso de diagramas UML ayudan a tener una mejor visualización de los requerimientos del usuario, es decir ,es una simplificación grafica del código a implementarse, que permite comprender el sistema que se va a desarrollar, acorde a las necesidades del usuario, pues bien, es necesario saber cuáles son nuestros requerimientos para desarrollar el código fuente. Puesto que es necesario saber que necesitamos para realizar una implementación correcta del código fuente, a continuación se presenta el diagrama UML. Que servirá de guía para implementar las necesidades en el código fuente. Ahora, lo que se busca es crear un código que permita almacenar datos de empleados para una empresa x. Claro en este caso no usaremos una base de datos para poder realizar tal acción, solo usaremos lo que son almacenamiento en variables. En la segunda parte se implementara un código que use archivos. Para el primer caso lo que necesitaremos es que se pida el nombre del empleado y cuanto será el sueldo que tendrá dicho empleado. Queremos que en un menú de opciones nos permita elegir ver cada uno de los empleados individualmente y en conjunto, y además ver cuanto será los gastos totales de pagos a empleados. Para realizar tal evento, necesitamos crear un menú principal, que permita el ingreso de datos del empleado y el sueldo que se pagara. Si bien es cierto para poder contar con una nomina completa y bien estructurada, con la ayuda de java, es necesario implementar tal código con una base de datos estructurada para dicho propósito o en su defecto el uso de archivos. Como ya se menciono anteriormente no usaremos una base de datos para implementar dicho código, ni archivos , más bien solo usaremos variables en las que se almacena los datos ingresados por teclado, que por cierto al momento de terminar la aplicación no quedara rastro de tales datos.  Marco Teórico Herencia en java  Java permite el empleo de la herencia, característica muy potente que permite definir una clase tomando como base a otra clase ya existente. Esto es una de las bases de la reutilización de código, en lugar de copiar y pegar.  Polimorfismo en java Este hecho de que un objeto pertenezca a una clase, pero que pueda cumplir uno o más interfaces es muy similar al hecho de que una persona (un objeto) es hija (un interfaz), posiblemente tía (otro interfaz) o incluso abuela (otro interfaz). Con esto lo que se indica es que un interfaz sólo tiene interés para quien lo necesite usar, es decir, el interfaz tío sólo lo necesitan los objetos sobrinos, no un objeto de tipo policía.  Esta característica de que varios objetos de distintas clases puedan recibir el mismo mensaje y ser capaces de responderlo, es conocida como polimorfismo NOTA: A lo largo del informe se irá describiendo conceptos como expresiones regulares, validaciones, sentencias, etc. Implementación del Código Fuente Es importante tener conocimiento acerca de herencia, polimorfismo, uso de sentencias como son for, if else, do while, también es necesario conocer sobre expresiones regulare, validación, entre otras cosas. Pues bien dado la primera parte del código, se procederá a dar la explicación de las líneas que componen dicho código, dando además conceptos básicos para entender dicho código. Pues bien en las dos primeras líneas hacemos uso de las librerías mostradas en el código, para hacer uso de los cuadros de dialogo, y la segunda para poder usar expresiones regulares y con ello también validar dichas expresiones. EJEMPLOS import javax.swing.JOptionPane; import java.util.regex.*; ------------------------------------------------------------------------------------------------------------------------------------------ A continuación simplemente creamos la clase principal y con ello la implementación del código. //cliente de prueba para la clase nomina class principal { public static void main(String[] args) { int num, IntCont=0; String entrada; nomina nom = new nomina(50); for(;;){ //permite realizar un menu infinito. // La siguiente línea simplemente nos muestra un cuadro de dialogo con las opciones que necesitamos entrada=JOptionPane.showInputDialog(
 Realizado por grupo 13 ***********************David Núñez***********************1.- Ingreso de Empleado2.- Mostrar Listado3.- Mostrar Nomina Completa4.- Eliminar Ultimo Registro5.- SalirOpcion: 
); ------------------------------------------------------------------------------------------------------------------------------------------ Simplemente con el uso de Pattern y Matcher realizamos la validacion para verificar que los datos de teclado sean números y no letras. Y con el uso de la sentencia if nos ayudamos a verificar dichos valores además de verificar que se teclee alguna opción, para cualquier caso se mostrara un mensaje de error como se muestra en la siguiente figura. Si el valor se encuentra correcto, la sentencia if permite saltar a la siguiente línea para seguir ejecutando el código. La sentencia que nos permite mostrar este dialogo se encuentra al final del código, y es el uso de la sentencia else. Pattern p=Pattern.compile(
[0-9]
); Matcher m=p.matcher(entrada); if ((entrada != null) && (entrada.length() > 0) && (m.find())) ------------------------------------------------------------------------------------------------------------------------------------------ En esta parte del código, viene lo que es la sentencia switch, que permite realizar un menú con opciones y que dada la opción desde teclado, permita ejecutar alguna expresión o código en especial. Pues bien para nuestro caso tenemos 5 opciones, para seleccionar cada opción se usa case (opción): y luego se puede implementar un código o llamar simplemente a una función para que se ejecute. En el caso uno se llama a LeerDatos, esto nos permitirá ingresar los datos por teclado, claro que por cada usuario que se ingrese será necesario almacenar en un contador. Con esto nos ayudaremos a verificar si existen o no usuarios para los casos 2 y 3. En el caso de que no se haya inscrito ningún usuario y se selecciona la opción 2 o tres se nos mostrara un mensaje de advertencia y se nos pedirá nuevamente seleccionar la opción primera.  { num = Integer.parseInt(entrada); switch(num) { ------------------------------------------------------------------------------------------------------------------------------------------ En el caso 1 que es la opción de ingresar datos se hace el llamado a nomina y se nos pedirá dos datos, el nombre del usuario y el sueldo que ganara. Ya ingresado los datos correspondientes, se volverá al menú principal y realizar cualquier consulta, o eliminar el usuario case 1: { nom.leerDatos(IntCont++); }break;  ------------------------------------------------------------------------------------------------------------------------------------------  En el caso dos ya ingresado los datos podemos llamar a la funcion empleado y constatar que esta ingresado el usario con el salario correspondiente, ademas podemos ver cuantos registros existen. Mas adelante veremos el codigo que permite realizar dichas acciones. case 2: { nom.Muestra(IntCont,false); }break;  ------------------------------------------------------------------------------------------------------------------------------------------ Para el caso tres es similar al caso dos pero con la diferencia que al final se mostrar cual es el total que se debe pagar por salario de empleados. case 3: { nom.Muestra(IntCont,true); }break;  ------------------------------------------------------------------------------------------------------------------------------------------ En la opcion 4 se nos permite borrar la ultima entrada ingresada, es decir, si se ingresa primero el usuario david y luego el usuario andres, el usuario a eliminarse sera andres. Claro que primero se nos muestra un cuadro de dialogo que permite elegir entre borrar y no hacerlo. Esto es con ayuda de JOptionPane.showConfirmDialog Con la sentencia if nos permitimos realizar la eliminacion del usuario en caso de que se haya seleccionado Ok, caso contrario el registro seguira intacto. veamos los ejermplos case 4: { int confirmado = JOptionPane.showConfirmDialog(null ,
¿En verdad desea eliminar la ultima entrada?
); if (JOptionPane.OK_OPTION == confirmado) { IntCont--; JOptionPane.showMessageDialog(null,
Registro Eliminado!...
); } else JOptionPane.showMessageDialog(null,
 No se elimino el registro...
); }break;                         Al volver a seleccionar las opciones 2 y 3 simplemente aparecera los usuarios que quedaron registrados, para nuestro ejemplo como se inscribio 2 y se elimino el ultimo se nos mostraria nuevamente en el cuadro de dialogo  y en el caso que se hayan borrado completamente los usarios nuevamente se nos mostrara el cuadro de dialogo de no existen usuarios.  ------------------------------------------------------------------------------------------------------------------------------------------ En esta opcion simplemente se muestra un cuadro de dialogo de agradecimiento. case 5: { JOptionPane.showMessageDialog(null,
Gracias por utilizar este programa....
); System.exit(0); }break;  ------------------------------------------------------------------------------------------------------------------------------------------ en la opcion default simplemente nos permite mostrar un cuadro de dialogo pidiendo que se seleccione una opcion entre la 1 y 5. Este mensaje de seleccion erronea se mostrara siempre y cuando las opciones ingresadas por teclado no esten entre 1 y 5. default: { JOptionPane.showMessageDialog(null,
Seleccion erroneaElija nuevamente una opcion del 1 al 5...
, 
META BIEN EL DEDO CARAMBA
, )OptionPane.PLAIN_MESSAGE); } } } ------------------------------------------------------------------------------------------------------------------------------------------ else JOptionPane.showMessageDialog(null,
Las opciones no contienen letras ni puede dejar vacio la seleccion.. Elija por favor una opcion....
,
 ERROR
,JOptionPane.WARNING_MESSAGE); } } } el uso de else nos permite mostrar el cuadro de dialogo de error cuando los datos ingresados por teclado para seleccionar una opcion, sean numeros o no se ingrese nada y se presione seguido enter.  CLASES NOMINA DE EMPLEADOS Como vimos anteriormente en el uso de la sentencia switch se escogia 4, pues bien la primera opcion del caso 1 Ingreso de datos, podemos ver el codigo marcado de color azul, Al seleccionar la opcion 1 se ha el llamado a la funcion LeerDatos, con lo cual podemos ingresar los datos de nombre y sueldo.  El codigo implementado trabaja con la sentencia if y el uso de Pattern y Match, con esto logramos que los datos que se ingresen desde teclado, para el primer caso, sea solo nombre y no numeros, y para el segundo caso solo numeros y no letras, pues bien, en el caso de que no se ingrese lo pedido, se mostrara un mensaje de error, y realizando nuevamente la operacion para ingresar datos. Para ello se ha implementado la sentencia do while que permite realizar repetidas veces la misma operacion hasta que se satisfaga la condicion y pueda pasar a la siguiente linea que es el envio de datos n y s, donde n es la variable donde se almacena el nombre de usuario y es de tipo String, mientras que s ecd s la variable donde se almacena el valor del sueldo y es de tipo Double. Para las opciones 2 y 3 de nuestro menu, en cada caso (2 y 3) se hace el llamado a la función muestra que permite imprimrir con ayuda del JOptionPane, los resultados del alamacenamiento de datos. (ver codigo de color naranja). En esta expresion se a hecho uso de la sentencia for que permite mostrar cada uno de los usuarios registrados y mostrar en un cuadro de dialogo uno por uno los usuarios y la cantidad de usuarios registrados. Esto es por el uso de JoptionPane. Pero si trabajamos simplemente con System.println obtendriamos una mejor visualizacion de la nomina de empleados...  Es l oque se obtendria al elegir la opcion 3, cosa que con el JOptionPane no se pude mostrar completamente, para ello deberiamos usar Jframe. pero bueno, quizas mas adelante veamos una implementacion con dicha libreria. Continuando con el codigo, la sentencia if nos ayuda a verificar si existen o no usuarios registrados, para cada caso realizara la accion correspondiente, siendo una de ellas en el caso de que no existan usuarios, mostrar un cuadro de dialogo que nos indica que no existen usuarios registrados.  En este codigo existen varias sentencias publicas, que son leidas desde otra expresion y llamadas a ejecutarse, mientras que cada funcion contiene expresiones privadas que solo dichas funciones pueden hacer uso de ellas. Como vemos hemos utilizado las mismas librerias y paquetes siendo muy importante tener el conocimiento de ellas. import javax.swing.JOptionPane; //Libreria que sirve para utilizar JOptionPane import java.util.regex.*; // Libreria que permite usar Matcher y Pattern //Una nomina esta compuesta de empleados(arreglo de) public class nomina { //datos de la nomina private Empleado [] empleados; //la nomina 
TIENE
 empleados private int dim; // # de empleados public nomina(int d) { empleados = new Empleado[d]; } public nomina() { //constructor por default this(5); } public void leerDatos(int limite) { String n,r ; double s; do { n=JOptionPane.showInputDialog(
Ingresa nombre empleado[
+(limite+1)+
]: 
); Pattern p=Pattern.compile(
[0-9]
); Matcher m=p.matcher(n); if((n != null) && (m.find())) { JOptionPane.showMessageDialog(null,
ERROR Elija por favor una opcion....
,
 ERROR
,JOptionPane.WARNING_MESSAGE); } }while(n==
[a-zA-Z]
); do { s=Double.parseDouble(r=JOptionPane.showInputDialog(
Ingrese el sueldo
)); }while ((r == null)&&(r==
[a-zA-Z]
) ); empleados[limite]= new Empleado(n, s); } public void Muestra(int limite,boolean Nomina) { if(limite>0) { double DblNomina=0; for(int i=0;i { if (Nomina==true) DblNomina+=empleados[i].getSueldo(); JOptionPane.showMessageDialog(null,
Registro 
+(i+1)+
 de 
+limite+
Nombre: 
+empleados[i].getNombre()+
Sueldo: 
+empleados[i].getSueldo()+
----
); } if (Nomina==true) JOptionPane.showMessageDialog(null,
Nomina total a Pagar:
+DblNomina+

); } else JOptionPane.showMessageDialog(null,
No Hay Registros Disponibles!...
); } } //clase nomina CLASE EMPLEADO Ahora simplemente comentaremos las lineas que se encuentran en el codigo, por razones de que en las entradas anteriores se colocaron ya imagenes que pueden ayudar a entender de buena manera la implementacion del codigo, esta parte del codigo, no se imprime nada en cuadro de dialogos, mas bien donde se hace llamada a las funciones empleados. veamos el codigo class Empleado { //atributos private String nombre; private double sueldo; private int id; private static int idSiguiente = 1; //Constructor public Empleado (String n, double s ) { nombre = n; sueldo = s; id = idSiguiente; //toma el proximo ID disponible idSiguiente++; //incremente id } public Empleado ( ) { this(
S/N
, 0); } public Empleado ( String n) { this(n, 0); } public Empleado ( double s) { this(
S/N
, s); } public String getNombre() { return nombre; } public double getSueldo() { return sueldo; } public int getId() { return id; } public static int getIdSiguiente() { return idSiguiente; } } //fin clase empleado Como vemos es un codigo mas corto que los dos anteriores, como primer paso es crear la clase empleado. Para la siguientes lineas hacemos uso de funciones privadas que retornan un valor para que pueda ejecutarse el codigo completamente y sin errores. Otras funciones son publicas ya que es necesario que se las llame mediante otro codigo implementado, segun sea la necesidad. En esta seccion no hacemos uso de librerias ya que no necesitamos, validar o simplemente imprimir un cuadro de dialogo.  USO DE ARCHIVOS Como se menciono antes, esta vez toca el uso de archivos, para manejar datos y almacenarlos en un archivo, a continuación se muestra una captura del programa ejecutado, por lo que se deja el enlace del video para que se lo pueda visualizar http://www.youtube.com/watch?v=3MzQ_zUeA0M&feature=player_embedded CODIGO FUENTE. aplicacion.java  Este codigo se compone de tres clases, la clase nomina y la clase empleado.Pues bien como se ha mencionado en entradas anteriores, es necesario saber implementar un codigo que almacene datos, claro cuando sea necesario no todo sera necesario, como vimos el video anterior, podemos apreciar de mejor manera como se va almacenando datos segun la entrada que se escriba desde teclado. En este primer codigo solo realiza la validacion de entrada de teclado para el menu principal, con la ayuda de la libreria java.util.regex.* que nos ayuda a poder validar los datos que se ingresan por teclado y mediante la ayuda de la sentencia if comparar dichos datos y si son erroneos mostrar un mensaje de advertencia (ver grafico 1). Este codigo tambien se compone de la sentencia swich que nos ayuda a poder seleccionar la opcion ingresada por teclado, pues bien en cada uno de los casos se hace llamada a funciones especificas para realizar operaciones mostradas en el menu, como ingreso de datos, guardar la lista, mostrar en pantalla, etc. (ver grafico 2)import javax.swing.JOptionPane;import java.io.IOException;import java.util.Scanner;import java.util.regex.*;public class Aplicacion{public static void main(String[] args) throws IOException{nomina ag=new nomina();String entrada;for(;;){entrada=JOptionPane.showInputDialog(
1. Usuario nuevo2. Cargar la lista3. Mostrar listado4. Guardar la lista 5. Salir
);Pattern q=Pattern.compile(
[0-9]
);Matcher m=q.matcher(entrada);if ((entrada != null) && (entrada.length() > 0) && (m.find())) grafico 1 {int num = Integer.parseInt(entrada); switch(num) { grafico 2case 1:{El uso de String cad = .... nos ayuda a almacenar las variables ingresadas por teclado, y mediante []aux=cad.split(
-
), permitir que se escriba la expresion - para poder separar dichos datos, Ya ingresado estos datos se realiza el cambio a un tipo de dato Persona p, con ello hacemos llamado a dicha funcion y enviamos los datos para la verificacion.String cad = JOptionPane.showInputDialog(
Ingrese: nombre de usuario - telefono - direccion 
);String []aux=cad.split(
-
);Persona p=new Persona(aux[0],aux[1],aux[2]);ag.addPersona(p);ag.save();}break;case 2:{ag.load();ag.imprimir();}break;case 3:{ag.imprimir();}break;case 4:{ag.save();}break;case 5:{JOptionPane.showMessageDialog(null,
Gracias por usar esta aplicacion
);}return;default:{JOptionPane.showMessageDialog(null,
elija una opcion
);}}}elseJOptionPane.showMessageDialog(null,
Las opciones no contienen letras ni puede dejar vacio la seleccion.. Elija por favor una opcion....
,
 ERROR
,JOptionPane.WARNING_MESSAGE); }}}En cada caso solo se hace llamado a la funcion necesaria para ejecutar parte del codigo segun la necesidad del usuario ingresada desde el teclado... Nomina.java En esta parte del codigo se encuentran las funciones que se hacen llamadas segun sea ingresado la opcion desde teclado, en el menuprincipal.En cada linea siguiente del codigo se hace una referencia corta del significado del codigo implementado.import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.Scanner;import javax.swing.JOptionPane;public class nomina {public ArrayListp;public Scanner key1;public nomina(){p=new ArrayList();}public void addPersona(Persona o){p.add(o);}// Metodo para la carga de datos desde un archivo en el dico duro//throws IOExceptionpublic void load() throws IOException {try {//metodo que prepara el archivo para la lecturaFileReader file_in=new FileReader(
lista.txt
);//Scanner es el encargado de leerlo y pasarlo a un tipo de dato PersonaScanner key=new Scanner(file_in);for(;;){String cad=key1.nextLine();String[] aux=cad.split(
-
);Persona p=new Persona(aux[0],aux[1],aux[2]);addPersona(p);}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void save() throws IOException{try {//creacion de un archivoFile a=new File(
lista.txt
);a.delete();a.createNewFile();//FileWriter es una funcion que permite la escritura en el archivo lista.txt//False=sobrescritura de los datos almacenadosFileWriter file_write=new FileWriter(
lista.txt
,false);//manda los bytes a un buffer para ser puestos en el archivoPrintWriter pw=new PrintWriter(file_write);for(Persona m:p){String cad=m.getName()+
-
+m.getTel()+
-
+m.getDir();pw.println(cad);JOptionPane.showMessageDialog(null,
Guardado con exito! ...
);}file_write.flush();//garantiza que todo se escriba en el archivofile_write.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void imprimir(){for(Persona m:p){JOptionPane.showMessageDialog(null, m.getName()+
 
+m.getTel()+
 
+m.getDir());}}} persona.java  import java.io.Serializable;public class Persona implements Serializable {private String name;private String tel;private String dir;public Persona(String name,String tel,String dir){this.name=name;this.tel=tel;this.dir=dir;}public String getName() {return name;}public String getTel() {return tel;}public String getDir() {return dir;}public void setName(String name) {this.name = name;}public void setTel(String tel) {this.tel = tel;}public void setDir(String dir) {this.dir = dir;}}Como podemos ver el uso de archivos es muy importante para poder implementar y desarrollar un codigo mas robusto y eficiente para almacenar datos, e inclusive si se busca codigos ya mas estructurados, el uso de BSD es mas importante, ya que con ello se podra manejar de mejor manera el almacenamiento de datos. COMENTARIO FINAL Estos codigos implementados, podrían desarrollarse de mejor manera, con más opciones como son las de datos como números de teléfono dirección, estado civil, nacionalidad, etc. Dado que la elaboración de este tipo de códigos ya más avanzados requiere dedicarle mucho más tiempo, además de tener conocimientos mas avanzados en java como el uso de JFrame, para el uso de cuadros de dialogo y cuadros de ingreso de datos, no ha sido posible implementar un código de tal magnitud, por lo que se ha optado por dos código, no tan sencillos, pero si para entender como poder realizar ingreso de datos, validaciones, uso de archivos, etc. El código nomina de empleados fue desarrollado e implementado por DAVID NUNEZ. Basado en códigos fuente similares pero más elaborados y en su totalidad mejor estructurados, para poder implementar dicha aplicación, A continuación se coloca los enlaces de ayuda.  El segundo código  Manejo de archivos ya fue implementado, lo único que se modifico en dicho código, es la validación de datos y el uso de modo grafico, ya que este código no fue implementado con validación, y es ejecutado en modo texto. A continuación los enlaces a los códigos de ayuda y código fuente. http://www.chuidiang.com/chuwiki/index.php?title=JOptionPane_y_di%C3%A1logos_modales http://grupos.emagister.com/debate/validacion_de_letras_y_espacios/6709-289716 http://www.programacion.com/java/articulo/expresionesreg/ http://mygnet.net/codigos/java/ CODIGOS FUENTE http://mygnet.net/it/descargas/codigos/codigos_fuentes_java_y_tutor_java_con_3000_codigos_fuentes_muy_buenos.2777.zip http://mygnet.net/it/descargas/codigos/sistema_de_nominas_usando_polimorfismo.2641.zip  Cualquier duda o sugerencia por favor háganlo saber. Saludos cordiales estimados compañeros.
Programacion Orienta A Objetos
Programacion Orienta A Objetos
Programacion Orienta A Objetos
Programacion Orienta A Objetos
Programacion Orienta A Objetos
Programacion Orienta A Objetos
Programacion Orienta A Objetos
Programacion Orienta A Objetos
Programacion Orienta A Objetos
Programacion Orienta A Objetos
Programacion Orienta A Objetos
Programacion Orienta A Objetos
Programacion Orienta A Objetos
Programacion Orienta A Objetos
Programacion Orienta A Objetos
Programacion Orienta A Objetos

Más contenido relacionado

La actualidad más candente

Lenguaje latino
Lenguaje latinoLenguaje latino
Lenguaje latinoReneSergio
 
Tema 3 sentencias de control de java por gio
Tema 3   sentencias de control de java por gioTema 3   sentencias de control de java por gio
Tema 3 sentencias de control de java por gioRobert Wolf
 
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
02 - Conceptos fundamentales sobre tipos de datos en lenguaje CDiego Andrés Alvarez Marín
 
Elementos del lenguaje java
Elementos del lenguaje javaElementos del lenguaje java
Elementos del lenguaje javaMarisol Henao
 
IntroduccióN A Visual C
IntroduccióN A Visual CIntroduccióN A Visual C
IntroduccióN A Visual Coswchavez
 
Aa javaaa intro
Aa javaaa introAa javaaa intro
Aa javaaa introMickeT
 
84 Php. AñAdir A Traves De Formularios
84 Php. AñAdir A Traves De Formularios84 Php. AñAdir A Traves De Formularios
84 Php. AñAdir A Traves De FormulariosJosé M. Padilla
 
Lenguaje c compu 2
Lenguaje c compu 2Lenguaje c compu 2
Lenguaje c compu 2luiseldrumer
 
2,1 elementos de java script
2,1 elementos de java script2,1 elementos de java script
2,1 elementos de java scriptCronio Antmao
 
Constante y variable
Constante y variableConstante y variable
Constante y variableAnthony Vera
 

La actualidad más candente (20)

Lenguaje latino
Lenguaje latinoLenguaje latino
Lenguaje latino
 
Tema 3 sentencias de control de java por gio
Tema 3   sentencias de control de java por gioTema 3   sentencias de control de java por gio
Tema 3 sentencias de control de java por gio
 
Python03
Python03Python03
Python03
 
Mod2ud2 1
Mod2ud2 1Mod2ud2 1
Mod2ud2 1
 
la instrucción if , Leer cadenas, caracteres
 la instrucción if , Leer cadenas, caracteres la instrucción if , Leer cadenas, caracteres
la instrucción if , Leer cadenas, caracteres
 
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
 
Procedures funciones
Procedures funcionesProcedures funciones
Procedures funciones
 
Estructura c
Estructura c Estructura c
Estructura c
 
Elementos del lenguaje java
Elementos del lenguaje javaElementos del lenguaje java
Elementos del lenguaje java
 
Python02
Python02Python02
Python02
 
Pseudocódigo
PseudocódigoPseudocódigo
Pseudocódigo
 
IntroduccióN A Visual C
IntroduccióN A Visual CIntroduccióN A Visual C
IntroduccióN A Visual C
 
Python04
Python04Python04
Python04
 
Aa javaaa intro
Aa javaaa introAa javaaa intro
Aa javaaa intro
 
Python05
Python05Python05
Python05
 
84 Php. AñAdir A Traves De Formularios
84 Php. AñAdir A Traves De Formularios84 Php. AñAdir A Traves De Formularios
84 Php. AñAdir A Traves De Formularios
 
02 - Tipos de datos escalares en Python 3
02 - Tipos de datos escalares en Python 302 - Tipos de datos escalares en Python 3
02 - Tipos de datos escalares en Python 3
 
Lenguaje c compu 2
Lenguaje c compu 2Lenguaje c compu 2
Lenguaje c compu 2
 
2,1 elementos de java script
2,1 elementos de java script2,1 elementos de java script
2,1 elementos de java script
 
Constante y variable
Constante y variableConstante y variable
Constante y variable
 

Destacado

Curso java inicial 1 poo
Curso java inicial   1 pooCurso java inicial   1 poo
Curso java inicial 1 pooHerman Vargas
 
COMPILADOR G++
COMPILADOR G++COMPILADOR G++
COMPILADOR G++HM47
 
POO Programación Orientada a Objeto(s)
POO Programación Orientada a Objeto(s)POO Programación Orientada a Objeto(s)
POO Programación Orientada a Objeto(s)Cambiar una estructura
 
Enrique Place: Introducción a POO / UML / PHP5
Enrique Place: Introducción a POO / UML / PHP5Enrique Place: Introducción a POO / UML / PHP5
Enrique Place: Introducción a POO / UML / PHP5Grupo PHP Argentina
 
Curso Java Inicial 4 Poo En Java
Curso Java Inicial   4 Poo En JavaCurso Java Inicial   4 Poo En Java
Curso Java Inicial 4 Poo En JavaEmilio Aviles Avila
 
POO: Encapsulamiento, principio de ocultación, recolección de basura
POO: Encapsulamiento, principio de ocultación, recolección de basuraPOO: Encapsulamiento, principio de ocultación, recolección de basura
POO: Encapsulamiento, principio de ocultación, recolección de basura1da4
 
POO y MVC en PHP (por Eugenia Bahit)
POO y MVC en PHP (por Eugenia Bahit)POO y MVC en PHP (por Eugenia Bahit)
POO y MVC en PHP (por Eugenia Bahit)Eugenia Bahit
 
Poo Programacion Orientada A Objetos Java
Poo   Programacion Orientada A Objetos   JavaPoo   Programacion Orientada A Objetos   Java
Poo Programacion Orientada A Objetos JavaC_QUENGUAN
 
Fundamentos de POO
Fundamentos de POOFundamentos de POO
Fundamentos de POOgueritamala
 
Fundamentos de programación Java
Fundamentos de programación JavaFundamentos de programación Java
Fundamentos de programación Javaquesada_diego
 

Destacado (20)

Curso java inicial 1 poo
Curso java inicial   1 pooCurso java inicial   1 poo
Curso java inicial 1 poo
 
COMPILADOR G++
COMPILADOR G++COMPILADOR G++
COMPILADOR G++
 
POO Programación Orientada a Objeto(s)
POO Programación Orientada a Objeto(s)POO Programación Orientada a Objeto(s)
POO Programación Orientada a Objeto(s)
 
Poo
PooPoo
Poo
 
POO
POOPOO
POO
 
Enrique Place: Introducción a POO / UML / PHP5
Enrique Place: Introducción a POO / UML / PHP5Enrique Place: Introducción a POO / UML / PHP5
Enrique Place: Introducción a POO / UML / PHP5
 
POO
POOPOO
POO
 
Curso Java Inicial 4 Poo En Java
Curso Java Inicial   4 Poo En JavaCurso Java Inicial   4 Poo En Java
Curso Java Inicial 4 Poo En Java
 
Clases poo
Clases pooClases poo
Clases poo
 
POO: Encapsulamiento, principio de ocultación, recolección de basura
POO: Encapsulamiento, principio de ocultación, recolección de basuraPOO: Encapsulamiento, principio de ocultación, recolección de basura
POO: Encapsulamiento, principio de ocultación, recolección de basura
 
POO sencillito
POO sencillitoPOO sencillito
POO sencillito
 
POO y MVC en PHP (por Eugenia Bahit)
POO y MVC en PHP (por Eugenia Bahit)POO y MVC en PHP (por Eugenia Bahit)
POO y MVC en PHP (por Eugenia Bahit)
 
Poo Programacion Orientada A Objetos Java
Poo   Programacion Orientada A Objetos   JavaPoo   Programacion Orientada A Objetos   Java
Poo Programacion Orientada A Objetos Java
 
Poo
PooPoo
Poo
 
Curso Java Inicial 1 POO
Curso Java Inicial   1 POOCurso Java Inicial   1 POO
Curso Java Inicial 1 POO
 
Fundamentos de POO
Fundamentos de POOFundamentos de POO
Fundamentos de POO
 
Programacion orientada a objetos Java
Programacion orientada a objetos JavaProgramacion orientada a objetos Java
Programacion orientada a objetos Java
 
Qué es la poo
Qué es la pooQué es la poo
Qué es la poo
 
Fundamentos de programación Java
Fundamentos de programación JavaFundamentos de programación Java
Fundamentos de programación Java
 
10 Polimorfismo
10   Polimorfismo10   Polimorfismo
10 Polimorfismo
 

Similar a Programacion Orienta A Objetos

Informe compilador divisor
Informe compilador divisorInforme compilador divisor
Informe compilador divisorSoraya Lara
 
Compilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y CupCompilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y CupSoraya Lara
 
Compilador (divisor de cantidades )
Compilador (divisor de cantidades )Compilador (divisor de cantidades )
Compilador (divisor de cantidades )Soraya Lara
 
Joption pane en java
Joption pane en javaJoption pane en java
Joption pane en javaRobert Wolf
 
C6 net beansentradasysalidas
C6 net beansentradasysalidasC6 net beansentradasysalidas
C6 net beansentradasysalidasalenco
 
Guía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en CGuía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en CPablo Chiesa
 
ESTRUCTURA DE CONTROLYoselyn garcia trabajo
ESTRUCTURA DE CONTROLYoselyn garcia trabajoESTRUCTURA DE CONTROLYoselyn garcia trabajo
ESTRUCTURA DE CONTROLYoselyn garcia trabajoDANNYOSE
 
Introducción a python.pdf
Introducción a python.pdfIntroducción a python.pdf
Introducción a python.pdfAz
 
Estructuras De Control
Estructuras De ControlEstructuras De Control
Estructuras De ControlUPS
 
Trabajo COMPUTACION
Trabajo COMPUTACIONTrabajo COMPUTACION
Trabajo COMPUTACIONylastra
 
Informe técnico 1
Informe técnico 1Informe técnico 1
Informe técnico 1Saya Paredes
 
Progra final examen
Progra final examen Progra final examen
Progra final examen JuanSimbaa8
 
Fundamentos de programación
Fundamentos de programaciónFundamentos de programación
Fundamentos de programaciónIng Cabrera
 
Seguridad en access
Seguridad en accessSeguridad en access
Seguridad en accessssuser3a82fb
 

Similar a Programacion Orienta A Objetos (20)

Informe compilador divisor
Informe compilador divisorInforme compilador divisor
Informe compilador divisor
 
Compilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y CupCompilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y Cup
 
Compilador (divisor de cantidades )
Compilador (divisor de cantidades )Compilador (divisor de cantidades )
Compilador (divisor de cantidades )
 
Hack x crack_sq_linjection
Hack x crack_sq_linjectionHack x crack_sq_linjection
Hack x crack_sq_linjection
 
Joption pane en java
Joption pane en javaJoption pane en java
Joption pane en java
 
C6 net beansentradasysalidas
C6 net beansentradasysalidasC6 net beansentradasysalidas
C6 net beansentradasysalidas
 
Semana 1 Estructuras de Control en Java
Semana 1   Estructuras de Control en JavaSemana 1   Estructuras de Control en Java
Semana 1 Estructuras de Control en Java
 
Guía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en CGuía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en C
 
ESTRUCTURA DE CONTROLYoselyn garcia trabajo
ESTRUCTURA DE CONTROLYoselyn garcia trabajoESTRUCTURA DE CONTROLYoselyn garcia trabajo
ESTRUCTURA DE CONTROLYoselyn garcia trabajo
 
Introducción a python.pdf
Introducción a python.pdfIntroducción a python.pdf
Introducción a python.pdf
 
Estructuras De Control
Estructuras De ControlEstructuras De Control
Estructuras De Control
 
Sophia leonzio tarea4
Sophia leonzio tarea4Sophia leonzio tarea4
Sophia leonzio tarea4
 
Trabajo COMPUTACION
Trabajo COMPUTACIONTrabajo COMPUTACION
Trabajo COMPUTACION
 
Java básico
Java  básicoJava  básico
Java básico
 
Informe técnico 1
Informe técnico 1Informe técnico 1
Informe técnico 1
 
fp_p4.pdf
fp_p4.pdffp_p4.pdf
fp_p4.pdf
 
Progra final examen
Progra final examen Progra final examen
Progra final examen
 
Examen
Examen Examen
Examen
 
Fundamentos de programación
Fundamentos de programaciónFundamentos de programación
Fundamentos de programación
 
Seguridad en access
Seguridad en accessSeguridad en access
Seguridad en access
 

Último

AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 

Último (20)

AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 

Programacion Orienta A Objetos

  • 1. INFORME Tema: *NOMINA DE EMPLEADOS SENCILLA *USO DE ARCHIVOS Objetivos: Adquirir un mayor desempeño en cuanto a manejo y uso de expresiones regulares, validaciones, etc. En general poder plasmas en un codigo fuente el conocimiento adquirido. Mostrar que el uso de aplicaciones java es muy variado. Introducción: En palabras simples pero muy efectivas, el uso de diagramas UML ayudan a tener una mejor visualización de los requerimientos del usuario, es decir ,es una simplificación grafica del código a implementarse, que permite comprender el sistema que se va a desarrollar, acorde a las necesidades del usuario, pues bien, es necesario saber cuáles son nuestros requerimientos para desarrollar el código fuente. Puesto que es necesario saber que necesitamos para realizar una implementación correcta del código fuente, a continuación se presenta el diagrama UML. Que servirá de guía para implementar las necesidades en el código fuente. Ahora, lo que se busca es crear un código que permita almacenar datos de empleados para una empresa x. Claro en este caso no usaremos una base de datos para poder realizar tal acción, solo usaremos lo que son almacenamiento en variables. En la segunda parte se implementara un código que use archivos. Para el primer caso lo que necesitaremos es que se pida el nombre del empleado y cuanto será el sueldo que tendrá dicho empleado. Queremos que en un menú de opciones nos permita elegir ver cada uno de los empleados individualmente y en conjunto, y además ver cuanto será los gastos totales de pagos a empleados. Para realizar tal evento, necesitamos crear un menú principal, que permita el ingreso de datos del empleado y el sueldo que se pagara. Si bien es cierto para poder contar con una nomina completa y bien estructurada, con la ayuda de java, es necesario implementar tal código con una base de datos estructurada para dicho propósito o en su defecto el uso de archivos. Como ya se menciono anteriormente no usaremos una base de datos para implementar dicho código, ni archivos , más bien solo usaremos variables en las que se almacena los datos ingresados por teclado, que por cierto al momento de terminar la aplicación no quedara rastro de tales datos. Marco Teórico Herencia en java Java permite el empleo de la herencia, característica muy potente que permite definir una clase tomando como base a otra clase ya existente. Esto es una de las bases de la reutilización de código, en lugar de copiar y pegar. Polimorfismo en java Este hecho de que un objeto pertenezca a una clase, pero que pueda cumplir uno o más interfaces es muy similar al hecho de que una persona (un objeto) es hija (un interfaz), posiblemente tía (otro interfaz) o incluso abuela (otro interfaz). Con esto lo que se indica es que un interfaz sólo tiene interés para quien lo necesite usar, es decir, el interfaz tío sólo lo necesitan los objetos sobrinos, no un objeto de tipo policía. Esta característica de que varios objetos de distintas clases puedan recibir el mismo mensaje y ser capaces de responderlo, es conocida como polimorfismo NOTA: A lo largo del informe se irá describiendo conceptos como expresiones regulares, validaciones, sentencias, etc. Implementación del Código Fuente Es importante tener conocimiento acerca de herencia, polimorfismo, uso de sentencias como son for, if else, do while, también es necesario conocer sobre expresiones regulare, validación, entre otras cosas. Pues bien dado la primera parte del código, se procederá a dar la explicación de las líneas que componen dicho código, dando además conceptos básicos para entender dicho código. Pues bien en las dos primeras líneas hacemos uso de las librerías mostradas en el código, para hacer uso de los cuadros de dialogo, y la segunda para poder usar expresiones regulares y con ello también validar dichas expresiones. EJEMPLOS import javax.swing.JOptionPane; import java.util.regex.*; ------------------------------------------------------------------------------------------------------------------------------------------ A continuación simplemente creamos la clase principal y con ello la implementación del código. //cliente de prueba para la clase nomina class principal { public static void main(String[] args) { int num, IntCont=0; String entrada; nomina nom = new nomina(50); for(;;){ //permite realizar un menu infinito. // La siguiente línea simplemente nos muestra un cuadro de dialogo con las opciones que necesitamos entrada=JOptionPane.showInputDialog( Realizado por grupo 13 ***********************David Núñez***********************1.- Ingreso de Empleado2.- Mostrar Listado3.- Mostrar Nomina Completa4.- Eliminar Ultimo Registro5.- SalirOpcion: ); ------------------------------------------------------------------------------------------------------------------------------------------ Simplemente con el uso de Pattern y Matcher realizamos la validacion para verificar que los datos de teclado sean números y no letras. Y con el uso de la sentencia if nos ayudamos a verificar dichos valores además de verificar que se teclee alguna opción, para cualquier caso se mostrara un mensaje de error como se muestra en la siguiente figura. Si el valor se encuentra correcto, la sentencia if permite saltar a la siguiente línea para seguir ejecutando el código. La sentencia que nos permite mostrar este dialogo se encuentra al final del código, y es el uso de la sentencia else. Pattern p=Pattern.compile( [0-9] ); Matcher m=p.matcher(entrada); if ((entrada != null) && (entrada.length() > 0) && (m.find())) ------------------------------------------------------------------------------------------------------------------------------------------ En esta parte del código, viene lo que es la sentencia switch, que permite realizar un menú con opciones y que dada la opción desde teclado, permita ejecutar alguna expresión o código en especial. Pues bien para nuestro caso tenemos 5 opciones, para seleccionar cada opción se usa case (opción): y luego se puede implementar un código o llamar simplemente a una función para que se ejecute. En el caso uno se llama a LeerDatos, esto nos permitirá ingresar los datos por teclado, claro que por cada usuario que se ingrese será necesario almacenar en un contador. Con esto nos ayudaremos a verificar si existen o no usuarios para los casos 2 y 3. En el caso de que no se haya inscrito ningún usuario y se selecciona la opción 2 o tres se nos mostrara un mensaje de advertencia y se nos pedirá nuevamente seleccionar la opción primera. { num = Integer.parseInt(entrada); switch(num) { ------------------------------------------------------------------------------------------------------------------------------------------ En el caso 1 que es la opción de ingresar datos se hace el llamado a nomina y se nos pedirá dos datos, el nombre del usuario y el sueldo que ganara. Ya ingresado los datos correspondientes, se volverá al menú principal y realizar cualquier consulta, o eliminar el usuario case 1: { nom.leerDatos(IntCont++); }break; ------------------------------------------------------------------------------------------------------------------------------------------ En el caso dos ya ingresado los datos podemos llamar a la funcion empleado y constatar que esta ingresado el usario con el salario correspondiente, ademas podemos ver cuantos registros existen. Mas adelante veremos el codigo que permite realizar dichas acciones. case 2: { nom.Muestra(IntCont,false); }break; ------------------------------------------------------------------------------------------------------------------------------------------ Para el caso tres es similar al caso dos pero con la diferencia que al final se mostrar cual es el total que se debe pagar por salario de empleados. case 3: { nom.Muestra(IntCont,true); }break; ------------------------------------------------------------------------------------------------------------------------------------------ En la opcion 4 se nos permite borrar la ultima entrada ingresada, es decir, si se ingresa primero el usuario david y luego el usuario andres, el usuario a eliminarse sera andres. Claro que primero se nos muestra un cuadro de dialogo que permite elegir entre borrar y no hacerlo. Esto es con ayuda de JOptionPane.showConfirmDialog Con la sentencia if nos permitimos realizar la eliminacion del usuario en caso de que se haya seleccionado Ok, caso contrario el registro seguira intacto. veamos los ejermplos case 4: { int confirmado = JOptionPane.showConfirmDialog(null , ¿En verdad desea eliminar la ultima entrada? ); if (JOptionPane.OK_OPTION == confirmado) { IntCont--; JOptionPane.showMessageDialog(null, Registro Eliminado!... ); } else JOptionPane.showMessageDialog(null, No se elimino el registro... ); }break; Al volver a seleccionar las opciones 2 y 3 simplemente aparecera los usuarios que quedaron registrados, para nuestro ejemplo como se inscribio 2 y se elimino el ultimo se nos mostraria nuevamente en el cuadro de dialogo y en el caso que se hayan borrado completamente los usarios nuevamente se nos mostrara el cuadro de dialogo de no existen usuarios. ------------------------------------------------------------------------------------------------------------------------------------------ En esta opcion simplemente se muestra un cuadro de dialogo de agradecimiento. case 5: { JOptionPane.showMessageDialog(null, Gracias por utilizar este programa.... ); System.exit(0); }break; ------------------------------------------------------------------------------------------------------------------------------------------ en la opcion default simplemente nos permite mostrar un cuadro de dialogo pidiendo que se seleccione una opcion entre la 1 y 5. Este mensaje de seleccion erronea se mostrara siempre y cuando las opciones ingresadas por teclado no esten entre 1 y 5. default: { JOptionPane.showMessageDialog(null, Seleccion erroneaElija nuevamente una opcion del 1 al 5... , META BIEN EL DEDO CARAMBA , )OptionPane.PLAIN_MESSAGE); } } } ------------------------------------------------------------------------------------------------------------------------------------------ else JOptionPane.showMessageDialog(null, Las opciones no contienen letras ni puede dejar vacio la seleccion.. Elija por favor una opcion.... , ERROR ,JOptionPane.WARNING_MESSAGE); } } } el uso de else nos permite mostrar el cuadro de dialogo de error cuando los datos ingresados por teclado para seleccionar una opcion, sean numeros o no se ingrese nada y se presione seguido enter. CLASES NOMINA DE EMPLEADOS Como vimos anteriormente en el uso de la sentencia switch se escogia 4, pues bien la primera opcion del caso 1 Ingreso de datos, podemos ver el codigo marcado de color azul, Al seleccionar la opcion 1 se ha el llamado a la funcion LeerDatos, con lo cual podemos ingresar los datos de nombre y sueldo. El codigo implementado trabaja con la sentencia if y el uso de Pattern y Match, con esto logramos que los datos que se ingresen desde teclado, para el primer caso, sea solo nombre y no numeros, y para el segundo caso solo numeros y no letras, pues bien, en el caso de que no se ingrese lo pedido, se mostrara un mensaje de error, y realizando nuevamente la operacion para ingresar datos. Para ello se ha implementado la sentencia do while que permite realizar repetidas veces la misma operacion hasta que se satisfaga la condicion y pueda pasar a la siguiente linea que es el envio de datos n y s, donde n es la variable donde se almacena el nombre de usuario y es de tipo String, mientras que s ecd s la variable donde se almacena el valor del sueldo y es de tipo Double. Para las opciones 2 y 3 de nuestro menu, en cada caso (2 y 3) se hace el llamado a la función muestra que permite imprimrir con ayuda del JOptionPane, los resultados del alamacenamiento de datos. (ver codigo de color naranja). En esta expresion se a hecho uso de la sentencia for que permite mostrar cada uno de los usuarios registrados y mostrar en un cuadro de dialogo uno por uno los usuarios y la cantidad de usuarios registrados. Esto es por el uso de JoptionPane. Pero si trabajamos simplemente con System.println obtendriamos una mejor visualizacion de la nomina de empleados... Es l oque se obtendria al elegir la opcion 3, cosa que con el JOptionPane no se pude mostrar completamente, para ello deberiamos usar Jframe. pero bueno, quizas mas adelante veamos una implementacion con dicha libreria. Continuando con el codigo, la sentencia if nos ayuda a verificar si existen o no usuarios registrados, para cada caso realizara la accion correspondiente, siendo una de ellas en el caso de que no existan usuarios, mostrar un cuadro de dialogo que nos indica que no existen usuarios registrados. En este codigo existen varias sentencias publicas, que son leidas desde otra expresion y llamadas a ejecutarse, mientras que cada funcion contiene expresiones privadas que solo dichas funciones pueden hacer uso de ellas. Como vemos hemos utilizado las mismas librerias y paquetes siendo muy importante tener el conocimiento de ellas. import javax.swing.JOptionPane; //Libreria que sirve para utilizar JOptionPane import java.util.regex.*; // Libreria que permite usar Matcher y Pattern //Una nomina esta compuesta de empleados(arreglo de) public class nomina { //datos de la nomina private Empleado [] empleados; //la nomina TIENE empleados private int dim; // # de empleados public nomina(int d) { empleados = new Empleado[d]; } public nomina() { //constructor por default this(5); } public void leerDatos(int limite) { String n,r ; double s; do { n=JOptionPane.showInputDialog( Ingresa nombre empleado[ +(limite+1)+ ]: ); Pattern p=Pattern.compile( [0-9] ); Matcher m=p.matcher(n); if((n != null) && (m.find())) { JOptionPane.showMessageDialog(null, ERROR Elija por favor una opcion.... , ERROR ,JOptionPane.WARNING_MESSAGE); } }while(n== [a-zA-Z] ); do { s=Double.parseDouble(r=JOptionPane.showInputDialog( Ingrese el sueldo )); }while ((r == null)&&(r== [a-zA-Z] ) ); empleados[limite]= new Empleado(n, s); } public void Muestra(int limite,boolean Nomina) { if(limite>0) { double DblNomina=0; for(int i=0;i { if (Nomina==true) DblNomina+=empleados[i].getSueldo(); JOptionPane.showMessageDialog(null, Registro +(i+1)+ de +limite+ Nombre: +empleados[i].getNombre()+ Sueldo: +empleados[i].getSueldo()+ ---- ); } if (Nomina==true) JOptionPane.showMessageDialog(null, Nomina total a Pagar: +DblNomina+ ); } else JOptionPane.showMessageDialog(null, No Hay Registros Disponibles!... ); } } //clase nomina CLASE EMPLEADO Ahora simplemente comentaremos las lineas que se encuentran en el codigo, por razones de que en las entradas anteriores se colocaron ya imagenes que pueden ayudar a entender de buena manera la implementacion del codigo, esta parte del codigo, no se imprime nada en cuadro de dialogos, mas bien donde se hace llamada a las funciones empleados. veamos el codigo class Empleado { //atributos private String nombre; private double sueldo; private int id; private static int idSiguiente = 1; //Constructor public Empleado (String n, double s ) { nombre = n; sueldo = s; id = idSiguiente; //toma el proximo ID disponible idSiguiente++; //incremente id } public Empleado ( ) { this( S/N , 0); } public Empleado ( String n) { this(n, 0); } public Empleado ( double s) { this( S/N , s); } public String getNombre() { return nombre; } public double getSueldo() { return sueldo; } public int getId() { return id; } public static int getIdSiguiente() { return idSiguiente; } } //fin clase empleado Como vemos es un codigo mas corto que los dos anteriores, como primer paso es crear la clase empleado. Para la siguientes lineas hacemos uso de funciones privadas que retornan un valor para que pueda ejecutarse el codigo completamente y sin errores. Otras funciones son publicas ya que es necesario que se las llame mediante otro codigo implementado, segun sea la necesidad. En esta seccion no hacemos uso de librerias ya que no necesitamos, validar o simplemente imprimir un cuadro de dialogo. USO DE ARCHIVOS Como se menciono antes, esta vez toca el uso de archivos, para manejar datos y almacenarlos en un archivo, a continuación se muestra una captura del programa ejecutado, por lo que se deja el enlace del video para que se lo pueda visualizar http://www.youtube.com/watch?v=3MzQ_zUeA0M&feature=player_embedded CODIGO FUENTE. aplicacion.java Este codigo se compone de tres clases, la clase nomina y la clase empleado.Pues bien como se ha mencionado en entradas anteriores, es necesario saber implementar un codigo que almacene datos, claro cuando sea necesario no todo sera necesario, como vimos el video anterior, podemos apreciar de mejor manera como se va almacenando datos segun la entrada que se escriba desde teclado. En este primer codigo solo realiza la validacion de entrada de teclado para el menu principal, con la ayuda de la libreria java.util.regex.* que nos ayuda a poder validar los datos que se ingresan por teclado y mediante la ayuda de la sentencia if comparar dichos datos y si son erroneos mostrar un mensaje de advertencia (ver grafico 1). Este codigo tambien se compone de la sentencia swich que nos ayuda a poder seleccionar la opcion ingresada por teclado, pues bien en cada uno de los casos se hace llamada a funciones especificas para realizar operaciones mostradas en el menu, como ingreso de datos, guardar la lista, mostrar en pantalla, etc. (ver grafico 2)import javax.swing.JOptionPane;import java.io.IOException;import java.util.Scanner;import java.util.regex.*;public class Aplicacion{public static void main(String[] args) throws IOException{nomina ag=new nomina();String entrada;for(;;){entrada=JOptionPane.showInputDialog( 1. Usuario nuevo2. Cargar la lista3. Mostrar listado4. Guardar la lista 5. Salir );Pattern q=Pattern.compile( [0-9] );Matcher m=q.matcher(entrada);if ((entrada != null) && (entrada.length() > 0) && (m.find())) grafico 1 {int num = Integer.parseInt(entrada); switch(num) { grafico 2case 1:{El uso de String cad = .... nos ayuda a almacenar las variables ingresadas por teclado, y mediante []aux=cad.split( - ), permitir que se escriba la expresion - para poder separar dichos datos, Ya ingresado estos datos se realiza el cambio a un tipo de dato Persona p, con ello hacemos llamado a dicha funcion y enviamos los datos para la verificacion.String cad = JOptionPane.showInputDialog( Ingrese: nombre de usuario - telefono - direccion );String []aux=cad.split( - );Persona p=new Persona(aux[0],aux[1],aux[2]);ag.addPersona(p);ag.save();}break;case 2:{ag.load();ag.imprimir();}break;case 3:{ag.imprimir();}break;case 4:{ag.save();}break;case 5:{JOptionPane.showMessageDialog(null, Gracias por usar esta aplicacion );}return;default:{JOptionPane.showMessageDialog(null, elija una opcion );}}}elseJOptionPane.showMessageDialog(null, Las opciones no contienen letras ni puede dejar vacio la seleccion.. Elija por favor una opcion.... , ERROR ,JOptionPane.WARNING_MESSAGE); }}}En cada caso solo se hace llamado a la funcion necesaria para ejecutar parte del codigo segun la necesidad del usuario ingresada desde el teclado... Nomina.java En esta parte del codigo se encuentran las funciones que se hacen llamadas segun sea ingresado la opcion desde teclado, en el menuprincipal.En cada linea siguiente del codigo se hace una referencia corta del significado del codigo implementado.import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.Scanner;import javax.swing.JOptionPane;public class nomina {public ArrayListp;public Scanner key1;public nomina(){p=new ArrayList();}public void addPersona(Persona o){p.add(o);}// Metodo para la carga de datos desde un archivo en el dico duro//throws IOExceptionpublic void load() throws IOException {try {//metodo que prepara el archivo para la lecturaFileReader file_in=new FileReader( lista.txt );//Scanner es el encargado de leerlo y pasarlo a un tipo de dato PersonaScanner key=new Scanner(file_in);for(;;){String cad=key1.nextLine();String[] aux=cad.split( - );Persona p=new Persona(aux[0],aux[1],aux[2]);addPersona(p);}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void save() throws IOException{try {//creacion de un archivoFile a=new File( lista.txt );a.delete();a.createNewFile();//FileWriter es una funcion que permite la escritura en el archivo lista.txt//False=sobrescritura de los datos almacenadosFileWriter file_write=new FileWriter( lista.txt ,false);//manda los bytes a un buffer para ser puestos en el archivoPrintWriter pw=new PrintWriter(file_write);for(Persona m:p){String cad=m.getName()+ - +m.getTel()+ - +m.getDir();pw.println(cad);JOptionPane.showMessageDialog(null, Guardado con exito! ... );}file_write.flush();//garantiza que todo se escriba en el archivofile_write.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void imprimir(){for(Persona m:p){JOptionPane.showMessageDialog(null, m.getName()+ +m.getTel()+ +m.getDir());}}} persona.java import java.io.Serializable;public class Persona implements Serializable {private String name;private String tel;private String dir;public Persona(String name,String tel,String dir){this.name=name;this.tel=tel;this.dir=dir;}public String getName() {return name;}public String getTel() {return tel;}public String getDir() {return dir;}public void setName(String name) {this.name = name;}public void setTel(String tel) {this.tel = tel;}public void setDir(String dir) {this.dir = dir;}}Como podemos ver el uso de archivos es muy importante para poder implementar y desarrollar un codigo mas robusto y eficiente para almacenar datos, e inclusive si se busca codigos ya mas estructurados, el uso de BSD es mas importante, ya que con ello se podra manejar de mejor manera el almacenamiento de datos. COMENTARIO FINAL Estos codigos implementados, podrían desarrollarse de mejor manera, con más opciones como son las de datos como números de teléfono dirección, estado civil, nacionalidad, etc. Dado que la elaboración de este tipo de códigos ya más avanzados requiere dedicarle mucho más tiempo, además de tener conocimientos mas avanzados en java como el uso de JFrame, para el uso de cuadros de dialogo y cuadros de ingreso de datos, no ha sido posible implementar un código de tal magnitud, por lo que se ha optado por dos código, no tan sencillos, pero si para entender como poder realizar ingreso de datos, validaciones, uso de archivos, etc. El código nomina de empleados fue desarrollado e implementado por DAVID NUNEZ. Basado en códigos fuente similares pero más elaborados y en su totalidad mejor estructurados, para poder implementar dicha aplicación, A continuación se coloca los enlaces de ayuda. El segundo código Manejo de archivos ya fue implementado, lo único que se modifico en dicho código, es la validación de datos y el uso de modo grafico, ya que este código no fue implementado con validación, y es ejecutado en modo texto. A continuación los enlaces a los códigos de ayuda y código fuente. http://www.chuidiang.com/chuwiki/index.php?title=JOptionPane_y_di%C3%A1logos_modales http://grupos.emagister.com/debate/validacion_de_letras_y_espacios/6709-289716 http://www.programacion.com/java/articulo/expresionesreg/ http://mygnet.net/codigos/java/ CODIGOS FUENTE http://mygnet.net/it/descargas/codigos/codigos_fuentes_java_y_tutor_java_con_3000_codigos_fuentes_muy_buenos.2777.zip http://mygnet.net/it/descargas/codigos/sistema_de_nominas_usando_polimorfismo.2641.zip Cualquier duda o sugerencia por favor háganlo saber. Saludos cordiales estimados compañeros.