Trabajo de Final

44

description

Trabajo final de Java

Transcript of Trabajo de Final

  • 1

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 2

    Trabajo de

    Investigacin

    Maestro: Ing. Anaximandro Fernndez Guerrero.

    Facultad: Ingeniera y Arquitectura.

    Aula: 50T.

    Integrantes:

    Acosta Ordoez, Luigi. Chunga Rojas, Diego.

    Nez Campos, Manuel.

    Prez Herrera, Daniel.

    Sanabria Manay, Gerson.

    Ramos Yarrin, Jordan.

    Chiclayo, Noviembre 2013

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 3

    Introduccin Java es el lenguaje de programacin que ms personas en el mundo

    lo utilizan, tanto en el ambiente acadmico, como para el desarrollo

    de aplicaciones comerciales.

    Java es un Lenguaje Orientado a Objetos, desde el primer

    programa, por ms simple que sea, est usted implementado una

    clase, entre sus principales caractersticas podemos mencionar:

    Multiplataforma, porque Java corre sobre cualquier sistema

    operativo.

    Multiproceso, porque un programa Java corre sobre cualquier

    sistema operativo.

    Orientado a Objetos.

    Seguro, porque elimina aspectos como los punteros, que

    pueden utilizarse para acceder a secciones de la memoria no

    permitida.

    A esto tenemos que agregarle una gran cantidad de libreras y

    recursos para desarrollar todo tipo de aplicaciones, desde las ms

    sencillas, como las de consola, aplicaciones de entorno grfico, y las

    ms avanzadas, como componentes, aplicaciones Web, aplicaciones

    mviles, etc.

    La madurez que ha tenido Java a lo largo del tiempo, lo hacen el

    lenguaje preferido por empresas que realizan desarrollo serio, y en

    nuestro medio son cada vez ms las empresas que lo utilizan.

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 4

    Es este proyecto de investigacin que veremos a continuacin est

    desarrollado en el aspecto solo del lenguaje en Java, en el siguiente

    estar desarrollndose temas como las Libreras ms usadas,

    Funciones utilizadas as como tambin los distintos tipos de Arrays.

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 5

    Libreras 1. Java.io.-

    Concepto:

    El paquete java.io proporciona un marco de trabajo para

    realizar operaciones de entrada y salida entre nuestro

    programa java y cualquier dispositivo externo cuenta

    con diversos tipos que viene a ser desde los ms simples

    hasta los ms complejos combinando diferentes

    funciones adems que se puede tener cierta

    independencia del programa con el dispositivo.

    Funcin:

    Y su funcin en un ejemplo muy claro es una operacin

    de lectura y escritura contra un fichero, necesitaramos

    dos streams, uno de entrada y otro de salida.

    2. Java.net.-

    Concepto:

    Como bien indica su nombre net que deriva de la

    palabra inglesa network, cuyo significado es red, esta

    aplicacin, se basa en los principales componentes del

    internet contiene definiciones de clases e interfaces que

    implementan varias capacidades de red. Las clases de

    este paquete incluyen una clase que implementa una

    conexin URL.

    Se pueden utilizar estas clases para implementar

    aplicaciones cliente-servidor y otras aplicaciones de

    comunicaciones. Conectividad y Seguridad del Cliente

    tiene varios ejemplos de utilizacin de estas clases,

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 6

    incluyendo un ejemplo cliente-servidor que utiliza

    datagramas.

    Funcin:

    Su funcin o uso viene a ser el ingreso de datos de

    diferente ndole desde la web, como datos personales o

    informacin de una gran empresa.

    3. Javax.swing.-

    Concepto:

    Para comenzar a hablar de la aplicacin swing tenemos

    que saber un poco de su historia antes de la existencia

    de Swing, las interfaces grficas con el usuario se

    realizaban a travs de AWT (Abstract Window Toolkit),

    de quien Swing hereda todo el manejo de eventos.

    Usualmente, para toda componente AWT existe una

    componente Swing que la reemplaza, por ejemplo, la

    clase Button de AWT es reemplazada por la clase

    JButton de Swing.

    El Swing es un concepto actual del AWT que consiste

    en la aplicacin e ingreso de datos por diferentes tipos,

    numricos, alfabticos, pero todos usando una misma

    codificacin.

    Funcin:

    4. Java.applets.-

    Concepto:

    Los applets de Java pueden ejecutarse en un navegador

    web utilizando la Java Virtual Machine (JVM), o en el

    AppletViewer de Sun, entre sus caractersticas podemos

    mencionar un esquema de seguridad que permite que

    los applets que se ejecutan en el equipo no tengan

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 7

    acceso a partes sensibles a menos que uno mismo le d

    los permisos necesarios en el sistema; la desventaja de

    este enfoque es que la entrega de permisos es engorrosa

    para el usuario comn, lo cual juega en contra de uno

    de los objetivos de los Java applets: proporcionar una

    forma fcil de ejecutar aplicaciones desde el navegador

    web.

    Cuando un navegador carga una pgina web que

    contiene un applet, este se descarga en el navegador web

    y comienza a ejecutarse. Esto permite crear programas

    que cualquier usuario puede ejecutar con tan solo cargar

    la pgina web en su navegador.

    Funcin:

    La principal funcin de applets es el bloqueo de pginas

    web que puedan filtrarse en el programa y de esta

    manera robar informacin o daarla por completo

    arruinando el sistema.

    5. Java.sql.-

    Concepto:

    Esta clase hereda de java.util.Date y es la representacin

    de la fecha cuando trabajamos con JDBC es decir, son

    los campos almacenados en una base de datos cuyo tipo

    es una fecha que puede o no incluir la hora, aunque la

    clase java.sql.Date siempre lo hace. Al igual que su clase

    padre, tiene una precisin de milisegundos, con la

    excepcin que al mostrarla en la salida estndar con el

    formato por defecto solo muestra el da, mes y ao. Hay

    que anotar tambin que para campos que almacenen

    solamente horas existen otras clases para manejarlos.

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 8

    Funcin:

    El sql como principal funcin es la encargada de agregar

    formatos de horas, das, meses y aos, en general

    ingresar la hora y la fecha en la que se est trabajando

    previamente seleccionada del ordenador.

    6. Java.util.-

    Concepto:

    El paquete java.util, es uno de los principales paquetes

    que usaremos cuando estemos programando con el

    lenguaje Java, y junto al paquete java.lang es uno de los

    ms utilizados en cualquier tipo de desarrollo

    informtico basado en Java. Este paquete, es un conjunto

    bastante grande tanto de interfaces como de clases de

    diversos tipos, que en conjunto podran llamarse

    utilidades.

    7. Java.lang.-

    Concepto:

    En primer lugar, hay que decir que ste es uno de los

    paquetes ms importantes de la API Java. Abarca

    muchsimas clases e interfaces fundamentales para la

    programacin Java, tanto que este paquete se incluye

    automticamente en nuestros programas.

    8. Java.awt.-

    Concepto:

    AWT es el acrnimo del X Window Toolkit para Java, se

    trata de una biblioteca de clases Java para el desarrollo

    de Interfaces de Usuario Grficas. La versin del AWT

    que Sun proporciona con el JDK se desarroll en slo

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 9

    dos meses y es la parte ms dbil de todo lo que

    representa Java como lenguaje.

    El entorno que ofrece es demasiado simple, no se han

    tenido en cuenta las ideas de entornos grficos

    novedosos, sino que se ha ahondado en estructuras

    orientadas a eventos, llenas de callbacks y sin soporte

    alguno del entorno para la construccin grfica; veremos

    que la simple accin de colocar un dibujo sobre un

    botn se vuelve una tarea harto complicada. Quiz la

    presin de tener que lanzar algo al mercado haya tenido

    mucho que ver en la pobreza de AWT.

    9. Java.text.-

    Concepto:

    Es la opcin creada para que los usuarios puedan

    emplear el teclado alfabtico claro esta para ingresar

    datos como nombres, conceptos, productos y dems

    palabras que son necesarias para entender los paquetes.

    Funcin:

    Su funcin cosiste en el ingreso de datos por teclado

    alfabtico como ya est especificado anteriormente.

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 10

    Funciones 1. Funciones Numricas:

    Matemticas:

    Math es un objeto integrado que posee propiedades

    y mtodos para constantes y funciones matemtico,

    como por ejemplo, el objeto PI de Math (Math.PI).

    La clase java.lang.Math es una clase utilitaria cuyos

    mtodos nos permiten realizar algunos clculos

    matemticos comunes y complejos.

    Constantes Matemticas

    Dos constantes ms utilizadas con 15 decimales:

    Math.E = 2.718281828459045

    Math.PI = 3.141592653589793

    Se realizan todas las operaciones matemticas que no

    sean las de adicin, resta, multiplicacin, divisin y

    residuo. Para su correcto uso al igualarlos a una

    variable o usar una variable para operarla se debe

    declarar tipo doubl. Entre ellas estn:

    Valor absoluto:

    Math.abs(variable/numero);

    Potencia de ex:

    Math.exp(variable/numero);

    Potencia:

    Math.pow(variable/numero, variable/numero);

    Nmero aleatorio del 0-1:

    Math.random();

    Redondear un nmero

    Math.round(variable/numero);

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 11

    Raz cuadrada:

    Math.sqrt(variable/numero);

    Potencia de ex-1:

    Math.expm1(variable/numero);

    Estadsticas:

    Son aquellas funciones que permiten la construccin

    de los miembro dato con las caractersticas de

    ValorMedio, desviacinMedia y desviacinCuadrtica.

    Este grupo es una clase estadstica por existir dos

    miembros dato: el array de datos a, b y el nmero de

    datos.

    Los miembros dato de deben declarar privados

    private para que no se puedan modificar desde los

    objetos de clase. La funcin miembro ha de ser

    declarada pblica public.

    Financieras:

    Es cualquier uso de las funciones matemticas

    aplicada a la economa, se utilizan para hallar

    intereses simples y compuestos, realizar grficas de

    oferta y demanda.

    Algortmicas:

    Son cualquier operacin matemtica usando

    logaritmos, entre ellos estn el logaritmo en base 10

    y logaritmo neperiano. El tipo de variable que utilizan

    es doubl:

    Logaritmo natural

    Math.log(variable/numero);

    Logaritmo en base 10

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 12

    Math.log10(variable/numero);

    Logaritmo neperiano+1, lo que hace esta funcin es

    adicionar 1 a la variable y luego hallar el logaritmo

    natural:

    Math.log1p(variable/numero);

    2. Funciones de Cadena:

    Las funciones de cadenas de caracteres retornan NULL si

    la longitud del resultado es mayor que el valor de la

    variable de sistema max_allowed_packet .

    ASCII(str):

    Retorna el valor numrico del carcter ms a la

    izquierda de la cadena de caracteres str. Retorna 0 si

    str es la cadena vaca. Retorna NULL si str es NULL.

    ASCII() funciona para caracteres con valores

    numricos de 0 a 255.

    mysql> SELECT ASCII('2');

    -> 50

    mysql> SELECT ASCII(2);

    -> 50

    mysql> SELECT ASCII('dx');

    -> 100

    BIN(N)

    Retorna una representacin de cadena de caracteres del

    valor binario de N, donde N es un nmero muy largo

    (BIGINT) . Esto es equivalente a CONV(N,10,2). Retorna

    NULL si N es NULL.

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 13

    mysql> SELECT BIN(12);

    -> '1100'

    BIT_LENGTH(str)

    Retorna la longitud de la cadena de caracteres str en

    bits.

    mysql> SELECT BIT_LENGTH('text');

    -> 32

    CHAR(N,...)

    CHAR() interpreta los argumentos como enteros y

    retorna la cadena de caracteres que consiste en los

    caracteres dados por los cdigos de tales enteros. Los

    valores NULL no se tienen en cuenta.

    mysql> SELECT CHAR(77,121,83,81,'76');

    -> 'MySQL'

    mysql> SELECT CHAR(77,77.3,'77.3');

    -> 'MMM'

    CHAR_LENGTH(str)

    Retorna la longitud de la cadena de caracteres str, medida

    en caracteres. Un carcter de mltiples bytes cuenta

    como un slo carcter. Esto significa que para una cadena

    de caracteres que contiene cinco caracteres de dos bytes,

    LENGTH() retorna 10, mientras CHAR_LENGTH() returna

    5.

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 14

    Funciones de Caracteres: Las funciones de cadenas de caracteres retornan NULL si la longitud del resultado es mayor que el valor de la variable de sistema max_allowed_packet . Consulte Seccin 7.5.2, Afinar parmetros del servidor. Para funciones que operan en posiciones de cadenas de caracteres, la primera posicin es la 1.

    ASCII(str) Retorna el valor numrico del carcter ms a la izquierda de la cadena de caracteres str. Retorna 0 si str es la cadena vaca. Retorna NULL si str es NULL. ASCII() funciona para caracteres con valores numricos de 0 a 255. mysql> SELECT ASCII('2'); -> 50 mysql> SELECT ASCII(2); -> 50 mysql> SELECT ASCII('dx'); -> 100 Consulte la funcin ORD() .

    BIN(N) Retorna una representacin de cadena de caracteres del valor binario de N, donde N es un nmero muy largo (BIGINT) . Esto es equivalente a CONV(N,10,2). Retorna NULL si N es NULL. mysql> SELECT BIN(12); -> '1100'

    BIT_LENGTH(str) Retorna la longitud de la cadena de caracteres str en bits. mysql> SELECT BIT_LENGTH('text'); -> 32

    CHAR(N,...) CHAR() interpreta los argumentos como enteros y retorna la cadena de caracteres que consiste en los caracteres dados por los cdigos de tales enteros. Los valores NULL no se tienen en cuenta.

    http://dev.mysql.com/doc/refman/5.0/es/server-parameters.html

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 15

    mysql> SELECT CHAR(77,121,83,81,'76'); -> 'MySQL' mysql> SELECT CHAR(77,77.3,'77.3'); -> 'MMM'

    CHAR_LENGTH(str) Retorna la longitud de la cadena de caracteres str, medida en caracteres. Un carcter de mltiples bytes cuenta como un slo carcter. Esto significa que para una cadena de caracteres que contiene cinco caracteres de dos bytes, LENGTH() retorna 10, mientras CHAR_LENGTH() returna 5.

    CHARACTER_LENGTH(str) CHARACTER_LENGTH() es sinnimo de CHAR_LENGTH(). 3.

    4. Funciones de Fechas:

    Las clases java.util.Date y java.sql.Date. Son dos de las clases

    ms usadas cuando una aplicacin implica el trabajo con

    fechas:

    java.util.Date: Segn la documentacin "La clase

    java.util.Date representa un instante de tiempo especfico,

    con precisin de milisegundos"; esto ms que ser una

    especie de "autoadulacin" para la clase, quiere decir que

    no solo se trata de una simple cadena al estilo

    yyyy/MM/dd, sino que almacena hasta milisegundos y que

    es posible trabajar con ellos.

    Antes del jdk1.1 la clase java.util.Date tena dos funciones

    adicionales a la que conocemos ahora, una de ellas era la

    interpretacin de datos que tenan que ver con fechas,

    como aos, das, segundos, entre otros. La otra era el

    formateo (la forma como se muestra) y parseo (convertir

    un String a java.util.Date). Pero debido a las dificultades

    que presentaban estas funcionalidades a la hora de

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 16

    internacionalizar los programas, esos mtodos ya est

    obsoletos y la clase java.util.Calendar se encarg de esto;

    as que en este momento esta clase, slo hace lo que se

    mencion al principio: "representa un instante de tiempo

    especfico, con precisin de milisegundos"; ms adelante

    veremos como ampliar esta funcionalidad. Por ahora

    veamos las convenciones que sigue esta clase:

    * El ao "y" est representado por un entero igual a ("y" -

    1900). Por ejemplo el ao 2004 se representa como 104

    (2004 - 1900).

    * Los meses son representados por nmeros entre 0 y 11,

    donde enero es 0 y diciembre es 11.

    * Los das y minutos se representan de forma corriente.

    Entre 1 - 31 y 0 - 59 respectivamente.

    * Las horas van entre 0 y 23, donde la medianoche es 0 y

    el medio da 12.

    * Los segundos van entre 0 y 61. 61 solo ocurre cuando se

    agrega el segundo adicional para ajustar la diferencia

    entre el reloj atmico y el tiempo de rotacin de la tierra.

    No sobra mencionar que los mtodos para obtener el ao,

    mes y da de esta clase ya estn obsoletos y lo nico que

    hacen es llamar a la clase java.util.Calendar para que esta

    se encargue de hacerlo (una delegacin).

    java.sql.Date: Esta clase hereda de java.util.Date y es la

    representacin de la fecha cuando trabajamos con JDBC

    (Java DabaBase Connectivity), es decir, son los campos

    almacenados en una base de datos cuyo tipo es una fecha

    que puede o no incluir la hora, aunque la clase

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 17

    java.sql.Date siempre lo hace. Al igual que su clase padre,

    tiene una precisin de milisegundos, con la excepcin que

    al mostrarla en la salida estndar con el formato por

    defecto solo muestra el da, mes y ao. Hay que anotar

    tambin que para campos que almacenen solamente

    horas existen otras clases para manejarlos.

    En resumen ambas clases, slo se encargan de almacenar

    la cantidad de milisegundos que han pasado desde las 12

    de la noche del primero de enero de 1970 en el meridiano

    de Greenwich. Aqu vienen dos puntos importantes:

    a) Si la fecha que almacena cualquiera de las clases es

    menor a las 00:00:00 enero 1 de 1970 GMT, su valor el

    milisegundos ser negativo.

    b) La fecha es susceptible a la zona horaria. Por ejemplo

    en Colombia los milisegundos no se empiezan a contar

    desde enero 1 de 1970, sino a partir de las 19:00 de

    diciembre 31 de 1969. Esto es importante por que si

    transportamos una fecha relativa de una zona a otra,

    podemos llegar a tener problemas al confiar en los

    milisegundos que se tienen; adems como la clase intenta

    representar el "Tiempo Universal Coordinado" (UTC)

    suma 0.9 segundos cada ao para ajustar la diferencia

    entre el reloj atmico y la velocidad de rotacin de la

    tierra. Esto se traduce en que muy dificilmente podemos

    basarnos en valores como 0 o 60000 para realizar

    validaciones, pues esos milisegundos no son controlables

    cuando creamos la instancia de una fecha, peor an, los

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 18

    milisegundos no son ni siquiera iguales para la misma

    fecha en la misma zona horaria.

    Ambas clases se pueden instanciar directamente mediante

    new(), pero la clase java.sql.Date necesita un parmetro

    en el constructor: el tiempo en milisegundos, as que las

    siguientes instrucciones son vlidas:

    java.util.Date fechaActual = new java.util.Date(); //Fecha

    actual del sistema

    java.sql.Date inicioLocal = new java.sql.Date(0);

    //Milisegundo cero

    //tambin se puede crear una instancia de java.util.Date

    con parmetros iniciales

    java.util.Date otraFecha = new java.util.Date(1000); //El

    primer segundo a partir del inicio

    Prueba a imprimir cada uno de estos valores y fjate en la

    diferencia de formatos entre java.sql.Date y java.util.Date.

    Se puede pasar de java.sql.Date a java.util.Date de dos

    fomas, una de ellas es con una asignacin simple:

    java.util.Date utilDate = null;

    java.sql.Date sqlDate = new java.sql.Date(0);

    utilDate = sqlDate;

    /* aunque es java.util.Date,

    si la imprimes tendr el formato de java.sql.Date,

    recordemos que java.sql.Date hereda de

    java.util.Date */

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 19

    System.out.println(utilDate);

    Tambin se pueden tomar los milisegundos de

    java.sql.Date y pasarlos al constructor de java.util.Date:

    java.util.Date utilDate = null;

    java.sql.Date sqlDate = new java.sql.Date(0);

    utilDate = new java.util.Date(sqlDate.getTime());

    //esta vez se mostrar con el formato de java.util.Date

    System.out.println(utilDate);

    Para pasar de java.util.Date a java.sql.Date se deben

    tomar los milisegundos de la primera y pasarlos al

    constructor de la segunda:

    java.util.Date utilDate = new java.util.Date();

    java.sql.Date sqlDate = new

    java.sql.Date(utilDate.getTime());

    //Con formato de java.sql.Date

    System.out.println(sqlDate);

    Para comparar fechas usamos el mtodo compareTo()

    que internamente compara los milisegundos entre ellas

    usando directamente los mtodos getTime() de ambas

    clases.

    java.util.Date utilDate = new java.util.Date();

    java.sql.Date sqlDate = new

    java.sql.Date(utilDate.getTime());

    if (utilDate.compareTo(sqlDate) == 0){

    System.out.println("IGUALES");

    }else{

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 20

    System.out.println("DIFERENTES");

    }

    O lo que es equivalente:

    java.util.Date utilDate = new java.util.Date();

    java.sql.Date sqlDate = new

    java.sql.Date(utilDate.getTime());

    if (utilDate.getTime() == sqlDate.getTime()){

    System.out.println("IGUALES");

    }else{

    System.out.println("DIFERENTES");

    }

    Las clases Time y Timestamp.

    Ambas clases pertenecen al API JDBC y son la encargadas

    de representar los campos de estos tipos en una base de

    datos. Esto no quiere decir que no se puedan usar con

    otros fines. Al igual que java.sql.Date, son hijas (heredan)

    de java.util.Date, es decir, su ncleo son los milisegundos.

    La clase Time es un envoltorio de la clase java.util.Date

    para representar los datos que consisten de horas,

    minutos, segundos y milisegundos, mientras Timestamp

    representa estos msmos datos ms un atributo con

    nanosegundos, de acuerdo a las especificaciones del

    lenguaje SQL para campos de tipo TIMESTAMP.

    Como ambas clases heredan del java.util.Date, es muy

    fcil pasar de un tipo de dato a otro; similar a la clase

    java.sql.Date, tanto Time como Timestamp se pueden

    instanciar directamente y su constructor tiene como

    parmetro el nmero de milisegundos; como es de

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 21

    imaginarse, cuando se muestra alguna de las clases

    mediante su mtodo toString() se ven los datos que

    intentan representar; La clase Time slamente muestra la

    hora, minutos y segundo, mientras timestamp agrega

    fracciones de segundo a la cadena.

    Para convertir entre tipos de datos diferentes debemos

    usar los milisegundos de una clase y asignarlos a las

    instancias de las otras, y como la clase java.util.Date es

    superclase de todas, a una instancia de esta podemos

    asignar cualquiera de las otras, manteniendo los mtodos

    de la clase asignada, es decir, si asignamos un Time a una

    java.util.Date, al imprimir se ver el mismo formato de la

    clase Time.

    Con este cdigo:

    java.util.Date utilDate = new java.util.Date(); //fecha

    actual

    long lnMilisegundos = utilDate.getTime();

    java.sql.Date sqlDate = new

    java.sql.Date(lnMilisegundos);

    java.sql.Time sqlTime = new

    java.sql.Time(lnMilisegundos);

    java.sql.Timestamp sqlTimestamp = new

    java.sql.Timestamp(lnMilisegundos);

    System.out.println("util.Date: "+utilDate);

    System.out.println("sql.Date: "+sqlDate);

    System.out.println("sql.Time: "+sqlTime);

    System.out.println("sql.Timestamp: "+sqlTimestamp);

    Se obtiene la siguiente salida:

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 22

    util.Date: Thu May 20 19:01:46 GMT-05:00 2004

    sql.Date: 2004-05-20

    sql.Time: 19:01:46

    sql.Timestamp: 2004-05-20 19:01:46.593

    Note que an cuando todos los objetos tienen los mismos

    milisegundos el formato con el que se muestran

    dependen de la clase que realmente los contiene. Es decir,

    no importa que a un objeto del tipo java.util.Date se le

    asigne uno del tipo Time, al mostrar a travs de la

    consola se invocar el mtodo toString() de la clase time:

    utilDate = sqlTime;

    System.out.println("util.Date apuntando a sql.Time:

    ["+sqlTime+"]");

    utilDate = sqlTimestamp;

    System.out.println("util.Date apuntando a sql.Timestamp:

    ["+sqlTimestamp+"]");

    Arroja:

    util.Date apuntando a sql.Time: [19:29:47]

    util.Date apuntando a sql.Timestamp: [2004-05-20

    19:29:47.468]

    Pero si en vez de solo apuntar, creamos nuevas instancias

    con los milisegundos los formatos con que se muestran

    son los mismos. Note que lo verdaderamente importante

    ocurre cuando creamos la instancia de java.util.Date

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 23

    usando los milisegundos del objeto sqlTime, pues aunque

    este ltimo nicamente muestra horas, minutos y

    segundos, siempre ha conservado todos los datos de la

    fecha con que se cre.

    utilDate = new java.util.Date(sqlTime.getTime());

    System.out.println("util.Date con milisegundos de

    sql.Time: ["+utilDate+"]");

    utilDate = new java.util.Date(sqlTimestamp.getTime());

    System.out.println("util.Date con milisegundos de

    sql.Timestamp: ["+utilDate+"]");

    Fjese en el formato de salida:

    util.Date con milisegundos de sql.Time: [Thu May 20

    19:54:42 GMT-05:00 2004]

    util.Date con milisegundos de sql.Timestamp: [Thu May

    20 19:54:42 GMT-05:00 2004]

    Para finalizar esta primera entrega veamos el cdigo para

    mostrar la diferencia entre dos fechas en horas, minutos

    y segundos. Esta no es la mejor forma para hacerlo, pero

    cabe bien para mostrar de forma prctica todos los

    conceptos anteriormente estudiados.

    import java.util.HashMap;

    import java.util.Map;

    public class Prueba {

    public static Map getDiferencia(java.util.Date fecha1,

    java.util.Date fecha2){

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 24

    java.util.Date fechaMayor = null;

    java.util.Date fechaMenor = null;

    Map resultadoMap = new HashMap();

    /* Verificamos cual es la mayor de las dos fechas, para

    no tener sorpresas al momento

    * de realizar la resta.

    */

    if (fecha1.compareTo(fecha2) > 0){

    fechaMayor = fecha1;

    fechaMenor = fecha2;

    }else{

    fechaMayor = fecha2;

    fechaMenor = fecha1;

    }

    //los milisegundos

    long diferenciaMils = fechaMayor.getTime() -

    fechaMenor.getTime();

    //obtenemos los segundos

    long segundos = diferenciaMils / 1000;

    //obtenemos las horas

    long horas = segundos / 3600;

    //restamos las horas para continuar con minutos

    segundos -= horas*3600;

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 25

    //igual que el paso anterior

    long minutos = segundos /60;

    segundos -= minutos*60;

    //ponemos los resultados en un mapa :-)

    resultadoMap.put("horas",Long.toString(horas));

    resultadoMap.put("minutos",Long.toString(minutos));

    resultadoMap.put("segundos",Long.toString(segundos));

    return resultadoMap;

    }

    5. Funciones Varias:

    Las funciones son similares a los mtodos la diferencia es que

    estas retornan un resultado lo cual puede ser almacenado

    dentro de una variable o impreso directamente en pantalla,

    mientras que los mtodos no retornan ningn tipo de dato

    pero a si mismo podran meterse variables al mismo mtodo lo

    cual podra usarse como un tipo de retorno aunque no sera lo

    mismo.

    FUNCIONES DEFINIDAS POR

    EL USUARIO

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 26

    FUNCIONES DEFINIDAS POR EL USUARIO

    Las funciones que se han utilizado hasta ahora son funciones

    que el lenguaje de programacin ha predefinido en sus

    bibliotecas o libreras. Sin embargo, tambin es posible que el

    programador defina y utilice sus propias funciones.

    Definicin de Funciones

    Las funciones definidas por el programador se escriben fuera

    de la funcin main. Si se recuerda, uno de los objetivos del uso

    de las funciones es la descomposicin de problemas complejos y

    el trabajo en grupo. El siguiente es un ejemplo de una definicin

    de una funcin. Se utiliza antes de presentar la sintaxis formal

    de modo que nos podamos familiarizar con la terminologa:

    double strut(double numero)

    {

    double cubo;

    cubo = numero * numero*cubo;

    return cubo;

    }

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 27

    Esta definicin de la funcin strut consiste de:

    1) El encabezado de la funcin

    double strut(double numero)

    Observe que el encabezado no termina con punto y coma. Las

    partes del

    encabezado de una funcin son los siguientes.

    a) Una lista de los argumentos de la funcin entre parntesis:

    (double numero)

    Si se considera a la funcin como un programa pequeo, la lista

    de argumentos seran equivalentes a los datos que en un

    programa se introducira a travs de la instruccin cin. Es

    importante que observe que en la lista de argumentos se indican

    tanto la lista de los argumentos necesarios como el tipo de cada

    uno de ellos.

    b) El nombre de la funcin

    strut que puede se cualquier identificador vlido en java.

    c) El tipo de valor que regresa la funcin como resultado.

    double

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 28

    2) El cuerpo de la funcin

    {

    double cubo;

    cuadrado = numero * numero*numero;

    return cubo;

    }

    El cuerpo de la funcin se encierra entre llaves y en l se escriben

    las

    sentencias que se necesitan ejecutar para lograr el objetivo de la

    funcin.

    Contiene al menos una sentencia return. La sentencia return va

    seguida del nombre de una variable o de un valor constante.

    return cubo;

    El valor de dicha variable (o el valor de dicha constante)

    constituye el valor de regreso de la funcin. El tipo del valor que

    regresa la funcin debe ser consistente con el tipo del valor de

    regreso especificado en el encabezado de la funcin. Observe

    que, en este ejemplo, el valor de regreso de la funcin (tipo de

    la variable llamada cubo) es double, al igual que el tipo de valor

    de regreso especificado en el encabezado.

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 29

    Llamado de Funciones

    El llamado de las funciones definidas por el usuario se realiza de

    la misma forma que el llamado a funciones predefinidas. Por

    ejemplo, si un programador ha definido la funcin strut de este

    ejemplo, los siguientes seran llamados vlidos a la funcin:

    double m,n,p;

    m=3.0;

    n = strut(12.0);

    p = strut(m+n);

    Observe que los argumentos que se pasan a la funcin (12.0 en

    el primer caso y m+n en el segundo caso) son del tipo double y

    coinciden con el tipo definido para el argumento de la funcin.

    Asimismo, a la variable y se le asigna el valor de regreso de la

    funcin strut(12.0). Esto es correcto porque el valor de regreso

    de la funcin es de tipo double y la variable y tambin es de tipo

    double. Note que no es necesario que los argumentos con que

    la funcin es llamada se nombren igual que los identificadores

    usados en el encabezado de la funcin.

    Ejemplos:

    1.- Programa que escribiendo cualquier palabra en minsculas,

    las transforme en maysculas, y las maysculas en minsculas.

    package app; public class FuncionesUsuario {

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 30

    public String convertirMinusculaMayuscula(String cadena){ String res = ""; for (int i = 0; i < cadena.length(); i++) { if(Character.isUpperCase(cadena.charAt(i)))//si es mayuscula res += Character.toLowerCase(cadena.charAt(i));//lo convierte a minuscula else if(Character.isLowerCase(cadena.charAt(i))) res += Character.toUpperCase(cadena.charAt(i));//lo convierte a mayuscula } return res; }

    2 .- Programa que nos permita ingresar un nmero y ese sea el nmero que permita la suma de esa cantidad en la serie de fibonaci. package app; public class FuncionesUsuario { public String convertirMinusculaMayuscula(String cadena){ public long fibonacci(long n){ if(n

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 31

    Un arreglo (array en ingls) es una estructura de datos conformada

    por un conjunto de variables del mismo tipo, agrupadas bajo un

    mismo nombre, a las cuales accedemos mediante un ndice.

    Amigos

    0 Manuel 1 Mateo 2 Alonso 3 Kelly 4 Karen 5 Kristel

    Figura Ejemplo de arreglo

    En la figura tenemos un ejemplo de lo que sera un arreglo tipo

    String, todos sus elementos son cadenas, en este caso los nombres

    de mis amigos.

    El primer elemento tiene ndice cero (0), y el ltimo es el tamao

    del arreglo disminuido en uno. Si tenemos un arreglo de tamao

    6, el primer elemento tendr ndice 0 y el ltimo tendr ndice 5.

    Los arreglos puedes ser de una dimensin, se les denomina

    vectores; de dos dimensiones, se les denomina matrices; podemos

    construs de ms dimensiones pero no es usual.

    a) Unidimensional.- Es una coleccin de datos que son del mismo tipo, adems de ser

    consecutivas y tienen un nico nombre de variable para todos los

    elementos.

    El primer elemento se ocupara en la posicin 0, es decir que en

    un array de X elementos, el ltimo elemento en la lista ocupar la

    posicin X-1.

    El formato de un array unidimensional es:

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 32

    Declaracin: Un array puede declararse de dos formas

    Tipo [ ] NombredeArray;

    Tipo NombredeArray [ ];

    Tipo: Se indica el tipo de datos que contendr, ejemplo int, float,

    doubl,etc.

    Nombre de array: Indica el nombre en comn que tendrn todos

    los datos.

    Ejemplo:

    double [ ] Notas;

    String Alumno [ ];

    Creacin: Para la cracin del array se hace de la siguiente forma.

    Nombredearray= new Tipo[X]

    Tipo: Es el tipo de dato.

    X : Es el nmero de elementos que contendr el arreglo

    Ejemplo.

    Notas=new int [5]

    Alumno= new String [30]

    Dato: Las instrucciones de Creacin y declaracin pueden ser una

    misma instruccin.

    Tipo [] Nombredearray = new Tipo [X]

    Ejemplo.

    int []Notas= new int[10]

    String[]Alumno= new String[30]

    Ejemplo N1:

    package Trabajo; import javax.swing.JOptionPane; public class intro { public static void main(String arg[ ]) { int i,g; double [] nota= new double [10];

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 33

    nota[0]= 12; nota[1]= 14.5; nota[2]= 17; nota[3]= 04; nota[4]= 19; nota[5]= 20; nota[6]= 14; nota[7]= 05; nota[8]= 10; nota[9]= 07; for ( i = 0; i < 10; i++) { g=i+1; JOptionPane.showMessageDialog(null,"nota"+g+"\n" +nota [i]); } }}

    Ejemplo N2

    package Trabajo; import javax.swing.JOptionPane; public class Tr3 { public static void main(String arg[ ]) { int i,g; double n; double [] pro= new double [12]; n=Double.parseDouble(JOptionPane.showInputDialog("Ingrese el nmero")); pro[0]= n; pro[1]= n*2; pro[2]= n*3; pro[3]= n*4; pro[4]= n*5; pro[5]= n*6; pro[6]= n*7; pro[7]= n*8; pro[8]= n*9; pro[9]= n*10; pro[10]= n*11;

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 34

    pro[11]=n*12; for ( i = 0; i < 12; i++) { g=i+1; JOptionPane.showMessageDialog(null,"El nmero"+n+"multiplicado por"+g+"\nDa como producto" +pro[i] ); } }}

    b) Bidimensional.-

    Un arreglo Bidimensional se representa por un conjunto

    de filas y columnas, tal como se muestra en la figura, para

    acceder a un elemento en particular se necesita conocer la

    fila y columna en donde se encuentra.

    0 1 2 3

    45 67 80 45 67 89 23 67 12 87 72 54

    Fig Representacin de un Arreglo Bidimensional.

    Declaracin de Arreglos Bidimensionales:

    Tipo variable_arreglo[];

    Tipo [][] variable_arreglo;

    Tipo: Se indica el tipo de datos que contendr, ejemplo

    int, float, doubl, etc.

    Nombre de array: Indica el nombre en comn que

    tendrn todos los datos.

    Ejemplo:

    0 1 2

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 35

    Int mat1 [ ];

    String mat2 [ ];

    Creacin de Arreglos: Para la creacin del arreglo

    debemos utilizar el operador new.

    Variable_arreglo=new tipo [filas] [columnas];

    Es necesario haber declarado la variable variable_arreglo

    previamente.

    Veamos algunos ejemplos:

    Mat1=new int [10] [5];

    Mat2=new String [5] [10];

    Int mat3 [] [] =new int [4] [];

    Mat3 [0] =new int [5];

    Mat3 [1] =new int [5];

    Mat 3 [2] =new int [5];

    Mat 4 [3] =new int [5];

    Ejemplo N1: Este ejemplo trata de la suma de matrices, para lo cual es necesario que

    ambas matrices tengan las mismas dimensiones.

    La matriz se genera de manera aleatoria.

    Para imprimir las matrices se ha creado el mtodo sayMatriz, que se

    encarga de imprimir una matriz que se pasa como parmetro

    int mat1[][]=new int[4][5]; int mat2[][]=new int[4][5]; int suma[][]=new int[4][5]; for (int i=0;i

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 36

    for(int j=0;j

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 37

    for(int j=0;j

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 38

    Declaracin de Arreglos Bidimensionales:

    Tipo variable_arreglo [];

    Tipo [] [] [] variable_arreglo;

    Tipo: Se indica el tipo de datos que contendr, ejemplo

    int, float, doubl, etc.

    Nombre de array: Indica el nombre en comn que

    tendrn todos los datos.

    Creacin de Arreglos: Para la creacin del arreglo

    debemos utilizar el operador new.

    Variable_arreglo=new tipo [filas] [columnas]

    [profundidad];

    Es necesario haber declarado la variable variable_arreglo

    previamente.

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 39

    Ejemplo N1:

    d) Multidimensional.-

    Un array multidimensional est basado de la siguiente

    forma:

    Tipo [] [] Nombre=new Tipo [x] [y]

    Tipo: Es el tipo de variable

    Nombre: Nombre en comn que tendrn todos los datos

    del array

    X: Nmero de filas

    Y: Nmero de columnas

    Ejemplo N1:

    Imprimir las cuatro fechas en de revisin tcnica del auto.

    El orden es de la siguiente forma: Da/ Mes/ Ao

    int i,c; int [][] fecha= new int [5][3]; fecha[0][0]= 12; fecha[0][1]= 02; fecha[0][2]= 1999; fecha[1][0]= 23; fecha[1][1]= 10; fecha[1][2]= 2001; fecha[2][0]= 15; fecha[2][1]= 04; fecha[2][2]= 2004; fecha[3][0]= 17; fecha[3][1]= 12; fecha[3][2]= 2006; fecha[4][0]= 03; fecha[4][1]= 05;

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 40

    fecha[4][2]= 2008; for ( i = 0; i < fecha.length; i++) { for (c=0; c

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 41

    Conclusiones Hemos hecho un resumen de algunas partes del famoso lenguaje Java, muy utilizado para escribir los programas que trabajan en internet y no slo para eso; empezando por las bases hasta llegar a las interfaces grficas y, finalmente, al sonido. stos son todos aspectos ms avanzados de la programacin.

    El curso de programacin nos facilita y hace ms simple el

    trabajo del hombre al momento de organizar diferentes

    aspectos de la vida cotidiana.

    Cada programa que creamos es diferente y nos permite

    minimizar tiempo y costos, ya que uno mismo puede crear

    sus programas para las diferentes necesidades que

    tengamos.

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 42

    Recomendaciones Les recomendamos a todas las personas que tienen acceso

    a esta monografa, que lean la informacin que brindamos

    nosotros, ya que a nuestro parecer es muy comprensible y

    hemos tratado de poner ejemplos que las personas puedan

    comprender.

    As mismo a nuestros compaeros y profesor a que revisen

    el material que tenemos y obtener sus crticas

    constructivas de nuestra monografa.

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 43

    Bibliografa

    [Arnold y Gosling, 1997] Ken Arnold y James Gosling. Addison-Wesley/Domo. "El lenguaje de Programacin Java". Wesley Iberoamericana. 1997. 334 pginas. (Muy bsico, escrito por el desarrollador del lenguaje).

    [Eckel, 1997] Bruce Eckel. "Hands -on Java Seminar". Presindent MindView Inc. 1997. 577 pginas. (Tutorial completo en Ingls en formato PDF).

    [Johnson, 1996] Jeff Johnson. "Coding Standards for C, C++, and Java". Vision 2000 CCS Package and Application Team. 1996. 14 pginas. (Consejos para el formato de los fuentes Java, C y C++).

    [Morgan, 1999] Mike Morgan. "Descubre Java 1.2". Prentice Hall. 1999. 675 pginas. (Sin duda muy interesante, sobre todo por su actualidad al tratar con Java 2, y por su extensin al tratar todas las bibliotecas de Java).

    Documentacin oficial de la Sun Microsystems de Java Development Kit Versioni 1.3, 1.3 Relase Candidate 1, 1.3 Relase Candidate 2, 1.3 Relase Candidate 3, 1.3 Beta, 1.2.2 , 1.2.1. Disponible en la red en el sito oficial de Java: http://java.sun.com

    Java Didctica y Programacin, K.Arnold e J. Gosling, Addison-Wesley Primera edicin, (en italiano) Marzo de 1997

    Manual QUE - Special Edition Using Java, 2nd Edition, versin encontrada en internet (en ingls).

    Java2 Todo&Ms, J. Jaworski, SAMS Publishing - APOGEO (en ingls)

    Javatm 2D Graphics, J. Knudsen, O'REILLY (en ingls)

    http://java.sun.com/

  • ESCUELAS PROFESIONALES DE INGENIERIAS: INDUSTRIAL, CIVIL, COMPUTACIN Y

    SISTEMAS

    Pgina 44

    Ambiente para explorar los micromundos en competicin, Pietro Castellucci, Tesina en Informtica. (en italiano)