Cases Java

881
 Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 Desarrollo de Aplicaciones Empresariales Formación y Soluciones Informáticas EFIBS S.A Der echos Reservados - 2007.

Transcript of Cases Java

Page 1: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 1/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1

Desarrollo de AplicacionesEmpresariales

Formación y Soluciones Informáticas EFIBS S.A

Derechos Reservados - 2007.

Page 2: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 2/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2

11

IntroducciIntroduccióón a Javan a Java

Page 3: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 3/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3

2. Entorno de Desarrollo Integrado

2. Entorno de Desarrollo Integrado

3. El Lenguaje Java

3. El Lenguaje Java

4. Tipos de Datos y Operadores

4. Tipos de Datos y Operadores

5. Control de Flujo

5. Control de Flujo

1. Introducción a Java

1. Introducción a Java

6. Conceptos Básicos en Java

6. Conceptos Básicos en Java

7. Trabajando con Clases

7. Trabajando con Clases

1. Introducción a Java

Page 4: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 4/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4

8. Utilización de Interfaces8. Utilización de Interfaces

9. Estándares de Desarrollo9. Estándares de Desarrollo

10. Manejo de Excepciones10. Manejo de Excepciones

1. Introducción a Java

11. Utilizando Cadenas, Arreglos y Colecciones11. Utilizando Cadenas, Arreglos y Colecciones

12. Clases en Java12. Clases en Java

13. Swing13. Swing

AnexoAnexo

Page 5: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 5/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5

Objetivos

Introducir al estudiante en el lenguaje deprogramación Java.

Implementar ejemplos por capítulo, que le

permita al estudiante reafirmar susconocimientos.

Page 6: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 6/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6

1. Introducción

El siguiente curso,pretende introducir alestudiante en el manejodel lenguaje Java.

Con el fin de poder dar unseguimiento completo, setomará como base elsiguiente diagrama. Por lotanto, los ejercicios decada uno de los capítulos

subyacentes estaránbasados en el mismo.

Page 7: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 7/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7

1.1 Introducción a Java

Java es un lenguaje de programación creado en 1995 por los ingenierosde SUN Microsystems.

Fue creado en sus inicios para el desarrollo de componentes electrónicos,especialmente en equipos domésticos.

Es un lenguaje Orientado a Objetos.

Mejora la velocidad de desarrollo de las aplicaciones por su facilidad deuso.

Page 8: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 8/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8

1.1 … Introducción a Java

Contiene un conjunto de clases predefinidas (APIs).

No tiene punteros.

No es dependiente de la plataforma en que trabaja, lo cual lo hace serportable.

Está orientado al desarrollo de aplicaciones cliente-servidor, Web,

dispositivos inalámbricos, etc.

Page 9: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 9/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.9

1.2 Características

Senci l lo :  Elimina muchas características de otros lenguajes parareducir a un 50% los errores más comunes:

Aritmética de punteros. No existen referencias. Registros (structs). Definición de tipos (typedef). Macros (#define). Necesidad de Liberar memoria (free).

Page 10: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 10/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 0

1.2 … Características

Or ien t ado a Ob j e tos :  

Java trabaja bajo el paradigma orientado a objetos por lo que sebasa en el manejo de clases, objetos e interfaces a esos objetos.

Soporta tres de las características esenciales del paradigmaorientado a objetos:

Herencia.

Polimorfismo. Encapsulamiento.

Page 11: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 11/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 1

1.2 … Características

Dis t r i b u id o :  

Es un lenguaje orientado a Web, con grandes capacidades deinterconexión TCP/IP.

Se puede, a través de librerías acceder a protocolos http y ftp.

El lenguaje, por sí solo no es distribuido, sino que proporciona lasherramientas para que los programas lo puedan ser.

Page 12: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 12/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 2

1.2 … Características

Robus to :  

Lleva a cabo chequeos de tipos, tanto en tiempo de compilacióncomo ejecución.

Obliga a la declaración explícita de métodos, reduciendo así lasposibilidades de error.

Administra la memoria, eliminando la preocupación del

programador en tener que liberar la misma.

Page 13: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 13/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 3

1.2 … Características

Por tab le :  

Debido a que compila su código en un fichero objeto con formatoindependiente al sistema operativo al que se está ejecutando laaplicación.

Mu l t i t a re a :  

Al ser multitarea o multihilo, permite realizar muchas tareassimultáneas en un programa.

Los Miltithread son pequeños procesos o piezas independientes deun gran proceso.

Page 14: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 14/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 4

1.2 … Características

Seguro :  

El código Java, pasa por muchas validaciones antes de ejecutarseen una estación.

Elimina el acceso ilegal a la memoria.

Tiene un cargador de clases que se encarga de buscar las claseslocalmente y posteriormente a lo externo.

Page 15: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 15/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 5

1.2 … Características

Din á mico :  

Java es un lenguaje totalmente Orientado a Objetos. Por lo queconstruye los objetos y la conexión entre ellos en el momento en que

se va a ejecutar la aplicación.

Page 16: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 16/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 6

1.3 Orientación a Objetos

Es un paradigma que busca como representar la realidad a través deobjetos. El objeto es considerado la unidad elemental del paradigma.

Los objetos en realidad, pueden ser definidos como entes que poseenidentidad, comportamiento y estado (Grady Booch).

Es el principal paradigma en el desarrollo de software. Se caracterizapor la reutilización de código, portabilidad, facilidad de desarrollo ymantenimiento.

Page 17: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 17/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 7

1.4 Máquina Virtual Java(JVM).

Tiene la responsabilidad de la independencia entre el hardware y elsistema operativo.

Tiene la capacidad de proteger a los programas de todo aquelsoftware malicioso.

Se asemeja a una computadora abstracta, por lo que tiene unsistema de instrucciones y manipula varias áreas de memoria entiempo de ejecución.

Page 18: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 18/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 8

1.4 … Máquina Virtual Java(JVM).

Contiene un conjunto de clases predefinidas llamadas J2SE(Java 2Standard Edition)

Versión 5.0 “Tiger Proyect” 

Versión 1.4

Page 19: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 19/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 9

Java Runtime Environment (JRE) es el entorno mínimo paraejecutar programas Java 2. Incluye la JVM y la API.

Está incluida en la J2SE, aunque puede instalarse y ejecutarse

separadamente.

Incluye el Java Plug-in, que es el añadido que necesitan losnavegadores (Explorer, Netscape, etc).

Instalando el JRE, se tiene soporte completo Java 2, tanto enaplicaciones de escritorio como de Web.

1.5 Qué es el JRE?

Page 20: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 20/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 0

El código fuente Java es almacenado en un archivo con laextensión *.java

El archivo .java es compilado y se convierte en un archivo con laextensión *.class

1.6 Plataforma Independiente?

Page 21: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 21/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 1

Los Bytecodes son interpretados por el runtime.

El archivo .class se convierte en un código ejecutable.

1.6 … Plataforma Independiente?

Page 22: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 22/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 2

El class loader carga todas las clases necesarias, utilizando elclasspath para ubicarlas.

La JVM, verifica si existe bytecode ilegal, haciendo uso de la

tecnología JIT(Just in Time).

El manejador de memoria regresa toda la memoria al sistemaoperativo.

Finalmente, se realiza el proceso de administración de memoria GC(Garbage Collection).

1.7 Cómo trabaja la JVM?

Page 23: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 23/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 3

1.7 … Cómo trabaja la JVM?

Page 24: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 24/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 4

Com parac ión con o t ras t ecno log ías :  

Java es portable, confiable, seguro y de fácil aprendizaje.

Java es independiente tanto del hardware como del software.

Es de libre acceso (código abierto)

Presenta una mayor seguridad frente a virus informáticos queotros lenguajes.

1.8 Comparaciones

Page 25: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 25/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 5

El i ns t ru c to r rea l izará una exp l i cación de ta l l ada de l ej e rci ci o area l i za r .

Instalación del Java Software Development Kit(Java SDK).

Doble click en el archivo llamado jdk-1_5_0_08-windows-i586-p.Acepte los términos de la licencia.Instale los siguientes componentes.

Development Tools.Demos.Source Code.Public Java Runtime Environment.

Verifique la instalación manualmente donde se instaló la JVM(C:\ jdk-1_5_0_08-windows-i586-p).

1.9 Ejercicio Práctico

Page 26: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 26/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 6

Modificar variables de ambiente:

Inicio-> Panel de Control- Sistema-Variables de ambiente oentorno.

1.9 … Ejercicio Práctico

Ubicar las var iab les  

de e n t or n o ó d e si st e m a  

Page 27: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 27/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 7

Modificar variables de ambiente (continuación):

Cree las variables: JAVA_HOME=<ruta jdk> yJRE_HOME=<ruta jdk/jre> Una vez, que haya creado las variables de “OK” a todos los

cambios realizados. Recuerde cerrar las ventanas DOS.

1.9 … Ejercicio Práctico

Page 28: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 28/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 8

Probando la instalación y configuración del ambiente para el JDK:

Abra una ventana MS-DOS y digite la siguiente instrucción: java –version.

1.9 … Ejercicio Práctico

Page 29: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 29/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 9

Compilación y Ejecución

Con un editor de notas, digite el siguiente código Java, con elfin de poder llevar a cabo una compilación y ejecución de lamisma.

1.9 … Ejercicio Práctico

Notas :1. El método m a i n es el punto de inicio de una clase principal en Java.2. La instrucción S ys tem.ou t . p r i n t l n ( “…” ) se utiliza para desplegar en

consola lo que se encuentre entre comillas dobles.

Page 30: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 30/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 0

Una vez que se ha escrito el código en el editor de texto, debe

salvar con el mismo nombre de la clase y con la extensión *.java

En el caso del ejemplo sería: Principal.java

1.9 … Ejercicio Práctico

Compila

Ejecuta

Page 31: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 31/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 1

22

EntornoEntorno dede DesarrolloDesarrolloIntegradoIntegrado

Page 32: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 32/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 2

2. Entorno de Desarrollo Integrado2. Entorno de Desarrollo Integrado

3. El Lenguaje Java3. El Lenguaje Java

4. Tipos de Datos y Operadores4. Tipos de Datos y Operadores

5. Control de Flujo5. Control de Flujo

1. Introducción a Java1. Introducción a Java

6. Conceptos Básicos en Java6. Conceptos Básicos en Java

7. Trabajando con Clases7. Trabajando con Clases

2. Entorno de Desarrollo

Integrado

Page 33: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 33/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 3

8. Utilización de Interfaces8. Utilización de Interfaces

9. Estándares de Desarrollo9. Estándares de Desarrollo

10. Manejo de Excepciones10. Manejo de Excepciones

11. Utilizando Cadenas, Arreglos y Colecciones11. Utilizando Cadenas, Arreglos y Colecciones

12. Clases en Java12. Clases en Java

13. Swing13. Swing

AnexoAnexo

2. Entorno de Desarrollo

Integrado

Page 34: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 34/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 4

Objetivos

Explicar que es un Entorno de DesarrolloIntegrado (IDE).

Listar ejemplos de IDE’s actuales.

Explicar un IDE en específico, con el fin de quelos estudiantes aprendan a crear proyectosempresariales bajo la tecnología java.

Page 35: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 35/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 5

2. Qué es un IDE?

Los IDE’s, son herramientas con las cuales el programador podrállevar a cabo la implementación de proyectos en tiemposrealmente cortos.

Se caracterizan por facilitar las labores de implementación ya queofrecen una serie de herramientas que hacen el trabajo más fácil ysencillo.

Page 36: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 36/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 6

2.1 Entornos de DesarrolloIntegrado

Entre los IDE’s, destacan los siguientes:

NetBeans. Sun Java Studio Enterprise. Eclipse. Oracle JDeveloper. Visual Age. Pramatic.

Para efectos de este curso, se utilizará la versión deNetBeans 5.0.

Page 37: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 37/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 7

2.2 NetBeans versión 5.0

Netbeans es una herramienta de Desarrollo Integrado, para que losprogramadores puedan compilar, corregir errores y ejecutar programasasí como desarrollar y ensamblar soluciones empresariales.

El IDE proporciona un sistema completo de herramientas integrado enun solo ambiente.

Es el IDE más utilizado por lacomunidad de programadoresJava, dada la necesidad de los

mismos de ser más y más productivos.

Page 38: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 38/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 8

2.2 … NetBeans versión 5.0

El NetBeans versión 5.0 incluye:

Soporte de escritorio (AWT/Swing). Soporte Web (Servlets/JSP/JSF/Struts). Desarrollo para Java 2 Enterprise Edition (EJB y Web Services). Servidor de Aplicaciones

Java EE Application Server.

Integración de otros Servidores de Aplicaciones.

Page 39: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 39/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 9

2.3 Requerimientos NetBeans

Re q u e r im ie n to s d e Ha rd w a re  :

Microsoft Windows:

Procesador : Intel Pentium III , 780 MHz. Memor ia : 1 GB. Espacio en d isco: 150MB libres.

Linux:

Procesador : Intel Pentium III , 800 MHz. Memor ia : 512 MB.

Espacio en d isco: 125MB libres.

http://www.netbeans.org/community/releases/50/relnotes.html#system_requirements

Page 40: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 40/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 0

2.3 … Requerimientos NetBeans

Re q u e r im ie n to s d e So f tw a re  :

Corre sobre las plataformas J2SE 1.4.2 y 1.5.0.

En el caso de aplicaciones para J2EE, se puede utilizar elSun Java System Application Server o algunos otrosservidores son: JBoss 4.0.x CPU 400MHz, RAM 512MB ,JDK 1.4 (recomendado 1.4.2) , WebLogic 9.0 yWebSphere 6.0 RAM 512MB.

http://www.netbeans.org/community/releases/50/relnotes.html#system_requirements

Page 41: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 41/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 1

2.4 Presentación NetBeans

Presen tac ión de l I DE:  

El IDE presenta muchas partes que trabajan juntas queayudan a desarrollar sus aplicaciones.

En las siguientes secciones, se llevará a cabo unadescripción de estas partes, las cuales se utilizarán durantetodo el desarrollo este curso.

Cuando se ejecute el IDE, se presentará: Una ventana con área de trabajo denominada

workspace. Una ventana principal. Una ventana de explorador y sus propiedades.

http://www.netbeans.org/community/releases/50/relnotes.html#system_requirements

Page 42: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 42/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 2

2.4 … Presentación NetBeansCada vez que ingrese al IDE, la siguiente pantalla se presentará:

Page 43: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 43/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 3

2.5 Componentes NetBeans

Co m p o n e n te s d el I DE  :

El IDE cuenta con una serie de componentes paracolaborar en el desarrollo rápido de aplicaciones Java.

Entre estos componentes se encuentran:

Page 44: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 44/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 4

2.6 Tipos de Aplicaciones

NetBeans

Tipo d e ap l i caciones de l I DE :Los tipos de aplicaciones que se pueden crear son:General, Empresarial y Web:

Tipos de p royectos

Page 45: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 45/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 5

2.7 Secciones NetBeans

Seccion es de l I DE :

Dentro de las secciones del IDE, se encuentran las siguientes:Proyectos, Archivos, Runtime, Navegator y Salida

Área para escr ib i r  e l cód igo  f u e n t e  

Área de Navegac ión 

Sa l ida cor respond iente .

Page 46: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 46/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 6

2.7 … Secciones NetBeans

Secc iones de l I DE ( con t in uac ión ) :Proyec to :  

Pueden existir uno o varios proyectos.

Nom br e de l paque t e  Den t r o de l os paque t es  tenem os las c lases que vam os a  Ut i l i zar .

Page 47: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 47/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 7

2.7 … Secciones NetBeans

Secc iones de l I DE ( con t in uac ión ) :Arch ivos :  

Pueden existir uno o varios proyectos Activos.

La carpeta sc r  es donde se a lmacenan los proyec tos que se  v an c r eando  

Es t ruc t ura d e la c lase c on jun t am en t e c on a t r i bu t os ,

m é t odos y c onst r uc t o r es .

A r c h i v os p r op ios de l I DE  

.

Page 48: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 48/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 8

2.7 … Secciones NetBeans

Secc iones del I DE ( con t in uac ión ) :R u n t i m e :  

Se pueden encontrar los Procesos Activos, Servidores Activos,así como Drivers entre otros.

Correspon de a todas  l as es t r uc t u r as p r op ias  de l I DE.

Page 49: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 49/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 9

2.7 … Secciones NetBeans

Seccion es de l I DE :We lco me :  

Se puede seleccionar el tipo de proyecto que se desea crear.

Den t r o de l os p r oy ec t os  que s e pueden c r ea r es t án :  Los gene r a les, web y l os em pr es ar ia les  .

Page 50: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 50/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 0

2.7 … Secciones NetBeans

Seccion es de c lases:  Conforme se van creando las clases se irán agregando alentorno de desarrollo como se aprecia a continuación:

Á r ea pa r a d ig i t a r e l c ód igo f uen t e  

Page 51: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 51/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 1

2.8 Proyectos en NetBeans

Cr eación de p r oyec t os :  Para crear un proyecto haga clic sobre la opciónN ew Pr o j ect . Sí ya existe, debe hacer clic en Open Project.

Creac ión de proy ec tos  

A pe r t u r a de p r oy ec t os  

Page 52: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 52/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 2

2.8 … Proyectos en NetBeans

Antes de crear un proyecto se debe tener claroque tipo de proyecto es el que se desea crear:

Se pueden c rear ap l icac iones de t ipo :  Genera l , Web y emp resar ia l . Para e fectos de l  curso ser ía Genera l .

Page 53: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 53/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 3

2.8 … Proyectos en NetBeans

Cr eación de p r oyec t os :  Para crear un proyecto siga los siguientes pasos:

Se es cr i be e l nom br e de l p r oy ec t o que  se desea c rear , en es te caso M iP r im er P r og r am a  

Se se lecc iona la ub icac ión en d isco d ó n d e e st a r á e l p r o y e ct o  

Se se lecc iona e l fó lder , dónde se p r e t ende gua r da r e l p r oy ec t o  

Una v ez que es t á t odo c on f i gu r ado  s e p r oc ede a d ig i t a r e l bo t ón de f i na l i z ar  

Page 54: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 54/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 4

Estandar i zac ión d e p roy ect os :   Es la forma en como se debería crear un proyecto a nivel

de clases.

La jerarquía que se conforme dependerá del proyecto y los

fuentes estarán en el último nivel de la misma.La m odu la r i dad nos conduc e a t ene r m ay o r o r den  y c la r idad de la ub icación de nues t r os arch ivos  f uen t es .

2.8 … Proyectos en NetBeans

Page 55: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 55/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 5

Cons t r ucción de l P royec to :  Genera toda la estructura del proyecto, en lo querespecta a fuentes y demás archivos propios delproyecto.

Se puede hace r , po r m ed io de l m enú B u i l d  ó p o r m e d i o d e l a t e cl a F1 1 .

Opc ión que se ap l ica , cuando e l p r oyec to ya  ex i s t e y s e des ea cons t r u i r u no hac iendo una l im p iez a  de l an t e r i o r .

2.8 … Proyectos en NetBeans

2 9 Compilación Ejecución

Page 56: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 56/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 6

2.9 Compilación-Ejecución-

Edición

Com pi lac ión :  Consiste en la revisión sintácticadel código fuente. Si hay errores se marcan cuales

son y la línea donde se produjo.

Código con er ror es .

Cód igo s in er r ores .

2 9 Compilación-Ejecución-

Page 57: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 57/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 7

Ej ecución d e l Pro yec to :  Se ve el programa en ejecución:

P ar a e jec u t a r e l p r oy ec t o que ha s ido c ons t r u ido  s e hace de l a s i gu ien t e m ane r a  

Una v ez ejec u t ado s e pod r á ap r ec iar l a s a l i da  c om o s e obs e r v a a r r i ba  

2.9 … Compilación-Ejecución-

Edición

2 9 Compilación-Ejecución-

Page 58: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 58/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 8

Edic ión de Cód ig o Fuent e :  

El editor de código se utiliza para visualizar, crear y editarcódigo fuente Java.

Con el editor, el programador podrá fácilmente escribircada una de las líneas del programa que ocupeimplementar.

El editor permite además de poder escribir el código fuentey poder depurar el mismo, presentar los errores.

Se debe considerar a la hora de escribir el código fuente,una indentación adecuada para facilitar la lectura delcódigo y por ende la facilidad de poder detectar errores deuna forma más rápida y sencilla.

2.9 … Compilación-Ejecución-

Edición

2 9 Compilación-Ejecución-

Page 59: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 59/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 9

Ed i t o r d e Tex t o :  Presenta una serie de botonesque facilitan la escritura del código fuente:

Den t r o de l os bo t ones s e pueden enc on t r a r :  debuger , comentar ios , re t roceso de l íneas  escr i tas , e tc .

P er m i t e hac e r una ab r ev iac ión de l os m é t odos  espec íf icamen te en la secc ión de l ámb i to .Lo an t e r i o r , f ac i l it a l a bús queda de e r r o r es en e l  cód igo.

2.9 … Compilación Ejecución

Edición

Page 60: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 60/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 0

2.10 Otras Opciones de NetBeans

Opciones:  Las opciones del IDE se encuentranubicadas en el menú Tools. A continuación unaimagen de la pestaña general:

La pest aña que es t á ac t i v a es l a gene r a l, donde s e  puede en t r e o t r as c osas c am b ia r i n f o r m ac ión  

r e f e r en t e a : paque t es j av a , p r ox y y  ac tua l izac iones .

2 10 Otras Opciones de

Page 61: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 61/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 1

Opciones:  A continuación unaimagen de la pestaña editor:

La pes t aña de l ed i t o r , r ep r es en t a c on f i gu r ac iones  r e lac ionadas a l m is m o , t a les c om o : im po r t , m é t odos ,c lases in t ernas , javad oc , e tc .

2.10 … Otras Opciones de

NetBeans

2 10 Otras Opciones de

Page 62: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 62/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 2

Opciones:  A continuación unaimagen de la pestaña fuentes y colores:

Den t r o de l os bo t ones s e pueden enc on t r a r :  debuger , comentar ios , re t roceso de l íneas  escr i tas , e tc  

2.10 … Otras Opciones de

NetBeans

2.10 … Otras Opciones de

Page 63: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 63/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 3

Opciones:  A continuación unaimagen de la pestaña k e y m a p , donde se tienen las teclasabreviadas:

La pes t aña de k ey m ap c on t i enen una s er i e de  carpetas prop ias de l IDE.

2.10 … Otras Opciones de

NetBeans

2.10 … Otras Opciones de

Page 64: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 64/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 4

Opciones:  A continuación unaimagen de la pestaña Misceláneo:

Den t r o de és t a pes t aña , se puede enc on t r a r  l a he r r am ien t a A NT de j av a y un adm in i s t r ado r  de l c lasspath .

2.10 … Otras Opciones de

NetBeans

2.10 … Otras Opciones de

Page 65: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 65/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 5

Opciones Av anzadas:  mediante el botón de opciones avanzadasse puede visualizar la siguiente pantalla.

Se encuent r a : e l Ed i to r , conf ig urac ión de l I DE,l o o k a n d Fe e l, b a r r a d e m e n ú y d em á s m e c a n is m o s  y opc iones sopor tada por NetBeans 5 .0 .

2.10 … Otras Opciones de

NetBeans

2.10 … Otras Opciones de

Page 66: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 66/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 6

Opciones Av anzadas:  mediante el botón de opciones avanzadasse puede visualizar la siguiente pantalla.

La secc ión de la Ed ic ión , p resenta asunt os  re lac ionados con la pub l icac ión de l p royec to .

p

NetBeans

2.10 … Otras Opciones de

Page 67: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 67/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 7

Opciones Av anzadas:  mediante el botón de opciones avanzadasse puede visualizar la siguiente pantalla.

La secc ión de la Ed ic ión , p resenta asunt os  Re lacionados con la pub l icac ión de l p roy ec to .

p

NetBeans

2.10 … Otras Opciones de

Page 68: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 68/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 8

Debug :  El NetBeans 5.0, permite debugear paso a paso el código.

Con las t ec las F8 y F7, se pued e l levar a cabo un D e bu g e o a n i v e l i n t er n o o e x t e r n o ,en t r ando a l os m é t odos o b ien s in en t r a r a e l l os .

p

NetBeans

2.10 … Otras Opciones de

Page 69: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 69/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 9

Paso de A rgu m en t os :  Para poder pasar argumentos a la claseprincipal, se le debe dar click derecho sobre el proyecto en quese está trabajando y poner los argumentos que va a recibir

Cl i c k de r ec ho sob r e e l p r oy ec t o y  espec íf icamen te en RUN 

P an t a l l a de s a l i da de l os a r gum en t os que s e es t án u t i l i z ando  

I m p lem en t ac ión en e l Ed i t o r  

p

NetBeans

Page 70: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 70/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 0

2.11 Ejercicio Práctico

El i ns t ru c to r r eal i za rá una exp l i cac ión de t a l lada de l

e je r c i cio a rea l i zar .

Crear una estructura de carpetas tal y como se aprecia acontinuación:

Integrar la clase que fue elaborada en la práctica anteriordentro de la jerarquía.

Compile utilizando el IDE y ejecute.

Page 71: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 71/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 1

Lleve a cabo una navegación sobre los diferentes tabs delmenú, específicamente en Tool Op t i ons para ver todas lasopciones posibles que hay en él, específicamente la que semuestra a continuación:

2.11 … Ejercicio Práctico

Page 72: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 72/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 2

Una vez cumplido con los puntos anteriores, a la clasellamada Principal.java se le deben de enviar tres parámetroscualesquiera utilizando el IDE e imprimir en consola.

Por último, debe suministrar un nombre al proyecto sobre el

cual ha realizado todos los cambios anteriores.

2.11 … Ejercicio Práctico

Page 73: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 73/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 3

33

El Lenguaje JavaEl Lenguaje Java

Page 74: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 74/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 4

2. Entorno de Desarrollo Integrado2. Entorno de Desarrollo Integrado

3. El Lenguaje Java3. El Lenguaje Java

4. Tipos de Datos y Operadores4. Tipos de Datos y Operadores

5. Control de Flujo5. Control de Flujo

1. Introducción a Java1. Introducción a Java

6. Conceptos Básicos en Java6. Conceptos Básicos en Java

7. Trabajando con Clases7. Trabajando con Clases

3. El Lenguaje Java

Page 75: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 75/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 5

8. Utilización de Interfaces8. Utilización de Interfaces

9. Estándares de Desarrollo9. Estándares de Desarrollo

10. Manejo de Excepciones10. Manejo de Excepciones

11. Utilizando Cadenas, Arreglos y Colecciones11. Utilizando Cadenas, Arreglos y Colecciones

12. Clases en Java12. Clases en Java

13. Swing13. Swing

AnexoAnexo

3. El Lenguaje Java

Page 76: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 76/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 6

Objetivos

Estudiar los diferentes tipos de datos yoperadores que proporciona el lenguaje con elfin de que el participante tenga sólidos

conocimientos en sintaxis.

Ejemplificar cada uno de los tipos de datos.

Page 77: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 77/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 7

3.1 Comentarios

Existen tres tipos de comentarios:

Com ent ar io s de un a so la l ínea : Semejante a otroslenguajes.

Com ent a r ios de un a o m ás líneas: Semejante a otroslenguajes.

Com en ta r i os de docum en tación , de una o m ásl íneas: Este comentario será colocado en la

documentación que se genera automáticamente cuandose utiliza la herramienta Java,  j av ad oc , la cual no seencuentra disponible en otros lenguajes de programación.

Page 78: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 78/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 8

3.1 … Comentarios

Ejemplos:

 / / com en t ar ios par a u n a so la l ín ea

 / * com en t ar ios de u n a o

m ás l íneas* / 

 / * ** Com en ta r i o pa ra docum en tación ( JavaDoc) ,

* de una o m ás l íneas* / 

Page 79: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 79/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 9

3.2 Identificadores Los identificadores se utilizan para identificar variables, funciones, clases y objetos;

cualquier cosa que el programador necesite identificar o usar.

En Java, un identificador comienza con:

La forma básica de una declaración de una variable, por ejemplo, sería Tipo i den t i f i cado r  i den t i f i cado r  [ = valor] [, i den t i f i cado r  i den t i f i cado r  [ = valor] ....];

int contadorPrincipal; char listaDeFicheros; float precioProducto;

 p nom_Persona

nomPersona _nomPersona

nom$Persona nomPersona2

nom#Cost nom-Persona

nom*Cost abstract

2nomPersona

Page 80: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 80/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 0

Los separadores definen la forma y función del código. Los separadoresadmitidos en Java son:

( ) – Par én t esi s: Para contener listas de parámetros en la definición yllamada a métodos. También se utilizan para definir precedencia enexpresiones, contener expresiones para control de flujo y rodear lasconversiones de tipos.

{ } – Llav es: Para contener los valores de matrices inicializadas

automáticamente. También utilizadas para definir un bloque decódigo, para clases, métodos y ámbitos locales.

[ ] – Co rch et es: Para declarar y referenciar tipos de matriz.

; - Pu n t o y Co m a : Separa sentencias.

, - Co m a: Separa identificadores consecutivos en una declaración devariables o encadenar sentencias entre bucles (for)

. – Pu n t o : Para separar nombre de paquete de subpaquetes y clases.

3.3 Separadores

Page 81: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 81/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 1

Las variables se utilizan en la programación Java para almacenar datosque varían durante la ejecución del programa.

Para utilizar una variable, se debe de indicar al compilador el tipo ynombre de la variable, lo que se conoce como dec la rac ión de lava r iab le .

El tipo de la variable determinará el conjunto de valores que se podránalmacenar en la variable y el tipo de operaciones que se podránrealizar.

i n t i ; / / Decl ar aci ón d e u n en t er o

ch ar let r a; / / Declar ación de u n car áct er

b oo lean f lag ; / / Declar ación de u n boo lean o

3.4 Variables

Page 82: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 82/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 2

Java proporciona un conjunto de operadores para poder realizaracciones sobre uno o dos operandos.

Un operador que actúa sobre un operando es un ope rado r una r i o .

Un operador que actúa sobre dos operandos es un ope rado r b ina r i o .

En la siguiente tabla aparecen los operadores que se utilizan en Java,por orden de precedencia:

3.5 Operadores

Page 83: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 83/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 3

Una expresión es una determinada combinación de operadores yoperandos que se evalúan para obtener un resultado en particular.

Los operandos pueden ser variables, constantes o llamadas a métodos.

Java soporta constantes con nombre y para crearlas es de la siguientemanera:

Al igual que otros lenguajes de programación, en Java se puedecontrolar el orden de evaluación de las expresiones mediante el uso deparéntesis. En caso de no proporcionarse estos paréntesis, el ordenestará determinado por la precedencia de operadores.

f i na l f l oa t NOMBRE_CONSTANTE = 3 .1415 9

3.6 Expresiones

Page 84: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 84/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 4

Una cadena o String se considera a toda secuencia de caracteresalmacenados en memoria y accesibles como una unidad.

Java implementa cadenas a través de la clase String y StringBuffer, alas cuales se dedicará un amplio estudio más adelante.

3.7 Cadenas

1 . St r ing caden a = “ Var iab le caden a” ;

2 . in t lon g i t ud = caden a.len g t h( ) ;

3 . cadena.t oUpper Case( ) ;

4 . cadena.t oLow e rCase( ) ;

Page 85: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 85/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 5

Java cuenta con un tipo de datos verdadero de posiciones secuenciales,array, que dispone de comprobaciones exhaustivas para su correctamanipulación (sobrepasar el límite definido para el arreglo).

Al igual que los demás objetos en Java, la declaración de un array nolocaliza, o reserva memoria para contener los datos. En su lugar,simplemente localiza la memoria para almacenar una referencia alarray.

3.8 Arreglos

Ch ar s[ ] ;

in t Ar r ay ;

in t t ab la[ ] [ ] = new in t [ 4 ] [ 5 ] ;

St r i ng n om b r e s[ ] = { “ Ju an ” , “ Pep e” , “ Ped r o” } ;

Sy st e m . ou t .p r in t l n ( n o m b r es[ 1 ] ) ; / / I m p r i m e Pep e

Page 86: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 86/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 6

El i nst r uc to r r eal i za rá una exp l i cación de ta l l ada del ej e rci ci o area l i za r :

Dentro del método main de la clase Principal, realice los siguientes

puntos:

Crear una variable de tipo entera (int) denominada contador. Crear una constante de tipo entera asignándole un valor de 5. Asignarle el valor de la constante a la variable entera contador. Imprimir en consola el valor de la variable contador. Crear un arreglo de Strings llamado personas, con los siguientes

valores: Pedro, Juan, Carlos, Mary, Pablo, Jaime

3.9 Ejercicio Práctico

Page 87: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 87/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 7

Imprimir en consola el contenido de la variable personas que seencuentre en la posición “contador” y luego, asigne este valor a unanueva variable de tipo String.

Este valor, se debe desplegar en consola en mayúscula, minúscula yademás obtener su tamaño.

Finalmente realice los procesos de compilación y ejecución de laaplicación.

Recuerde documentar aquel código que no esté utilizando.

3.9 … Ejercicio Práctico

Page 88: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 88/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 8 8

44

Tipos de Datos yTipos de Datos yOperadoresOperadores

Page 89: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 89/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 8 9

2. Entorno de Desarrollo Integrado2. Entorno de Desarrollo Integrado

3. El Lenguaje Java3. El Lenguaje Java

4. Tipos de Datos y Operadores4. Tipos de Datos y Operadores

5. Control de Flujo5. Control de Flujo

1. Introducción a Java1. Introducción a Java

6. Conceptos Básicos en Java6. Conceptos Básicos en Java

7. Trabajando con Clases7. Trabajando con Clases

4. Tipos de Datos y Operadores

Page 90: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 90/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 9 0

8. Utilización de Interfaces8. Utilización de Interfaces

9. Estándares de Desarrollo9. Estándares de Desarrollo

10. Manejo de Excepciones10. Manejo de Excepciones

11. Utilizando Cadenas, Arreglos y Colecciones11. Utilizando Cadenas, Arreglos y Colecciones

12. Clases en Java12. Clases en Java

13. Swing13. Swing

AnexoAnexo

4. Tipos de Datos y Operadores

Page 91: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 91/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 9 1

Objetivos

Estudiar los diferentes tipos de datos yoperadores que proporciona el lenguaje con elfin de que el estudiante tenga sólidosconocimientos en sintaxis.

Ejemplificar cada uno de los tipos de datos,para adquirir mayor dominio del tema.

Page 92: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 92/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 9 2

4.1 Tipos de Variables Todas las variables en el lenguaje Java, deben tener un tipo de

dato asociado. El tipo de la variable determina los posibles valores

que pueden llegar a tener esa variable.

Existen dos categorías de datos principales en el lenguaje Java:

Los Tipos primitivos o atómicos

Lógico: boolean Textual: char. Integral: byte,short,int,long. Punto Flotante: double, float. Enum: Enumeraciones (versión 5.0).

Los Tipos compuestos.

Page 93: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 93/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 9 3

4.1 … Tipos de Variables

Ejemplo de tipo de datos primitivos:

int,char,float,etc. int a; char c; float b;

En el caso de los tipos compuestos serían: elEstudiante; elProfesor; elLibro;

l

Page 94: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 94/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 9 4

4.1.1 Tipo Booleano

Presenta dos literales: true ó false.

En Java no es lo mismo 1 para referirse a true ó 0 para referirse afalse.

Ejemplo:

boo lean ve rdade ro = t r ue ;

boo lean fa l so = fa l se ;

4 1 2 Ti T t l

Page 95: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 95/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 9 5

4.1.2 Tipo Textual

Se tiene tanto char como String.

En el caso del char es un tipo simple o atómico, mientras que elString es un tipo compuesto.

4 1 2 Ti T t l

Page 96: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 96/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 9 6

4.1.2 … Tipo Textual

ch ar p r im er Let r a = ‘ a ’ ; / / La Let r a a

cha r ch1 , ch2 ; / / Dec la ración de dos va r i ab les cha r

 \ n : Sa l t o de l ín ea

 \ t : Tabu lador

 \ b : Back space.

 \ r : Ret o r n o de car r o

 \ u x x x : Don de x x x x es el cód igo Un icode delcarácte r . Po r e j em p lo \ u002 7 es e lapost r o fe ( ' )

char :   Representa a 16-bits un solo carácter.

Requiere estar entre comillas simples (‘ ’). Utiliza la siguiente notación:

4 1 2 Ti T t l

Page 97: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 97/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 9 7

4.1.2 … Tipo Textual

St r ing cadena = “ Ej em p la r de una Dec larac ión y as ignación ” ;

St r i ng cadena = “ Cam b io de Línea ! ! \ n ” ;

St r i n g st r 1 , st r 2 ; / / D ecl ar a ci ó n d e d o s v a r ia b le s St r i n g

St r i n g :   No es un tipo de dato primitivo, es una clase

Requiere estar entre comillas dobles (“”) Utiliza la siguiente notación:

4 1 3 Ti I t l

Page 98: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 98/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 9 8

4.1.3 Tipo Integral

Un tipo de datos Integral tiene los siguientes rangos:

-26 3 a 26 3-164-bit complemento a2

long

-23 1 a 23 1-132-bit complemento a

2

int

-21 5 a 21 5-116-bit complemento a2

short

-27 a 27-18-bit complemento a 2byte

RangoTamañoNom br e o Ti po

4 1 4 Ti Fl t t

Page 99: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 99/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 9 9

4.1.4 Tipo FlotanteF lo tan te :  

Los datos de punto flotante son por defecto double

Se puede declarar un literal de tipo float agregándole una F o f alvalor

Además:

E ó e Agregar un valor exponencial F ó f (Float) D ó d (Double)

64 bitsdouble32 bitsfloat

TamañoNom br e o Ti po

4 2 Operadores

Page 100: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 100/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 0 0

4.2 Operadores

Java proporciona un conjunto de operadores para poder realizaracciones sobre uno o varios operandos.

Un operador que actúa sobre un operando es un ope rado ru n a r i o .

Un operador que actúa sobre dos operandos es un ope rado rb ina r i o .

4 2 Operadores

Page 101: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 101/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 0 1

4.2 … Operadores Los operadores se pueden categorizar de la siguiente manera:

Aritméticos. Relaciónales y condicionales. Lógicos. De desplazamiento.

De Asignación.

4 2 Operadores

Page 102: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 102/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 0 2

4.2 … Operadores Ar i tmé t i cos :  

Son aquellos con los que podemos hacer operaciones

aritméticas: como sumas, restas, multiplicaciones, divisiones,etc. El + puede ser utilizado como operador sobre cargado paraconcatenar y el + y – como signo positivo o negativo.

Divide op1 y op2op1 / op2 / Obtiene el resto de dividirop1 por op2

op1 % op2%

Multiplica op1 y op2op1 * op2*

Resta op1 y op2op1 – op2-

Suma op1 y op2op1 + op2+

Descr ipc iónUsoOperador

4 2 Operadores

Page 103: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 103/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 0 3

4.2 … Operadores Ar i tmé t i cos :  

Existen formas abreviadas para incrementar y decrementar:

Decrementa op en 1; evalúa elvalor después de decrementar

-- op1--

Decrementa op en 1; evalúa elvalor a n t e s de decrementar

op1 ----

Incrementa op en 1; evalúa elvalor después de incrementar

++ op1++

Incrementa op en 1; evalúa elvalor a n t e s de incrementar

op1 ++++

Descr ipc iónUsoOperador

4 2 Operadores

Page 104: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 104/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 0 4

4.2 … Operadores Ar i tmé t i cos :  

Ejemplos:

in t a , b , c , d ;

a = 2 + 2 ; / / Su m a

b = a * 3 ; / / Mu l t i p l icaci ón

c = b - 2 ; / / Rest a

d = b / 2 ; / / d iv isión

e = b % 2 ; / / d ev uelv e elres iduo de la d iv i s ión .

I n c r e m e n t o  

i n t v ar 1 = 3 ;v ar 1 + + ; / / v ar 1 es i gu al a 4

i n t v ar 1 = 3 , v ar 2 = 0 ;v ar 2 = + + v ar 1 ;

v ar 2 = v ar 1 + + ;

4 2 Operadores

Page 105: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 105/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 0 5

4.2 … Operadores Relac ionales:  

Son aquellos donde se procede a una comparación entre

dos operandos y ésta, produce un resultado verdadero ofalso.

op1 es menor o igual que op2op1 <= op2<=

op1 es menor que op2op1 < op2<

op1 es mayor o igual que op2op1 >= op2>=op1 es mayor que op2op1 > op2>

op1 y op2 son distintosop1 != op2!=op1 y op2 son igualesop1 == op2==

Descr ipc iónUsoOperador

4 2 Operadores

Page 106: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 106/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 0 6

4.2 … Operadores Condic iona les :  

Son aquellos donde se procede a una evaluación que produce unvalor de verdad o de falsedad basado en las tablas de verdad.

NEGACION

OR

AND

op1 es falso! op1!

uno de los dos es verdaderoop1 || op2||

op1 y op2 son verdaderosop1 && op2&&

DescripciónUsoOperador

4 2 Operadores

Page 107: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 107/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 0 7

4.2 … Operadores Condic iona les :  

Ejemplos:

i n t v ar 1 = 7 , v ar 2 = 1 3 ;

boo lean r es = t r ue ;

r es = ( v a r 1 = = v ar 2 ) ; / / r es a ho r a e s i gu al a f al se

r es = ( v a r 2 > v ar 1 ) ; / / r e s ah o r a es i g ua l a t r u e

4 2 Operadores

Page 108: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 108/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 0 8

4.2 … Operadores Condic iona les :  

Otro tipo de operador condicional que se puede utilizar enJava es el ( ? : )

Este operador es utilizado como una alternativa de uno delos controles de flujo ( i f . . .e lse)

boo lean_expr ? exp r1 : exp r 2

i n t v al 1 = 1 2 0 ;i n t v al 2 = 0 ;i n t r esu l t ado ;

r e su l t a do = ( v a l 1 > v a l2 ) ? 1 0 0 : 2 0 0 ;

Sys tem.ou t . p r i n t l n ( “ El Resu l t ado es " + r esu l t ado ) ;

4 2 Operadores

Page 109: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 109/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 0 9

4.2 … Operadores As ignac ión :  

Se asigna un valor a otro a través del =, recuerde que el = = espara comprar, mientras que el = es para asignar.

Ejemplos:

op1 % op2op1 %= op2%=

op1 / op2op1 /= op2 /=

op1 * op2op1 *= op2*=

op1 - op2op1 -= op2-=

op1 = op1 + op2op1 += op2+=

Equivale a:AsignaciónOperador

4 3 Resumen Operadores

Page 110: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 110/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 1 0

4.3 Resumen Operadores

+ (unario, positivo), - (unario, negativo), +(suma) , - (resta) , * (multiplicación), /(división), % (resto), ++ (incremento), --(decremento)

Operadores numéricos, que devuelvenun valor float o double

+ (unario, positivo), - (unario, negativo), +(suma) , - (resta) , * (multiplicación), /(división), % (resto), ++ (incremento), --(decremento), <<, >>, >>> (rotación) , ~(complemento a nivel de bits), & (AND a nivelde bits), | (OR a nivel de bits) ^(XOR a nivel de

bits)

Operadores numéricos, que devuelvenun valor int o long

== (igual), != (distinto), ! (complemento), & (AND), | (OR), ^ (XOR), && (AND condicional),|| (OR condicional)

Operadores booleanosBooleanos

< (menor) , <= (menor o igual) , > (mayor),>= (mayor o igual), == (igual), != (distinto)

Operadores de comparación quedevuelven un valor boolean

PuntoFlotante

< (menor) , <= (menor o igual) , > (mayor),>= (mayor o igual), == (igual), != (distinto)

Operadores de comparación quedevuelven un valor boolean

Enteros

OperadoresGru pos de Operad oresTipos

4 4 Valores de Precedencia

Page 111: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 111/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 1 1

4.4 Valores de PrecedenciaOperadores

+ + - - + - ~ ! ( t y pe)* / %+ - +< < > > > > >< > < = > =

ins tanceo f

= = ! =&^|& &| |?:

= o p =

Descr ipc ión

Unary ope ra to r sMu l t ip l y , d i v ide , rem a inderAdd , sub t rac t , add s t r ingSh i f t ( > > > i s z er o - f i ll sh i f t )Re lat ion a l , t y pe compar e

Equa l i tyB it / l og ical ANDBi t / l og ica l exc lus ive ORBi t / l og ica l i nc lus ive ORLogica l ANDLogica l ORCond i t i ona l opera t o r

Ass ignm en t ope ra to r s

Orden

1

2345

6789

1 01 1

1 21 3

Assoc.

R

LLLL

LLLLLL

RR

4.4 Valores de Precendencia

Page 112: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 112/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 1 2

4.4 … Valores de Precendencia

i n t v ar 1 = 0 ;

v ar 1 = 2 + 3 * 4 ; / / v ar 1 ah or a es i gu al a 1 4

i n t v ar 1 = 0 ;

v ar 1 = 1 2 - 6 + 3 ; / / v ar 1 ah o ra es i gu al a 9

Precedenc ia :   Ejemplos:

4.5 Palabras Reservadas

Page 113: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 113/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 1 3

4.5 Palabras Reservadasabs t rac tf i na lna t i vep r i v a t ep ro tec tedpub l i cs ta t i csynchron izedt r ans ien t

vo la t i l es t r i c t f p

b reakcasecatchcon t i nuede fau l tdoelsef ina l l yf o r

i fr e t u r ns w i t c ht h r o wt r yw h i l e

boo leanb y t echardoub lef loa tin tlongsho r tvo id

enum

t r ue fa l senu l l

c lassex tendsi m p l e m e n t sin te r facet h r o w s

ins tanceo fn ewsuper

t h i s

i m p o r t

package

4.6 Expresiones

Page 114: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 114/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 1 4

4.6 Expresiones Una expresión es una determinada combinación de operadores y

operandos que se evalúan para obtener un resultado en particular.

Los operandos pueden ser variables, constantes o llamadas amétodos.

Java soporta constantes con nombre y para crearlas es de la

siguiente manera:

Al igual que otros lenguajes de programación, en Java se puede

controlar el orden de evaluación de las expresiones mediante eluso de paréntesis. En caso de no proporcionarse estos paréntesis,el orden estará determinado por la precedencia de operadores.

f ina l f loat NOMBRE_CONSTANTE = 3.141 59

4.7 Conversiones y Casting

Page 115: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 115/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 1 5

4.7 Conversiones y Casting Con ver s ión y Cast ing :  

Es pasar de un tipo de dato a otro. Por ejemplo pasar de un inta un float o viceversa es un casting o conversión.

Ejemplo: int a = 3,14; float b = 5;

 byteshort

intlong

 byte longintshort

4.8 Concatenación

Page 116: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 116/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 1 6

8 Co cate ac ó Concatenac ión:  

Es la acción de unir dos o más hileras tal y como se ve acontinuación:

St r i n g n o m b r e = “ Jo sé " ;

St r i ng apel l i do = " D íaz" ;

St r i ng nom Com p le to ;

n o m b r e = n o m b r e + a pe ll id o ; / / Ah o r a n o m b r e e s i gu al a “ Jo sé D ía z”

n o m b r e + = a p el l id o ; / / o t r a f o r m a p a r a o b t en e r e l m i sm o r e su l t a d o

n o m Co m p l e t o = n o m b r e ;

4.9 Ejercicio Práctico

Page 117: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 117/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 1 1 7

jEl ins t ru c to r rea l izará una exp l i cación deta l l ada de l e j e rc i ci o area l izar .

En el método main() de Principal. java, envié dos parámetros cuyosvalores serán almacenados en dos variables String llamadas nombre yapellido.

Utilizando el operador condicional, verifique que si ambas variables

son igual a nulo, se les asigne un valor de vació, de los contrariomantendrán el valor recibido por parámetro:

n om b r e = ( n o m b re = = n u ll ) ? “ ” : no m b re;

a pe ll id o = ( a p el li do = = n u l l) ? “ ” : ap el li do ;

Concatene ambas variables y asígnelas a una nueva variable llamadanombreCompleto. Esta variable contendrá el nombre completo delcliente y deberá ser impreso en consola.

4.9 … Ejercicio Práctico

Page 118: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 118/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 1 8

j

Declare e inicialice dos variables que almacenen el costo para elalquiler de ítems. El valor de estos dos ítems pueden ser 26.95 y376.87

Utilizando el método System.out.println() imprima el valor deambas variables de la siguiente manera:

I t e m 1 : Pr e ci o 2 6 .9 5 ( Ut i l i ce el o p er a d o r + )

Declare otra variable que almacene el costo total de ambos ítemsutilizando un operador aritmético correspondiente e imprima suresultado en consola.

4.9 … Ejercicio Práctico

Page 119: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 119/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 1 9

j

En base al resultado obtenido, aplique un descuento de un 3% y

luego calcule el impuesto de venta (13%) que se le aplicará a laorden.

Tanto el descuento como el impuesto de ventas se deben imprimir.

Ahora calcule el Total a Pagar de dicha orden e imprima suresultado.

Utilizando el operador condicional si el Total a Pagar es mayor a400, imprima “Orden Alta”, de lo contrario despliegue “Orden Baja”.

Recuerde documentar aquel código que no esté utilizando.

Page 120: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 120/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 2 0

55

Control de FlujoControl de Flujo

5. Control de Flujo

Page 121: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 121/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 2 1

2. Entorno de Desarrollo Integrado2. Entorno de Desarrollo Integrado

3. El Lenguaje Java3. El Lenguaje Java

4. Tipos de Datos y Operadores4. Tipos de Datos y Operadores

5. Control de Flujo5. Control de Flujo

1. Introducción a Java1. Introducción a Java

6. Conceptos Básicos en Java6. Conceptos Básicos en Java

7. Trabajando con Clases7. Trabajando con Clases

j

5. Control de Flujo

Page 122: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 122/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 2 2

8. Utilización de Interfaces8. Utilización de Interfaces

9. Estándares de Desarrollo9. Estándares de Desarrollo

10. Manejo de Excepciones10. Manejo de Excepciones

11. Utilizando Cadenas, Arreglos y Colecciones11. Utilizando Cadenas, Arreglos y Colecciones

12. Clases en Java12. Clases en Java

13. Swing13. Swing

AnexoAnexo

Objetivos

Page 123: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 123/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 2 3

Profundizar en el manejo del control de flujo

del lenguaje, con el fin de que el estudianteadquiera conocimientos sólidos en manejo deinstrucciones de control y repetición.

Ejemplificar el uso de cada una de lasestructuras de control de flujo propuestas en elobjetivo anterior.

5. Estructuras de Control y

Repetitivas

Page 124: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 124/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 2 4

Secuencial

Transferencia

Selección

Iteración

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 2 4

5.1 Control de Flujo

Page 125: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 125/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 2 5

El condicional simple es aquel que solamente lleva if{}.

El condicional doble es aquel que a parte de if también tiene el, if-else {}.

El if evalua una expresión, la cual puede ser falsa o verdadera.

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 2 5

5.1 … Control de Flujo

Page 126: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 126/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 2 6

Ejemplo de condicional simple y compuesto son los siguientes:

if (expresión_booleana) {

sentencia1;

sentencia N;

} else {

sentencia1;

sentencia N;

. . .

}

if (expresión_booleana){

sentencia1

sentencia N;

}

Si se cumplela expresión se lleva a

cabo el bloque del if 

Si no se cumplela expresión se lleva acabo el bloque del else

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 2 6

5.1 … Control de Flujo

Page 127: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 127/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 2 7

Otro tipo de condicional es el switch, el cual evalúa que la

expresión se asocie con algún valor correspondiente a los casos aanalizar.

No poner un break,puede ocasionar

que se entrea casos no deseados

s w i t c h ( expresión_entera ) {case valor_entero :

sentencia ;break ;

case valor_entero :sentencia ;break ;. . .

de fau l t :

sentencia ;}El default es cuandono se pudo cumplir

ningunode los casos anteriores

La expresión deberácorresponder alguno

de los casos

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 2 7

5.2 Consideraciones del Switch

Page 128: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 128/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 2 8

Cuidado: en el switch la expresión que se evalúa no es unaexpresión booleana como en el if-else, sino una expresión entera.

Cada sentencia case debe ser única y el valor proporcionado acada sentencia case debe ser del mismo tipo que el tipo de datodevuelto por la expresión proporcionada a la sentencia switch.

Otro punto de interés en la sentencia switch son las sentenciasbreak después de cada case.

5.2 … Consideraciones del

Switch

Page 129: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 129/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 2 9

La sentencia break hace que el control salga de la sentencia switch

y continúe con la siguiente línea.

La sentencia break es necesaria porque las sentencias case sesiguen ejecutando hacia abajo. Esto es, sin un break explícito, elflujo de control seguiría secuencialmente a través de las sentencias

case siguientes.

Finalmente, puede utilizar la sentencia default al final de lasentencia switch para manejar los valores que no se han manejadoexplícitamente por una de las sentencias case.

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 2 9

5.3 Ejemplo Switch

Page 130: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 130/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.

1 3 0

i n t m e s;s w i t c h ( m e s ) {

case 1 : System.ou t .p r in t l n ( "Enero" ) ; b reak;case 2 : System.ou t .p r in t l n ( "Febre ro " ) ; b reak;case 3 : Syste m.o u t . p r i n t l n ( " Marzo " ) ; b r e ak ;case 4 : Syste m .ou t . p r i n t l n ( " Ab r i l " ) ; b re a k ;case 5 : Syste m .ou t . p r i n t l n ( " May0 " ) ; b re a k ;case 6 : Syste m .ou t . p r i n t l n ( " Ju n i o " ) ; b r e ak ;case 7 : Sys te m.o u t . pr i n t l n ( " Ju l i o " ) ; b r e a k ;

}

La variable mes, deberá contener alguno de los posibles estadosmes={Enero, Febrero…}.

De no ser así, no se ejecutará ninguna acción según el ejemplo:

Copyright Formación y Soluciones Informáticas EFIBS S.A.

1 3 0

5.4 Sentencias de Repetición

Page 131: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 131/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.

1 3 1

Los tres tipos básicos en java son:

While do-while For for each(ver 5.0).

Los tres primeros tienen tres partes: Condición de iniciación Cuerpo Condición Iniciación Terminación

Copyright Formación y Soluciones Informáticas EFIBS S.A.

1 3 1

5.4.1 Sentencia while

Page 132: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 132/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.

1 3 2

Se caracteriza por evaluar primero la condición y luego

ejecutar el bloque de instrucciones del ámbito. el ciclowhile se ejecuta cuando no se conoce la cantidad exacta deiteraciones que se desea hacer.

También se utilizan cuando cabe la posibilidad de que me

pueda salir del ciclo por medio de alguna expresiónbooleana. w h i le ( ex p r e si ón ) {

sen tenc ia1 ;

sent enc ia N;

}

Copyright Formación y Soluciones Informáticas EFIBS S.A.

1 3 2

5.4.1 … Sentencia while

Page 133: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 133/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.

1 3 3

El siguiente es un ejemplo de su uso, que nos permite ver comoademás de incrementar un contador, también se desea imprimir elcontador cada vez que se genera un carácter.

. . .i n t co n t = 0 ;w h i l e ( c on t < 1 0 ) {

Sy st e m . o u t .p r i n t l n ( “ Va lo r Co n t a d or = " + co n t ) ;c o n t + + ;

}

Variación

TérminoIniciación

Copyright Formación y Soluciones Informáticas EFIBS S.A.

1 3 3

5.4.2 Sentencia for

Page 134: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 134/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.

1 3 4

Se utiliza este bucle cuando se conoce los límites del bucle (suinstrucción de inicialización, su criterio de terminación y su

instrucción de incremento).

I n i c ia l ización es la sentencia que inicializa el bucle -- se ejecutauna vez al iniciar el bucle.

Terminac ión es una sentencia que determina cuando se terminael bucle. Esta expresión se evalúa al principio de cada iteración enel bucle. Cuando la expresión se evalúa a false el bucle se termina.

Finalmente, I n c r e m e n t o es una expresión que se invoca en cadainteracción del bucle. Cualquiera (o todos) de estos componentespueden ser una sentencia vacía (un punto y coma).

Copyright Formación y Soluciones Informáticas EFIBS S.A.

1 3 4

5.4.2 … Sentencia for

Page 135: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 135/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 3 5

La estructura del ciclo for es:

f o r ( i n i ci al i zaci ón ; t e rm inaci ón ; inc rem en t o ) {

sen t enc ia 1 ;

sent enc ia N;

}

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 3 5

5.4.2 … Sentencia for

Page 136: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 136/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 3 6

El siguiente es un ejemplo de su uso, se utiliza mucho sobre todocuando se conoce la cantidad de iteraciones de que se van a

emplear

Var iac ión  T é r m i n o  

I n i c i ac ión  

 / / a es u n ar r ay de cu alqu ier t ipo. . .i n t i ;i n t l e n gt h = a .l en g t h ;

f or ( i = 0 ; i < l en g t h; i+ + ) {

. . . / / h ace algo en el e lem en t o i del ar r ay a. . .

}

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 3 6

5.4.3 Sentencia do-while

Page 137: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 137/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 3 7

Se caracteriza por ejecutar al menos una vez el bloque deinstrucciones del ámbito. el ciclo do-while se ejecuta cuando no se

conoce la cantidad exacta de iteraciones que se desea hacer yademás deseamos que las sentencias del ámbito se ejecuten almenos una vez.

En muchas oportunidades se utiliza para validaciones.

d o{

sen tenc ia1 ;

sent enc ia N;} w h i le ( ex p r esi ón ) ;

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 3 7

5.4.3 … Sentencia do-while

Page 138: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 138/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 3 8

El siguiente es un ejemplo de su uso, que nos permite ver comoademás de incrementar un contador, también se desea imprimir el

contador cada vez que se genera un carácter.

. . .i n t co n t = 0 ;do {

Sy st e m . o u t .p r i n t l n ( “ V al o r Co n t a d or = " + co n t ) ;

c o n t + + ;

} w h i le ( co nt < 1 0)Var iac ión  

T é r m i n o  I n i c i ac ión  

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 3 8

5.5 Sentencia de Transferencia L t i b k d l it i t i d

Page 139: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 139/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 3 9

La sentencia break, produce que las iteraciones sean terminadas yque el ciclo se termine:

w h i l e ( c o n t < 1 0 ) {

i f ( c o n t = = 5 ) {

b reak ;

}c o n t + + ;

}

f or ( i n t i= 0 ; i < 1 0 ; + + i ) {

i f ( i = = 5 ) {

b reak ;}

}

Term ina e l c i clo  

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 3 9

5.5 … Sentencia de

Transferencia L t d l t i d t f i l t i

Page 140: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 140/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 4 0

La otra de las sentencias de transferencia es la co n t i n u e  que adiferencia de la sentencia break, salta una iteración pero no se sale

o termina.

Finalmente, el return también es una sentencia de transferencia yse encarga de transferir el control a donde fue invocado.

w h i l e ( c o n t < 1 0 ) {

i f ( c o n t = = 5 ) {

con t inue ;

}

c o n t + + ;

}

i n t su m a ( ) {

i n t a= 5 ,b = 1 0 ;

r e t u r n a + b ;

}

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 4 0

5.6 Ejercicio Práctico

Page 141: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 141/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 4 1

El i ns t r uc to r rea l izará una exp l i cación de ta l l ada de l ej e rci ci o area l i za r :

Con el objetivo de determinar el número de días de un mes, en elmétodo main() del programa Pr inc ipa l .Java y utilizando lasentencia s w i t c h , realice lo siguiente:

Inicialice dos variables una con un valor de 1 a 12 para losmeses del año y otra que contendrá el año.

En base al mes se debe de determinar los días que tiene unmes y asígnele a una variable de tipo entera la cantidad dedías que tiene el mes. Recuerde que: Setiembre, Abril, Junioy Noviembre tienen 30 días. Todos los demás tienen 31 días

excepto Febrero que puede tener 28 o 29 días dependiendo siel año es bisiesto o no. (por el momento asuma 29 días).

Una vez realizados los pasos anteriores se debe de desplegarla fecha de la siguiente manera:2 7 / 1 / 2 00 0 y est e m e st iene 31 d ías.

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 4 1

5.6 … Ejercicio Práctico Utili d l t i f i i t d l f h

Page 142: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 142/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 4 2

Utilizando la sentencia f o r imprima todas las fechas que seencuentran entre la fecha resultante en el punto anterior y lacantidad de días que tiene el mes. Por ejemplo: Si el día es 27 y elmes 1 y el año 2000, el programa deberá desplegar los siguiente:

2 7 / 1 / 2 0 0 0 .

2 8 / 1 / 2 0 0 0 .

2 9 / 1 / 2 0 0 0 .

3 0 / 1 / 2 0 0 0 .

3 1 / 1 / 2 0 0 0 .

Recuer de docum ent a r aqu e l cód igo qu e no est éu t i l i z ando .

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 4 2

Page 143: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 143/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 4 3

66

Conceptos BConceptos Báásicossicosen Javaen Java

6. Conceptos Básicos en Java

Page 144: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 144/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 4 4

2. Entorno de Desarrollo Integrado2. Entorno de Desarrollo Integrado

3. El Lenguaje Java3. El Lenguaje Java

4. Tipos de Datos y Operadores

4. Tipos de Datos y Operadores

5. Control de Flujo5. Control de Flujo

1. Introducción a Java

1. Introducción a Java

6. Conceptos Básicos en Java6. Conceptos Básicos en Java

7. Trabajando con Clases

7. Trabajando con Clases

6. Conceptos Básicos en Java

Page 145: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 145/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 4 5

8. Utilización de Interfaces8. Utilización de Interfaces

9. Estándares de Desarrollo9. Estándares de Desarrollo

10. Manejo de Excepciones10. Manejo de Excepciones

11. Utilizando Cadenas, Arreglos y Colecciones

11. Utilizando Cadenas, Arreglos y Colecciones

12. Clases en Java12. Clases en Java

13. Swing13. Swing

Anexo

Anexo

Objetivos

Page 146: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 146/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 4 6

Explicar cuáles son las características de Javaque lo hacen ser un lenguaje orientado aobjetos.

Estudiar a profundidad conceptos tales como:objeto, clase, polimorfismo, encapsulamiento,sobrecarga, etc.

6.1 Concepto de Objeto

Page 147: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 147/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 4 7

Java es un lenguaje orientado a objetos ya que la unidad básica esel objeto.

Una posible definición de objeto es: “Es todo aquello que tiene:

estado, comportamiento e identidad”(Grady Booch).

Los objetos pueden ser tangibles o intangibles.

6.1 … Concepto de Objeto

Page 148: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 148/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 4 8

Los objetos que son tangibles, son aquellos que podemos tocar,mirar, por ejemplo: laComputadora, elCliente, elProducto, etc.

Los objetos intangibles son aquellos que no se pueden ver, nitocar. Por ejemplo: laTransacción, elPrestamo, laReservación, etc.

Uno de los grandes beneficios de los objetos es la encapsulación,la cual se describe como la capacidad de ocultar la implementacióny dar al exterior solo lo que queremos que se muestre (la interfaz).

6.1 … Concepto de Objeto

Page 149: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 149/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 4 9

Los o b j e t o s son representaciones de las clases y las clases sonlas abstracciones de los objetos.

Así por ejemplo, si hablamos de la clase Lapicero un posible objetosería miLapicero y en el caso de la clase Cliente podemos tenerelCliente.

Objeto:Lapicero

Objeto:

Cliente

6.1 … Concepto de Objeto Lo s m en saj e s son simples llamadas a las funciones o métodos del

objeto con el se quiere comunicar para decirle que haga cualquier

Page 150: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 150/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 5 0

cosa.

Para poder crear una aplicación se requieren más de un objeto, yestos objetos no pueden estar aislados unos de otros, pues bien,para comunicarse esos objetos se envían mensajes.

Objeto:Lapicero

Operación:Escribir

6.1 … Concepto de Objeto

Page 151: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 151/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 5 1

Entre el objeto y la clase la diferencia radica en que el objeto tieneestado y la clase NO.

La clase en general, es abstracta; es decir que solo contempladetalles comunes a los objetos que representa.

La clase se puede definir como el conjunto de objetos de un mismotipo que comparten datos (atributos) y comportamientos(métodos) comunes.

6.1 … Concepto de Objeto

Page 152: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 152/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 5 2

En Java un objeto es visto como:DATOS( con est ado ) + OPERACI ONES

dónde los datos corresponden a los atributos,pero con estado (valores).Por ejemplo el objeto cliente podríamodelarse así:

getId()

Solicitante

Mensajeid

nombre

direccion

setId

... getId

getNombre setNombre

Cliente

telefono

6.2 Crear Objetos Como ya se ha visto, un objeto es una instancia de una clase, es

Page 153: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 153/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 5 3

decir un ejemplo específico de esa clase.

En Java, la creación de un objeto se hace de la siguiente manera:

Cl ien te e lCl ien te = new Cl ien te ( 123 , ” Doug las ” ,“ A l a j u e l a ” , “ 4 4 4 5 6 7 8 ” ) ;  / / Decl ar aci ón – I n st an ci aci ón - I n ici a l i za ci ón

Cl ien te e lCl ien te = new Cl ien te ( ) ;  / / Decl ar aci ón – I n st an ci aci ón .

Cl ien t e e lCl ien t e;  / / So lo decl a r aci ón

6.3 Utilizar Objetos Los objetos, nos permiten poder acceder a los atributos y a los

é d

Page 154: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 154/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 5 4

métodos.

Por ejemplo:

Cl i en te e lCl i en te = new Cl i en te ( 123 , ” Juan ” , “ A l aj ue la ” ,“ 4 445 678 ” ) ;

Sy st e m . o u t .p r i n t l n ( “ I D : ” + e lCl i en t e .g e t I d ( ) ) ;

Sy st e m . o u t .p r i n t l n ( “ N o m b r e : ” + e lCl ie n t e.g e t N om b r e ( ) ) ;

Se recomiend a e l uso de m étod os de acceso 

t a l es com o: se t y ge t  

6.4 Eliminar Objetos Muchos otros lenguajes orientados a objetos necesitan que se siga

Page 155: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 155/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 5 5

Muchos otros lenguajes orientados a objetos necesitan que se siga

la pista de los objetos que se han creado y luego se destruyancuando no se necesiten. Escribir código para manejar la memoriade esta es forma es complicado y propenso a errores.

Java permite ahorrarse esto, permitiendo crea r t an t os ob je t oscom o se qu ie ra (sólo limitados por los que el sistema pueda

manejar) pero nun ca t i enen qu e ser dest r u i dos. El entorno de ejecución Java borra los objetos cuando determina

que no se van a utilizar más. Este proceso es conocido comorecolector de basura (gar bage co l lect ion ).

6.4 … Eliminar Objetos

Page 156: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 156/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 5 6

Un objeto es elegible para el recolector de basura cuando noexisten más referencias a ese objeto.

Las referencias que se mantienen en una variable desaparecen de

forma natural cuando la variable sale de su ámbito, ó bien cuandose borra explícitamente un objeto referencia mediante la selecciónde un valor cuyo tipo de dato es una re fe r enc ia a nu l l .

6.5 Recolector de Basura El entorno de ejecución de Java tiene un recolector de basura que

Page 157: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 157/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 5 7

periódicamente libera la memoria ocupada por los objetos que nose van a necesitar más.

El recolector de basura de Java es un barredor de marcas queescanea dinámicamente la memoria de Java buscando objetos,

marcando aquellos que han sido referenciados.

6.5 … Recolector de Basura

Page 158: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 158/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 5 8

El recolector de basura funciona en un thread (hilo) de bajaprioridad y funciona tanto sincrónica como asincrónicamentedependiendo de la situación y del sistema en el que se estéejecutando el entorno Java.

El recolector de basura se ejecuta sincrónicamente cuando elsistema funciona fuera de memoria o en respuesta a una peticiónde un programa Java. Un programa Java le puede pedir alrecolector de basura que se ejecute en cualquier momentomediante una llamada a Sys tem.gc( ) .

6.6 Finalización de los Objetos Antes de que un objeto sea recolectado, el recolector de basura le

Page 159: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 159/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 5 9

Antes de que un objeto sea recolectado, el recolector de basura le

da una oportunidad para limpiarse él mismo mediante la llamadaal método f i na l i ze ( ) del propio objeto. Este proceso es conocidocomo finalización.

Durante la finalización de un objeto se podrían l i bera r l osrecu rsos de l s i stem a como son los ficheros, etc. y liberarreferencias en otros objetos para hacerse elegible por larecolección de basura.

El m ét o d o f in al ize( ) es un miembro de la clase j av a.lan g .Ob j ect . Una clase debe sobrescribir el métodof i na l i ze ( ) para realizar cualquier finalización necesaria para losobjetos de ese tipo.

6.6 … Finalización de los

Objetos

Page 160: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 160/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 6 0

Ejemplo:

pub l i c class Cl ien te {

pub l i c vo id f i na l i ze( ) {

S ys tem.ou t . p r i n t l n ( “A d ios…. " ) ;

}

}

6.7 Concepto de Clase

Page 161: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 161/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 6 1

Las Clases son las abstracciones de los objetos, son gruposde objetos que comparten características (atributos) yconductas (métodos) comunes.

La diferencia como se ha mencionado anteriormente entre

la clase y el objeto, radica en que la clase, No tiene estadoy el objeto Sí.

Otra analogía del concepto de clase, es que son el plano

por medio del cual serán construidos los objetos.

6.7 … Concepto de Clase En Java una clase es vista como:

DATOS + OPERACI ONES

dónde los datos corresponden a los atributos, es decir las

Page 162: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 162/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 6 2

p ,

características, mientras que las operaciones corresponden a losmétodos. Por ejemplo la clase cliente podría modelarse así:

getId()

Solicitante

Mensajeidnombre

direccion

setId

... getId

getNombre setNombre

Cliente

telefono

6.7 … Concepto de Clase

En java las clases se definen así:

Page 163: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 163/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 6 3

j

Lo que está entre corchetes es opcional.

[ mod i f i c ado res ] class Nom bredeClase [ extendsNombredeSuperc lase ][ implements N om b r e deI n t e r f a ce ] {

. . .// Ambito de la clase}

6.8 Declaración de Clase Recuerde! Para poder instanciar un objeto, antes tuvo que hacerse

necesario la creación de una clase que tenga las características y

Page 164: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 164/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 6 4

conductas de ese objeto. Por ejemplo:class Cliente {

 // Atributosprivate int iid;private String nombre,direccion,telefono;

 // Métodos

public void comprar(){…}public void consultar(){…}public void caminar(){…}public void correr(){…}

}

Es pr i vado par a  m an tene r l a encapsu l ac ión  

Son pa r t e de l a i n te r faz  Por eso son púb l i cos  

6.9 La Instanciación Recuerde! Para poder instanciar un objeto, antes tuvo que hacerse

necesario la creación de una clase que tenga las características y

Page 165: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 165/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 6 5

conductas de ese objeto. Por ejemplo:

Cl ien t e e lCl ien t e = new

C l i e n t e ( 1 2 3 , ” J u a n ” , ” A l a j u e l a ” , ” 4 4 4 5 6 7 8 ” ) ;

elCliente(Referencia a la claseClient e, la instancia)

Atributos

+

Métodos

6.10 Convención del Nombres

Los nombres de archivosPersona .j ava – Mecán i co .j ava

Page 166: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 166/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 6 6

Los nombres de clasesPersona – Mecán i co

Los nombres de los métodosg e t N o m b r e P e r s o n a ( ) ,

se tNombrePersona(…. )

Los nombres de paquetesorg .e f ibs .ap l i cacion . * ;

Los nombres de variablesn o m b r e Pe r so n a – t i p o M eca n ico

Los nombres de constantes

CONSULTA_DE_PERSONASMAX_ I NTENTOS_ DE_ CONEXI ONES

6.11 Contenido de una Clase

Métodos

Objetos

Page 167: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 167/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 6 7

Paquetes

Referenciaa Objetos

Atributos

Contenido de una Clase

6.12 Tipos de acceso a unaClase

p r i v a t e

Ninguna otra clase puede crear un objeto de su clase.

Page 168: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 168/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 6 8

La clase puede contener métodos públicos y esos métodospueden construir un objeto y devolverlo, pero nada más.

p ro tec ted

Sólo las subclases de la clase pueden crear instancias deella.

pub l i c

Cualquiera puede crear una instancia de la clase. package-access

Nadie externo al paquete puede construir una instancia desu clase.

6.12 … Tipos de acceso a unaClase

acmevideo acmetools

Page 169: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 169/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 6 9

 private

 protected

 public public

6.13 Atributos de una Clase

Las variables en Java en realidad son como cualquier otra

Page 170: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 170/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 7 0

variable del lenguaje. En lo que difiere es en el tipo deacceso que se use.

Se recomienda que el tipo de acceso sea privado, con el fin

de asegurar el mecanismo de encapsulación.

Se tienen tres tipos de accesos para los atributos: pub l i c

p r i v a t e

p ro tec ted

6.13 … Atributos de una Clase

En el tipo de acceso pub l i c el atributo, podrá ser accesado por

Page 171: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 171/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 7 1

cualquiera desde el exterior.

En cuanto al tipo de acceso p r i v a t e, sólo se podrá accesar a lointerno de la clase y no desde el exterior, almenos que se haga através de la interfaz(conjunto de métodos públicos).

El otro tipo de acceso es p r o t ect ed , el cual corresponde almecanismo de la herencia y establece que solamente se podráacceder por parte de alguna clase derivada.

6.13 … Atributos de una Clase

El siguiente, es un esquema para declaración de variables:

Page 172: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 172/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 7 2

Recuerde, la información entre corchetes es opcional.

[especi f icadordeAcceso ] [s ta t i c] [f i na l] [t r ans ien t ][vo la t i l e] tipo nombredeVariable

6.14 Atributos Persistentes

La mayoría de los atributos que trabajamos en Java mantienen su

é í

Page 173: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 173/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 7 3

persistencia, sin embargo podemos quitarle ésta característica conla palabra clave t r a n s ie n t .

Basado en este ejemplo, i d sería un atributo no persistente de laclase.

class Cl ien t e {

t r ansien t i n t i d ;

. . .

}

6.15 Variables volátiles

Si una clase contiene una variable miembro que es modificada deforma asíncrona, mediante la ejecución de t h reads concu r ren t es,

d ili l l b l vo la t i l e d J ifi

Page 174: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 174/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 7 4

se puede utilizar la palabra clave vo la t i l e de Java para notificaresto al sistema Java.

Ejemplo:

class Cl ien t e {

vo la t i l e St r i ng nom bre ;

. . .

}

6.16 Métodos Los nombres de los métodos deben ser significativos no solo por

facilidad al usuario sino al programador. Junto con el nombre del método, la declaración lleva información

l ti d t d l ét d l ú l ti d l

Page 175: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 175/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 7 5

como el tipo de retorno del método, el número y el tipo de losargumentos necesarios, y qué otras clases y objetos pueden llamar almétodo.

Los únicos elementos necesarios para una declaración de método sonel nombre y el tipo de retorno del método. Por ejemplo, el códigosiguiente declara un método llamado es taVac io ( ) en la clase Pila quedevuelve un valor boo leano ( t r ue o f al se ) .

c lass P ila {

. . .

b o o l ea n e sta Vac io ( ) {

. . .}

}

6.16 … Métodos

La sintaxis general de un método es:

Ti D A Ti D R

Page 176: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 176/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 7 6

Ejemplos:

Ti p o De Acce so + Ti p o DeRe t o r n o +n o m b r e De lM et o d o + [ p ar á m e t r o sFo r m a les]

pu bl ic c lass Cl ien t e{

. . .

pub l i c boo lean consu l t a r ( ) { …}

pub l i c vo id espe ra r ( ) { …}

p u b l ic v o i d co m p r a r ( ) { …}

...

}

6.17 SobreCarga

Page 177: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 177/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 7 7

Un método está sobrecargado, cuando cumple que tiene igualnombre pero diferente cantidad o tipos de parámetros.

Se dice que para que el método esté sobrecargado debe existir

una firma única, es decir que difiera ya sea en cantidad o entipos de los parámetros.

El compilador, se dará cuenta cual es el método a invocar por lacantidad y tipo de los parámetros.

6.17 … SobreCarga

Un Ejemplo:

Page 178: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 178/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 7 8

pub l i c vo id consu l t a r ( ) { . . .}pub l i c vo id consu l t a r ( i n t x ) { . . .}

p u bl ic i n t co m p r ar ( ) { . . .}p u b li c i n t co m p r a r ( i n t a) { . . .}

6.18 Valor de Retorno

Los métodos retornan siempre algo, aunque sea el control con lapalabra reservada vo id .

Page 179: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 179/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 7 9

Los valores posibles de retorno son los tipos de datos simples ocompuestos.

Por ejemplo:publ ic c lass Cl iente {

p u b l i c b o o le an con su l t a r ( ) {

i f ( ! p re g u n ta r )

r e t u r n t r u e ;

else

re tu rn fa l se;

}

}

6.19 Estructura de la Clase

public class Cliente {

 / / At r ibu t os ó car act er íst i cas

Declaración

Tipo de AccesoBloques de Código

Page 180: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 180/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 8 0

int id;

String nombre, direccion , telefono;

 / / Mét odos ó Oper acion es

int getId() {

}

}

Variables de laInstancia

Métodos de laInstancia

6.20 Estructura de un método

public boolean comprar () {

 / / var iab les d el m ét odo

int producto;

Declaración

Tipo de Dato RetornoTipo de Acceso

Variables del

Método

Page 181: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 181/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 8 1

 / / cu er po del m ét od o

if(producto>=10000 && producto<40000){

return true;

}

else{

return false;

}

}

Retorno

Método

Estatutos delmétodo

6.21 Clases-Métodos-Atributosf i na l

Una variable final es una constante y no puede ser modificada. Es muy utilizada para inicializar y declarar Constantes. Un método final no se puede sobrescribir por una subclase

Page 182: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 182/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 8 2

Un método final no se puede sobrescribir por una subclase. Una clase final no puede ser heredada.

pub l ic f ina l c lass Cl ien t e {

p u b l ic f i n al st a t i c n o m b r e = ” Jo sé ” ;

}

6.22 Resumen de Conceptos

Una Clase es una definición de un nuevo Tipo, al que se le da unnombre.

Page 183: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 183/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 8 3

Una Clase contiene atributos y métodos que configuran el estado ylas operaciones que puede realizar.

Un Objeto es la materialización (instanciación) de una clase. Puedehaber tantos Objetos de una Clase como la memoria lo permita.

6.22 … Resumen de Conceptos

Los Objetos se crean (se les asigna memoria) con el operador n ew .

Los Objetos se manipulan con Referencias.

Page 184: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 184/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 8 4

j p

Una Referencia es una Variable que apunta a un Objeto.

El acceso a los elementos de un Objeto (debe hacerse a través desu interfaz y no en forma directa, con el fin de mantener elencapsulamiento.

6.23 Polimorfismo en Java

Es cuando existen múltiples formas de llevar a cabo una acción.

Un ejemplo sería la forma en que saluda cada cliente en particular yd i b d l j N t l í d d h d

Page 185: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 185/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 8 5

j p q p ypuede ir basado en su lenguaje Natal o país donde se hospeda.

Así por ejemplo, un Inglés podría decir:

Hello!

Mientras que un Francés, podría decir:

Cava!

6.23 ... Polimorfismo en Java

 / / I ng lés-Fr ancés:

 / / I ng les.j ava

pub l ic c lass I ng les ex t ends Cl ien t e{

...

pub l i c vo id sa l udar ( ) {

S i l ( “HE LLO ! ” )

Page 186: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 186/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 8 6

S ys tem.ou t . p r i n t l n ( “HE LLO ! ” ) ;

}

. ..

}

 / / Fr ances.j av a

}

pub l ic c lass Fran ces ex t ends Cl ien t e{

...

pub l i c vo id sa l udar ( ) {

S ys tem.ou t . p r i n t l n ( “CA V A ! ” ) ;

}

...

}

6.23 ... Polimorfismo en Java

 / /  Cl iente :

Page 187: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 187/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 8 7

 / / Cl ien t e.j av a

pu bl ic c lass Cl ien t e{

...

pub l i c abst r act vo id saluda r ( ) ; / / se de f ine abs t r act y s i n / / im p lem en t ación

...

}

6.23 … Polimorfismo en Java

 / / Clase de Pr u eba

...

pub l i c st a t i c vo id m a in (St r i ng a rgs ) {

Cl ien t e e lCl ien t e;el Cl ie nt e = n ew I n g les( ) ;

Ejemplo:

Page 188: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 188/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 8 8

el Cl ie nt e = n ew I n g les( ) ;

e lC l ien te .sa ludar ( ) ;

 / / desp l iega HELLO!

e lCl i en te = new Frances ( ) ;e lC l ien te .sa ludar ( ) ;

 / / desp l iega CAVA!

}

6.24 Encapsulamiento

El encapsulamiento denota ocultamiento.

Page 189: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 189/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 8 9

Un ejemplo claro es utilizar privado los atributos de las clases, conel fin de que solo puedan ser accesados por medio de la interfaz.

El Encapsulamiento oculta la estructura interna y operaciones de losobjetos detrás de una interface y aumenta el nivel de abstracción.

6.24 Encapsulamiento

setId

Cliente

Page 190: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 190/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 9 0

getId()

Solicitante

Mensajeid

nombre

direccion

... getId

getNombre setNombre

telefono

6.25 Ejercicio Práctico

Ana l i ce con e l i ns t r uc to r e l sigu ien t e d iag r am a:

Page 191: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 191/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 9 1

6.25 … Ejercicio Práctico

Cree los siguientes paquetes:

org .e f ibs .s is temaDeOrdenes.Cl ien te .

Page 192: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 192/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 9 2

org .e f ibs .s is temaDeOrdenes.Orden.

org .ef ibs .s i stem aDeOrd enes.Ord en I tem .

org .e f ibs .s is temaDeOrdenes.Producto .

En base al diagrama anterior, cree las siguientes clases con cadauno de sus atributos y métodos, aplicando el concepto deencapsulamiento para cada una de ellas:

Orden . java

Cl ien te . java

O r d e n I t e m . j a v a

Produc to . j ava

77

Page 193: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 193/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 9 3

77Trabajando conTrabajando conClasesClases

2. Entorno de Desarrollo Integrado

2. Entorno de Desarrollo Integrado

1. Introducción a Java

1. Introducción a Java

7. Trabajando con Clases

Page 194: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 194/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 9 4

3. El Lenguaje Java3. El Lenguaje Java

4. Tipos de Datos y Operadores4. Tipos de Datos y Operadores

5. Control de Flujo5. Control de Flujo

6. Conceptos Básicos en Java6. Conceptos Básicos en Java

7. Trabajando con Clases7. Trabajando con Clases

8. Utilización de Interfaces

8. Utilización de Interfaces

9. Estándares de Desarrollo

9. Estándares de Desarrollo

7. Trabajando con Clases

Page 195: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 195/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 9 5

10. Manejo de Excepciones10. Manejo de Excepciones

11. Utilizando Cadenas, Arreglos y Colecciones11. Utilizando Cadenas, Arreglos y Colecciones

12. Clases en Java12. Clases en Java

13. Swing13. Swing

AnexoAnexo

Objetivos

Explicar el manejo de clases, así como la

manipulación tanto de atributos como demétodos.

Page 196: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 196/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 9 6

Estudiar el mecanismo de reutilización decódigo(herencia).

7.1 Concepto de Herencia

La herencia es el mecanismo de la orientación a objetos, que

permite la reutilización de código que está repetido en dos o másclases.

Page 197: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 197/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 9 7

Por lo que todo aquello que tenga la super clase, lo tendrá tambiénla subclase. Para referirse a la sub clase se le llama sub tipo, clase

derivada y clase hija.

Se le llama superclase a la clase de la que desciende una clase.Otros nombres utilizados son: super clase, super tipo y clasepadre.

7.1 … Concepto de Herencia

Un ejemplo de herencia es el siguiente:

Hardware

Page 198: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 198/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 9 8

Individuo ycompañíason tipos deClientes

Hardware,Manual ySoftwareson tipos deproducto

7.2 Definiciones

Una Subclase, es una clase que deciende de otra clase. Una

subclase hereda el estado y comportamiento de todos susancestros.

Page 199: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 199/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.1 9 9

El término super clase se refiere al ancestro más directo, así como

a todas las clases ascendentes.

7.2 … Definiciones

Otro ejemplo de herencia es el siguiente:

Page 200: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 200/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 0 0

Produc to

Har dw ar e So f t w ar e Man u al

7.3 Creación de subclases

Un ejemplo de herencia es el siguiente:

class Hardw are ex t ends Prod uc to {

. . .

Page 201: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 201/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 0 1

. . .}class So f t w are ex t ends Pro duc t o {

. . .}class Manu a l ex t ends Pro duc t o {

. . .

}

7.4 Herencia de atributosReg la pa ra la Herenc ia de a t r ibu t os :

Una subclase hereda todos los atributos de su superclase quepuedan ser accesibles desde la subclase (a menos que los atributos

estén ocultos en la subclase). Esto es, las subclases.

Page 202: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 202/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 0 2

Heredan aquellos atributos declarados como pub l i c op ro tec ted .

Heredan aquellos atributos declarados sin especi f i cador d eacceso (normalmente conocidas como "Amigas") siempre quela subclase esté en el mismo paquete que la clase. No heredalos atributos de la superclase si la subclase declara unavariable miembro que utiliza el mismo nombre. Los atributosde la subclase se dice que ocultan los atributos de la

superclase. No hereda los atributos p r i v a t e .

7.4 … Herencia de atributos

Un ejemplo de herencia es el siguiente:

elHardwarepub l ic class Product o {

p r i va te St r i ng i d ;

Page 203: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 203/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 0 3

idnombre

periodoDeGarantia

pub l i c class Hardw are ex tend s Produ c to {p r i v a te in t pe r iodoDeGaran t ia ;

}

p gp r i va te St r i ng nom bre ;

…}

H ar d w a r e el Ha r dw a r e = n ew H ar d w a r e( ) ;

7.5 Herencia de métodos

Regla par a la Herenc ia de Métodos :

Una subclase hereda todos los métodos de su superclase que sonaccesibles para la subclase (a menos que el método sea sobrescrito por

la subclase).

Esto es, una Subclase.

Page 204: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 204/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 0 4

Hereda aquellos métodos declarados como pub l i c o p ro t ected

Hereda aquellos métodos sin especi f icado r d e acceso, siempre que lasubclase esté en el mismo paquete que la clase.

No Hereda un método de la superclase si la subclase declara un métodoque utiliza el m i sm o n om b r e.Se dice que el método de la subclasesobrescribe al método de la superclase.

No Hereda los m étodos p r i va te .

7.6 Clase Object

La clase Object está situada en la parte más alta del árbol de laherencia en el entorno de desarrollo de Java.

Todas las clases del sistema Java son descendientes (directa oindirectamente) de la clase Object.

Page 205: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 205/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 0 5

Define los estados y comportamientos básicos que todos losobjetos deben tener, como la posibilidad de:

Compararse unos con otros, De convertirse a cadenas, De esperar una condición variable, De notificar a otros objetos que la condición variable ha

cambiado. Devolver la clase del objeto.

7.7 Métodos de la clase Object El m étodo equa l s( ) se utiliza para comparar si dos objetos son iguales. Este método devuelve t r u e si los objetos son iguales, o fa lse si no lo son. Observe que la igualdad no significa que los objetos sean el mismo objeto.

Consideremos este código que compara dos enteros.

I n d iv i du o el I n d iv i du o = n ew I n d iv i du o ( ) ,I n d iv i du o ot r o I n d iv i du o = n ew I n d iv i du o ( ) ;

Page 206: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 206/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 0 6

Este código mostrará Los ob je tos son I gua les aunque uno y otroUnoreferencian a dos objetos distintos.

Se les considera iguales porque su contenido es el mismo valor entero. Las clases deberían sobrescribir este método proporcionando la

comprobación de igualdad apropiada. Un m étodo equa l s( ) debería comparar el contenido de los objetos para versi son funcionalmente iguales y devo l ver t r ue si es así.

i f ( e lI n d i v id u o .e qu a ls( o t r o I n d i v id u o ) )Sys tem .ou t . p r i n t l n ( " Los I nd i v i duos son I gua les " ) ;

7.8 … Métodos de la claseObject

El m étodo ge tClass ( ) es un método final (no puedesobrescribirse).

Devuelve una representación en tiempo de ejecución de la clasedel objeto

Page 207: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 207/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 0 7

del objeto.

Este método devue lve u n ob j e to Class al que se le puede pedirvaria información sobre la clase, como por ejemplo:

Su nombre, El nombre de su superclase y los nombres de los interfaces

que implementa. El siguiente método obtiene y muestra el nombre de la clase de un

objeto:

7.8 … Métodos de la claseObject

Ejemplos:

vo id Pr in t ClassNam e( Ob j ect ob j ) {

Page 208: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 208/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 0 8

Sys tem .ou t .p r in t ln ( " La c lase de l Ob je t o es " +

e lEs tud ian te .ge tC lass ( ) .ge tName( ) ) ;Sys tem.ou t . p r i n t l n ( “ Es una h i l e ra ”+ e lEs tud ian te .t oSt r i ng ( ) ) ;

}

Ob jec t c reateNew I ns tanceOf ( Ob jec t ob j ) {r e tu rn ob j . ge tClass ( ) . new I ns tance ( ) ;

}

Otros métodos de la clase object son:

finalize(); Anteriormente estudiado notify();

7.8 … Métodos de la claseObject

Page 209: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 209/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 0 9

notifyAll(); wait();

Los últimos tres son críticos cuando se escriben programasJava con múltiples thread.

Estos métodos ayudan a asegurarse que los thread estánsincronizados.

7.9 Clases Abstractas

Una clase abstracta es una clase que sólo puede tenersubclases y no puede ser instanciada.

En la programación orientada a objetos, se podrían modelarconceptos abstractos para no querer que se creen instanciasde ellos, como un mecanismo de seguridad.

Page 210: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 210/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 1 0

Por ejemplo, La c lase Person a de la se ha hecho referencia debería ser

abstracta ya que no tiene sentido instanciarla, por el grado degeneralidad que presenta. En su lugar, la clase Persona sólo tiene sentido como

superclase de otras clases como Estu d ian t e y Pr o fesor queimplementan números de tipos específicos.

Clases como Persona, que implementan conceptos abstractos yno deben se r ins tan c iadas , ya que son m uy g enera les.

7.9 … Clases Abstractas

SuperClaseAb t t

Cl iente

El uso de clases abstractas se recomienda para poder mantenermodelos generales tales como:

Page 211: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 211/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 1 1

Abstracta

SubClasesConcretas

Com pañ ia I n d iv idu o

7.9 … Clases Abstractas

Una clase abstracta puede contener muchos métodos abstractos,los cuales no tienen implementación.

Por lo tanto, una clase abstracta puede definir una interfaz deprogramación completa.

Page 212: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 212/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 1 2

p g p

El sentido de los métodos abstractos, es poder darle laimplementación respectiva en las clases derivadas.

7.9 … Clases Abstractas

Por ejemplo, en el caso de Individuo y Compañia ambos puedenser sub-clases de Cliente y ambos podrían compartir una conductacomo calcularMonto() que se procedería a implementar dediferente manera

Page 213: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 213/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 1 3

diferente manera.

Por lo tanto, en la super clase Cliente calcularMonto() no tendríaimplementación sino que la implementación se daría en cada unade las subclases.

El cálculo del monto varía según el cliente, por lo que la fórmulano puede ser la misma.

7.9 … Clases Abstractas

abst r ac t c lass Cl ien t e {. . .

}

pub l ic abst r ac t c lass Cl ien t e {

p ro tec ted i n t i d ;

Page 214: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 214/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 1 4

p ;

p u b l ic i n t g et I d ( ) …

}

pub l i c class I nd iv idu o

ext ends Cl ien t e{

p r i va t e f l oat descuen t o ;

...

pu b l ic c lass Com pañia

ext ends Cl ien t e {

p r i va te St r i ng n um eroLi c;

...

7.9 … Clases Abstractasabst r ac t c lass Cl ien t e {

abst r act f l oa t ca lcu larM on to ( ) ;

}

c lass I nd iv idu o ex t ends Cl ien te {…f loa t ca l cu la rM on to ( ) {

Page 215: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 215/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 1 5

f l oa t ca l cu la rM on to ( ) {…

}

}c lass Adm in is t ra t i vo ex t ends Persona {

…f loat cal cu la rM on t o ( ) {…}

}

7.10 Ejercicio Práctico

Ana l i ce con e l ins t r uc to r e l s igu ien t e d iag r am a:

Page 216: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 216/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 1 6

El inst ru c to r r ea li zará un a exp l i cación de ta l lada del ej e rc i cio a r ea li zar :

En base al diagrama anterior, cree las siguientes clases con cada uno desus atributos y métodos, aplicando el concepto de encapsulamiento

para cada una de ellas: Compannia.java (en el paquete Cliente)

I di id j ( l Cli )

7.10 … Ejercicio Práctico

Page 217: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 217/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 1 7

Individuo.java (en el paquete Cliente)

Manual.java (en el paquete Producto)

Software.java (en el paquete Producto)

Hardware.java (en el paquete Producto)

Una vez creadas las clases, se debe de aplicar el concepto de herencia

con la clase Cliente y Producto. Debe completar los set y gets respectivos para cada una de las clases.

Desde el método main() del programa Pr inc ipa l . j ava, cree unainstancia del Cliente, Individuo y Compannia y envíele como

parámetros los que requiera en el constructor sobre cargado. Lleve a cabo lo mismo pero con: Producto, Hardware, Software y

Manual.

7.10 … Ejercicio Práctico

Page 218: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 218/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 1 8

Sobrescriba el método toString() tanto de Cliente como de Productos

e imprima desde Pr inc ipa l . j ava el contenido de cada uno de losobjetos creados.

88UtilizaciUtilizacióón den de

Page 219: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 219/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 1 9

UtilizaciUtilizacióón den de

InterfacesInterfaces

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 1 9

2. Entorno de Desarrollo Integrado

2. Entorno de Desarrollo Integrado

3. El Lenguaje Java

3. El Lenguaje Java

1. Introducción a Java

1. Introducción a Java

8. Utilización de Interfaces

Page 220: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 220/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 2 0

4. Tipos de Datos y Operadores4. Tipos de Datos y Operadores

5. Control de Flujo5. Control de Flujo

6. Conceptos Básicos en Java6. Conceptos Básicos en Java

7. Trabajando con Clases7. Trabajando con Clases

8. Utilización de Interfaces

8. Utilización de Interfaces

9. Estándares de Desarrollo

9. Estándares de Desarrollo

10. Manejo de Excepciones

10. Manejo de Excepciones

11 U ili d C d A l C l i

8. Utilización de Interfaces

Page 221: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 221/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 2 1

11. Utilizando Cadenas, Arreglos y Colecciones11. Utilizando Cadenas, Arreglos y Colecciones

12. Clases en Java12. Clases en Java

13. Swing13. Swing

AnexoAnexo

Objetivos

Entender la diferencia entre interfaces y clases.

Implementar ejercicios, donde se ponga enpráctica el uso de las interfaces, esto con el fin

Page 222: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 222/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 2 2

práctica el uso de las interfaces, esto con el finde que se pueda adquirir un sólidoentendimiento.

Una pos ib le de f in ic iUna pos ib le de f in ic i óó n p a ra las in t e r faces es la s igu ien t e :n p a ra las in t e r faces es la s igu ien t e : ““ Un aUn a

in t e r f ace es un a co lecc iin t e r f ace es una co lecc ióó n d e de f in i c iones de mn d e de f in i c iones de m éé todos ( s intodos ( s in

im p lemen t aciones) y de va lo res cons tan tesim p lemen t aciones) y de va lo res cons tan tes ”” ..

8. Interfaces

Page 223: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 223/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 2 3

Las interfaces se utilizan para definir un protocolo de comportamiento

que puede ser implementado por cualquier clase del árbol de clases.

Las interfaces son útiles para:

Captu ra r s im i l i t u des en t re c lases no relacionadas sin forzar unarelación entre ellas.

Dec la ra r m é todos que una o varias clases necesitan implementar

8.1 Utilidades de las Interfaces

Page 224: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 224/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 2 4

Dec la ra r m é todos que una o varias clases necesitan implementar.

Revelar la interface de programación de un objeto sin recelar susclases (los objetos de este tipo son llamados objetos anónimos ypueden ser útiles cuando comparta un paquete de clases con otrosdesarrolladores).

Algunas veces se trata a las interfaces como una alternativa a laherencia múltiple en las clases. En realidad, lo que hacen es simularlas.

No se pueden h e redar v a r iab les desde un a in t e r face .

No se pueden h e redar im p lemen t aciones de mé t odos desde

8.2 Las interfaces Vs herencia múltiple

Page 225: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 225/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 2 5

una i n te r f ace .

La herencia de una interface es independiente de la herencia de laclase, l as c lases que im p lem ent an la m ism a in t e r face puedeno n o es ta r re lac ionadas a t r avés de l á rbo l d e c lases .

Para crear una Interface, se debe escribir tanto la declaración como elcuerpo de la interface.

decla racionde I n t e r f ace {

cu e r p o d eI n t e r f ace

}

8.3 Definir una Interface

Page 226: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 226/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 2 6

La Decla rac ión de I n t e r face declara varios atributos de la interface,como su nombre o si se extiende desde otra interface.

El Cuerpo de I n t e r f ace contiene las constantes y las declaraciones demétodos del Interface.

Como mínimo, una declaración de interface contiene la palabra claveinterface y el nombre de la interface que se va a crear.

in t e r face Texab le {

. . .

8.4 Declaraciones de Interfaces

Page 227: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 227/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 2 7

Nota : Por convención, los nombres de interfaces empiezan con unaletra mayúscula al igual que las clases. Frecuentemente los nombres deinterfaces terminan en " a bl e" o " i b l e" .

}

La declaración de una interface puede tener otros dos com ponen tes:

El especificador deacceso pu b l ic .

Lista de "super in te r faces".

Una interface puede extender de otras interfaces como una clase puedeextender o subclasificar otra clase.

8.4 … Declaración de Interfaces

Page 228: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 228/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 2 8

extender o subclasificar otra clase.

Mientras que una clase sólo puede extender de una superclase, lasinterfaces pueden extender de cualquier número de interfaces.

[public] i n te r face Nombredenterface [ex tends listadeSuperInterfaces] {. . .

}

Una posible forma de definir una interface, se puede ver a través delsiguiente esquema.

[public] i n t e r f ace NombreDeInterface [e x t e n d slistadeSuperInterfaces] {

8.4 … Declaración de Interfaces

Page 229: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 229/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 2 9

p ] {. . .

}

El espec i f i cador de acceso pu b l ic indica que la interface puede serutilizada por todas las clases en cualquier paquete.

La c láusu la ex t ends es similar a la utilizada en la declaración de unaclase, sin embargo, una interface puede extender de varias interfaces(mientras una clase sólo puede extender una), y una interface no puede

8.5 Algunas Consideraciones

Page 230: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 230/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 3 0

extender clases.

Una in t e r face he reda todas las constantes y métodos de sussuperinterfaces a menos que la interface oculte una constante con elmismo nombre o redeclare un método con una nueva declaración.

El cuerpo de la interface contiene las declaraciones de métodos para losmétodos definidos en la interface.

Además de las declaraciones de los métodos, una interface puedecontener declaraciones de constantes.

N

8.6 Cuerpo de la Interfaz

Page 231: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 231/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 3 1

Nota:

Las declaraciones de miembros en una interface no permiten eluso de algunos modificadores y desaconsejan el uso de otros. Nose podrán utilizar transient , volati le, o synchronized en unadeclaración de miembro en una interface. Tampoco se podráutilizar los especificadores private y protected cuando sedeclaren miembros de un interface.

Todos los valores constantes definidos en una interface sonimplícitamente públicos, estáticos y finales.

8.7 Acceso de las Interfaces

Page 232: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 232/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 3 2

Todos los métodos declarados en una interface son implícitamentepúblicos y abstractos.

El siguiente código define una nueva interface llamada Taxable con unmétodo para calcular el impuesto.

in t e r face Taxab le {

St t i f i l d b l t j 20 78

8.7 … Acceso de las Interfaces

Page 233: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 233/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 3 3

Sta t i c f i na l doub le po r cen ta je = 20 .78 ;

pub l i c doub le ge tTax ( ) ;

}

Para utilizar una interface se debe escribir una clase que la implemente.

Una clase declara todos las interfaces que implementa en su declaraciónde clase.

8.8 Uso de las interfaces

Page 234: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 234/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 3 4

Para declarar que una clase implementa una o más interfaces, se utilizala palabra clave i m p l e m e n t s seguida por una lista delimitada porcomas con las interfaces implementadas por la clase.

in t e r face co lección {

i n t M AXI M O = 5 0 0 ;

vo id añad i r ( Ob jec t ob j ) ;

vo id bo r ra r ( Ob jec t ob j ) ;

Ob j ect buscar ( Ob j ecto b j ) ;

i n t con tado rActu a l ( ) ;

}

c lass Pi laFI FO im plem ent s co lecc ión {

. . .

vo i d añad i r ( Ob jec t ob j ) {

. . .

}vo i d bor ra r ( Ob jec t ob j ) {

. . .

}

Ob jec t busca r (O b ject ob j ) {

8.9 Ejemplo de las interfaces

Page 235: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 235/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 3 5

} Ob jec t busca r (O b ject ob j ) {

. . .

}

i n t con tado rAc tua l ( ) {

. . .

}

}

Observa que las firmas de losmétodos de la interface colecciónimplementados en la clase PilaFIFOdeben corresponder exactamente conlas f i rm as de l os m é todosdeclarados en la interface colección.

pub l ic c lass Cl ien t e ex t ends Objec t

pub l ic class Com pañia ex t ends Em pleado

pub l i c class I nd iv idu o ex t ends Em p leado

pub l i c vo id ejem p lo ( Cl ien te e ) {

i f ( e ins tanceo f Com pañ ia ) {

 / / Pr ocesa u n Adm in ist ador

8.10 Uso del instanceof 

Page 236: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 236/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 3 6

} e lse i f ( e i n st a n ce of I n d i v id u o ) {

 / / Pr ocesa u n Adm in ist ador

} el se {

 / / Pr ocesa cu alq u ier o t r o t ip o de Cl ien t e

}

}

El i ns t ru cto r rea l izará una exp l i cac ión de ta l l ada de l ej e rci ci o . Enbase a l sigu ien t e d iag r am a:

8.11 Ejercicio Práctico

Page 237: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 237/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 3 7

Cree un paquete llamado:

org .e f ibs .s i st em aDeOrd enes. I n t e r faces

Crear una interface para la clase Taxable con sus correspondientesdeclaraciones.

En base a lo anterior se requiere crear las clases de Hardware ySoftware y que ambas implementen a la Interfece Taxable

8.11 ... Ejercicio Práctico

Page 238: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 238/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 3 8

Software y que ambas implementen a la Interfece Taxable.

Nota: Con el objetivo de probar ambas clases se requiere implementarel método getTax( . . . ) de las clases creadas en punto 2 de ésta prácticay cree un método donde pueda procesar ambas clases utilizando eloperador intanceof. Converse con el instructor y demás participantes lacorrecta ubicación del método que se encargue de procesar ambas

clases.

99EstEstáándares dendares de

Page 239: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 239/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 3 9

DesarrolloDesarrollo

2. Entorno de Desarrollo Integrado

2. Entorno de Desarrollo Integrado

3. El Lenguaje Java

3. El Lenguaje Java

4. Tipos de Datos y Operadores

4. Tipos de Datos y Operadores

1. Introducción a Java

1. Introducción a Java

9. Estándares de Desarrollo

Page 240: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 240/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 4 0

5. Control de Flujo5. Control de Flujo

6. Conceptos Básicos en Java6. Conceptos Básicos en Java

7. Trabajando con Clases7. Trabajando con Clases

8. Utilización de Interfaces

8. Utilización de Interfaces

9. Estándares de Desarrollo

9. Estándares de Desarrollo

10. Manejo de Excepciones

10. Manejo de Excepciones

11. Utilizando Cadenas, Arreglos y Colecciones

11. Utilizando Cadenas, Arreglos y Colecciones

9. Estándares de Desarrollo

Page 241: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 241/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 4 1

12. Clases en Java12. Clases en Java

13. Swing13. Swing

AnexoAnexo

Objetivos

Entender la importancia del uso de estándares

de desarrollo.

Definir, implementar y crear ejercicios, donde

Page 242: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 242/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 4 2

se ponga en práctica el uso de estándares dedesarrollo, esto con el fin de que se puedaadquirir un sólido entendimiento sobre el tema.

El desarrollo de aplicaciones actuales requiere una estandarización anivel de programación para poder hacer conciencia del trabajo de las

distintas personas involucradas en la codificación de los distintosservicios.

El m a n t e n i m i e n t o futuro de la aplicación es senci l lo al igual queposibles cambios en el equipo de trabajo solo suponen la lectura de

9. Uso de Estándares

Page 243: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 243/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 4 3

posibles cambios en el equipo de trabajo solo suponen la lectura de

este documento para conocer la nomenclatura a seguir.

Estos estándares deben ser respetados durante el desarrollo de toda laaplicación.

N o m b r e d eN o m b r e d e a t r i b u t o sa t r i b u t o s y va r i ab lesy va r i ab les

Las variables se definirán con el nombre de la columna de latabla del que se lee su valor. Los nombres se inician en

minúscula. Para las variables que crea el propio programador y son usadas

durante el desarrollo de la aplicación, se deben definir el tipode dato al cual pertenece, el nombre del identificador y elposible valor que va a tomar el identificador.

9.1 Nomenclatura de la Aplicación

Page 244: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 244/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 4 4

p q

int con t ador = 1 ;

Nom br e de ClasesNom br e de Clases

Inician con mayúscula.

No debe de contener espacios entre sus palabras.

Los nombres de los constructores deben ser idénticos alnombre de la clase.

Dentro de un archivo, cada una de las secciones deben estar separadaspor líneas en blanco y se podrá incluir un comentario opcionalidentificando cada sección.

Archivos con más de 2000 líneas son muy pesados para la aplicación, serecomiendan separarlos.

9.1 … Nomenclatura de la Aplicación

Page 245: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 245/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 4 5

Fichero s fuen t es de JavaFicheros fu ent es de Java Cada archivo fuente de JAVA contiene una clase o interface pública.

Los ficheros fuente de JAVA tienen la siguiente estructura:comentarios iniciales, líneas de importación de clases y paquetesJava y declaración de clases e interfaces

El software de Java utiliza las siguientes extensiones:

Tipo F icher o Java fuente .java

Extens ión Java bytecode (compilado) .class

9.2 Nombre de Ficheros

Page 246: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 246/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 4 6

Com ent a r ios in i c ialesCom ent a r ios in i c iales

Todos los archivos fuentes deben empezar con un comentario

parecido al que se utiliza en los programas desarrollados en C, elcuál, lista el nombre de la clase, la versión, la fecha y el copyrigth:

/* * Nombre de la clase

* Version

9.3 Organización de los archivos

Page 247: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 247/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 4 7

* Fecha

* Copyright

*/

LLííneas de im po r t acineas de im po r t aci óó n d e c lases y p aqu etes de Javan d e c lases y p aqu etes de Java

La primera línea no comentada de la mayoría de los ficherosfuentes de Java es la definición del paquete. Después de éste, lesigue la definición de los imports. Por ejemplo:

package j ava .aw t ;

im por t j ava .aw t .peer .CanvasPeer ;

9.3 … Organización de los archivos

Page 248: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 248/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 4 8

Primero definimos las variables públicasVariables (estáticas) de la Clase

Estos comentarios suelen contenerinformación sobre el contexto de la claseo el interfase. Aquí definimos el alcancede la clase o interfase.

Implementación de la Clase o Interfasecon comentarios (/*...*/), si es necesario

Declaración de la Clase o Interface

Comentarios en una Clase/interfase(/**...*/)

No tasPar t es Ordenadas a declarar en u naCl ase / I n t e r f a ce

9.3 … Organización de los archivos

Page 249: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 249/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 4 9

Primero las públicas, después lasprotegidas, después las variables a nivel

del paquete (sin modificador) y despuéslas variables privadas.

Variables instanciadas

de la clase, después las protegidas,después las variables a nivel del paquete(sin modificador) y después las variablesprivadas.

Estos métodos deben estaragrupados por funcionalidades yno por alcance del método oaccesibilidad. Por ejemplo, unmétodo de una clase privadapuede ser definida entre dos

Métodos

Constructores

NotasPar t es Orden adas a dec la rar enu n a Cl ase / I n t e r f a ce

9.3 ... Organización de los archivos

Page 250: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 250/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 5 0

pinstancias de métodos públicos. Lameta de este orden es hacer máslegible y entendible el código.

Cuatro espacios suelen ser la unidad de indentación. La exactaconstrucción de una indentación (espacios con tabulador) no está

especificada. Los tabuladores deben ser accionados cada 8 espacios (no4).

No escribir líneas de más de 80 caracteres de longitud, pues no sonbien gestionadas por muchas herramientas de software y terminales.

9.4 … Indentación

Page 251: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 251/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 5 1

bien gestionadas por muchas herramientas de software y terminales.

Nota : Los ejemplos para el uso de la documentación no suelensobrepasar los 70 caracteres.

Cuando una expresión no quepa en una línea simple, se separa acorde alos siguientes principios generales:

Separar después de una coma.

Separar después de un operador.

Separar a un nivel alto es mejor que separar a un nivel bajo.

Alinear la nueva línea con el principio de la expresión del mismonivel de la línea anterior.

9.4 Indentación

Page 252: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 252/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 5 2

Si las reglas superiores confunden el entendimiento del código,indentar 8 espacios.

someMethod ( longExpr ess ion1 , l ongExpr ess ion2 , l ongExpr ess ion3 ,

longExpr ess ion4 , l ongExpr ess ion5) ;

va r = som eMethod1 ( l ongExp r ess ion1 ,som eMethod2 ( l ongExp ression2 ,

l ongExp ress ion3 ) ) ;

l on g Nam e1 = l on g Nam e2 * ( l o n g Na m e 3 + l on g Na m e 4 - l on g Na m e 5 )

+ 4 * l on g nam e 6 ;

9.4.1 Ejemplo de Indentación

Page 253: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 253/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 5 3

som eMethod ( i n t anArg , Ob jec t ano the rA rg , St r i ng ye tAno t he rA rg ,

Ob j ect andSt i l lAno t he r ) {

...

}

i f ( ( co n d i t i on 1 & & co n d i t i on 2 )| | ( co n d it i o n 3 & & co n d it i o n 4)

| | ! ( c on d it i o n 5 & & c on d it i o n6 ) ) {

d o S o m e t h i n g A b o u t I t ( ) ;

}

9.4.1 … Ejemplo de Indentación

Page 254: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 254/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 5 4

a lpha = ( aLongBoo leanExpr ess ion ) ? be ta : gam m a;

 / *

* Bl oq u e

* / 

 / * -

* Aqu í esta e l b loque de com en ta r i os con f o rm a to especia l

* que qu iero i nden ta r pa ra i gno ra r .

*

9.5 Comentarios

Page 255: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 255/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 5 5

*

* u no

* dos

* t r es

* / 

i f ( c o n d it i o n ) {

 / * Man ej ar la con d ición . * / 

...

}

i f ( a = = 2 ) {

r e tu r n TRUE; / * caso especia l * /  

} l {

9.5 … Comentarios

Page 256: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 256/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 5 6

} e l se {

r et u r n i sPr i m e( a ) ; / * cu an d o a es n º p r im o * /  

}

i f ( f o o > 1 ) {

 / / Hacer u n dob le- f l i p

...

}

e lse {

r e t u r n f a lse ; / / Ex p l i ca r p o r q u é

}

9.5 … Comentarios

Page 257: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 257/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 5 7

}

i n t l ev e l; / / n i v el d e i n d en ci ó n

i n t s iz e; / / t a m a ñ o d e l a t a b la

es p re fe r ib le aes p re fe r ib le a

in t leve l , s ize ;

Donde las de f in im osDonde las de f in im os

v o id m y M et h o d ( ) {

i n t i n t 1 = 0 ; / / i n ici o d el m é t od o

i f ( d i i ) {

9.6 Declaración de Variables

Page 258: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 258/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 5 8

i f ( cond it i on ) {

i n t i n t 2 = 0 ; / / i n ici o d el b l oq u e " i f"

.. .

}

}

c lass Sam ple ex t ends Obj ec t {i n t i v a r 1 ;i n t i v a r 2 ;

Sam p le ( i n t i , i n t j ) {i v ar 1 = i ;i var 2 = j ;

}

i n t e m p t y Met h o d( ) { }

9.6 … Declaración de Variables

Page 259: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 259/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 5 9

...}

Los mLos m éé tod os son separados po r un a ltod os son separados po r un a l íínea en b lanco.nea en b lanco.

ar gv + + ; / / Co rr ect oa r gc- - ; / / Co r r ect oa r gv + + ; a r gc- - ; / / ELI M I N AR!

r e t u r n ;r e tu rn m yD isk . si ze( ) ;re t u rn ( s i ze ? si ze : de fau l tSize) ;

i f ( cond i t i on  ) {s t a t e m e n t s  ;

} e lse if ( cond i t i on  ) {s t a t e m e n t s  ;

} e lse {s t a t e m e n t s  ;

}

9.7 Estructuras

Page 260: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 260/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 6 0

}

f o r ( i n ic ia l i zac ion ; cond ic ión  ; acción ) {s t a t e m e n t s  ;

}

w h i le ( cond ic ión  ) {s t a t e m e n t s  ;

}

sw i t ch ( cond ic ión  ) {caso ABC:

s t a t e m e n t s  ; / * b r eak * / 

caso DEF:s t a t e m e n t s  ;b reak ;

caso XYZ:s t a t e m e n t s  ;

b reak ;

9.7.1 Declaración de Estructuras

Page 261: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 261/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 6 1

b reak ;

de fau l t :s t a t e m e n t s  ;b reak ;

}

Una línea en blanco debe ser siempre usada bajo las siguientescircunstancias:

Entre métodos.

Entre variables locales en un método y su primera declaración.

Antes de un bloque o una línea simple de comentario.

Entre secciones lógicas dentro de un método que mejoran sucomprensión.

9.8 Manipulación de Ejemplo

Page 262: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 262/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 6 2

Las líneas en blanco mejoran la lectura y entendimiento separandosecciones de código que están lógicamente relacionadas.

Dos líneas en blanco se utilizan en las siguientes circunstancias

Entre secciones de un fichero fuente.

Entre definiciones de clases o interfases.

9.8 … Manipulación de Ejemplo

Page 263: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 263/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 6 3

Tipo de

I dent i f icadorReglas para la Nomenclatur a Ejem plos

PAQUETES

El prefijo para el nombre de un únicopaquete se escribe siempre enminúsculas y código ASCII y suele usar

nomenclaturas como com, edu, gov, mil,net, org, o uno de los códigos ingleses dedos dígitos identificando países como seespecifica en la ISO Standard 3166,1981.Los siguientes componentes del paquetevarían según la organización internausada para la nomenclatura. Dichasconvenciones deben definir conceptos

como nombre del directorio,departamento proyecto máquina

com.sun.engcom.apple.quicktime.v2edu.cmu.cs.bovik.cheese

9.9 Nomenclaturas

Page 264: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 264/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 6 4

departamento, proyecto, máquina...

CLASES

La nomenclatura usada en las clasessuelen ser nombres, con la primera letradel nombre en mayúscula. Se debe tratarde mantener definiciones de clases lo mássimples y descriptibles. Usar palabrascompletas. Eliminar abreviaturas y siglas,a no ser que haga la definición másentendible.

class Raster;class ImageSprite;

Tipo deIden t i f i cado r

Reglas para la Nom encla tur a Ejem plos  I NTERFASES

La nomenc l a tu ra de i n t e r fases sue l e usa r l al e t ra i n i c i a l en mayú scu l a com o l a de f i n i c i ónde c lases.

i n te r faceRasterDelegate ;i n te r face Sto r i n g ;

MÉTODOS

Para l a nom enc la tu r a de mé t odos sue lenusa rse ve rbos , con l a p r i m era l e t ra enm i núscu l a , y l a l e t ra i n i c ia l de l a segundapa l ab ra en m ayúscu l a .

r u n ( ) ;r u n F a s t ( ) ;g e t B a c k g r o u n d ( ) ;

VARI ABLES

Excepto par a var iab les , to das las ins t anc ias , y

l as cons tan t es son de f i n i das con l a p r i m eral e t ra en m i núscu l a. Las pa lab ras i n te rnasemp i ezan en mayú scu l a . Los nom bres deva r i ab l es no debe r ían em pezar con unde rsco re

 _ o co n e l s ím bo lo d ó lar $ , au n qu e est ép e r m i t i d o .Los nombres de va r i ab l es debe r ían se r co r t ospara su uso. La e lecc ión de l nom bre sue le serm nem ón i co – el nomb re de l a va r i ab le i nd i capara qu e será usada. Var iab les def in idas conun so l o ca rácte r deben se r e l i m i nadas excep tos i es pa ra un uso casua l y re l a t i vamen te co r t o .Nombr es com unes pa ra es tas va r i ab l estem pora l es son i j k m y n para en te ros ; c d

i n t i ;char c ;f l o a t m y W i d t h ;

9.9 … Nomenclaturas

Page 265: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 265/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 6 5

t em pora l es son i , j , k , m , y n pa ra en te ros ; c , d ,y e para carac teres .

CONSTANTES

Las cons tan tes de una c lase son def in idas enm ayúscu las con las pa labras separadas porunde rsco res ( " _ " ) . (Cons tan tes ANSI debe r íanse r e l i m i nadas , pa ra fac i l i t a r l a depu rac i ón . )

s ta t i c f i na l i n tM I N _ W I D TH = 4 ;s ta t i c f i na l i n tMAX_WI DTH =9 9 9 ;s ta t i c f i na l i n tGET_THE_CPU = 1;

 / *

* @( # ) B l ah .j a v a 1 . 82 9 9 / 0 3 / 1 8

*

* Co p y r i g h t ( c ) 1 9 9 4 - 1 9 9 9 S u n M i c r os y st e m s , I n c .

* 901 San Ant on io Road, Pa lo Al to , Ca l i fo rn ia , 9430 3, U .S.A.

* A l l r i gh ts r ese r v ed .

*

* Es te s o f tw a r e es con f i denc ia l y l a i n fo r m ac ión es p r op iedad de Sun

* M i cr o s ys t e m s , I n c . ( " C o n f id e n t i a l I n f o r m a t i o n " ) .

* / 

pac k age j av a .b lah ;

impo r t j av a .b lah .b lahdy .B lahB lah ;

9.10 Prácticas de Programación

Page 266: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 266/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 6 6

 / * *

* La descr ipc ión de la c lase se s i tua aqu í  

*

* @v e r s ion 1 . 8 2 1 8 M a r 1 9 9 9  

* @a u t h o r Fi r s t nam e Last nam e  

* / 

pub l ic c lass Blah ex t ends SomeClass { / * Com en t ar io ace r ca d e l a im p lem en t aci ón d e l a cl ase p u ede i r aq u í* / 

 / * * cl ass Var 1 Com en t ar io d e docu m en t aci ón * / pub l ic s ta t ic in t c lassVar1 ;

 / * ** c l ass Var 2 C om en ta r i o de doc umen t ac ión que* oc upa más de una l ínea* / 

p r i v a te s ta t i c Ob jec t c l ass Var 2 ;

 / * * in st an ce Var 1 Com en t ar io d e d ocu m en t aci ón * / pub l i c Ob jec t i ns tanc eVa r 1 ;

 / * * in st an ce Var 2 Com en t ar io d e d ocu m en t aci ón * / p r o tec ted i n t i ns tanc eVa r 2 ;

 / * * in st an ce Var 3 Com en t ar io d e d ocu m en t aci ón * / 

p r i v a te Ob jec t [ ] i n s tanc eVa r 3 ;

9.10 … Prácticas de Programación

Page 267: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 267/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 6 7

 / * ** . . .c ons t r uc to r B lah Comen t a r i o de doc umen t ac ión . . .* / 

pub l i c Blah ( ) { / / .. .l a im p lem en t aci ón se em p ieza aq u í. ..

}

 / * ** . ..me th od doSom e th ing Comen t a r i o de doc umen t ac ión* / 

pub l i c v o id doSom e th ing ( ) {

 / / . .. la im p lem en t aci ón se em p ieza aqu í. ..}

 / * ** . ..me th od doSom e th ingE lse Comen t a r i o de docum en t .* @par am s om ePar am des c r i p t i on* / 

pub l i c v o id doSom e th ingE lse ( Ob jec t s omePar am) { / / . .. la im p lem en t aci ón se em p ieza aqu í. ..

}}

9.10 ... Prácticas de Programación

Page 268: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 268/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 6 8

El i n st r u ct o r r e al i za r á u n a e x p l i ca ci ó n d et a l l ad a d el e j e r ci ci o area l i za r :

El objetivo de este ejercicio es el de revisar todos los archivos java quese han generado a lo largo de la capacitación y verificar que en cadauno de ellos se cumplan los estándares establecidos anteriormente.

9.11 Ejercicio Práctico

Page 269: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 269/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 6 9

1010Manejo deManejo de

E iE i

Page 270: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 270/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 7 0

ExcepcionesExcepciones

2. Entorno de Desarrollo Integrado

2. Entorno de Desarrollo Integrado

3. El Lenguaje Java

3. El Lenguaje Java

4. Tipos de Datos y Operadores

4. Tipos de Datos y Operadores

5. Control de Flujo

5. Control de Flujo

1. Introducción a Java

1. Introducción a Java

6 C Bá i J

6 Conceptos Básicos en Java

10. Manejo de Excepciones

Page 271: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 271/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 7 1

6. Conceptos Básicos en Java6. Conceptos Básicos en Java

7. Trabajando con Clases7. Trabajando con Clases

8. Utilización de Interfaces

8. Utilización de Interfaces

9. Estándares de Desarrollo

9. Estándares de Desarrollo

10. Manejo de Excepciones

10. Manejo de Excepciones

11. Utilizando Cadenas, Arreglos y Colecciones

11. Utilizando Cadenas, Arreglos y Colecciones

12. Clases en Java

12. Clases en Java

13 S i

13 Swing

10. Manejo de Excepciones

Page 272: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 272/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 7 2

13. Swing13. Swing

AnexoAnexo

Objetivos

Entender la importancia del uso de lasexcepciones.

Definir, implementar y crear ejercicios, dondese ponga en práctica el uso de excepciones,

esto con el fin de que se pueda adquirir unsólido entendimiento sobre el tema

Page 273: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 273/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 7 3

esto con el fin de que se pueda adquirir unsólido entendimiento sobre el tema.

Una excepción es un evento que ocurre durante la ejecución de un programay detiene el flujo normal de la secuencia de instrucciones del programa.

Las excepciones en Java están destinadas para la detención y corrección deerrores.

10 Excepciones en Java

Page 274: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 274/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 7 4

Todas las excepciones y errores extienden de la clase ThrowableThrowable

10.1 Excepciones y Errores

Throwable

Error Exception

Page 275: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 275/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 7 5

RuntimeException

t r y {

 / / ca l l t h e m et h od}cat ch ( excep t i on1 ) { / / h an d le ex cep t ion 1

}cat ch ( excep t i on2 ) { / / h an d le ex cep t ion 2

} …f ina l l y { / / an y f in al p r ocessin g

}

i n t va l o r ;

St r i ng en t r ada = ge tQtyFrom Form ( ) ;t r y {

/ / Migh t t h r ow Nu m ber Fo r m at Ex cep t ion

10.2 Manejo de Excepciones

Page 276: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 276/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 7 6

 / / Migh t t h r ow Nu m ber Fo r m at Ex cep t ionv a lo r = I n t e g er . pa r se I n t ( e n t r a da ) ;

}cat ch ( Num be rFo rm a tExcep t i on e ) { / / Hand le t he ex cep t ion

} / / I f n o ex cep t ion s w er e t h r ow n , w e en d u p h er e

t r y { / / Migh t t h r ow Mal f o r m ed URLEx cep t ionURL u = new URL( s t r ) ;

 / / Migh t t h r ow I OEx cep t ionURLConnec t ion c = u .openConnec t ion ( ) ;

}catch ( Ma lfo rm edURLExcep t ion e ) {

Sys tem .e r r .p r i n t l n ( " Cou ld no t open URL: " + e ) ;}

ca t ch ( I OExcep t i on e ) {Sys tem .e r r .p r i n t l n ( " Cou ld no t connect : " + e ) ;}

10.3 Capturando múltiples Excepciones

Page 277: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 277/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 7 7

}

vo id m akeConnect i on ( St r i ng u r l ) {t r y {

URL u = new URL( u r l ) ;}

catch ( Ma l fo rm edURLExcep t ion e ) {Sy st e m .o u t .p r i n t l n ( " I n v a li d URL: " + u r l ) ;r e t u r n ;

}f i na l l y {

Sys tem .ou t . p r i n t l n ( " Fina ll y b lock " ) ;

}Sys tem .ou t . p r i n t l n ( " Ex i t i ng m akeConnect i on " ) ;

}

10.4 Palabra Reservada Finally

Page 278: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 278/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 7 8

}

pub l i c i n t m e todoDem o( ) t h row s Excep t i on {…..

}

pub l i c St r i ng p ru ebaExcep t i on ( i n t con tado r ) t h r ow s Excep t i on {i f ( co n t ad o r < 0 ) {

t h r o w n ew Ex cep t i on ( ) ;} e l se {

t h row new Excep t i on ( “ El Con tado r es m ayo r que ce ro ” ) ;

10.5 Generando Exepciones - throws

Page 279: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 279/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 7 9

}…

}

 / * ** I nd i ca que se ha p rocuc i do a l gún t i po de i nc i denc i a a l acceder a l os da t os .* @auth or EFI BS SA* @vers i on 1 . 0

* / pub l i c c lass Serv iceExcept ion ex ten ds Except ion {

pub l i c sta t i c f i na l i n t ERROR_NO_DEFI NI DO = -99 9;

p r i va t e i n t codeEr ro r = 0 ;

pub l i c Se rv i ceExcep t i on ( ) {

s u p e r ( ) ;s u p e r ( ) ;codeErr or = ERROR_NO_DEFI NI DO;

}

pub l i c Serv iceExcept ion( in t codeError , S t r ing message) {

supe r (message ) ;supe r (message ) ;t h i s . codeEr ro r = codeEr ro r ;

}

 / * *

* Ob t i ene e l cód i go asoc i ado a l e r ro r .

10.6 Creación de Excepciones Propias

Page 280: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 280/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 8 0

Obt e e e cód go asoc ado a e o* @re t u r n Cód i go de e r ro r .* / 

pub l i c i n t ge t CodeEr ro r ( ) {

r e t u r n codeEr ro r ;}

}

El i n st r u ct o r r e al i za r á u n a e x p l i ca ci ó n d e t a ll ad a d el e j e r ci ci o area l i za r :

Cree un paquete llamado:

org .e f ibs .s is temaDeOrdenes.Exepc iones

El objetivo de este ejercicio es el de crear una Excepción llamadaOrderException.java. Esta excepción deberá ser lanzada en caso de queuna Orden no contenga ítems y además deberá ser capturada por el

método que la invoca e imprimir en consola el valor del mensajeenviado.

10.7 Ejercicio Práctico

Page 281: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 281/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 8 1

1111

Utilizando Cadenas,Utilizando Cadenas,Arreglos y ColeccionesArreglos y Colecciones

Page 282: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 282/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 8 2

2. Entorno de Desarrollo Integrado

2. Entorno de Desarrollo Integrado

3. El Lenguaje Java

3. El Lenguaje Java

4. Tipos de Datos y Operadores

4. Tipos de Datos y Operadores

5. Control de Flujo

5. Control de Flujo

1. Introducción a Java

1. Introducción a Java

6. Conceptos Básicos en Java

6. Conceptos Básicos en Java

11. Utilizando Cadenas,Arreglosy Colecciones

Page 283: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 283/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 8 3

7. Trabajando con Clases7. Trabajando con Clases

8. Utilización de Interfaces

8. Utilización de Interfaces

9. Estándares de Desarrollo

9. Estándares de Desarrollo

10. Manejo de Excepciones

10. Manejo de Excepciones

11. Utilizando Cadenas, Arreglos y Colecciones

11. Utilizando Cadenas, Arreglos y Colecciones

12. Clases en Java

12. Clases en Java

13. Swing

13. Swing

11. Utilizando Cadenas,Arreglosy Colecciones

Page 284: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 284/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 8 4

AnexoAnexo

Objetivos

Entender la importancia del uso del de losarreglos y de las cadenas o Strings.

Definir, implementar y crear ejercicios, dondese ponga en práctica el uso vectores y

cadenas, esto con el fin de que se puedaadquirir un sólido entendimiento sobre el tema.

Page 285: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 285/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 8 5

El String es una clase de Java.

Es una secuencia de caracteres.

La clase String representa a todas las cadenas en Java.

Sys tem .ou t . p r i n t l n ( “ Ho la Mundo . .." ) ;

St r i n g st r = " A ct i o n " ;

11.1 Qué es un String?

Page 286: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 286/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 8 6

Asignado doble comilla a la variable constante del String.

Concatenando otra Cadena, utilizando el ope rado r +

Utilizando el Constructor

St r i n g c at e g o r y = " A ct i o n " ;

St r i n g em p Na m e = f i r st N am e + " " + l ast N am e ;

St r i n g e m p N a m e = n e w St r i n g ( " Jo e Sm i t h " ) ;

11.2 Creación de un String?

Page 287: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 287/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 8 7

La clase String proporciona varios constructores, a continuación sepresentan algunos de los constructores más utilizados:

S t r i n g ( ) ;

St r i n g ( St r i n g va l u e ) ;

St r i n g ( c h a r v a lu e [ ] ) ;

St r i n g ( ch ar va l u e [ ] , in t o f f se t ,i n t co u n t ) ;

St r i n g ( b y te b y te s [ ] , in t o f f se t ,i n t l e n g th ) ;

St r i n g ( b y te b y t e s[ ] , in t o f f set , i n t l e n g th ,St r i n g e n c ) ;

St r i n g ( b y t e b y t es [ ] ) ;

11.3 Constructores de un String?

Page 288: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 288/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 8 8

g ( y y [ ] )

St r i n g ( b y te b y te s [ ] ,St r i n g e n c ) ;

St r i n g ( St r i n g Bu f f e r b u f f e r ) ;

Java utiliza el operador + para concatenar cadenas (String) El método co n ca t ( ) pertenece a la clase String y es otra manera de

concatenar Strings

A continuación se presenta ejemplares de códigos equivalentes:

St r i n g n o m b r e = " Sa m W o n g" ;

St r i ng n om b r e = " Sa m " + " W o n g" ;

St r i n g n o m b r e = " Sa m " .co n ca t ( " W o n g " ) ;

11.4 Concatenación de String

Page 289: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 289/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 8 9

Los tipos de datos primitivos se pueden concatenar con un String.

Los tipos de datos primitivos son implícitamente convertidos a String.

Para concatenar múltiples líneas se debe de realizar de la siguientemanera:

11.4 … Concatenación de String

St r ing concatenar =“ Est e ej e m p lo m u e st r a co m o " + " \ n " +“ se p u ed en co n ca t en ar " + " \ n " +

“ m u l t ip le s Li n ea s en JA VA " + " \ n " ;

Page 290: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 290/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 9 0

Obtener el tamaño de un String

Localizar un carácter con un índice especifico.

Retornar el substring de un String.

i n t l en g t h ( ) ; St r i n g st r = " Co m e d y " ;i n t l en = st r . le n g t h ( ) ;

char cha rA t ( i n t i ndex ) ; St r i n g st r = " Co m e d y " ;ch a r c = st r . ch a r At ( 1 ) ;

St r ing subs t r ing

11.5 Operaciones con String

Page 291: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 291/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 9 1

( i n t i nd i ceI n i ci o ,in t i nd iceFina l ) ;

 / / el I n d iceFin al es igu al

I nd iceFina l -1

St r i n g st r = " Co m e d y " ;St r ing sub =

s t r . subs t r i ng (2 ,4 ) ;

Convertir a mayúscula o minúscula:

Eliminar espacios:

Localizar el índice de un String:

St r ing t oUpperCase( ) ;St r i ng t oLow erCase ( ) ;

St r in g caps =s t r . toUpperCase( ) ;

St r i n g t r i m ( ) ;

 / / En am bos lados St r in g nospaces =s t r . t r i m ( ) ;

i n t i ndexOf ( St r i ng st r ) ;i n t l a st I ndexOf

( St r i n g st r ) ;

St r i n g st r = “ Co m e n t a r i o ” ;

i n t i ndex =st r in dex Of ( " m e" ) ; / / 2

11.5 … Operaciones con String

Page 292: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 292/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 9 2

 / / De n o ex ist i r r e t o r n a - 1st r .in dex Of ( m e ) ; / / 2

i n t i ndex2 =st r .last I n dex Of ( “ o " ) ; / / 9

Utilización del método equa l s ( )

Utilización del método equa ls I gnor eCase( )

St r i n g c la v e = “ f g H PUw ” ;i f ( cl av e .e q u al s( " f g H PUw " ) ) … / / La s m a y ú scu l as so n

I m p o r t a n t e s

11.6 Comparar Strings

Page 293: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 293/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 9 3

St r i n g ca t = “ d r am a ” ;i f ( ca t . equa l sI gno reCase ( " D ram a" ) ) …

Es un método estático de la clase String que retorna larepresentación de un String en un tipo Primitivo.

Cuando un primitivo es concatenado a un String, automáticamentese invoca a St r ing .va lueOf ( )

St r i ng nueve = St r i ng .va lueOf ( 9 ) ;

St r i ng un oFloat = St r i ng .va lueOf ( 1 .0 f ) ;

i n t con tado r ;…Sys tem .ou t . p r i n t l n ( con tado r ) ;

11.7 Método Value Of 

Page 294: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 294/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 9 4

Convierte un objeto String a un entero primitivo.

St r ing can t idadVal =

campoCant .ge tTex t ( ) ;

St r ing pr ec ioVal =

campoPrec io .ge tTex t ( ) ;

i n t can t idad =

I n tege r .pa rseI n t ( can t i dadV al ) ;

1 7Quan t i t y :

425 .00Pr ice:

11.8 Método Parse Int

Page 295: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 295/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 9 5

f l oa t p r ecio =

F loat .parseFloat (prec ioVal ) ;

El siguiente ejemplo, muestra como crear un objeto String y copiartodos los caracteres al nuevo String es creado utilizando el ope rado r +

Una forma más eficiente y elegante es reservar la cantidad de espacio

utilizando la clase StringBuffer.

St r i ng cadena = “ Ejem p la r de " ;

cadena = cadena + “ concatena r cadenas" ;

St r i n g B u f f er c ad e n a = n e w St r i n g B u f f er ( 3 0 ) ; / / Re se r v a 3 0 ca r act e r e s

cadena .append ( " Ejem p la r de " ) ;

11.9 StringBuffer

Page 296: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 296/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 9 6

cadena .append ( Ejem p la r de ) ;

cadena .append( "conca tenar cadenas" ) ;

A continuación se muestra un ejemplo de cómo poder concatenar en unStringBuffer una cadena de forma inversa.

Una forma más eficiente y elegante puede ser la siguiente:

pub l i c St r i ng r eve rse I t ( St r i ng s ) {

St r i ngBu f fe r sb = new St r i ngBu f fe r ( ) ;

f or ( i n t i = s. l en g t h( ) - 1 ; i > = 0 ; i- - )

sb .append (s . cha rA t ( i ) ) ;r e tu rn sb .t oSt r i ng ( ) ;

}

pub l i c St r i ng r eve r se I t ( St r i ng s ) {

St r i ngBu f fer sb = new St r i ngBu f fer ( s ) ;

r e t u r n s b . r e v e r s e ( ) . t o S t r i n g ( ) ;

11.9 … StringBuffer

Page 297: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 297/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 9 7

e t u s b e e s e ( ) t o S t g ( ) ;

}

St r ingBuf fe r append( Ob jec t ob j ) ;

St r i n g Bu f f e r a p p en d ( St r i n g s t r ) ;

St r i n g Bu f f e r ap p e n d ( ch ar s t r [ ] ) ;

St r i n g Bu f f e r a p p en d ( ch ar s t r [ ] , in t o f f se t , in t l e n ) ;

St r ingBuf fe r append( boo lean b ) ;

St r i n g Bu f f e r a p p en d ( i n t i ) ;

St r i n g Bu f f e r a p p en d ( l o n g l ) ;

St r i n g Bu f f e r a p p en d ( f l o at f ) ;

St r i ngBuf fe r append( doub le d ) ;

St r ingBuf fe r append( char c ) ;

St r ingBuf fe r i nse r t ( i n t o f f se t ,Ob jec t ob j ) ;

St r i n g Bu f f e r i n ser t ( i n t o f f se t ,St r i n g s t r ) ;

St r i n g Bu f f e r i n se r t ( i n t o f f set , ch a r s t r [ ] ) ;

St r i ngBuf fe r i nse r t ( i n t o f f se t ,boo lean b ) ;

St r i n g Bu f f e r i n ser t ( i n t o f f se t ,i n t i ) ;

St r i ngBuf fe r i nse r t ( i n t o f f se t , l ong l ) ;

St r i ngBuf fe r i nse r t ( i n t o f f se t , f l oat f ) ;

11.9 … StringBuffer

Page 298: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 298/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 9 8

St r ingBuf fe r i nse r t ( i n t o f f se t ,doub le d ) ;

St r ingBuf fe r i nse r t ( i n t o f f se t ,char c ) ;

St r i n g s = n e w S t r i n g ( " Fr i d ay " ) ;

i f ( s = = " Fr i day " )

Sys tem .ou t . p r i n t l n ( " Equa l A " ) ;

i f ( s . equa l s ( "F r i day " ) )

Sys tem .ou t . p r i n t l n ( " Equa l B" ) ;

i n t n u m = 1 1 3 45 6 7 ;

Sys tem .ou t . p r i n t l n (S t r i ng . va lueOf (num ) . cha rA t (3 ) ) ;

11.10 Ejercicio Práctico

Pruebe los siguientes fragmentos de código:

Page 299: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 299/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.2 9 9

St r i n g s1 = " M on d a y " ;

St r i n g s 2 = " Tu e sd a y " ;

Sys tem .ou t . p r i n t l n ( s1 . conca t ( s2 ) . subs t r i ng (4 ,8 ) ) ;

St r i n g s3 = " M on d a y " ;Sy st e m .o u t . pr i n t l n ( s3 .i n d ex Of ( " d a y " ) ) ;

S y s t e m . o u t . p r i n t l n ( s 3 . t r i m ( ) . i n d e x O f ( " d a y " ) ) ;

11.10 … Ejercicio Práctico

Pruebe los siguientes fragmentos de código:

Page 300: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 300/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 0 0

Un arreglo es una colección de variables de un mismo tipo.

Cada elemento de un arreglo puede contener solo un ítem.

Los ítems pueden ser primitivos o objetos.

Un arreglo es un objeto, por lo tanto se crea con n ew

La declaración de un arreglo

crea una referencia

que se referiere a él. Orden

Cliente

[0]

[1]

11.10 … Ejercicio Práctico

Page 301: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 301/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 0 1

Producto[2]

Declarac ión : Crea la variable que se refiere al arreglo.

1 . t i p o  [ ] n om b r e;

2 . t i p o  n o m b r e [ ] ;n o m b r e

null

1 . in t [ ] n om br e;

2 . f loat n om br e[ ] ;

11.11 Creación de Arreglos

Page 302: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 302/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 0 2

Creación: Crea un objeto array, que requiere un tipo y un tamaño, yalmacena una referencia del arreglo en una variable array

n o m b r e = n ew

t i p o  [ size ] ;0

0

0n o m b re

i nt [ ] n om b r e ;

n o m b r e = n ew i n t [ 3 ] ;

11.11 … Creación de Arreglos

Page 303: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 303/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 0 3

Todos los elementos en un nuevo arreglo de primitivos son inicializadosautomáticamente con sus valores por defecto, como los siguientes:

Para elementos char son seteados ‘ \ u 00 00 ’

byte, short, int y long son seteados en 0

Elementos boo lean son seteados a fa lse

Elementos f l oa t y doub le son seteados a 0 .0

in t [ ] v ar ; / / Declar a u n a v ar iab le

a r ray

[0]

[1]

var

0

0

0

11.12 Inicialización por Defecto

Page 304: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 304/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 0 4

a r ray

v ar = n ew in t [ 4 ] ; / / Cr ea u n ob j et o ar r ay[2]

[3]

0

0

Asignando valores a elementos individualmente

Crear e inicializar elementos de un arreglo al mismo tiempo

i n t [ ] n u m Par es = { 2 , 3 , 5 , 7 } ;

t i p o  [ ] n o m A r r a y  = { Lis taValores  } ;

num Pares

[0]

[1]

[2]

2

3

5

n o m A r r a y  [ i nd i ce  ] = va lo r  ;

i t em s[ 0 ] = 1 ;

i t e m s

[0]

[1]

[2]

1

0

0

0 [3]

11.13 Inicializando - un arreglo

Page 305: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 305/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 0 5

7 [3]

Declarar el Arreglocategor ías

categor ías

Acción

D

categor ías

1 . ClassNam e[ ] ar r Var ;

2 . ClassNam e ar rVar [ ] ;

null

null

null

nullSt r i ng [ ] ca tego r ías;

ca t e go r ía s = n e w St r i n g [ 3 ] ;

 / / Lo an t er io r es igu al qu e:

St r i n g [ ] ca t e go r ía s = n e w

11.14 Arreglos - Objetos

Page 306: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 306/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 0 6

Drama

Música

S t r i n g [ 3 ] ;

St r i ng [ ] a rr = n ew St r i n g[ 4 ] ;

f o r ( i n t i = 0 ; i < ar r . l eng t h  ; i+ + ) {

a r r[ i ] = n ew St r i n g( ) ;

}

A continuación se presenta un ejemplo que crea un arreglo paracuatro Strings vacíos

Otro ejemplo, donde se visualiza el tamaño de uno de los

elementos del arreglo de tipo String es el siguiente:

St r ing  [ ] personas  = { “ A cc io n ” , “ Co m e d i a ” , “ D r a m a ”  } ;

11.15 Asignar valores - Arreglos

Page 307: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 307/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 0 7

Sy s t em .o u t . pr i n t l n ( “ El t a m a n n o e s: " + c at e g o r i es [ 2 ] .l e n g t h ( ) ) ;  

La siguiente Excepción: j av a.lan g .Ar r ay I n d ex Ou t Of Bou n d sEx cep t ion ocurre cuando uníndice del arreglo es invalido:

St r i ng [ ] l ist = n ew St r i n g[ 4 ] ;

S y s t e m . o u t . p r i n t l n ( l i s t [ 5 ] ) ;

11.16 Arreglos y Excepciones

Page 308: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 308/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 0 8

La clase Vector se encuentra localizada en el paquete  j av a.u t i l el cualse debe de importar por medio de la instrucción:

im po r t j ava .u t i l .Vecto r ;

La creación de un Vect or v ac ió se realiza de la siguiente manera:

La creación de un Vecto r con tamaño espec i f i co se realiza de lasiguiente manera:

Vecto r pe r sonas = new Vec to r ( ) ;

11.17 Vectores

Page 309: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 309/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 0 9

Vec to r per sonas = new Vec to r ( 20 ) ;

Agregar un elemento al final del Vector

Agregar un elemento al Vector especificando una posición

Eliminar un elemento del Vector por medio de un índice

St r i n g n o m b r e = “ Jo sé A nd r es”

pe rsonas .addE lem en t (nom bre ) ;

pe r sonas.i nser t Elem en tA t ( nom bre , 0 ) ;

11.18 Modificando un vector

Page 310: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 310/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 1 0

pe rsonas . r em oveE lem en tA t (0 ) ;

Obtener el primer elemento del Vector

Obtener un elemento en una posición especifica

Localizar un objeto en un Vector

Obtener el tamaño de un Vector

St r i ng s = ( St r i ng ) pe r sonas.f i r s tElem en t ( ) ;

i n t t am anno = pe r sonas. si ze ( ) ;

St r i ng s = ( St r i ng ) pe r sonas.elem en tA t ( 2 ) ;

i n t posi ci on = pe r sonas.i ndexOf ( nam e) ;

11.19 Otros métodos de un vector

Page 311: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 311/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 1 1

Vec to r ve cto r = n e w Ve cto r ( ) ;

v e ct o r .a d d( n e w I n t e ge r ( " 2 5 " ) ) ;

i f ( vec to r . f i r s tE lement ( ) i ns tanceo f S t r ing ) {

System .ou t .p r in t l n ( " ES STRI NG" ) ;} e l se if ( vecto r . f i r s tElemen t ( ) i n s tanceo f I n tege r ) {

System .ou t .p r in t l n ( " ES ENTERO" ) ;

}

V ec t or v = n e w V e ct o r ( ) ;

v . a d d ( “Acc i o n " ) ;

v .a d d( n e w I n t e g er ( 1 ) ) ;

i f ( v .el emen tA t ( 0 ) i n stanceo f St r i ng )

Sys te m.o u t . p r i n t l n ( " SI STRI NG" ) ;

i f ( v elemen tA t ( 1 ) i ns tanceo f I n tege r )

11.20 elementAt - FirstElement

Page 312: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 312/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 1 2

i f ( v .el emen tA t ( 1 ) i n s tanceo f I n tege r )

System .ou t .p r in t l n ( " SI ENTERO" ) ;

im po r t j a va .u t i l .Vecto r ;

im po r t j a va .u t i l .Enum era t i on ;

:

V ect o r v = n e w Ve ct o r ( ) ;

v . addE lem en t ( “Vannesa " ) ;

v . addE lem en t ( “ José " ) ;

v . a d d E l e m e n t ( “ M a r y " ) ;

f o r ( Enum era t i on e = v .el em en ts ( ) ; e .hasM oreElem en ts ( ) ; )

{

St r i n g s = ( St r i n g ) e .n e x t El em e n t ( ) ;

Sys tem out p r in t ln (s toUpperCase( ) ) ;

11.21 Recorrer un Vector

Page 313: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 313/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 1 3

Sys tem.ou t .p r in t ln (s . toUpperCase( ) ) ;

}

Desde la clase admClientes.java, cree una variable de instanciadenominada listaCliente de tipo Vector.

Cree los correspondientes métodos set/get para la variable listaCliente.

Cree un nuevo método sobre esta misma clase llamado cargarC l ien te,el cual recibirá como parámetro un Objeto de tipo Cliente.

11.22 Colecciones

Page 314: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 314/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 1 4

Las colecciones son una de las cosas más importantes que se hanaportado a la plataforma Java desde la presentación de la versión 1.2del JDK y ayudaron enormemente a llevar a Java a la primera línea delos lenguajes de presentación.

Una colección es un grupo de elementos individuales, siempre conalguna regla que se les pueda aplicar.

Se redimensionan automáticamente por lo que se puede colocar en ellascualquier número de objetos

11.22 … Colecciones

Page 315: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 315/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 1 5

Entre las colecciones se encuentran:

Map, List, Set

Entre los métodos mas habituales se encuentran:

add ( Objec t  ) ; c l e a r ( ) ;

con ta ins ( Objec t  ) ;

i s E m p t y ( ) ;

i t e r a t o r ( ) ; s i z e ( ) ;

11.22 … Colecciones

Page 316: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 316/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 1 6

Los principales métodos de las colecciones son los siguientes:

11.22 … Colecciones

b o o lea n a d d ( Ob j e ct )Asegura que la colección contiene el argumento.Devuelve false si no se puede añadir el argumento a la colección.

boo lean addA l l ( Co l lect ion )Añade todos los elementos que se pasan en el argumento.Devuelve true si es capaz de incorporar a la colección cualquiera delos elementos del argumento.

vo id c le ar ( )Elimina todos los elementos que componen la colección.

Page 317: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 317/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 1 7

11.22 … Colecciones

boo lean con t a ins ( Ob jec t )Devuelve True, si la colección contiene el argumento que se pasacomo parámetro.

b o o lea n i sEm p ty ( )Devuelve true, si la colección está vacía, no contiene elemento alguno.

I t e r at o r i t er a t or ( )

Devuelve un I t e r a t o r que se puede utilizar para desplazamientosa través de los elementos que componen la colección

Page 318: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 318/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 1 8

11.22 … Colecciones

b o ol ea n r e m o v e ( Ob j e ct )Si el argumento está en la colección, se elimina una instancia deese elemento y se devuelve true si se ha conseguido

boo lean rem oveA l l ( Co l lect ion )Elimina todos los elementos que están contenidos en el argumento.Devuelve true si consigue eliminar cualquiera de ellos

boo lean re t a inA l l ( Co l lect ion )

Mantiene solamente los elementos que están contenidos en elargumento, es lo que sería una intersección en la teoría de conjuntos.Devuelve verdadero en caso de que se produzca algún cambio.

Page 319: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 319/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 1 9

11.22 … Colecciones

i n t s ize( )

Devuelve el número de elementos que componen la colección

Ob j ect [ ] t o Ar r a y( )

Devuelve un array conteniendo todos los elementos que forman parte dela colección. Este es un método opcional, lo cual significa que no estáimplementado para una Col lect ion determinada.

Si no puede devolver el array, lanzará una excepción de tipo Unsuppor tedOpera t ionExcep t ion .

Page 320: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 320/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 2 0

11.22 … Colecciones

Page 321: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 321/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 2 1

En la versión 5.0, se ha variado la forma en que se trabajan los tipos dedatos y también, la forma en que se acceden los elementos de lascolecciones, por ejemplo:

11.22 … Colecciones

private void i t e r a r Co l ecci o n I t e r a t o r ( Li st < St r i n g > l i st a ) {Iterator iterator1 = lista.

i t e r a t o r ( );

while (iterator1.h a s N e x t ( ) ){System.out.println(iterator1.next());

}}

private void i t e ra rCo leccionForeach( List < St r in g> l i st a ) {for (String str1 : lista){System.out.println(str1);

}}

Page 322: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 322/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 2 2

}

Tipos GenéricosUso del for each

Otros ejemplos son los siguientes:

11.22 … Colecciones

Hasta Java 1.4 para iterar por una colección o array hacíamos losiguiente:

 // numbers es una lista de números

for (Iterator it = numbers.iterator(); it.hasNext(); ){Integer number = (Integer) it.next();

 // Hacer algo con el número...}

Lo mismo en Java 5 puede hacerse del siguiente modo:for(Integer number: numbers){

 // Se hace algo con el número...}

Page 323: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 323/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 2 3

}

11.23 Listas

Li st ( i n t e r f a z)

La Lista incorpora una serie de métodos a la Colección que permitenla inserción y borrar de elementos en medio de la Lista.

Ar rayL is t  

Es una Lista volcada en un Array. Se debe utilizar en lugar de Vector comoalmacenamiento de objetos de propósito general. Permite un accesoaleatorio muy rápido a los elementos, pero realiza con bastante lentitudlas operaciones de insertado y borrado de elementos en medio de la Lista.

Page 324: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 324/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 2 4

11.23 … Listas

L inkedL is t  

Proporciona un óptimo acceso secuencial, permitiendo inserciones y

borrado de elementos de en medio de la Lista muy rápidas.Sin embargo es bastante lento el acceso aleatorio, en comparación conel ArrayL is t . Dispone además de los métodos addLast(), getFirst(),getLast() , removeFirst() y removeLast(), que no están definidos enningún interfaz o clase base y que permiten utilizar laLista Enlazada como una Pila, una Cola o una Cola Doble.

Page 325: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 325/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 2 5

11.24 Sets

Se t ( i n t e r f a z)

Cada elemento que se añada a un Se t debe ser único, ya que el otro caso

no se añadirá porque el Se t no permite almacenar elementos duplicados.Los elementos incorporados al Conjunto deben tener definido elmétodo equals(), en aras de establecer comparaciones para eliminarduplicados. Se t tiene la mismo interfaz que Col lect ion , y no garantizael orden en que se encuentren almacenados los objetos que contenga.

HashSet 

Es la elección más habitual, excepto en Sets que sean muy pequeños.Debe tener definido el método hashCode() .

Page 326: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 326/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 2 6

11.24 … Sets

ArraySet  

Un Se t encajonado en un Ar ray . Esto es útil para Sets muy pequeños,especialmente aquellos que son creados y destruidos con frecuencia.Para estos pequeños Sets, la creación e iteración consume muchos menosrecursos que en el caso del HashSet . Sin embargo, el rendimiento es muymalo en el caso de Sets con gran cantidad de elementos.

TreeSet 

Es un Se t ordenado, almacenado en un árbol balanceado. En este caso esmuy fácil extraer una secuencia ordenada a partir de un Se t de este tipo.

Page 327: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 327/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 2 7

11.25 Mapas

Ma p ( i n t e r f a z)

Mantiene las asociaciones de pares clave-valor, de forma que se puedeencontrar cualquier valor a partir de la clave correspondiente.

HashMap 

Es una implementación basada en una tabla hash. Proporciona unrendimiento muy constante a la hora de insertar y localizar cualquierpareja de valores;aunque este rendimiento se puede ajustar a través de los constructores quepermite fijar la capacidad y el factor de carga de la tabla hash.

Ar ra yMa p  Es un Mapa circunscrito en un Ar ray . Proporciona un control muy precisosobre el orden de iteración. Está diseñado para su utilización con Mapasmuy pequeños, especialmente con aquellos que se crean y destruyen muy

Page 328: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 328/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 2 8

frecuentemente.

11.25 … Mapas

TreeMap 

Es una implementación basada en un árbol balanceado. Cuando se observanlas claves o los valores, Se comprueba que están colocados en un ordenconcreto, determinado por Comparab le o Compara to r , que ya se verán.Lo importante de un TreeMap es que se pueden recuperar los elementos enun determinado orden.

TreeMap

Es el único mapa que define el método subMap(), que permite recuperaruna parte del árbol solamente.

Page 329: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 329/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 2 9

El instructor realizará una explicación detallada del ejercicio a realizar:

Cree un paquete llamado:

org .ef ibs .s i st em aDeOrd enes.Adm in is t r adorDeCl ien tes

Cree una clase llamada AdminClientes en el paquete anterior.

En la clase AdminClientes.java, cree una variable de instancialistaClientes de tipo Vector y defínala como de tipo Cliente

Cree los correspondientes métodos set/get para la variable listaClientes.

El método set, servirá para asignar un objeto de tipo Cliente, mientrasque get servirá para obtener un objeto de tipo cliente en una posicióndada, la cual no podrá ser menor a CERO ni mayor a la cantidad deelementos del vector

11.26 Ejercicio Práctico

Page 330: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 330/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 3 0

elementos del vector.

Desde Pr inc ipa l . j ava, invoque al método set , al menos cuatro veces,enviándole como parámetro una instancia del Cliente utilizando elconstructor del mismo, de la siguiente manera:

Adm inCl ien tes losCl ien tes = new Adm inCl ien tes ( ) ;

l osCl ien tes .setCl ien te ( new Cl ien te ( 1 , “ Ram on Monge" , " San Jose" , " 280 -802 4" ) ) ;

l o sCl i en tes . setCl i en te ( new Cl i en te ( 2 , “ Lu i s D íaz" , "Ca r tago " , " 38 6 -2424 " ) ) ;

l o sCl i en tes . se tCl i en te ( new Cl i en te ( 3 , “ Fe rnando Mo ra " , " Espana " , " 00340001 133232 " ) ) ;

l osCl ien tes . se tCl ien te ( new Cl ien te ( 4 , “ Car los Mi randa" , " Car t ago" , " 320 -432 3" ) ) ;

11.26 … Ejercicio Práctico

Page 331: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 331/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 3 1

Modifique o sobrescriba el método toString() de la clase Clienteutilizando la clase StringBuffer para retornar toda la información delcliente. Nota: Para los campos o variables de tipo cadena transfórmelas

a mayúsculas y sin espacios en ninguno de los extremos.

Cree un método en la clase AdminClientes llamado can t idadCl ien tes ( )que retorne el tamaño del Vector, puede utilizar el método size.

11.26 … Ejercicio Práctico

Page 332: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 332/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 3 2

Basado en los dos puntos anteriores, muestre la información con elmétodo toString de cada uno de los Clientes existentes. Recuerdeutilizar el método cant idadCl ien tes previamente creado, para conocerel limite del Vector a recorrer.

Implemente los métodos de busqueda de un cliente en particularbasado en su id, el cual retorne la posición en la que se encontró. Si nolo encontró devolver -1.

Implemente un método para eliminar un cliente (lleve a cabo las

validaciones necesarias).

Pruebe cada uno de los métodos de la instancia de AdminClientes paraver que funcionen adecuadamente.

11.26 … Ejercicio Práctico

Page 333: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 333/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 3 3

Finalmente, en el mismo Pr inc ipa l . j ava, cree una instancia de Orden yasignele cinco ItemOrden. Utilice el constructor sobre cargado y hagauso del método toString para desplegar la información. Muestre lainformación de los ItemOrden de la Orden que a caba de crear.

11.26 … Ejercicio Práctico

Page 334: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 334/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 3 4

1212Clases JavaClases Java

Page 335: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 335/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 3 5

2. Entorno de Desarrollo Integrado

2. Entorno de Desarrollo Integrado

3. El Lenguaje Java

3. El Lenguaje Java

4. Tipos de Datos y Operadores

4. Tipos de Datos y Operadores

5. Control de Flujo

5. Control de Flujo

1. Introducción a Java

1. Introducción a Java

6. Conceptos Básicos en Java

6. Conceptos Básicos en Java

7. Trabajando con Clases

7. Trabajando con Clases

12. Clases en Java

Page 336: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 336/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 3 6

8. Utilización de Interfaces

8. Utilización de Interfaces

9. Estándares de Desarrollo

9. Estándares de Desarrollo

10. Manejo de Excepciones

10. Manejo de Excepciones

11. Utilizando Cadenas, Arreglos y Colecciones

11. Utilizando Cadenas, Arreglos y Colecciones

12. Clases en Java

12. Clases en Java

13. Swing

13. Swing

Anexo

Anexo

12. Clases en Java

Page 337: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 337/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 3 7

Objetivos

Estudiar algunas de las clases más importantesdel lenguaje.

Enseñar al estudiante como obtener el máximoprovecho de los APIS.

Analizar la diferencia entre una clase Java yuna clase hecha por el usuario.

Page 338: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 338/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 3 8

La clase Math representa la librería matemática de Java.

Las funciones que contiene son las de todos los lenguajes, parece quese han metido en una clase solamente a propósito de agrupación, poreso se encapsulan en Math, y lo mismo sucede con las demás clasesque corresponden a objetos que tienen un tipo equivalente (Character,Float, etc.).

El constructor de la clase es privado, por los que no se pueden crearinstancias de la clase. Sin embargo, Math es public para que se puedallamar desde cualquier sitio y static para que no haya que inicializarla.

Se encuentra disponible en el p aq u et e j a v a.m at h

A continuación se presentan una tabla con algunas de lasf un c ionesm atem at i cas de la clase Mat h

12.1 Clase Math

Page 339: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 339/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 3 9

En la versión 5.0 los siguientes son los cambios:

Se da mayor precisión en cuanto al punto flotante en la claseBigDecimal.

Tanto la biblioteca Math como StrictMath funciones con capacidadeshiperbólicas (sinh, cosh, tanh), raíz cúbica y algoritmo en base 10.

Un soporte para punto flotante hexadecimal.

Métodos de precisión de punto flotante, tanto en Float como enDouble.

12.1 … Clase Math

http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html#math

Page 340: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 340/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 4 0

ú á

devuelve la raíz cuadrada de xMath.sqrt( double x )

devuelve el logaritmo natural de xMath.log( double x )

devuelve e elevado a xMath.exp( double x )

devuelve el ángulo cuya tangente es a/bMath.atan2(doublea,double b)

devuelve el ángulo cuya tangente es rMath.atan( double r )

devuelve el ángulo cuyo coseno es rMath.acos( double r ) devuelve el ángulo cuyo seno es rMath.asin( double r )

devuelve la tangente del ángulo a en radianesMath.tan( double a )

devuelve el coseno del ángulo a en radianesMath.cos( double a )

devuelve el seno del ángulo a en radianesMath.sin( double a )para int, long, float y doubleMath.abs( x )

12.2 Funciones de la Clase Math

Page 341: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 341/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 4 1

devuelve el número completo más pequeño mayoro igual que aMath.ceil( double a )

para PI, aproximadamente 3.12Math.PI

para la base exponencial, aproximadamente 2.72Math.Epara int, long, float y doubleMath.min( a,b )

para int, long, float y doubleMath.max( a,b )

devuelve un doubleMath.random()

para double y floatMath.round( x )

devuelve y elevado a xMath.pow( double x,doubley )

devuelve el valor double truncado de aMath.rint( double a )

devuelve el número completo más grande menor oigual que a

Math.floor( double a )

12.2 … Funciones de la Clase Math

Page 342: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 342/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 4 2

Devuelve el valor hiperbólico del cos de xMath. cosh(double x)

Devuelve el valor hiperbólico del tan de xMath. tanh(double x)

Retorna sqrt(x 2 +y 2), sin overflow.Math.hypot(double x,double y)

retorna el valor de (e x -1)Math.expm1(double x)

Retorna el logaritmo natural de la suma del

argumento y 1.

Math.log1p(double x)

Devuelve el valor hiperbólico del seno de xMath. sinh(double x)

Devuelve el logaritmo en base 10 de aMath. log10(double a)

Devuelve la raíz cúbica de aMath. cbrt(double a)

12.2 … La Clase Math(ver 5.0)

Page 343: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 343/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 4 3

Retorna el tamaño de un ulp del argumento.Math.ulp(float f)

Retorna la función signum del argumento f.Math.signum(float f)

12.2 … La Clase Math(ver 5.0)

Page 344: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 344/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 4 4

pub l ic c lass Fun c iones {p u b l ic st a t i c v oi d m a i n ( St r i n g a r g s[ ] ) {

i n t x ;doub le rand ,y ,z;

f l o at m a x ;r a n d = M at h .r a n do m ( ) ;

x = M at h . ab s( - 1 2 3 ) ;y = M at h . r o u n d ( 1 2 3 . 5 6 7 ) ;z = M at h .p o w ( 2 ,4 ) ;m a x = Ma t h .m a x ( ( f l oa t ) 1 e 1 0 ,( f l o at ) 3 e9 ) ;

Sys tem .ou t . p r i n t l n ( r and ) ;Sy s t em .o u t .p r i n t l n ( x ) ;Sys tem .ou t . p r i n t l n ( y ) ;Sys tem .ou t . p r i n t l n ( z ) ;Sy s t em .o u t .p r i n t l n ( m a x ) ;

}}

12.3 Funciones de la clase Math

Page 345: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 345/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 4 5

La inclusión de la conectividad con bases de datos SQL , obligó a definir

en Java una nueva forma de trabajar con datos SQL de tipo NUMERIC yDECIMAL , que requieren precisión absoluta.

Como resultado surgieron las clases BigDec imal y Bi g I n t e g e r , que

permiten trabajar con precisión arbitraria, para representar datos queson habituales de las Bases de Datos.

La clase Bi g I n t e g er también resulta útil cuando los tipos primitivos deJava (byte, int, long) no proporcionan sificiente precisión.

Por ejemplo, cuando se está construyendo una clave pública paraencriptación que involucra operaciones exponenciales muy grandes y amanipular números primos de cientos de bits, esta clase es ideal para

estas acciones

12.4 Precisión Arbitraria

Page 346: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 346/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 4 6

estas acciones

El constructor más sencillo es el que construye un BigDec imal a partirde su representación como cadena:

Aunque la cadena no puede contener ningún signo no numérico, nisiquiera espacios en blanco, ya que de lo contrario se produce unaexcepción de tipo NumberFo rma tExcep t i on .

Un método interesante es el que permite fijar la precisión que se deseatener, es decir, el número de dígitos significativos que hay después dela coma decimal, y el tipo de redondeo que se va a utilizar:

BigDecim a l ( S t r ing s ) ;

setSca le( i n t p rec ision , in t r edondeo ) ;

12.5 Métodos de la clase BigDecimal

h t t p :/ / j av a.su n .co m / j 2 se/ 1 .5 .0   / d ocs/ ap i / j av a/ m at h / Big Decim 

a l . h t m l  

Page 347: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 347/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 4 7

Los operadores que se utilizan con estas clases no son los clásicos, sinoque están d ispon ib les m étodos espec ia les para sumar, restar,multiplicar dividir y para desplazar la coma decimal un númerodeterminado de posiciones a derecha o izquierda:

add( B igDecim a l a ) ;

subs t rac t ( B igDecim a l a ) ;

m u l t i p l y ( B igDec im a l a ) ;

d i v i de ( B igDecim a l a ,i n t m odo_ redondeo ) ;

m ovePo in tR igh t ( i n t posi ci ones ) ;

m ovePo in tLef t ( i n t posi ci ones ) ;

12.6 Operadores - Clase BigDecimal

Page 348: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 348/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 4 8

Al trabajar con caracteres se necesitan muchas funciones de

comprobación y traslación. Estas funciones están empleadas en la claseCharacter .

De esta clase sí que se pueden crear instancias, al contrario que sucedecon la clase Math , ya que ésta ú l t im a es es tá t i ca .

Se encuentra disponible en el p aq u et e j a v a.l an g

Dec larac ión :

E jemp los :

char c ;Char acter C;

La p r im e ra sen tencia crea rá una va r i ab le ca rácte r y l asegun da un ob j e to Charac te r

C = new Cha racte r ( ' J' ) ;

cha r c = C.charVa lue ( ) ;

St r i ng s = C. t oSt r i ng ( ) ;

12.7 La Clase Character

Page 349: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 349/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 4 9

12.8 Métodos(ver 5.0)

Page 350: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 350/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 5 0

12.8 … Métodos(ver 5.0)

Page 351: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 351/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 5 1

12.8 … Métodos(ver 5.0)

Page 352: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 352/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 5 2

12.8 … Métodos(ver 5.0)

Page 353: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 353/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 5 3

12.8 … Métodos(ver 5.0)

Page 354: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 354/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 5 4

12.8 … Métodos(ver 5.0)

Page 355: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 355/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 5 5

En este caso, si contáramos un objeto Char acter C , no se podría hacerC. isLow erCase( ) , porque no se ha hecho un new de Char act e r .

Estas funciones requieren de que se cree un objeto antes de usarse.

devuelve true para espacios en blancoCharacter.isSpace( char )

devuelve true para caracteres numéricosCharacter.isDigit( char )

devuelve true si el carácter es una letra mayúsculaCharacter.isUpperCase( char )

devuelve true si el carácter es una letra minúsculaCharacter.isLowerCase( char )

12.9 Comprobaciones Booleanas

Page 356: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 356/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 5 6

Traslac ion es de Caract eres.

Tras lac iones de ca rác te r / d ig i to .

convierte entre minúscula ymayúscula

Character.toUpperCase( char )

convierte entre mayúscula yminúscula

Character.toLowerCase( char )

i n t i = Charac te r .d ig i t ( c , base10 ) ;

char c = Charac te r . fo rD ig i t ( i , base10 ) ;

12.10 Traslaciones

Page 357: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 357/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 5 7

Cada tipo numérico tiene su propia clase de objetos.

Así el tipo float  tiene el objeto Float .

De la misma forma que con la clase Character , se han codificadomuchas funciones útiles dentro de los métodos de la clase Float .

Declarac ión :

Va lores de Floa t :

f l oat f ;Float F;

La p r im e ra sen tenc ia crea rá una va r i ab le f l oat y l asegun da un ob j e to Floa t

Floa t .POSI TI VE_I NFI NI TYFloat .NEGATI VE_I NFI NI TYFloat .NaNFloat .MAX_VALUEFloat .MI N_VALUEFloa t SI ZE( ver 5 .0 ) .Float TYPE( ver 5 .0) .

12.11 Float

Page 358: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 358/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 5 8

Conv e rs iones Clase / Cadena

Comprobaciones

St r i ng s = Float . t oSt r i ng ( f ) ;

f = Fl o at . v al u eOf ( " 3 .1 2 " ) ;

boo lean b = Float .isNaN( f ) ; / / El m ét odo i sNaN( )

com prueba s i f es un N o - N ú m e r o  

boo lean b = Float . i sI n f i n i t e ( f ) ;

12.12 Conversiones y comprobaciones

Page 359: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 359/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 5 9

12.13 Métodos(ver 5.0)

Page 360: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 360/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 6 0

Cada tipo numérico tiene su propia clase de objetos.

Así el tipo double tiene el objeto Double .

La clase Doub le tiene un constructor para inicializarla con un va lo rdoub le o, lo que es muy práctico, con una representación tipo Stringdel valor.

Declarac ión :

Va lores de Doub le :

doub le d ;Doub le D;

La p r im e ra sen tenc ia crea rá una va r i ab le doub le y l asegunda un ob je to Doub le

Doub le .POSI T I VE_I NFI NI TYDoub le .NEGATI VE_I NFI NI TYDouble.NaNDouble.MAX_VALUEDoub le .MI N_VALUESI ZE( ver 5 .0 )TYPE( ver 5 .0)

12.14 Clase Double

Page 361: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 361/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 6 1

12.15 Métodos(ver 5.0)

Page 362: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 362/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 6 2

Cada tipo numérico tiene su propia clase de objetos. Así el tipo int  tiene el objeto Integer .

Declarac ión :

Va lo res de in t :

i n t i ;I n t eg er I ;

La p r im e ra sen tenc ia crea rá una va r i ab le doub le y l asegunda un ob je to I n tege r

I n t eger .MAX_VALUEI n t eger .MI N_VALUESI ZE( ve r 5 .0 ) .TYPE( ver 5 .0) .

12.16 Clase Integer

Page 363: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 363/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 6 3

12.17 Métodos(ver 5.0)

Page 364: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 364/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 6 4

C i ht F ió S l i I f áti EFIBS S A

12.17 … Métodos(ver 5.0)

Page 365: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 365/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 6 5

Copyright Formación y Soluciones Informáticas EFIBS S A

Cada tipo numérico tiene su propia clase de objetos.

Así el tipo long tiene el objeto Long .

Declarac ión :

Va lores de Lon g:

l ong l ;Long L;

La p r im e ra sen tencia crea rá una va r i ab le doub le y l asegun da un ob je t o Long

Long.MAX_VALUELong.MI N_VALUESI ZE( ver 5 .0 )TYPE( ver 5 .0)

12.18 Clase Long

Page 366: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 366/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 6 6

Copyright Formación y Soluciones Informáticas EFIBS S A

12.19 Métodos(ver 5.0)

Page 367: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 367/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 6 7

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 6 8

12.19 … Métodos(ver 5.0)

Page 368: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 368/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 6 8

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 6 9

La clase Random es un generador de número pseudo-aleatorios.

El algoritmo que se utiliza para la obtención de estos números, es elque Donald Knuth presenta en su libro The Art of Computer Programming .

Son números no realmente aleatorios porque son secuenciasdistribuidas uniformemente, obtenidas a partir de una semilla inicial.

12.20 Clase Random

Page 369: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 369/879

py g y3 6 9

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 7 0

Cuando se inicializa un objeto Random  con una semilla, se puedeobtener a continuación lo que parece una secuencia aleatoria, pero si sevuelve a inicializar el objeto con la misma semilla se vuelve a obtener lamisma secuencia.

Normalmente se utiliza la hora actual del sistema como semilla parainicializar estos objetos, lo que disminuye la posibilidad de obtenersecuencias de números repetidas.

De un objeto Random  se pueden extraer varios tipos de númerosaleatorios a través de sus métodos.

12.20 … Clase Random

Page 370: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 370/879

3 7 0

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 7 1

12.20 Métodos(ver 5.0)

Page 371: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 371/879

3

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 7 2

La clase St r ingToken ize r proporciona uno de los primeros pasos pararealizar un análisis gramatical de una cadena de entrada, extrayendolos símbolos que se encuentren en esa cadena.

Si se tiene una cadena de entrada cuyo formato es regular y se deseaextraer la información que está codificada en ella, St r ingToken ize r esel punto de partida.

Para utilizar esta clase, se necesita un String de entrada y un String dedelimitación.

Los delimitadores marcan la separación entre los símbolos que seencuentran en la cadena de entrada.

12.21 String Tokenizer

Page 372: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 372/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 7 3

Se considera que todos los caracteres de la cadena son delimitadoresválidos; por ejemplo, para < , ; : >   el delimitador puede ser una coma,un punto y coma o dos puntos.

El conjunto de delimitadores por defecto son los caracteres de espaciohabituales: espacio, tabulador, línea nueva y retorno de carro.

Una vez que se ha creado un ob je to S t r ingToken ize r , se utiliza elm é t o d o n e x t T o k e n ( ) para ir extrayendo los símbolosconsecutivamente.

El m é t o d o hasMoreTokens( ) devuelve t r u e   cuando todavía quedansímbolos por extraer.

Se encuentra sobre el paque te j ava .u t i l

12.21 … String Tokenizer

Page 373: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 373/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 7 4

12.22 Métodos(ver 5.0)

Page 374: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 374/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 7 5

pub l i c s ta t i c Tim estamp s t r i ng2 T im estampSimp le ( St r ing s) {

i f ( s = = n u ll ) {r e tu rn n u l l ;

}i f ( s .t r i m ( ) . e qu a ls ( " " ) ) {

r e tu rn n u l l ;}i f ( !Val ida to r . i sVa l idDate (s) ) {

r e tu rn n u l l ;

}St r i n g To ken i zer st = n e w S t r i n g To ke n i ze r ( s .t r i m ( ) , " / " ) ;

i n t d ia = 0 ;i n t m e s = 0 ;i n t an o = 0 ;

i f ( s t .h a sMo re To ke n s( ) ) {d i a = I n t e g er . pa r se I n t ( s t .n e x t To k e n( ) ) ;

}i f ( s t .h a sMo re To ke n s( ) ) {

m e s = I n t e g er . pa r se I n t ( s t .n e x t To k en ( ) ) ;}i f ( s t .h a sMo re To ke n s( ) ) {

a n o = I n t e g er . pa r se I n t ( s t .n e x t To k e n( ) ) ;}r e tu rn n e w T im e sta mp ( a n o -1 9 0 0 , me s-1 , d ia , 0 , 0 , 0 , 0 ) ;

}

12.23 Ejemplo de StringTokenizer

Page 375: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 375/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 7 6

Esta clase encapsula el proceso del intérprete Java que se ejecute.

No se puede crear una instancia de R u n t i m e; sin embargo, se puedeobtener una referencia al objeto Runtime  que se está ejecutandoactualmente llamando al método estático R u n t i m e . g e t R u n t i m e ( ) .

Los applets y otros fragmentos de código de los que se desconfíehabitualmente no pueden llamar a ninguno de los métodos de la claseR u n t i m e sin activar una SecurityException , excepción de seguridad.

12.24 Clase Runtime

Page 376: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 376/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 7 7

Aunque Java es un sistema de recogida de basura automática, oliberación de memoria automática, se podría desear el conocer lacantidad de objetos y el espacio libre que hay, para comprobar laeficiencia del código escrito.

Para proporcionar esta información, la clase R u n t i m e dispone de losmétodos t o t a l M e m o r y ( ) , que devuelve la memoria total en la MáquinaVirtual Java, y f r e e M e m o r y ( ) , que devuelve la cantidad de memoria

libre disponible.

12.24 … Clase Runtime

Page 377: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 377/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 7 8

En entornos seguros se puede hacer que Java ejecute otros procesosintensivos en un sistema operativo multitarea.

Hay varios constructores del método e xe c ( ) que permiten que se

indique el nombre del programa que se va a ejecutar, junto con losparámetros de entrada.

12.25 Métodos de la clase Runtime

Page 378: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 378/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 7 9

El método e xe c ( ) devuelve un objeto Process, que se puede utilizarpara controlar la interacción del programa Java con el nuevo proceso enejecución.

Hay varias formas alternativas de e xe c ( ) , pero esta es la más habitual.

El proceso que devuelve e xe c ( ) se puede manipular después deque el nuevo programa haya comenzado a ejecutarse.

Se puede eliminar el subproceso con el método d e s t r o y ( ) .

El método w a i t F o r ( ) , esperar a, provoca que el programa espere

hasta que el subproceso termine, y el método e x i tVa lu e ( ) , valorde salida, devuelve el valor que ha devuelto el subproceso cuando terminó.

12.25 Métodos de la clase Runtime

Page 379: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 379/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 8 0

El siguiente segmento de código invoca al programa Notepad, del

sistema operativo windows, enviando además el nombre del archivoque se desea visualizar o crear.

Ru n t i m e r = Ru n t i m e .g e t Ru n t i m e ( ) ;Process p = nu l l ;St r i n g co m a n d o[ ] = { " n o t ep ad " ," ej e m p l oRu n t i m e .j a v a" } ;

 / / Dat os de la m em or ia del Si st em aSy st e m .o u t . pr i n t l n ( " M em o r i a To t a l = " + r . t o t a lM em o r y ( ) +" Me m o r ia Li br e = " + r .f r ee Me m o r y ( ) ) ;

 / / I n t en t a ej ecu t ar e l com an do qu e se le in d ica, en / / est e caso lan zar el b loc de n o t ast r y {

p = r .e x ec( co m a n d o ) ;} ca t ch ( Ex c ep t i o n e ) {

Sy st e m .o u t . pr i n t l n ( " Er r o r e j e cu t a n d o " + co m a n d o [ 0 ] ) ;}

12.26 Ejemplo Práctico

Page 380: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 380/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 8 1

El siguiente segmento de código presenta el mismo código del ejemploanterior, m od i f i cado pa ra que espere a que te r m ine e l p r oceso ene jecuc ión

Ru n t i m e r = Ru n t i m e .g e t Ru n t i m e ( ) ;Process p = nu l l ;St r i n g co m a n d o[ ] = { " n o t ep ad " , " e j e m p l oRu n t i m e .j a v a" } ;

t r y {p = r .e x ec( co m a n d o ) ;p . w a i t F o r ( ) ;

} cat ch ( Excep t i on e ) {Sy s t em .o u t .p r i n t l n ( " Er r o r e j ecu t a n d o " + co m a n d o [ 0 ] ) ;

}Sys tem .ou t . p r i n t l n (co m a n d o[ 0 ] + " h a dev u el t o " + p .ex i t Va lu e( ) ) ;

12.26 … Ejemplo Práctico

Page 381: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 381/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 8 2

Hay ocasiones en que se necesita acceder a recursos del sistema , comoson los dispositivos de entrada/salida, el reloj del sistema, etc.

Java dispone de la clase System , que proporciona acceso a estosrecursos, independientemente de la plataforma. Es decir, que si se

ejecuta un programa en una plataforma diferente a la que se hadesarrollado, no es necesaria ninguna modificación para tener en cuentalas peculiaridades de la nueva plataforma.

La clase System es miembro del paquete j av a.lan g y en ella sedefinen los dispositivos estándar de entrada/salida

static PrintStream err;

static InputStream in;

static PrintStream out;

12.27 Clase System

Page 382: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 382/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 8 3

12.28 Métodos(ver 5.0)

Page 383: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 383/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 8 4

12.28 … Métodos(ver 5.0)

Page 384: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 384/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 8 5

12.29 Ejercicio Práctico

El instructor realizará una explicación detallada del ejercicio

Basado en los APIs anteriores, cree un paquete que se llame:

org .e f ibs .s is temaDeOrdenes.Ap is

Dentro de dicho paquete, cree un archivo *.java en donde invoquealmenos tres de los métodos de cada una de las clases o APIs que sepresentan en el actual capítulo.

Comente con el instructor, el uso de los métodos estáticos.

Page 385: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 385/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 8 6

1313

SWINGSWING

Page 386: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 386/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 8 7

2. Entorno de Desarrollo Integrado

2. Entorno de Desarrollo Integrado

3. El Lenguaje Java

3. El Lenguaje Java

4. Tipos de Datos y Operadores

4. Tipos de Datos y Operadores

5. Control de Flujo

5. Control de Flujo

1. Introducción a Java

1. Introducción a Java

6. Conceptos Básicos en Java

6. Conceptos Básicos en Java

7. Trabajando con Clases

7. Trabajando con Clases

13. Swing

Page 387: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 387/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 8 8

8. Utilización de Interfaces

8. Utilización de Interfaces

9. Estándares de Desarrollo

9. Estándares de Desarrollo

10. Manejo de Excepciones

10. Manejo de Excepciones

11. Utilizando Cadenas, Arreglos y Colecciones

11. Utilizando Cadenas, Arreglos y Colecciones

12. Clases en Java

12. Clases en Java

13. Swing

13. Swing

Anexo

Anexo

13. Swing

Page 388: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 388/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 8 9

Objetivos

Explicar cada uno de los componentes gráficosdel swing.

Definir, implementar y crear ejercicios, dondese ponga en práctica el uso del swing, esto conel fin de que se pueda adquirir un sólido

entendimiento sobre el tema.

Page 389: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 389/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 9 0

S w i n g   proporciona un conjunto completo de Componentes, todos elloslightweight , es decir, ya no se usan componentes dependientes delsistema operativo, además, Swing  está totalmente escrito en Java.Todo ello redunda en una mayor funcionalidad en manos delprogramador, y en la posibilidad de mejorar en gran medida la creaciónde las interfaces gráficas de usuario.

Son muchas las ventajas que ofrece el uso de Swing . Por ejemplo, lanavegación con el teclado es automática, cualquier aplicación Swing sepuede utilizar sin ratón, sin tener que escribir ni una línea de códigoadicional. Las etiquetas de información, o "tool tips ", se pueden crearcon una sola línea de código. Además, Swing aprovecha la circunstancia

de que sus Componentes no están renderizados sobre la pantalla por elsistema operativo para soportar lo que llaman "pluggable look and feel ",es decir, que la apariencia de la aplicación se adapta dinámicamente alsistema operativo y plataforma en que esté corriendo.

13.1 Swing

Page 390: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 390/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 9 1

Es muy importante entender y asimilar el hecho de que Swing es unaextensión del AWT, y no un sustituto encaminado a reemplazarlo.Aunque esto sea verdad en algunos casos en que los componentes deSwing se corresponden a componentes del AWT; por ejemplo, elJBu t ton de Swing puede considerarse como un sustituto del B u t t o n delAWT, y una vez que se usen los botones de Swing se puede tomar ladecisión de no volver a utilizar jamás un botón de AWT, pero, lafuncionalidad básica de Swing descansa sobre el AWT. Todo esto espara evitar que el lector salte directamente a Swing, ya que seríaconveniente que primero entendiese el AWT y cómo Swing mejora al

AWT. El paquete que Swing utiliza es  j av ax .sw in g .*

13.1 … Swing

Page 391: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 391/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 9 2

En este código se crean dos botones JBu t ton y un JTextFie ld , dondesu funcionalidad será que cuando se pulse algún botón se despliegue enel JTextField el nombre del botón pulsado.

13.1 … Swing

Page 392: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 392/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 9 3

i m p o r t j a v a.a w t . * ;

i m p o r t j a v a .a w t . e v e n t .* ;i m p o r t j a v a x .s w i n g . * ;

pub l i c c l ass I n i c i arSw i ng ex t ends JPane l {JB u t t o n b o t o n 1 = n e w JB u t t o n ( " JB u t t o n 1 " ) ;JB u t t o n b o t o n 2 = n e w JB u t t o n ( " JB u t t o n 2 " ) ;

JTex t F i el d t ex t o = new JTex t F i el d ( 2 0 ) ;p u b l ic I n i ci a r Sw i n g ( ) {

Ac t i onLi s t ene r a l = new Ac t i onLi s t ene r ( ) {pub l i c vo i d act i onPe r f o rmed ( Ac t i onEven t ev t ) {

St r i n g n o m b r e = ( ( J Bu t t o n ) e v t .g e t So u r c e( ) ) . g e t Te x t ( ) ;t e x t o .s et Te x t ( n o m b r e + " Pu l sa d o" ) ; } } ;

bo t on1 . addAct i onL i st ene r ( a l ) ;bo t on1 . se t Too l Ti pTex t ( " Soy e l JBo t on 1 " ) ;

a d d ( b o t o n 1 ) ;bo t on2 . addAct i onL i st ene r ( a l ) ;bo t on2 . se t Too l Ti pTex t ( " Soy e l JBo t on 2 " ) ;a d d ( b o t o n 2 ) ;

t ex t o . se t Too l Ti pTex t ( " Soy e l JCampoDeT ex t o " ) ;a d d ( t e x t o ) ; }

p u b l ic s t a t ic v o i d m a i n ( S t r i n g a r g s[ ] ) {JFram e ven t ana = new JFram e( " P ráct i ca EFI BS" ) ;v e n t a n a. ad d W i n d o w L i st e n e r ( n e w W i n d o w A d a p t e r ( ) {

pub l i c vo i d w i ndow Cl os i ng ( W i ndow Even t ev t ) {

Sy st em . ex i t( 0 ) ; } } ) ;ven t ana . ge t Con t en t Pane ( ) . add ( new I n i c i a rSw i ng ( ) , Bo rde rLayou t . CENT ER ) ;ven t ana . set S i ze ( 3 00 , 100 ) ;v e n t a n a. se t V is ib l e ( t r u e ) ; } }

13.1 … Swing

Page 393: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 393/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 9 4

La clase JComponent también contiene un método llamadosetBorder(), que permite colocar diferentes bordes a un componentevisible.

13.2 Bordes

Page 394: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 394/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 9 5

i m p o r t j a v a x .s w i n g . b or d e r .* ;

pub l i c c lass Bordes ex t ends JPane l {s t a t i c JPane l c reaBo rde ( Bo rde r b ) {JPane l pane l = n ew JPane l ( ) ;St r i ng s t r = b . ge t Cl ass( ) . t oSt r i ng ( ) ;s t r = s t r .s u b st r i n g ( s t r . l as t I n d e x O f ( ' .' ) + 1 ) ;

pane l .se t Layou t ( new Bo rde rLayou t ( ) ) ;pan el .add( new JLabel ( st r ,JLabel .CENTER ) ,Border Layou t .CENTER ) ;pane l .se t Bo rde r ( b ) ;r e t u r n ( p a n el ) ; }

pub l i c Bo rdes ( ) {s et L ay o u t ( n e w Gr i d La y o u t ( 2 , 4 ) ) ;a d d ( c r e aB o r d e( n e w Ti t l e dB o r d er ( " T i t u l o" ) ) ) ;a d d ( c r e aB o r d e( n e w Et c h ed B o r d er ( ) ) ) ;

add ( c reaBo rde ( new L i neBo rde r (Co lo r . b l ue ) ) ) ;add ( c reaBo rde ( new Ma t t eBo rde r (5 , 5 ,30 , 30 , Co l o r . g reen ) ) ) ;add ( c reaBo rde ( new Beve lBo rde r (Beve l Bo rde r . RAI SED) ) ) ;add ( c reaBo rde ( new So f t Beve l Bo rde r (Beve l Bo rde r . LOWERED) ) ) ;

add (c reaBo rde (new CompoundBorde r (new E t chedBorde r ( ) , new L i neBo rde r (Co lo r . red ) ) ) ) ; }

p u b l ic s t at i c v o i d m a i n ( S t r i n g a r g s[ ] ) {JFram e f rame = new JFram e( " P ráct i ca EFI BS" ) ;f r a m e .a d d W i n d ow L is t e n er ( n e w W i n d o w A d a p t e r ( ) {pub l i c vo i d w i ndow Cl os ing ( W i ndow Even t ev t ) {

Sy st em . ex i t( 0 ) ; } } ) ;f r am e .ge t Con t en t Pane ( ) . add ( new Bo rdes( ) , Bo rde rLayou t . CENT ER ) ;f ram e . se t S ize ( 500 , 300 ) ;

f r a m e .s et V i si b l e( t r u e ) ; } }

13.2 … Bordes

Page 395: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 395/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 9 6

Las etiquetas, junto con los botones y las cajas de selección, son uno delos componentes más básicos de toda interfaz de usuario. Las etiquetasse limita a presentar textos en pantalla. Swing introduce la clase JLabel

para presentar estos textos en pantalla; sin embargo, es mucho másversátil que la clase correspondiente del AWT.

13.3 Etiquetas

Page 396: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 396/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 9 7

class Et iq uetas ex tend s JPanel {

pub l i c Et ique tas( ) {setL ayo u t ( n e w Gr i d La yo u t ( 2 ,2 ) ) ;JLabe l et iq1 = new JLabe l ( ) ;e t i q 1 .setTex t ( " Et i q u e ta 1 " ) ;a d d ( e t i q 1 ) ;JLabe l e t iq2 = new JLabe l ( " Et ique ta2" ) ;e t i q2 .setFon t ( new Fon t ( " He lvet i ca " , Fon t .BOLD, 18 ) ) ;a d d ( e t i q 2 ) ;I c on i m a g en = n e w I m a g e I c o n ( " l o go _ ef i b s2 .j p g " ) ; / / Se d eb e d e p o n er t o d a la r u t aJLabel et iq 3 = new JLabel ( " Et iq ueta3 " , im agen,Sw ingConstant s.CENTER ) ;e t iq3 .setVer t ica lText Posi t ion( Sw ingConstant s.TOP ) ;a d d ( e t i q 3 ) ;JLabe l et iq4 = new JLabe l ( " Et ique ta4" ,Sw ingConstan ts .RI GHT ) ;a d d ( e t i q 4 ) ;

}p u b l i c s t a t i c vo i d ma i n ( St r i n g a rg s [ ] ) {

JFram e ven tana = new JFram e( " Práct i ca EFI BS" ) ;ve n ta n a .a d d Wi n d o wL i ste n e r ( n e w W i n d o wAd a p te r ( ) {

p u b l i c vo i d w i n d o wCl o si n g ( W i n d o w Eve n t e v t ) {Sy st e m .e x it ( 0 ) ; } } ) ;

ven tana .ge tCon ten t Pane( ) .add( new Et ique tas( ) ,BorderLayou t .CENTER ) ;ven tana .setS ize ( 300 ,130 ) ;ven tana .setV is ib le( t rue ) ; }

}

13.3 … Etiquetas

Page 397: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 397/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 9 8

Swing añade varios tipos de botones y cambia la organización de laselección de componentes: todos los botones, cajas de selección,botones de selección y cualquier opción de un menú deben derivar deAbs t rac tBu t t on .

13.4 Botones

Page 398: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 398/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.3 9 9

pub l i c c lass Bo tones ex t ends JPane l {

pub l i c Bo t ones ( ) {a d d( n e w JBu t t o n ( " JB ut t o n " ) ) ;

a d d ( n e w JTo g g l eB u t t o n ( " JTo g g l eB u t t o n " ) ) ;add ( n ew JChec k Box ( " JChec k Box " ) ) ;

a d d ( n e w JRa d i oB u t t o n ( " JRa d i oB u t t o n " ) ) ;

}

p u b l i c s t at i c v o id m a i n ( S t r i n g a r g s[ ] ) {B o t o n es p an e l = n e w B ot o n e s( ) ;

JFr a m e v e n t a n a = n e w JFr a m e ( ) ;ven t ana .ge tCont en tPane( ) .add( pan e l ,Bord erLayout .CENTER ) ;

v e n t a n a .a d d W i n d o w Li st e n e r ( n e w W i n d o w A d ap t e r ( ) {

p u b l i c v o i d w i n d o w Cl o si n g ( W i n d o w Ev e n t e v t ) {Sy st e m .e x i t ( 0 ) ;

}

} ) ;v en t ana . se t Si z e( 300 , 200 ) ;

ven t ana .setT i t l e ( " Prác t i ca EFI BS" ) ;

v en t ana . se t V i si b l e ( t r ue ) ; }}

13.4 … Botones

Page 399: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 399/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 0 0

pub l i c c lass Bo ton I m agen ex ten ds JPane l {

p u b l i c B o t o n I m a g en ( ) {

I m a g e I c o n izq = n e w I m a g e I c o n ( l og o .g i f" ) ;

JB u t t o n b o t o n = n e w J Bu t t o n ( " B ot o n " ,i zq ) ;

bo t on . s et Ro l lov e rEnab led ( t r u e ) ;bo t on . s et T oo lTipTex t ( " Bo t on c on im agenes as ociadas" ) ;

a d d( b o t o n ) ;}

p u b l i c s t a t ic v o id m a i n ( S t r i n g a r g s[ ] ) {B ot o n I m a g e n p an e l = n e w B o t o n I m a g en ( ) ;JFr a m e v e n t a n a = n e w JFr a m e ( ) ;

ven t ana .ge tCont en tPane( ) .add( pan e l ,Border Layout .CENTER ) ;

v e n t a n a .a d d W i n d o w Li st e n e r ( n e w W i n d o w A d ap t e r ( ) {p u b l i c v o i d w i n d o w Cl o si n g ( W i n d o w Ev e n t e v t ) {

Sy st e m .e xi t ( 0 ) ; } } ) ;

v en t ana . se t Si z e( 250 , 80 ) ;ven t ana .setT i t l e ( " Prác t i ca EFI BS" ) ;

v en t ana . se t V i si b l e ( t r ue ) ; }

}

13.4 … Botones

Page 400: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 400/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 0 1

Si se quieren botones de selección única, los conocidos como botones

radio, que tienen la particularidad de que solamente puede haber unoseleccionado, hay que crearse un grupo de botones, añadiendo botonesa ese grupo uno a uno. Pero, Swing permite que cualquierAbs t rac tBu t t on pueda ser añadido a un Bu t tonGroup .

13.5 Grupos de Botones

Page 401: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 401/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 0 2

i mpo r t j ava . lang . re f lec t .* ;

pub l i c c lass Grup oBoton es ex tend s JPane l {

s t a t ic St r i n g i d s [ ] = {" V i sa" , " Ma r t e rCa rd " , " Am er i can Exp ress " ," C r ed o Ma t i c" , } ;

s ta t i c JPane l c reaPane lBotones( Class bClass ,St r ing id s [ ] ) {B u t t o n Gr o u p b o t o n e s = n e w B u t t o n Gr o u p ( ) ;JPane l pane l = new JPane l ( ) ;St r i ng t i t u l o = bCl ass. ge t Nam e( ) ;

t i t u l o = t i t u l o .s u b st r i n g ( t i t u l o .l a st I n d e x Of ( ' . ' ) + 1 ) ;

pane l .se t Bo rde r ( new T i t l edBorde r ( t i t u l o ) ) ;f o r ( i n t i = 0 ; i < i d s. le n gt h ; i + + ) {

A b st r a c t Bu t t o n b o t o n A b s = n e w JB u t t o n ( " f a ll o " ) ;

t r y { / / Se u t i l i za e l con st r u ct o r d in ám ico a l qu e se p asa u n a cad ena com o ar gu m en t o

Cons t ruc t o r c t o r = bCl ass. get Cons t ruc t o r ( new Cl ass[ ] {St r i ng . c l ass } ) ;

 / / Se cr ea u n n u ev o ob j et o del t ip o del bo t ónb o t on A bs = ( A b st r a ct B u t t on ) c t o r .n e w I n s t an ce ( n e w Ob j e ct [ ] { i d s[ i ] } ) ;

} c at c h ( Ex c e pt i o n e ) {

Sys t em. ou t . p r i n t l n ( " No puedo crea r " + bCl ass ) ;}bo t ones .add ( bo t on Abs ) ;

pane l .add ( bo t on Abs ) ;}r e t u r n ( p a n el ) ;

}

13.5 … Grupos de Botones

Page 402: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 402/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 0 3

pub l i c GrupoBoton es( ) {

add( c reaPane lBo tones( JBu t t on .class ,ids ) ) ;add( c reaPane lBo tones( JTogg leBu t ton .c lass ,ids ) ) ;add( creaPanelBoto nes( JCheckBox .c lass,ids ) ) ;add( creaPanelBotones( JRadioBut ton.c lass, ids ) ) ;

}p u b l i c s t a t i c vo i d ma i n ( S t r i n g a rg s[ ] ) {

JFram e f rame = new JFram e( " Práct i ca EFI BS" ) ;f r a me .ad d Wi n d o w L is te n er ( n e w W i n d o w Ad ap te r ( ) {

p u b l i c voi d w i n d o wCl o si n g ( W i n d o wEven t e v t ) {

Sy st e m .e x it ( 0 ) ; } } ) ;f ram e.ge tCon ten t Pane( ) .add( new GrupoBoton es( ) ,BorderLayou t .CENTER

) ;f ram e.se tSize ( 600 ,300 ) ;f ram e.se tV isib le ( t ru e ) ; }

}

13.5 … Grupos de Botones

Page 403: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 403/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 0 4

Las lista y cajas "combo " en Swing funcionan del mismo modo que lohacían en el AWT, aunque tienen incrementada la funcionalidad a travésde algunas funciones de conveniencia que se han incorporado.

Por ejemplo, JList tiene un constructor al que se puede pasar un arrayde objetos String para que los presente.

13.6 Listas y Cajas Combinadas

Page 404: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 404/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 0 5

pu bl ic c lass L is tasyCaj as ex t end s JPanel {

s t at i c St r i n g i d s[ ] = {

"V i s a " , "Mar t e rCa rd " , "Amer i c an Ex p res s " ," Cr e d o Ma t i c" , } ;

pub l i c Lis tasyCa jas ( ) {

s et L ay o u t ( n e w Gr i d La y o u t ( 2 , 1 ) ) ;JL is t l i st a = new JL is t ( i ds ) ;

add ( new JSc ro l lPane ( l i s t a ) ) ;JCom boBox com bo = n ew J Com boBox ( ) ;

f or ( i n t i= 0 ; i < 5 0 ; i + + )

co m b o . a d d I t e m ( I n t e g e r .t o St r i n g ( i ) ) ;a d d ( co m b o ) ;}

p u b l i c s t at i c v o id m a i n ( S t r i n g a r g s[ ] ) {L i stasyCa jas l i sta = new L istasyCa jas ( ) ;

JFr a m e v e n t a n a = n e w JFr a m e ( ) ;

ven t ana .ge tCont en tPane( ) .add( l i s ta ,Bord erLayout .CENTER ) ;v e n t a n a. ad d W i n d o w L is t en e r ( n e w W i n d o w A d ap t e r ( ) {

p u b l i c v o i d w i n d o w Cl o si n g ( W i n d o w Ev e n t e v t ) {Sy st e m .e xi t ( 0 ) ; } } ) ;

v en t ana . se t Si z e( 200 , 200 ) ;

ven t ana .setT i t l e ( " Prác t i ca EFI BS" ) ;

v n t ana . s et V i s ib l e ( t r ue ) ; }}

13.6 … Listas y Cajas Combinadas

Page 405: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 405/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 0 6

c lass Lis tas ex ten ds JPanel {p r i v a te JLis t l i s ta ;

pub l i c Li s t as( ) {

 / / Se cr ea u n p an el par a pod er con t en er t od os los Co m p on en t ess et L ay o u t ( n e w B or d e r La y o u t ( ) ) ;

 / / Se cr ean a l g u n os e lem en t os par a p oder se leccion ar d e la l ist a

St r i n g d a t o sL is t a[ ] = {

" Ca p i t u l o 1 \ n I n t r o d u c ci o n a Ja v a " ," Ca p i t u l o 2 \ n L en g u a j e Ja v a" ," Ca p i t u l o 3 \ n En t o r n o s d e D es ar r o l l o ( I D E) " ,

" Cap i t u l o 4 \ nT ipos de Da t os y Operado res " ,

" Ca p i t u l o 5 \ n Co n t r o l d e Fl u j o " ,

" Cap i tu lo 6 \ nConceptos Básicos de Java"} ;

 / * Cr eam os u n a l ist a con u n con t r o lado r p r op io , q u e v a a p er m i t i r l a

persona l i zac iónen la p resen tac ión en pan ta l la de cada uno de los i t ems que se pueden

se leccionar d e esa l i sta* /  l i st a = new JL is t ( d a t os Li st a ) ;

l i s ta . se tCe l lRenderer ( new MiRender erDeL ista ( ) ) ;add( l is ta , BorderLayout .CENTER ) ;

}

Ejemplo de Listas JList

13.7 Listas

Page 406: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 406/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 0 7

 / / Clase an id ada q u e im p lem en t a e l v i su al i zad o r esp ecia l p ar a las ce ld as q u e com pon en

la l i s ta

c lass MiRenderer DeL is ta ex t ends JTex t Area im p lem ents L is tCe l lRenderer {

pub l i c Component ge tL is tCe l lRendererComponent (

JL ist l i s ta ,Ob j ec t va lo r , in t i n d ice ,boo lean se leccionado, boo lean conFoco ) {

s et Bo rde r ( new Bev elBo rde r ( Bev e lBo rde r . RA I SED ) ) ; / / Pr esen t a e l t ex t co r r espon d ien t e a l i t em

s et T ex t ( v a lo r . t o St r i n g ( ) ) ;

 / / Pi n t a en los co lo r es in d icad os y con la f u en t e se leccion ad a...i f ( se leccionado ) {

 / / en e l caso d e u n i t em m ar cad o ( r o j o / b l an co )

s et Back g r ound ( Co lo r . b l ue ) ;s et Fo reg roun d ( Co lo r . w h i t e ) ;

}

else { / / en e l caso d e u n i t em n o m ar cad o ( g r is / n eg r o )

s et Back g rou nd ( Co lo r . l igh t Gray ) ;s et Fo reg roun d ( Co lo r . b l ac k ) ;

}

r e t u r n ( t h i s ) ;

}}

13.7 … Listas

Page 407: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 407/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 0 8

p u b l i c s t at i c v oi d m a i n ( St r i n g a r g s [ ] ) {

JFram e v en t ana = new JFram e( " P ráct i c a EFI BS" ) ;v e n t a n a. ad d W i n d o w Li st e n e r ( n e w W i n d o w A d ap t e r ( ) {

p u b l i c v o i d w i n d o w Cl o si n g ( W i n d o w Ev e n t e v t ) {Sy st em . ex i t ( 0 ) ; } } ) ;

ven t ana .ge tCont en t Pane( ) .add( new L is tas ( ) ,Border Layout .CENTER ) ;

v en t ana . se t Si z e( 300 , 245 ) ;v en t ana . se t V i si b l e ( t r ue ) ;

}

}

13.7 … Listas

Page 408: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 408/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 0 9

Swing también introduce nuevos componentes dentro de la

manipulación de textos. Así la clase JTextArea actúa como sustituto dela clase TextArea del AWT, la clase JTextField sustituye TextField delAWT y se incorporan las clases JPasswordField que viene a serequivalente al uso de JTextField junto con el método setEchoChar(), y laclase JTextPane que permite que se presente el texto con diferentesfuentes de caracteres, colores, tamaños, etc.

13.8 Textos

Page 409: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 409/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 1 0

pub l i c class Tex t os ex tend s JPane l im p lem ent s Act ion L istener {p r i v a te S ty le es t i l oRo jo ,es t i l oVerde ,est i l oAzu l ;

p r i v a te JTex t Pane tex t o ;pub l i c Tex t os ( ) {

s et L ay o u t ( n e w B or d e r La y o u t ( ) ) ;add ( c reaMenu ( ) , Bo rde rLay ou t . NORTH ) ;

JTex t Pane t ex t o = c reaEd i t o r ( ) ;add( tex to ,Border Layout .CENTER ) ;

}

p r i v a t e J MenuBar c reaMenu ( ) {JM en u B ar m e n u = n e w JM en u B a r ( ) ;

JMenu est i l o = new JMenu ( " Es t i l o " ) ;

m e n u .a d d ( e st i l o ) ;JM en u I t e m m i = n e w JM en u I t e m ( " Ro j o " ) ;

est i l o . add ( m i ) ;

m i . addAc t i onLi s t ene r ( t h i s ) ;m i = n ew JM en u I t e m ( " V er d e" ) ;

est i l o . add ( m i ) ;

m i . addAc t i onLi s t ene r ( t h i s ) ;m i = n ew JM en u I t e m ( " A zu l" ) ;

est i l o . add ( m i ) ;m i . addAc t i onLi s t ene r ( t h i s ) ;

r e t u r n ( m e n u ) ;

}

13.8 …Textos

Page 410: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 410/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 1 1

pub l i c vo id act ionPer fo rm ed( Act ionEven t ev t ) {

Sty le es t i l o = nu l l ;St r i n g co l o r = (S t r i n g )e v t . g e tAct i o n Co mm a n d ( ) ;i f ( co l or . eq u a l s( " Ro j o " ) ) {

es t i l o = est i l oRo jo ;} e l se if ( co l o r .e q u al s( " Azu l " ) ) {

es t i l o = es t i l oAzu l ;} e l se if ( co l o r .e q u al s( " Verd e " ) ) {

es t i l o = es t i l oVerde ;}tex t o .se tCharacte rA t t r i bu tes( es t i l o ,fa l se ) ;

}p r i va te JTextPane creaEd i to r ( ) {

Sty leCon tex t sc = creaEst i l os( ) ;De fau l tSty ledDocum ent doc = new Defau l tS ty ledDocum ent ( sc ) ;r e tu rn ( t e x to = n e w JTe x tPan e ( d o c ) ) ;

}p r i va te Sty leCon tex t c reaEst i l os( ) {

Sty leCon text sc = n ew Sty leCon tex t ( ) ;es t i l oRo jo = sc.addSty le ( nu l l ,nu l l ) ;Sty leConstants.setForeground( est i loRojo ,Color . red ) ;es t i l oVerde = sc .addSty le ( nu l l ,nu l l ) ;Sty leConstants.setForeground( est i loVerde,Color .green ) ;Sty leConstants.setFontSize( est i loVerde,24 ) ;es t i l oAzu l = sc .addSty le ( nu l l ,nu l l ) ;Sty leConstants.setForeground( est i loAzul ,Color .b lue ) ;r e t u r n ( s c ) ;

}

13.8 …Textos

Page 411: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 411/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 1 2

p u b l i c s t a t i c v o i d m a i n ( S t r i n g a r g v [ ] ) {JFram e v en t ana = new JFram e( " P ráct i c a EFI BS" ) ;

v e n t a n a. ad d W i n d o w Li st e n e r ( n e w W i n d o w A d a p t er ( ) {

p u b l i c v o i d w i n d o w Cl o si n g ( W i n d o w Ev e n t e v t ) {Sy st em . ex i t ( 0 ) ; } } ) ;

v en t ana . ge t Con t en t Pane ( ) . add ( new

Tex t os ( ) ,Border Layout .CENTER ) ;v en t ana . se t Si z e( 300 , 180 ) ;

v en t ana . se t V i si b l e ( t r ue ) ; }

}

13.8 ... Textos

Page 412: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 412/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 1 3

Casi todas las clases que se usan para crear las interfaces de usuario sederivan de JComponent . Esta clase contiene un método llamado

setToolTipText( String ) . Se puede indicar un texto de informaciónvirtualmente en cualquier lugar y lo único que se necesita es invocar aeste método, indicando el texto correspondiente al mensaje. Porejemplo:

y cuando el ratón permanezca sobre cada JBu t ton , durante un periodode tiempo predeterminado, una pequeña cajita conteniendo el textoaparecerá al lado del puntero del ratón, también en este caso, indicandoel botón sobre el cual se encuentra situado el cursor del ratón.

bot on1 . addAc t i onLi s t ene r ( a l ) ;

bo t on1 . se t T oo lTipTex t ( " Soy e l JBo t on 1 " ) ;a d d( b o t o n 1 ) ;bo t on2 . addAc t i onLi s t ene r ( a l ) ;

bo t on2 . se t T oo lTipTex t ( " Soy e l JBo t on 2 " ) ;

a d d( b o t o n 2 ) ;t ex to .se tToo lTipTex t ( " Soy e l JCam poDeTex t o" ) ;

a d d( t e x t o ) ;…

13.9 Tool Tips

Page 413: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 413/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 1 4

Se puede utilizar un objeto I c o n dentro de un objeto JLabel, o

cualquier objeto que derive de Abs t rac tBu t t on ; incluyendo JBu t ton ,JCheckBox , JRad ioBut ton y los diferentes tipos de JMenu I tem .

JBu t tonJBu t ton

JLabelJLabel

I m a g eI co n i zq = n e w I m a g eI co n ( l o g o.g i f" ) ; / / Se d eb e de p on e r t o d a l a r u t a

JB u t t o n b o t o n = n e w JB u t t o n ( " B ot o n " ,i zq ) ;

I co n i m a g en = n e w I m a g eI co n ( " l og o _ ef i bs2 .j p g " ) ; / / Se d eb e d e p o n er t o d a la r u t aJLabe l e t iq3 = new JLabe l ( " Et iqu e ta3" , im agen,Sw ing Cons tan ts .CENTER ) ;

13.10 Iconos

Page 414: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 414/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 1 5

Los menús están mucho mejor desarrollados y son más flexibles enSwing que los que se encuentran habitualmente en otras herramientas,incluyendo paneles y applets. La sintaxis para utilizarlos es la mismaque en el AWT.

13.11 Menús

Page 415: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 415/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 1 6

pub l i c c lass Menus ex t ends JPane l {

s t a t i c f i na l Boo lean bT = new Boo lean ( t r ue ) ;s t a t i c f i na l Boo lean bF = new Boo lean ( f a l s e ) ;

s t a t i c Bu t t onGroup g ru poBo t ones;

 / / Clase qu e se u t i l i za par a cr ear los d ist in t os t i p os d e m en ú s qu e se v a a p r esen t ar st a t icc lass T ipoMenu {

Ti p oM en u ( i n t i ) { }} ;

s t at i c f i n a l Ti p o Me n u m i = n e w T i po M en u ( 1 ) ; / / M en ú c on e le m e n t o s n o r m a l es

s t at i c f in a l Ti p o Me n u c b = n e w Ti p o Me n u ( 2 ) ; / / M en ú co n c aj a s d e se le cc ió nJTex t Fie l d t x t = new JTex t Fie l d ( 10 ) ;Act i onL i st ene r a l 1 = new Act i onL i st ene r ( ) {

pub l i c v o i d act i onPer f o rm ed ( Ac t i onEv en t ev t ) {t x t . se t Te x t ( ( ( JM en u I t e m ) e v t .g e t So u r c e( ) ) . g e t Te x t ( ) ) ;

}

} ;Act i onL i st ene r a l 2 = new Act i onL i st ene r ( ) {

pub l i c v o i d act i onPer f o rm ed ( Ac t i onEv en t ev t ) {JM en u I t e m m i = ( J Me n u I t e m ) e v t .g et So u r ce ( ) ; } } ;

 / / En est as est r cu t u r as se a lm acen as los dat os de los m en ú s com o si se

 / / t r a t ar a d e los t íp icos r ecu r sos d e X

13.11 … Menús

Page 416: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 416/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 1 7

p u b li c Ob j e ct m e n u Ar ch i v o[ ] [ ] = {{ " A r c h iv o " , n ew Ch a r act e r ( ' A ' ) } , / / N o m b r e d el m e n ú y t e cl a r á p id a aso ci ad a

 / / Nom b r e,t ip o ,t ecla r áp ida,r ecep t o r asociado ,h ab i l i t ad o o n o p ar a cad a u n o d e los elem en t os

d e l m e n ú{ " N u e v o " , m i ,n e w Ch a r a ct e r ( ' N ' ) , al 1 ,b T } ,

{ " A b r i r " , m i ,n e w Ch a r a ct e r ( ' b ' ) , al 1 ,b T } ,

{ " Gu a r d a r " , m i ,n e w Ch a r a ct e r ( ' G ' ) , al 1 ,b F } ,{ " Gu a r d a r c o m o . .. " , m i , n ew Ch a r a ct e r ( ' c ' ) , a l1 , b F } ,

{ n u ll } , / / Sep ar ad or

{ " Sa l ir " , m i ,n e w Ch a r a ct e r ( ' S ' ) , al 1 ,b T } ,} ;

p u b l i c Ob j e ct m e n u Op ci o n es [ ] [ ] = {

{ " Op c io n e s" ,n e w Ch a r a ct e r ( ' O ' ) } ,{ " Op c io n 1 " ,c b ,n e w Ch a r a ct e r ( ' 1 ' ) , a l1 , b T } ,

{ " Op c io n 2 " ,c b ,n e w Ch a r a ct e r ( ' 2 ' ) , a l1 , b T } ,} ;

p u b l i c Ob j e ct b a r r a M en u [ ] = {

m enuArc h i v o ,m enuOpciones, } ;

s t at i c p u b l i c JM e n u Ba r c r e aM en u B a r r a ( O b j e ct b a r r a M en u D a t o [ ] ) {

JM en u B ar b a r r a Me n u = n e w JM en u B ar ( ) ;f o r ( i n t i = 0 ; i < b a r r a M en u D a t o .l e n g t h ; i + + )

b a r r aM en u .a d d( cr e aM en u ( ( Ob j e ct [ ] [ ] ) b a r r a Me n u Da t o [ i ] ) ) ;

r e t u r n ( b a r r a M e n u ) ;

}

13.11 … Menús

Page 417: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 417/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 1 8

s t at i c p u b l ic JM en u c r e aM e n u ( O b j e ct [ ] [ ] m e n u D at o ) {JM en u m e n u = n e w JM en u ( ) ;

m e n u .se t Te x t ( ( S t r in g ) m e n u Da t o [ 0 ] [ 0 ] ) ;m e n u .s et M n e m o n i c( ( ( Ch a r a ct e r ) m e n u D at o [ 0 ] [ 1 ] ) . ch a r V al u e ( ) ) ;g r u p o B ot o n e s = n e w B u t t o n Gr o u p ( ) ;

f o r ( i n t i = 1 ; i < m e n u D at o .l en g t h ; i+ + ) {

i f ( m e n u Da t o[ i ] [ 0 ] = = n u ll )m e n u .a d d ( n e w JSe p ar a t o r ( ) ) ;

e lse

m e n u .a d d( c r e aM en u I t e m ( m e n uD at o [ i ] ) ) ;

} r e tu r n ( m e n u ) ; }s t at i c p u b li c JM en u I t e m c r ea Me n u I t e m ( Ob j e ct [ ] d a t o ) {

JM en u I t e m m = n u l l;

Ti p o Me n u t i p o = ( T i p oM en u ) d a t o [ 1 ] ;

i f ( t i p o = = m i )

m = n ew JM en u I t e m ( ) ;e l se i f( t i p o = = cb )

m = n e w JCh e ck B ox M en u I t e m ( ) ;

m . se t Te x t ( ( S t r in g ) d a t o [ 0 ] ) ;m .s et M n e m o n i c ( ( ( Ch a r a ct e r ) d a t o [ 2 ] ) . ch a r V al u e ( ) ) ;

m . ad d A ct i o n Li st e n e r ( ( A c t i o n Li st e n e r ) d a t o [ 3 ] ) ;m .s et En a b l ed ( ( ( B oo l ea n ) d a t o [ 4 ] ) .b o o le an V al u e ( ) ) ;

r et u r n ( m ) ; }

13.11 … Menús

Page 418: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 418/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 1 9

M en u s ( ) {

s et L ay o u t ( n e w B or d e r La y o u t ( ) ) ;add ( c reaMenuBar ra ( ba r raMenu ) , Bo rde rLay ou t . NORT H ) ;JPane l p = new JPane l ( ) ;

p .s et L ay o u t ( n e w B o r d er L ay o u t ( ) ) ;

p . add ( t x t , Bo rde rLay ou t . NORTH ) ;add( p ,Bord erLayout .CENTER ) ; }

p u b l i c s t at i c v o id m a i n ( St r i n g a r g s [ ] ) {M en u s p an e l = n e w M en u s ( ) ;

JFr a m e v e n t a n a = n e w JFr a m e ( ) ;ven t ana .ge tCont en t Pane( ) .add( p ane l ,BorderLayout .CENTER ) ;

v e n t a n a. ad d W i n d o w Li st e n e r ( n e w W i n d o w A d ap t e r ( ) {p u b l i c v o i d w i n d o w Cl o si n g ( W i n d o w Ev e n t e v t ) {

Sy st e m .e xi t ( 0 ) ; } } ) ;v en t ana . se t Si z e( 300 , 200 ) ;

ven t ana .setT i t l e ( " Prác t i ca EFI BS" ) ;

v e n t a n a.s et V i si b l e( t r u e ) ; } }

13.11 … Menús

Page 419: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 419/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 2 0

La implementación de JPopupMenu resulta un tanto extraña, antesque, nada hay que llamar al método enableEvents() y seleccionar loseventos del ratón, en vez de utilizar un receptor de eventos como seríade esperar.

13.12 Menús Popup

Page 420: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 420/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 2 1

pub l i c c lass MenusPopup ex t ends JPane l {JPo p u p M en u p o p u p = n e w JPo p u p M en u ( ) ;

JTex t Fie l d t x t = new JTex t F ie l d ( 1 0 ) ;pub l i c Menus Popup ( ) {a d d( t x t ) ;

Act i onL i st ene r a l = new Act i onL i st ene r ( ) {

pub l i c v o i d act i onPe r f o rm ed ( Ac t i onEv en t ev t ) {t x t . se t Te x t ( ( ( JM en u I t e m ) e v t .g e t So u r ce ( ) ) .g e t Te x t ( ) ) ; } } ;

JM en u I t e m e l em e n t o = n e w JM en u I t e m ( " V isa " ) ;

e l em en t o . addAct i onL i st ene r ( a l ) ;

p o p u p .a d d ( e l e m e n t o ) ;e l em e n t o = n e w J Me n u I t e m ( " M as t er Ca r d " ) ;e l em en t o . addAct i onL i st ene r ( a l ) ;

p o p u p .a d d ( e l e m e n t o ) ;

e l em e n t o = n e w J Me n u I t e m ( " A m e r i ca n Ex p r e ss " ) ;

e l em en t o . addAct i onL i st ene r ( a l ) ;p o p u p .a d d ( e l e m e n t o ) ;

popup . addSepa ra t o r ( ) ;

e l em e n t o = n e w JM en u I t e m ( " Cr e d o Ma t i c" ) ;e l em en t o . addAct i onL i st ene r ( a l ) ;

p o p u p .a d d ( e l e m e n t o ) ;enab leEven ts( AW TEven t .MOUSE_EVENT_MASK ) ;

}

13.12 … Menús Popup

Page 421: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 421/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 2 2

pro tec ted vo id p rocessMouseEvent ( Mou seEvent ev t ) {

i f ( ev t . i sPopupT r i gge r ( ) )p o p u p .s h o w ( e v t .g e t Co m p o n e n t ( ) ,e v t .g e t X( ) ,e v t .g e t Y( ) ) ;

e lsesuper .p rocessMouseEvent ( ev t ) ;

}

p u b l i c s t at i c v o id m a in ( St r i n g a r g s [ ] ) {JFram e f r am e = new JFram e( " Prác t i ca EFI BS" ) ;

f r a m e . ad d W i n d o w Li st e n e r ( n e w W i n d o w A d a p t e r ( ) {p u b l i c v o i d w i n d o w Cl o si n g ( W i n d o w Ev e n t e v t ) {

Sy st e m .e xi t ( 0 ) ; } } ) ;

f r am e .ge t Con t en t Pane ( ) . add ( new Menus Popup ( ) , Bo rde rLay ou t . CENTER ) ;

f r am e .s et S iz e( 2 00 , 130 ) ;f r am e .s et V i si b l e ( t r ue ) ;

}

}

13.12 … Menús Popup

Page 422: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 422/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 2 3

Una escala permite al usuario introducir datos desplazando el marcadorde la escala hacia un lado o hacia otro, lo cual resulta altamenteintuitivo en algunos casos; como pueden ser, por ejemplo, controles devolumen. Una barra de progreso presenta al usuario información enforma de una barra parcialmente llena, o parcialmente vacía, para quepueda tener una perspectiva visual de los datos.

13.13 Escalas y Barras de Progreso

Page 423: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 423/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 2 4

pu bl ic c lass Escalas ex ten ds JPanel {JProg res s Ba r ba r r aProg = new JProg res s Ba r ( ) ;

JSl ider bar raS l id = new JSl ider ( JSl ider .HORI ZONTAL,0 ,100 ,60 ) ;

pub l i c Esca las ( ) {s et L ay o u t ( n e w Gr i d La y o u t ( 2 , 1 ) ) ;

a d d ( b a r r a P r og ) ;

ba r raSl i d .s et Va lue ( 0 ) ;bar raS l id . se tPa in tT icks ( t rue ) ;

ba r raSl i d . se t Ma jo rT i ck Spacing ( 20 ) ;

bar raS l id . se tMinorT ickSpac ing( 5 ) ;ba r raSl i d .s et Bo rde r ( new Ti t l edBo rde r ( " Desp laz am e" ) ) ;

ba r raS li d . addChangeL i st ene r ( new ChangeL i st ene r ( ) {pub l i c vo id s ta teChang ed( Chan geEvent ev t ) {

b a r r a Pr o g .s et V al u e ( b a r r a Sl i d .g e t V al u e ( ) ) ; } } ) ;

add ( b a r raSl i d ) ; }p u b l i c s t at i c v o id m a i n ( St r i n g a r g s [ ] ) {

JFram e f r am e = new JFram e( " Prác t i ca EFI BS" ) ;

f r a m e . ad d W i n d o w Li st e n e r ( n e w W i n d o w A d a p t e r ( ) {

p u b l i c v o i d w i n d o w Cl o si n g ( W i n d o w Ev e n t e v t ) {

Sy st em . ex i t ( 0 ) ; } } ) ;f ram e.ge tCont en t Pane( ) .add( n ew Esca las ( ) ,Bord erLayout .CENTER ) ;f r am e .s et S iz e( 2 00 , 130 ) ;

f r am e .s et V i si b l e ( t r ue ) ; }

}

13.13 … Escalas y Barras de Progreso

Page 424: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 424/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 2 5

Utilizar en Swing un árbol, como los que se despliegan en muchas de las ventanasde los sistemas operativos al uso, es tan simple como escribir:

Pero esto crea un árbol muy primitivo.

El siguiente ejemplo es más complejo.

a dd ( n e w JTr ee ( n e w Ob j ect [ ] { " e st e " ," e se " ," a qu el " } ) ) ;

13.14 Árboles

Page 425: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 425/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 2 6

i mp o r t j a va x . sw i n g .t r e e .* ;

 / * Est a clase t om a u n ar r ay de St r in gs, h acien d o qu e el p r im er elem en t o del ar r ay sea u n n od o y el r est osean ram as de ese nodo con e l l o se cons iguen las ramas de l á rbo l genera l cuando se pu lsa e l bo tón de tes t * /  class Ram a {

De fau l tMutab leTreeNode r ;p u b l i c Ra ma ( St r i n g d a to s [ ] ) {

r = n e w De fa u ltMu ta b l e Tre e No d e ( d a to s[ 0 ] ) ;f o r ( i n t i = 1 ; i < d at o s .l en g t h ; i + + )

r . ad d ( n e w Defa u l tMu ta b le Tre e No d e ( d a to s [ i ] ) ) ;}pub l i c Defau l tMut ab leTreeNode node( ) {

r et u r n( r ) ; } }pub l ic c lass Arbo les ext ends JPanel {

St r i ng d at o s[ ] [ ] = {{ " Co lo r e s" ," Ro j o " , " V er d e " , " A zu l " } ,{ " S ab o r es " , " Sa la d o" ," D u l ce " , " A m a r g o " } ,{ " Lo n g it u d " , " Co r t a " , " M ed i a" , " L a r ga " } ,{ " I n t e n si d ad " , " A l t a" , " M e d ia " , " B aj a " } ,{ " T em p e r a t u r a" , " A l t a " , " M ed i a" , " B a j a" } ,{ " V o lu m e n " ," A l t o" , " M ed io " ," B aj o " } ,} ;

s t a t i c i n t i = 0 ;Defau l tMutab leTreeNode ra iz, rama,se leccion;JTree arb o l ;De fau l tTreeMode l m ode lo ;pub l i c Arbo les( ) {

setL ayo u t ( n e w Bo rd e rLa yo u t ( ) ) ;r a i z = n e w Defa u l tMu ta bl e Tre e No d e ( " ra i z" ) ;a rb o l = n e w JTre e ( r a i z ) ;

13.14 … Árboles

Page 426: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 426/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 2 7

 / * Se añ ad e el ár bo l y se h ace sobr e u n Scr o l lPa n e, par a q u e se con t r o le au t om át icam en t e la lon g i t u d delá rbo l cuando está desp legado , de fo rm a que aparecerá una bar ra de desp lazam ien to para poder v i sua l iza r lo

e n su t o ta li d a d* /  add( new JScro l lPane( ar bo l ) ,BorderLayou t .CENTER ) ;m o d e lo = (De fa u ltT re eMo d el )a rb o l .g e tMo de l ( ) ; / / Se o b t i en e el m o d e lo d e l á rb o l

 / / Y se añ ad e el bo t ón q u e v a a i r in co r p or an d o r am as cada v ez q u e se pu lseJBu t t o n b o to n Pru e b a = n e w JBu t t o n ( " Pu l sam e " ) ;bo tonPrueba .addAct ionL is tener ( new Act ionLis tener ( ) {

pub l i c vo id ac t ionPer fo r m ed( Act ionEven t ev t ) {i f ( i < d a to s. le n g th ) {

r a m a = n ew Ra m a( d at o s[ i + + ] ) . no de ( ) ;

 / / Con t r o l d e la ú t l im a selección r eal izadase leccion = ( De fau l tMutab leTreeNode)

a rbo l .ge tLastSe lec tedPathComponen t ( ) ;i f ( se l ecci o n = = n u l l )

se leccion = ra i z ; / / El m odelo cr ear á el ev en t o ad ecu ad o , y en r espu est a a él , e l ár bo l se act u al i zar á au t om át icam en t e

m o d e lo .i n se r t N od e I n t o ( r a m a ,s el ec ci o n, 0 ) ; } } } ) ;JPane l pane l = new JPane l ( ) ; / / Se crea un pane l pa ra con tener a l bo tón

pane l .add( bo t onPrueba ) ;

add( panel ,Bord erLayout .SOUTH ) ; }p u b l i c s t a t i c vo i d ma i n ( S t r i n g a rg s[ ] ) {

JFram e f rame = new JFram e( " Práct i ca EFI BS" ) ;f r a me .ad d W i n d o w L is te n er ( n e w W i n d o w Ad ap te r ( ) {

p u b l i c voi d w i n d o wCl o si n g ( W i n d o w Eve n t e v t ) {Sy st em . ex i t ( 0 ) ; } } ) ;

f ram e.ge tCon ten t Pane( ) .add( new Arbo les( ) ,BorderLayou t .CENTER ) ;f ram e.se tSize ( 200 ,500 ) ;f r a me .se tV is ib l e( t r u e ) ; } }

13.14 … Árboles

Page 427: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 427/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 2 8

Al igual que los árboles, las tablas en Swing son importantes ypoderosas. En principio, se crearon para constituir una interfaz ligado a

bases de datos a través del Java Database Connectivity  (JDBC), y así evitar la complejidad inherente al manejo de los datos, proporcionandomucha flexibilidad al programador.

Para cambiar los valores de la tabla en el IDE, en las propiedades seleccionemodel, tal y como se aprecia:

13.15 Tablas

Page 428: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 428/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 2 9

 / / El Mod elo de la Ta b la es el q u e con t r o la t od os los dat os q u e se co locan en el laclass ModeloDatos ext ends Abstr actTableModel {

Ob j ect da t os[ ] [ ] = { { " u n o " , " d os" , " t r e s" , " c u at r o " } ,{ " c in co " , " s e is " , " s ie t e" , " o c h o " } ,{ " n u e v e" , " d i ez " ," o n ce " ," d o ce " } , } ;

 / / I m p r im e los dat os en la con so la cada v ez qu e se p r od u ce u n cam b io en cu alq u ier a d e las casi l las de la t ab laclass TablaListener im plem ents TableModelL istener {

pub l i c vo id t ab leChanged( Tab leModelEven t ev t ) {f o r ( i n t i = 0 ; i < d a t o s. le n gt h ; i + + ) {

f or ( i n t j = 0 ; j < d at o s[ 0 ] . le ng t h ; j + + )Sy st e m .o u t .p r in t ( d a t os[ i ] [ j ] + " " ) ;

Sy s t em . o u t .p r i n t ln ( ) ; } }}M od el oD at o s( ) { / / Co n st r u c t o r

addTab leMode lLis tener ( new Tab laLis tener ( ) ) ; }p u b l i c i n t g e tCo l u mn Co u n t ( ) { / / Devu e l ve e l n ú me ro d e co l u mn a s d e l a t ab l a

r e t u r n ( d a t os [ 0 ] .l en g t h ) ; }p u b l i c i n t g etRo wCo u n t ( ) { / / Devu e l ve e l n ú m e ro d e f i l as d e l a t a b l a

re tu rn ( d a to s .l e n g th ) ; } / / Dev u elve el v alor d e u n a det er m in ada casi l la de la t ab la iden t i f icada m ed ian t e f i la y co lu m n apub l i c Ob ject ge t Va lueAt ( i n t f i l a ,i n t co l ) {

r e t u r n ( d a t os [ f i l a] [ c ol ] ) ; }}

13.15 … Tablas

Page 429: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 429/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 3 0

 / / Cam b ia el v alo r qu e con t ien e u n a det er m in ad a casi l la d e la t ab lapub l i c vo id se tValueAt ( Ob ject v a lo r , i n t f i l a , in t co l ) {

d at o s[ f i la ] [ c ol ] = v a lo r ;f i r e Ta b l eData Ch a n g e d( ) ; } / / I n d i ca q u e se h a camb i a d o

 / / I n d ica si la casi l la i den t i f icad a p or f i la y co lu m n a es ed i t ab lepubl ic boo lean isCel lEd i tab le( in t f i la , in t co l ) {

r e t u r n ( t r u e ) ; }

pub l i c c lass Tablas exten ds JPanel {pub l i c Tab las( ) {setL a you t ( n e w Bo rd e rLa yo u t ( ) ) ;

JTab le tab la = new JTab le ( new Mode loDatos( ) ) ; / * La t ab la se añ ade a u n Scr o l lPa n e par a qu e sea ést e el qu e con t r o le au t om át icam en t e entam año de la tab la , p resen tando una bar r a de desp lazam ien to cuando sea necesar io * /  JScro l lPane pane l = new JScro l lPane( tab la ) ;add( pan el ,BorderLayout .CENTER ) ; }

p u b l i c s t a t i c vo i d ma i n (S t r i n g a rg s[ ] ) {JFram e f rame = new JFram e( " Práct i ca EFI BS" ) ;f r a me .ad d Wi n d o w L is te n er ( n e w W i n d o w Ad ap te r ( ) {

p u b l i c voi d w i n d o wCl o si n g ( W i n d o wEven t e v t ) {

Sy st e m .e x it ( 0 ) ; } } ) ;f ram e.getCon ten t Pane( ) .add( new Tab las( ) ,BorderLayou t .CENTER ) ;f ram e.se tSize ( 200 ,200 ) ;f r a me .se tV is ib l e( t r u e ) ; } }

13.15 … Tablas

Page 430: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 430/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 3 1

JTabbedPane, puede manejar directamente todas las fichas, a base depestañas y permite cambiar a cualquiera de ellas.

13.16 Pestañas

Page 431: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 431/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 3 2

pub l i c c lass Pestañ as ex ten ds JPane l {

s t at i c Ob j e ct o b j e t o s[ ] [ ] = {{ " B o r d e s " , Bo r d e s. cl a ss } ,{ " B o t o n e s " , Bo t o n e s. cl a ss } ,

{ " Ba r r as " ,Es ca las.cl as s } , } ;s ta t ic JPane l c reaPane l ( Class c lase ) {

St r i n g t i t u l o = c l as e. g et N a m e ( ) ;t i t u l o = t i t u l o . su b s t r i n g ( t i t u l o . la st I n d e x Of ( ' . ' ) + 1 ) ;J Pane l pane l = nu l l ;t r y {

pane l = ( J Pane l ) c l ase .new I ns tanc e ( ) ;} c at c h ( E x ce p t i o n e ) {

Sy stem .ou t .p r i n t l n ( e ) ; }p a n e l. se t B or d e r ( n e w T it l e d B or d e r ( t i t u l o ) ) ;r e t u r n ( p a n e l ) ; }

pub l i c Pestañas ( ) {s et L a y ou t ( n e w B o r d e r L ay o u t ( ) ) ;J TabbedPane pes tana = new J TabbedPane ( ) ;f o r ( i n t i = 0 ; i < o b j et o s. le n gt h ; i + + ) {

p e st a n a .a d d Ta b ( ( S t r i n g ) o b j e t o s[ i ] [ 0 ] ,c r ea Pa n e l( ( Cl a ss ) o b j e t o s[ i ] [ 1 ] ) ) ; }

add( pes tana,Bord erLayout .CENTER ) ;pes tana .s e tSe lected I ndex ( ob je tos . leng th / 2 ) ;

}p u b l i c s t a t i c v o i d m a i n ( S t r i n g a r g s[ ] ) {

J Fr ame f r am e = n ew J F r ame( " Pr áct i c a EF IBS" ) ;

f r a m e . ad d W i n d o w L i st e n e r ( n e w W i n d o w A d a p t e r ( ) {pub l i c v o id w ind ow Clos ing ( W indow Ev en t ev t ) {

Sy st e m . ex i t ( 0 ) ; } } ) ;f r am e .getC on ten tPane ( ) .add ( new Pestañas ( ) ,Bo r de r Lay ou t .CEN TER ) ;f r am e .se tS i ze ( 460 ,350 ) ;f r am e .se tV i s i b l e( t r ue ) ; }

}

13.16 ... Pestañas

Page 432: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 432/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 3 3

Normalmente, la ventana de selección de ficheros se utiliza parapresentar una lista de ficheros y permitir al usuario seleccionar cuál deellos debe abrir la aplicación; o, por el contrario, permitir al usuario laintroducción de un nombre o selección del fichero con que se quierensalvar datos.

13.17 Selector de Ficheros

Page 433: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 433/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 3 4

publ ic c lass Selector ex ten ds JPanel {s ta t i c JFram e ven tana ;pub l i c Se lecto r ( ) {

Bu t t o n b o to n 1 = n e w Bu t t o n ( " Fi l eD i al o g AW T" ) ;Bu t t o n b o to n 2 = n e w Bu t t o n ( " Fi l eCh o o se r SWI NG" ) ;a d d( b o t o n 1, " N o r t h " ) ;a d d ( b o to n 2 ," So u th " ) ;

 / / Fi leDia log im p lem en t ado por el AW TAct i o n L is te n er f d = n e w Act i o n L is te n er ( ) {

pub l i c vo id ac t ionPer fo r m ed( Act ionEven t ev t ) {n e w Fi l eD i al o g (ve n ta n a) . se tV is ib l e ( t r u e ) ; } } ;

 / / Fi leCh ooser im p lem en t ad o por Sw in g

Act ionLis tener f c = new Act ionL is tener ( ) {pub l i c vo id ac t ionPer fo r m ed( Act ionEven t ev t ) {

n e w JFi l eCh o o se r ( ) . sh o w D i al o g ( ve n ta n a, " Ab r i r " ) ; } } ;bo ton1 .addAct ionL istener ( f d ) ;bo ton2 .addAct ionL istener ( f c ) ; }

p u b l i c s t a t i c vo i d ma i n ( St r i n g a rg s [ ] ) {Se lecto r pane l = new Se lec to r ( ) ;ve n ta n a = n e w JFra me ( ) ;ventana.getContentPane() .add( panel ,BorderLayout .CENTER ) ;ve n ta n a .a d d W i n d o wL i ste n e r ( n e w W i n d o wAd a p te r ( ) {

p u b l i c vo i d w i n d o wCl o si n g ( W i n d o wEven t e v t ) {Sy st e m .e x it ( 0 ) ; } } ) ;

ven tana .setS ize ( 30 0 ,80 ) ;ven tana .setT i t l e ( " Práct i ca EFI BS" ) ;ve n ta n a. se tV is ib l e ( t r u e ) ; } }

13.17 … Selector de Ficheros

Page 434: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 434/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 3 5

publ ic c lass SelectorResponda extends JFrame implements Act ionL istener {pub l i c Selec to rResponda( ) {

JBu t t o n b o to n = n e w JBu t t o n ( " Mu e st ra Ven ta n a " ) ;g e tCo n te n tPan e ( ) . ad d ( b o to n , " Ce n te r " ) ;p a c k ( ) ;bo ton .addAct ionL is tener ( t h i s ) ;

}pub l i c vo id ac t ionPer fo r m ed( Act ionEven t ev t ) {

i n t res = JOpt ionPane .show Conf i rm Dialog ( th i s ," Responda Si o No" ," Práct ica EFI BS" ,JOpt ion Pane.YES_NO_OPTI ON ) ;

St r ing respuesta = nu l l ;

i f ( res = = JOpt ionPane.YES_OPTI ON )re spu e sta = " Si " ;

e lsere sp u es ta = " No " ;

Sys te m.o u t . p r i n t l n ( " Re sp u e sta : " + re sp u es ta ) ;}p u b l i c s t a t i c vo i d ma i n ( S t r i n g a rg s [ ] ) {

new Se lecto r Responda( ) .se tV is ib le ( t rue ) ;}

}

13.17 … Selector de Ficheros

Page 435: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 435/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 3 6

Del código anterior, elimine el código de la función ac t i onPe r fo rmed ysustitúyalo por las siguientes líneas

Y observe otra forma de como se podría utilizar un Selector deFicheros.

St r i ng r espuesta = JOp t i onPane .show I npu tD ia l og( t h i s ," Nombr e " ," Tu t o r ia l de Java , Sw ing" ,JOpt ionPane .DEFAULT_OPTI ON ) ;

Sys tem.ou t . p r i n t l n ( " Respuesta : " + respuesta ) ;

13.17 … Selector de Ficheros

Page 436: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 436/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 3 7

Algunas de las clases de Java proporcionan métodos de convenienciapara permitir realizar acciones a través del teclado. Por ejemplo, laclase Abs t rac tBu t t on dispone del método setMnemonic() , que permiteespecificar el carácter, que en combinación con una de las teclas demodificación, hace que se ejecuten las acciones asociadas a losbotones. El siguiente ejemplo es muy sencillo pero se muestra como se

utilizan estos métodos utilizando las direccionales del teclado.

13.18 Teclado

Page 437: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 437/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 3 8

pub l i c c lass Teclado2 ex t ends JFram e imp lem ents Act ionL is tener {p r o t e ct e d JB u t t o n b o t on e s[ ] = n e w J Bu t t o n [ 9 ] ;pub l i c Tec lado2 ( ) {

supe r ( " P ráct i ca EFI BS" ) ;Con t a i ne r pane = ge t Con t en t Pane ( ) ;pane . se t Layou t ( new Gr i dLayou t ( 3 , 3 ) ) ;Bo rde r bo rd e = Bo rde rFac t o ry . crea t eL ineBo rde r ( Co l o r . b lack ) ;KeySt rok e a r r i ba = KeySt rok e .ge t KeySt rok e ( KeyEven t . VK_UP,0 ) ;

KeySt rok e abaj o = KeySt rok e .ge t KeySt rok e ( KeyEven t . VK_DOWN,0 ) ;KeySt rok e i zqda = KeySt rok e .ge t KeySt rok e ( KeyEven t . VK_LEFT ,0 ) ;KeySt rok e d r cha = KeySt rok e .ge t KeySt rok e ( KeyEven t . VK_RI GHT, 0 ) ;JRoo t Pane roo t Pane = ge t Roo t Pane ( ) ;

r oo t Pane .reg i s t e rKeyboa rdAct i on ( t h i s , " a r r i ba " , ar r i ba ,

JCom pon ent .WH EN_ANCESTOR_OF_FOCUSED_COMPONENT ) ;roo t Pane .reg i s t e rKeyboa rdAct i on ( t h i s , " aba j o " , aba j o ,

JCom pon ent .WH EN_ANCESTOR_OF_FOCUSED_COMPONENT ) ;roo t Pane .reg i s t e rKeyboa rdAct i on ( t h i s , " d rcha " , d rcha ,

JCom pon ent .WH EN_ANCESTOR_OF_FOCUSED_COMPONENT ) ;roo t Pane .reg i s t e rKeyboa rdAct i on ( t h i s , " i zqda " , i zqda,

JCom pon ent .WH EN_ANCESTOR_OF_FOCUSED_COMPONENT ) ;f or ( i n t i = 0 ; i < 9 ; i+ + ) {

JBu t t on bo t on ;

b o t on = n e w J Bu t t o n ( ) ;

bo t on . set Bo rde r ( bo r de ) ;b o t o n .s et N a m e ( n e w I n t e g e r ( i ) . t o St r i n g ( ) ) ;pane .add ( bo t on ) ;

b o t on e s[ i ] = b o t on ;}se t Si ze( 200 , 200 ) ;

}

13.18 … Teclado

Page 438: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 438/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 3 9

pub l i c vo id act ionPer fo rm ed( Act ionEven t ev t ) {Co m p o n e n t f o co = g e tFo cu sOw n e r ( ) ;St r i n g n o m b re = f o co.g etNa me ( ) ;i n t i n d ic e = I n t e g er . pa r se I n t ( n o m b r e ) ;b o to n e s[ i n d i ce ] . se tTe x t ( " " ) ;St r i n g a cc i on = e v t . g etAc t i on Co mm a n d ( ) ;i f ( a cci o n .e q u al s ( " a r r i b a " ) ) {

i n d i ce = ( i n d i ce < 3 ) ? i n d ice + 6 : i n d ice - 3 ;} e l se i f ( a cc io n .eq u a l s( " a b aj o " ) ) {

i n d i ce = ( i n d i ce > 5 ) ? i n d ice - 6 : i n d ice + 3 ;} e l se i f ( a cc io n .eq u a ls ( " i zqd a " ) ) {i n d ic e = ( i n d i ce = = 0 ) ? i n di ce = 8 : i n d ic e - 1 ;

} e l se { / / asu m e d r ch ai n d i ce = ( i n d i ce = = 8 ) ? i n d ice = 0 : i n d i ce + 1 ;

}b o to n e s[ i n d i ce ] . se tTe x t ( " X " ) ;bo tones[ ind ice] . requestFocus( ) ;

}

s t a t i c p u b l i c vo i d ma i n ( S t r i n g a rg v [ ] ) {n e w Tec la d o 2 ( ) . sh o w( ) ;}

}

13.18 … Teclado

Page 439: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 439/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 4 0

En anteriores programas se ha utilizado la clase JScrol lPane paraproporcionar una forma automática de desplazar el contenido de unaventana por parte del sistema. Esta clase permite dejar las manos libresal programador para centrarse en el código de su aplicación, sin tenerque estar pendiente de tener que controlar la visibilidad de todo o partedel contenido de la ventana.

13.19 Paneles de Desplazamiento

Page 440: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 440/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 4 1

class Desplazables exten ds JPanel im plem ents Chang eListen er {pr ivate JSpl i tPane panelVer t ;pr iv ate JScro l lPane panelScro1 ;publ ic Desplazables() {

setL ayo u t ( n e w Bo rd e rLa yo u t ( ) ) ; / / Se cr ea u n a zon a par a p r esen t ar el t ex t o cor r esp on d ien t e al f ich er ocreaPane lSup( ) ;

 / / Se cr ea u n pan el ver t icalm en t epanelVer t = new JSpl i t Pane( JSpl i t Pane.VERTI CAL_SPLI T ) ;add( panelVer t ,BorderLayout .CENTER ) ;pane lVer t . se tLef tCom ponen t ( pane lScro1 ) ;

}pub l i c vo id s ta t eChanged( ChangeEven t ev t ) {

i f ( e v t . g etSo u rce( ) = = p a n el Sc ro 1 .g e tVi e wp o r t ( ) ) { / / Cogem os la posición act u al den t r o de la v ist a co r r espon d ien t e al pan elPo i n t p o i n t = p a n el Sc ro 1 .g e tVi e wp o r t ( ) . g e tV ie wPo si t i o n ( ) ;

}}p r i va te v o id creaPane lSup( ) {

JTex tA re a a re aTe x to = n e w JTe x tA re a( ) ; / / Cre a mo s e l p a n el de l a zo n a d e t e x to

13.20 … Paneles de Desplazamiento

Page 441: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 441/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 4 2

 / / Se car ga e l f i ch er o en e l ár ea de t ex t o , cu idando de cap t u r ar / / t odas las ex cepcion es qu e se pu edan p r odu ci r

t r y {Fi l eReader f i l eSt r eam = new Fi leReader ( " Bo tones .java" ) ;a reaTex t o . read( f i l eSt r eam, "Bo ton es. java" ) ;

} catch ( Fi leNo tFoundExcep t ion e ) {Sys tem.ou t . p r i n t l n ( " Fi che ro no encon t r ado " ) ;

} cat ch ( I OExcep t i on e ) {Sys tem.ou t . p r i n t l n ( " Er ro r po r I OExcep t i on " ) ;

}pane lSc ro1 = new JScro l lPane( ) ; / / Cream os el pane l desp lazab le pa ra e l á rea de tex t opane lSc ro1 .ge tV iew po r t ( ) . add ( a reaTex to ) ;pane lSc ro1 .ge tV iewpor t ( ) .addChangeL is tener ( th i s ) ;

}pub l i c s t a t i c vo i d ma in ( St r i ng a rgs [ ] ) {

JFram e ven tana = new JFram e( " Tu to r i a l de Java, Sw ing " ) ;v e n t an a .a dd W i n d o w L i st e n er ( n e w W i n d o w A da p t er ( ) {

pub l i c vo i d w indow Closing ( W indow Even t ev t ) {Sy st em . ex i t ( 0 ) ; } } ) ;

ven t ana .ge tCon t en tPane( ) .add( new Desp lazab les( ) ,BorderLayou t .CENTER ) ;ven t ana .setS ize ( 46 0 ,300 ) ;ven tana .setV i si b l e( t r ue ) ; } }

13.20 … Paneles de Desplazamiento

Page 442: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 442/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 4 3

Para crear un proyecto Swing en Netbeans: oprima click derecho en elnuevo paquete, y seleccione N ew – Jf r am e Fo r m ó Jp an el Fo r m .

Swing es muy similar a AWT, y como se menciono antes la únicadiferencia es que los componentes en Swing tienen una J antes delnombre, esto para diferenciarlos de los de AWT.

13.21 Swing en NetBeans 5.0

Page 443: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 443/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 4 4

Dentro de las características más relevantes está la nueva aparienciadel escritorio a través de nuevas opciones en “Look and Feels”. Verimágenes.

Se ha adicionado un soporte de impresión para Jtable.

El jFrame.add se ha vuelto equivalente jFrame.getContentPane().add().

13.22 Swing en ver 5.0

Page 444: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 444/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 4 5

Crea un paquete con el nombre g u i . Sobre ese paquete crea un nuevo J f rame llamado Principal. Agregue una imagen a dicho frame por medio de un JLabel y utilizando

la barra de propiedades. Crea un Menú con las siguientes opciones:

Archivo

SalirClientes

Ingresar Listar

Productos Ingresar Listar

Ordenes Ingresar Listar

13.23 Ejercicio Práctico

Page 445: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 445/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 4 6

Agréguele a la opción de Salir el evento de poder cerrar la ventana.

Cree un nuevo Frame llamado I nser t a rCl i en t e para poder Ingresar unCliente al Sistema con los siguientes campos:

Una etiqueta N o m b r e y un campo de texto . Una etiqueta Cédula y un campo de texto . Una etiqueta Telé fono y un campo de texto . Una etiqueta Direcc ión y un campo de texto . Un botón I n g r e s a r .

Cree un nuevo método en la clase Ut i l i t a r ios . java llamadoi ng resa rC l ien te ( ) que recibe dos parámetros:

Nombre de archivo. Y un objeto de tipo Cliente.

13.23 … Ejercicio Práctico

Page 446: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 446/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 4 7

Este método debe obtener el archivo y agregar al final del mismo, todoslos datos del cliente recibido como parámetro y separados por coma (,).

Una vez realizada esta operación, limpie los valores de las cajas detexto de mencionado Frame, para que de esta forma se pueda realizarnuevamente el proceso de inserción.

Agregue un botón “Cancelar” para cerrar dicha ventana.

13.23 … Ejercicio Práctico

Page 447: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 447/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 4 8

13.23 … Ejercicio Práctico

Page 448: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 448/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 4 9

El instructor realizará una explicación detallada del ejercicio

Cree un nuevo paquete que se llame:org .e f ibs .s i st em aDeOrd enes.Sw ing

Cree un nuevo JFrame llamado Manten im ien toDeCl ien tes que

contenga las etiquetas: id,nombre,dirección y teléfono. Y los botones:Insertar, Modificar, Eliminar y Buscar.

En el método windowsOpened invoque el método leer de la claseAdminArchivos que se implementó en Cap13.

13.23 … Ejercicio Práctico

Page 449: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 449/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 5 0

En el método windowsClosed invoque el método escribir del

AdminArchivos que se implementó en Cap13.

Implemente cada uno de los botones de: insertar,modificar,eliminar ybuscar ayudado de las clases: AdminClientes y AdminArchivospropuestas en los Cap12-Cap13 respectivamente.

Finalmente, ingrese datos y prueba el correcto uso de los mismos tantoa nivel del archivo como de la memoria.

13.23 … Ejercicio Práctico

Page 450: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 450/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 5 1

AnexoAnexo

Nuevas CaracterNuevas Caracterí í sticas de J2SEsticas de J2SE

Page 451: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 451/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 5 2

2. Entorno de Desarrollo Integrado2. Entorno de Desarrollo Integrado

3. El Lenguaje Java3. El Lenguaje Java

4. Tipos de Datos y Operadores4. Tipos de Datos y Operadores

5. Control de Flujo5. Control de Flujo

1. Introducción a Java1. Introducción a Java

6. Conceptos Básicos en Java6. Conceptos Básicos en Java

7. Trabajando con Clases7. Trabajando con Clases

Anexo

Page 452: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 452/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 5 3

8. Utilización de Interfaces8. Utilización de Interfaces

9. Estándares de Desarrollo9. Estándares de Desarrollo

10. Manejo de Excepciones10. Manejo de Excepciones

11. Utilizando Cadenas, Arreglos y Colecciones11. Utilizando Cadenas, Arreglos y Colecciones

12. Clases en Java12. Clases en Java

13. Swing13. Swing

AnexoAnexo

Anexo

Page 453: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 453/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 5 4

Objetivos

Dar a conocer las nuevas características delJ2SE.

Mostrar ejemplos de algunas de lascaracterísticas más relevantes.

Qué incluye el J2SE

Page 454: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 454/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 5 5

La actual versión se conoce como la 1.5.0 ó la 5.0 y es asociada por

 “Tiger Proyect”. Se caracteriza por:

Facilidad de desarrollo.

Programas estructurados en forma más ordenada.

Da mayor seguridad.

Proporciona un soporte lingüístico para idiomas comunes.

Not a : Los e jem plos de las nuevas carac ter ís t icas se ana l izarán

en los s igu ien t es cap ítu los según co r respondan .

… Qué incluye el J2SE

(Java 2 Standard Edition) ?

Qué incluye el J2SE

Page 455: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 455/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 5 6

… Qué incluye el J2SE

(Java 2 Standard Edition) ?

Dentro de la facilidad de desarrollo de la ver 5.0 están las siguientes:

Metadatos. Tipos genéricos. Autoboxing. Ciclos aumentados. Tipos enumerados. Importaciones estáticas. Enumeración de tipos seguros.

… Qué incluye el J2SE

Page 456: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 456/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 5 7

Utilidades concurrentes. Auto-empaquetado Desempaquetado. Generación de interfaces RMI más simples. Argumentos variables. Salida formateada. Entrada mejorada.

… Qué incluye el J2SE

(Java 2 Standard Edition) ?

… Qué incluye el J2SE

Page 457: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 457/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 5 8

Metada tos:

Poseen la habilidad de asociar información adicional a: clases,interfaces y campos.

Se puede leer por medio de un compilador javadoc o por cualquierotra herramienta.

El principal objetivo de los metadatos, es el de poder desarrollarherramientas que tengan una estructura común y que reduzcan elesfuerzo requerido para la programación y el despliegue.

Las herramientas pueden utilizar los metadatos para generarcódigo fuente adicional o proveer información adicional en eldebugueo.

… Qué incluye el J2SE

(Java 2 Standard Edition) ?

… Qué incluye el J2SE

Page 458: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 458/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 5 9

Anotac iones:

Se declara en forma similar a una interfaz.

Se precede de la palabra clave ‘@’.

La declaración de los métodos no deben tener ningún parámetro ocláusula de lanzamiento.

… Qué incluye el J2SE

(Java 2 Standard Edition) ?

… Qué incluye el J2SE

Page 459: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 459/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 6 0

Los tipos de datos de retorno son restringidos a primitivos,cadenas, objetos, enums y arreglos de esos tipos.

Los métodos pueden tener valores default.

Pueden ser vistas como un especial tipo de modificador.

Puede ser utilizado aunque se estén utilizando modificadores talescomo: public, static y final.

Q y

(Java 2 Standard Edition) ?

… Qué incluye el J2SE

Page 460: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 460/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 6 1

Tipos Genér icos:

Permiten a un tipo o método operar sobre objetos de varios tipos. Provee compilación segura. Elimina el “casting” o conversión de tipos(ver capítulo 3), que debe

llevar a cabo un elemento fuera de la colección. Ejemplo: public class ejemploDeTiposGenericos{

public static void main(String args[]){

Vector<Integer> elVector = new Vector();

elVector.addElement(new Integer(20));elVector.addElement(new Integer(30));elVector.addElement(new Integer(40));

}}

Q y

(Java 2 Standard Edition) ?

… Qué incluye el J2SE

Page 461: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 461/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 6 2

A u t o b o x i n g y a u t o - u n b o x i n g :

Elimina conversiones manuales entre tipos primitivos tales comoenteros(int) y wrappers o envolturas(Integer).

Ej em p lo de Au tobox ing y Unbox ing

public class ejemploDeAutoboxinInboxing {

public static void main(String args[]){

Integer a = new Integer(20);int b=0;b=a; // AutoBoxinga=b; // Unboxing

}}

Q y

(Java 2 Standard Edition) ?

… Qué incluye el J2SE

Page 462: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 462/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 6 3

Cic los Aum ent ados ( Fo r each) : Reemplazo de iteradores y variables índices cuando se itera sobre

colecciones y arreglos.

Ejemplo de ciclos aumentados (for each):

...public static void main(String args[]){

for(Season e: Season.values()){System.out.println(e.toString());

}}

Q y

(Java 2 Standard Edition) ?

… Qué incluye el J2SE

Page 463: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 463/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 6 4

Enu m erac ión de Tipos:

Los enums de la nueva versión son mucho más poderosos, ya quese pueden agregar métodos y campos a un tipo de enum.

Se pueden implementar interfaces.

Los tipos “enum”, proveen implementación de todos los métodosde los objetos.

Son comparables y serializables.

(Java 2 Standard Edition) ?

… Qué incluye el J2SE

Page 464: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 464/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 6 5

Ejemplo de implementación de un enum y su salida:

public class ejemploEnum {

public enum Season {WINTER, SPRING, SUMMER, FALL}

public static void main(String args[]){

for(Season e: Season.values()){System.out.println(e.toString());

}}

(Java 2 Standard Edition) ?

… Qué incluye el J2SE

Page 465: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 465/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 6 6

I m po r t aciones está t i cas:

Se refiere a las constantes estáticas de una clase sin necesidad deheredar de esta.

Por ejemplo:import static java.lang.Math.*;public classejemploImportacionesEstaticas {

public static void main(String args[]){

double r = cos(PI * 10);}

}

(Java 2 Standard Edition) ?

… Qué incluye el J2SE

Page 466: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 466/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 6 7

Sa l idas fo rm ateadas :

Se puede generar salidas con formato, a través del uso deinstrucciones tales como: %s, %5d%n,etc..

Facilita la emigración del código de lenguajes como C a Java,permitiendo el uso de printf.

Ejemplo:public class salidasConFormato {

public static void main(String args[]){int id = 20;String nombre = new String("Jose");System.out.printf("%d,%s",id,nombre );

}

}

(Java 2 Standard Edition) ?

… Qué incluye el J2SE

Page 467: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 467/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 6 8

Ent radas fo r m ateadas:

Se puede llevar a cabo lecturas de otros tipos de datos que nosean String, sin necesidad de tener que hacer un parseo al tiporespectivo.

Por ejemplo:public class entradasConFormato {

public static void main(String args[]){Scanner s = new Scanner(System.in);String parm = s.next();int value = s.nextInt();s.close();

}}

(Java 2 Standard Edition) ?

… Qué incluye el J2SE

Page 468: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 468/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 6 9

Argum en tos va r i ab les :

Permite que múltiples argumentos, sean pasados a los métodoscomo parámetros.

Por ejemplo:public class ejemploDeVarArgs{

public static void main(String args[]){String result = MessageFormat.format("At {1,time} on {1,date}, there was

{2}on planet " + "{0,number,integer}.", 7, new Date(), "a disturbance in the

Force");}

}

(Java 2 Standard Edition) ?

… Qué incluye el J2SE

Page 469: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 469/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 7 0

Ut i l i dades concur ren t es:

Se caracteriza por proveer un alto desempeño en la construcciónde hilos.

Cada uno de los hilos están conformados por ejecutores que sonlos encargados de llevar a cabo ciertas tareas en el framework.

Se hacen uso de los semáforos como medios para dejar pasar o noel uso de algo.

(Java 2 Standard Edition) ?

… Qué incluye el J2SE

Page 470: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 470/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 7 1

Ut i l i dades concu r ren t es ( con t i nuación ) :

Mayor capacidad de procesamiento.

Uso más adecuado de los hilos.

Incluye cerrojos y otras primitivas de sincronización.

Incluye clases para la manipulación de semáforos.

(Java 2 Standard Edition) ?

… Qué incluye el J2SE

Page 471: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 471/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 7 2

Ut i l i dades concu r ren t es ( con t i nuación ) :

En lo que respecta al manejo de hilos, el manejador de prioridad acambiado.

Se incluyen las clases Thread.State y newgetState.

Se puede obtener mejores resultados haciendo uso del trace através de los métodos getStackTrace y getAllStackTraces.

En el método sleep() se pueden tener tiempos menores a unmilisegundo.

(Java 2 Standard Edition) ?

Qué incluye el J2SE

Page 472: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 472/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 7 3

El principal objetivo de esta versión JDK 5 es la facilidad dedesarrollo con las nuevas características como tipos de datosgenéricos, el loop for-each, autoboxing/unboxing, enums, varargs,static imports y anotaciones.

El JDK 5 está diseñado para hacer que los programas seestructuren de manera más ordenada, más corta y fortificando laseguridad. Además, proporciona un soporte lingüístico paraidiomas comunes.

Resumen.

Page 473: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 473/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 7 4

IntroducciIntroduccióón a Javan a JavaData BaseData Base

Conectivity(JDBCConectivity(JDBC))

Page 474: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 474/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 7 5

Objetivos

Explicar los objetos de JDBC que permitenmanipular la Base de Datos: Statement,PreparedStatement y CallableStatement.

Explicar el proceso de conectividad con la Basede Datos.

Desarrollar un ejemplo completo con manejode funciones y procedimientos almacenadoshaciendo uso de objetos de JDBC.

Page 475: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 475/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 7 6

2. Interfaces JDBC2. Interfaces JDBC

3. Preparación de la Base de Datos3. Preparación de la Base de Datos

4. Procesamiento de Resultados4. Procesamiento de Resultados

5. Manipulación de Resultados5. Manipulación de Resultados

1. Introducción1. Introducción

6. El Objeto PreparedStatement6. El Objeto PreparedStatement

7. Procedimientos Almacenados7. Procedimientos Almacenados

8. Ejercicios Prácticos8. Ejercicios Prácticos

1 Introducción

Page 476: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 476/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 7 7

JDBC es una especificación de un con jun to de c lases (API) ymétodos de operac ión que permiten a cualquier programa Java

acceder a sistemas de bases de datos de forma homogénea. Incluye:

El JDBC 1.0 API, que proporciona la funcionalidad básica para elacceso de los datos.

El JDBC 2.0 API suple el API básico con características másavanzadas y proporciona una manera estándar de tener acceso alas últimas características objeto-relacional.

Además, el nuevo API incluye características tales como elfuncionamiento mejorado de las actualizaciones de los resultados y

el scrollable. También incorpora la tecnología de JDBC para aplicaciones cliente-

servidor con el pool de conexiones y transacciones distribuidas.

1.1 Introducción

1.2 JDBC 2.0 API -

Page 477: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 477/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 7 8

El JDBC 2.0 incluye todo lo del API del Java 2 Standard Edition, ytambién el API JDBC de extensión estándar.

La API JDBC es una parte integral de la plataforma Java. Incluyemanejo de conex i ones a base de da t os , e j ecuc ión de sent enc iasSQL, s to r e p r ocedur es, sopor t e de t r ansacciones, et c .

JDBC provee una interfaz de programación única, que independiza a lasaplicaciones del motor de base de datos usado y del mecanismo deconexión.

JDBC generaliza las funciones de acceso a datos más comunes. Lasclases están contenidos en los paquetes: j av a.sq l y j av ax .sq l

Características

1.3 JDBC 2.0 API –

Page 478: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 478/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 7 9

Un driver JDBC es usado por la JVM para traducir las invocaciones JDBCgenéricas en invocaciones que la DB propietaria entiende.

Los drivers son clases Java que se cargan en ejecución.

Existen drivers JDBC para la mayoría de los motores de base de datos.Típicamente, los fabricantes de bases de datos proveen el driver JDBCpara su motor, aunque también es posible encontrarlos en Internet.

Los drivers al estar escritos en Java son automáticamente instalables,

portables y seguros.

Otras Características

1.4 Acceso de JDBC a Bases de

Page 479: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 479/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 8 0

El API JDBC soporta dos modelos diferentes de acceso a Bases deDatos, los modelos de dos y tres capas.

Datos

Page 480: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 480/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 8 1

Este modelo se basa en que la conexión entre la aplicación Java o elapplet que se ejecuta en el navegador, se conectan directamente a labase de datos.

Esto significa que el driver JDBC específico para conectarse con la basede datos, debe residir en el sistema local. La base de datos puede estaren cualquier otra máquina y se accede a ella mediante la red. Esta es laconfiguración típica Cliente/Servidor : el programa cliente envíainstrucciones SQL a la base de datos, ésta las procesa y envía losresultados de vuelta a la aplicación.

1.5 Modelo de dos Capas

Page 481: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 481/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 8 2

En este modelo de acceso a las bases de datos, las instrucciones sonenviadas a una capa intermedia entre Cliente y Servidor, que es la que

se encarga de enviar las sentencias SQL a la base de datos y recoger elresultado desde la base de datos. En este caso el usuario no tienecontacto directo, ni a través de la red, con la máquina donde reside labase de datos.

Este modelo presenta la ventaja

de que el nivel intermediomantiene en todo momento elcontrol del tipo de operaciones quese realizan contra la base de datosy además, está la ventaja adicionalde que los drivers JDBC no tienen

que residir en la máquina cliente,lo cual libera al usuario de lainstalación de cualquier tipo dedriver.

1.6 Modelo de tres Capas

Page 482: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 482/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.4 8 3

Un driver JDBC puede pertenecer a una de cuatro categorías diferentes

en cuanto a la forma de operar. Estas categorías son las siguientes:

Puente JDBC – ODBC.

Java / Binario.

100% Java / Protocolo Nativo. 100% Java / Protocolo Independiente.

1.7 Tipos de Drivers

1.8 Tipos de Drivers –

Page 483: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 483/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 4 8 4

La primera categoría de drivers es la utilizada por Sun inicialmente para

popularizar JDBC y consiste en aprovechar todo lo existente,estableciendo un puente entre JDBC y ODBC. Este driver conviertetodas las llamadas JDBC a llamadas ODBC y realiza la conversióncorrespondiente de los resultados.

Puente JDBC-ODBC

1.8 … Tipos de Drivers –

Page 484: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 484/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 4 8 5

La ventaja de este driver, proporcionado con el JDK, es que Java

dispone de acceso inmediato a todas las fuentes posibles de bases dedatos y no hay que hacer ninguna configuración adicional aparte de laya existente.

No obstante, tiene dos desventajas muy importantes: por un lado, lamayoría de los drivers ODBC a su vez convierten sus llamadas a una

librería nativa del fabricante DBMS, con lo cual la lentitud del driverJDBC-ODBC puede ser exasperante, al llevar dos capas adicionales queno añaden funcionalidad alguna y por otra parte, el puente JDBC-ODBCrequiere una instalación ODBC ya existente y configurada.

Puente JDBC-ODBC

1.8 Tipos de Drivers –

Page 485: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 485/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 4 8 6

Lo anterior implica que para distribuir con seguridad una aplicación Javaque use JDBC habría que limitarse en primer lugar a entornos Windows

(donde está definido ODBC) y en segundo lugar, proporcionar losdrivers ODBC adecuados y configurarlos correctamente. Esto hace queeste tipo de drivers esté totalmente descartado en el caso deaplicaciones comerciales, e incluso en cualquier otro desarrollo, debeser considerado como una solución transitoria, porque el desarrollo de

drivers totalmente en Java hará innecesario el uso de estos puentes.

Puente JDBC-ODBC

1.9 Tipos de Driver –

Page 486: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 486/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 4 8 7

Este driver  se salta la capa ODBC y habla directamente con la librería

nativa del fabricante del sistema DBMS (como pudiera ser DB-Library para Microsoft SQL Server o CT-Lib  para Sybase SQL Server). Estedriver es un driver 100% Java pero aún así necesita la existencia de uncódigo binario (la librería DBMS) en la máquina del cliente, con laslimitaciones y problemas que esto implica.

Java/Binario

1.10 Tipos de Driver – 100%

Page 487: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 487/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 4 8 8

Es un driver implementado completamente en Java que se comunicacon el servidor DBMS utilizando el protocolo de red nativo del servidor.

De esta forma, el driver no necesita intermediarios para hablar con elservidor y convierte todas las peticiones JDBC en peticiones de redcontra el servidor. La ventaja de este tipo de driver es que es unasolución 100% Java y por lo tanto, independiente de la máquina en laque se va a ejecutar el programa.

Java/Protocolo Nativo

1.10 … Tipos de Driver – 100%

Page 488: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 488/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 4 8 9

Igualmente, dependiendo de la forma en que esté programado el driver,puede no necesitar ninguna clase de configuración por parte delusuario. La única desventaja de este tipo de drivers  es que el clienteestá ligado a un servidor DBMS concreto, ya que el protocolo de red queutiliza MS SQL Server por ejemplo no tiene nada que ver con el utilizadopor DB2, PostGresql u Oracle. La mayoría de los fabricantes de bases de

datos han incorporado a sus propios drivers JDBC del segundo o tercertipo, con la ventaja de que no suponen un costo adicional.

Java/Protocolo Nativo

1.11 Tipos de Driver – 100%

/ l d d

Page 489: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 489/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 4 9 0

Esta es la opción más flexible, se trata de un driver 100% Java / 

Protocolo independiente , que requiere la presencia de un intermediarioen el servidor. En este caso, el driver JDBC hace las peticiones de datosal intermediario en un protocolo de red independiente del servidorDBMS. El intermediario a su vez, que está ubicado en el lado delservidor, convierte las peticiones JDBC en peticiones nativas del sistemaDBMS.

Java/Protocolo Independiente

1.11 … Tipos de Driver – 100%

J /P t l I d di t

Page 490: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 490/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 4 9 1

La ventaja de este método es inmediata: el programa que se ejecuta enel cliente, y aparte de las ventajas de los drivers 100% Java , también

presenta la independencia respecto al sistema de bases de datos que seencuentra en el servidor.

Java/Protocolo Independiente

1.11 … Tipos de Driver – 100%

J /P t l I d di t

Page 491: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 491/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 4 9 2

De esta forma, si una empresa distribuye una aplicación Java para quesus usuarios puedan acceder a su servidor MS SQL y posteriormentedecide cambiar el servidor por Oracle, PostGresql o DB2, no necesitavolver a distribuir la aplicación, sino que únicamente debe reconfigurarla aplicación residente en el servidor que se encarga de transformar laspeticiones de red en peticiones nativas.

Es un driver Java Puro que habla directamente con la BD.

Es el método más eficiente de acceso a BD.

Java/Protocolo Independiente

1.11 … Tipos de Driver – 100%

J /P t l I d di t

Page 492: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 492/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 4 9 3

No requiere de ninguna librería adicional.

La mayoría de los fabricantes de BD proveen drivers JDBC de tipo 4para sus BD.

PostGresq l  , que es un s i st em a de base de da tos re lac iona l qu eun e las es t r uc tu ras c lás icas con los concep tos de p r og r am acióno r i en tada a ob je t os.

Java/Protocolo Independiente

2 I t f JDBC

Page 493: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 493/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 4 9 4

2. Interfaces JDBC2. Interfaces JDBC

3. Preparación de la Base de Datos3. Preparación de la Base de Datos

4. Procesamiento de Resultados4. Procesamiento de Resultados

5. Manipulación de Resultados5. Manipulación de Resultados

1. Introducción1. Introducción

6. El Objeto PreparedStatement6. El Objeto PreparedStatement

7. Procedimientos Almacenados7. Procedimientos Almacenados

8. Ejercicios Prácticos8. Ejercicios Prácticos

2 Interfaces JDBC

2 1 I t f JDBC

Page 494: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 494/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 4 9 5

JDBC define ocho interfaces para operaciones con bases de datos, de

las que se derivan las clases correspondientes.

La f igu ra s igu ien te , en fo rmato OMT, con nomenclatura UML,muestra la interrelación entre estas clases según el modelo de objetosde la especificación de JDBC.

2.1 Interfaces JDBC

2 1 Interfaces JDBC

Page 495: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 495/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 4 9 6

2.1 … Interfaces JDBC

2.2 Interfaces JDBC – Driver

Manager

Page 496: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 496/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 4 9 7

La clase que se encarga de cargar inicialmente todos los drivers JDBCdisponibles es Dr ive rManager .

Una aplicación puede utilizar Dr ive rManager para obtener un objetode tipo conexión, Connect ion , con una base de datos.

La conexión se especifica siguiendo una sintaxis basada en laespecificación más amplia de los URL, de la siguiente forma:

Por ejemplo, si se utiliza PostgresSQL el nombre del subprotocolo serápos tg res. En algunas ocasiones es necesario identificar aún más el

protocolo.

 j dbc: subprot ocolo/ / ser vidor : puer to/ base de dat os 

 jdbc: postgresql/ / desarrol lo: 5432/ nom ina 

Manager

2.3 Descripción de Clases e

Interfaces

Page 497: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 497/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 4 9 8

La siguiente tabla muestra la lista de clases e interfaces junto con unabreve descripción:

Proporciona información acerca de una Base de Datos, como

las tablas que contiene, etc.

DatabaseMetadata

Representa una conexión con una base de datos. Unaaplicación puede tener más de una conexión a más de unabase de datos

Connect ion

Proporciona diversa información acerca de un driver.D r i v e r P r o p e r t y I n f o

Permite gestionar todos los drivers instalados en el sistemaDr ive rManager

Permite conectarse a una base de datos: cada gestor de basede datos requiere un driver distinto

Dr ive r

Descr ipc iónCl ase / I n t e r f a ce

Interfaces

2.3 … Descripción de Clases e

Interfaces

Page 498: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 498/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 4 9 9

Permite obtener información sobre un ResultSet, como elnúmero de columnas, sus nombres, etc.

Resu l tSetMetadata

Contiene las filas o registros obtenidos al ejecutar un SELECTResul tSet

Permite ejecutar sentencias SQL con parámetros de entrada ysalida, típicamente procedimientos almacenados

Cal lab leSta tement

Permite ejecutar sentencias SQL con parámetros de entradaPreparedSta tementPermite ejecutar sentencias SQL sin parámetrosSta tem en t

DescripciónClase / Interface

Interfaces

2 3 Clases Principales

Page 499: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 499/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 5 0 0

El siguiente diagrama relaciona las cuatro clases principales que va ausar cualquier programa Java con JDBC y representa el esqueleto decualquiera de los programas que se desarrollan para atacar a bases de

datos.

2.3 Clases Principales

2 3 Clases Principales

Page 500: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 500/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 5 0 1

El siguiente diagrama relaciona las cuatro clases principales que va ausar cualquier programa Java con JDBC, y representa el esqueleto decualquiera de los programas que se desarrollan para atacar a bases de

datos.

Cierra

Cargar/RegistrarJDBC Driver

Estatutos SQL

EstatutosSELECT

DML/ DDLEstatutos

Conectar

Procesa elresultado

2.3 … Clases Principales

3. Preparación de la Base de

Datos

Page 501: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 501/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 5 0 2

2. Interfaces JDBC2. Interfaces JDBC

3. Preparación de la Base de Datos3. Preparación de la Base de Datos

4. Procesamiento de Resultados4. Procesamiento de Resultados

5. Manipulación de Resultados5. Manipulación de Resultados

1. Introducción1. Introducción

6. El Objeto PreparedStatement6. El Objeto PreparedStatement

7. Procedimientos Almacenados7. Procedimientos Almacenados

8. Ejercicios Prácticos8. Ejercicios Prácticos

Datos

3.1 Preparación de la Base de

Datos

Page 502: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 502/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 5 0 3

Una vez conocidas las principales características de un driver JDBC, nosconcentraremos en trabajar con conexiones a la base de datosPostgresql.

Antes de iniciar con la manipulación de JDBC-Postgresql, es importantepreparar la base de datos para que que reciba conexiones Java.

Debido a que Java solo utiliza conexiones TCP/IP, el servidorPostgreSQL debe ser configurado para que acepte conexiones TCP/IP.

Este paso se debe de realizar en el archivo pos tg resq l . con f localizado

en los directorios de configuración de la base de datos.(var/lib/pgsql/data/)

tcp ip_socket = t rue 

Datos

3 1 Preparación de la BD

Page 503: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 503/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 5 0 4

Una vez localizado este archivo, se debe modificar el siguienteparámetro para que acepte dichas conexiones:

También, se debe modificar el archivo pg_hba .con f para autenticar alcliente que realizará la petición de comunicación.

host all all 10.1.1.205 255.255.255.0 trust 

Tipo BaseDatos usuario DireccionIP Mascara Metodo 

3.1 … Preparación de la BD

3 2 Utilizando el Driver JDBC

Page 504: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 504/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 5 0 5

El driver sobre el cual se ha basado este manual se denominapg73 jdbc3 . j a r el cual es especifico por el distribuidor de la base de

datos (Postgresql). Si se cuenta con el servidor de Aplicaciones Sun Application Server,

este archivo o driver debe ser colocado en el directorio  / l i b de cadainstancia que requiere una comunicación con la base de datos. Porejemplo la ruta puede ser la siguiente:

donde: domain_config_dir  es la ruta de donde se encuentran losdominios e instancias correspondientes a él, y server1 es el nombre dela instancia que requiere la conexión. Por ejemplo:

<domain_config_dir>/domain1/server1/lib/

/var/opt/SUNWappserver/domains/domain1/efibs/lib/

3.2 Utilizando el Driver JDBC

3 3 Cargando el Driver

Page 505: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 505/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 5 0 6

Antes de conectarse a la base de datos, se requiere cargar el drivercorrespondiente.

Existen dos métodos disponibles para realizar este proceso y dependedel código que desee utilizar:

En el primer método el código carga implícitamente el driverutilizando el método Class. fo rName() . Para PostgreSQL se realizade la siguiente manera:

Class.forName("org.postgresql.Driver");

3.3 Cargando el Driver

3 3 Cargando el Driver

Page 506: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 506/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 5 0 7

Esto carga el driver, y mientras lo carga, el driver automáticamente se

registrara con el JDBC.

El método f o r N a m e ( ) puede lanzar la excepciónClassNotFoundExcept ion en caso de que el driver no este disponible.

Este método es el mas comúnmente utilizado, pero tiene la desventajaque ata el código a una base de datos en particular, por este motivosurge el segundo método como solución alterna.

3.3 … Cargando el Driver

3.3 Cargando el Driver

Page 507: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 507/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 5 0 8

El segundo método pasa como parámetro el driver a utilizar a lamaquina virtual (JVM) utilizando el argumento –D de la misma. Por

ejemplo:

En este ejemplo, la JVM procurará cargar el conductor como parte de suinicialización.

Por lo tanto, este método es el mejor a utilizar porque permite que su

código sea utilizado con otros paquetes de la base de datos sinnecesitar recompilar el código.

Java –D jdbc.drivers=org.postgresql.Driverexample.ImageViewer

3.3 … Cargando el Driver

3.3 … Cargando el Driver

Page 508: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 508/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 5 0 9

Por el momento no nos preocupemos como enviar la dirección (Url) dedonde se realizará la conexión, ya que será tratado más delante de estemanual

Cuando desde su código intenta abrir una conexión, y no se puedeestablecer la comunicación, se lanzara la excepción SQLExcept ion.Esto puede ser producto de que el driver no se encuentra en elCLASSPATH o que los parámetros de entrada son erróneos.

3.3 … Cargando el Driver

3.4 … Conectando a la Base deDatos

Page 509: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 509/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 5 1 0

Con JDBC, una base de datos es representada por medio de un URL

(Uniform Resource Locator). Con respecto a PostgreSQL, existen varias maneras de realizar esta

conexión:

jdbc:postgresql:database

jdbc:postgresql://host/database

jdbc:postgresql://host:port/database

3.4 … Conectando a la Base deDatos

3.4 … Conectando a la Base deDatos

Page 510: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 510/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 5 1 1

donde :

host   Es el nombr e del Servidor , por defecto es localhost 

Port   Número de Puert o donde el serv idor de la base de datos escucha. Por defecto en PostgreSQL es el puerto número 5432.

Database   Nombre de la Base de Datos 

3.4 … Conectando a la Base deDatos

3.4 … Conectando a la Base deDatos

Page 511: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 511/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 5 1 2

Ahora, para conectarse a la base de datos se requiere obtener unainstancia del objeto conexión (Connec t ion ) desde el JBDC de lasiguiente manera:

Por otra parte y una vez obtenido el objeto de tipo conexión, un métodoimportante para cerrar la conexión con la base es el c lose ( ) ;

Connection db = DriverManager.getConnection(url);

Connection db = DriverManager.getConnection(url, username,

password);

Connection db = DriverManager.getConnection(url, Propertiesprops);

db.close();

3 Co ecta do a a ase deatos

4 Procesamiento de Resultados

Page 512: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 512/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 5 1 3

2. Interfaces JDBC2. Interfaces JDBC

3. Preparación de la Base de Datos3. Preparación de la Base de Datos

4. Procesamiento de Resultados4. Procesamiento de Resultados

5. Manipulación de Resultados5. Manipulación de Resultados

1. Introducción1. Introducción

6. El Objeto PreparedStatement6. El Objeto PreparedStatement

7. Procedimientos Almacenados7. Procedimientos Almacenados

8. Ejercicios Prácticos8. Ejercicios Prácticos

4.1 Procesamiento deResultados

Page 513: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 513/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 1 4

Para publicar estatutos SQL en la base de datos, se requiere declararuna instancia Sta temen t o PreparedSta tement . Una vez obtenidaesta instancia, se podrá publicar la sentencia SQL.

Los objetos de declaración JDBC son creados a partir de una instanciade una conexión

Se utiliza el método crea teSta tement (), este proporciona un contextopara ejecutar declaraciones SQL.

4.1 … Procesamiento deResultados

Page 514: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 514/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 1 5

Por ejemplo:

El  j av a.sq l .St at em en t es una interfaz, no es un objeto. Por lo tanto loque se esta realizando es una implementación del métodocrea teSta tement ();

Connection conn = DriverManager.getConnection(

"jdbc:postgresql://10.1.1.193:5432/dbDemo”,“postgres",“ejemplo");

Statement stmt = conn.createStatement();

4.2 Ejecutar una declaraciónSQL

Page 515: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 515/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 1 6

La interfaz Statement proporciona tres métodos para ejecutar estatutos

SQL ex e cu t eQu er y ( St r i n g sq l) . Utilizado para sentencias SELECT y

retorna un objeto Resul tSet para el procesamiento de losregistros.

ex e cu t e Up d at e ( St r i n g sq l ) . Utilizado para DML/DDL y retorna un

e n t e r o (int) indicando el número de registros afectados, de locontrario retorna 0 para DDL.

ex ecu t e( St r in g sq l) . Utilizado para sentencias SELECT y retornaun valor boo leano (true) si se retornan filas de lo contrario retornafalse

Q

A ti ió t j l t t i SQL4.3 Ejecutando una Sentencia

Page 516: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 516/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 1 7

A continuación se presenta un ejemplo que toma una sentencia SQL yretorna un objeto JDBC ResultSet

Statement stmt = null;

ResultSet rset = null;

stmt = conn.createStatement();

rset = stmt.executeQuery("SELECT nombre FROMpersona");

j

4.4 El Objeto ResulSet

Page 517: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 517/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 1 8

El driver JDBC retorna los resultados de una sentencia SQL en un objetode tipo ResultSet.

Un objeto ResultSet mantiene un cursor apuntando a los registros quecontienen los datos

Este objeto proporciona métodos para recuperar los valores de lascolumnas.

col1 col2

4.5 Procesando resultados

de la Sentencia

Page 518: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 518/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 1 9

El método execu teQue ry ( ) retorna un ResultSet

Utilizando el m é t o d o n e x t ( ) en un ciclo se puede interactuar a travésde las filas.

Utilizando los métodos ge tXXX( ) se obtienen los valores de lascolumnas seleccionadas.

Estos valores se pueden obtener por medio del nombre de las columnaso su posición en las sentencia.

stmt = conn.createStatement();ResultSet rset = stmt.executeQuery("SELECT nombre FROM persona");

while (rset.next()) {

System.out.println (rset.getString(" nombre"));

}

Para cada uno de los recursos utilizados es explícitamente necesariol l d d ll

4.6 Cerrando Objetos

Page 519: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 519/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 2 0

realizar el cierre para cada uno de ellos.

Esto se realiza invocando al respectivo método close().

Connection conn = ...;

Statement stmt = ...;

ResultSet rset = stmt.executeQuery("SELECT nombre FROM persona");

...

// Cierre de Objetos

rset.close();

stmt.close();

conn.close();

...

4.7 Declaraciones DML

Page 520: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 520/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 2 1

Crear un objeto Sta temen t vació

Utilizar execu teUpda te ( ) , para ejecutar el statement

Por ejemplo:

El execu teUpda te ( ) ; retorna un entero (int) con la cantidad de filasafectadas, para un estatuto INSERT, UPDATE o DELETE

Statement stmt = conn.createStatement();

int count = stmt.executeUpdate(SQLDMLstatement);

Statement stmt = conn.createStatement();

int rowcount = stmt.executeUpdate("DELETE FROM productos

WHERE producto_id = 2354");

Crear un objeto Sta temen t vació4.8 Declaraciones DDL

Page 521: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 521/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 2 2

Crear un objeto Sta temen t vació

Utilizar execu teUpda te ( ) ; para ejecutar el statement

Por ejemplo:

El e x e c u t e U p d a t e ( ) ; retorna un entero (int) con un valor de 0 para losestatutos que no retornan valor como lo son los estatutos SQL DDL.

Statement stmt = conn.createStatement();

int count = stmt.executeUpdate(SQLDMLstatement);

Statement stmt = conn.createStatement();

int rowcount = stmt.executeUpdate("CREATE TABLE temp (col1 NUMBER(5,2),

col2 VARCHAR2(30)");

Los estatutos SQL pueden lanzar excepciones de tipo4.9 Declaraciones DDL

Page 522: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 522/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 2 3

 j av a.sq l .SQLEx cep t ion

try {

rset = stmt.executeQuery("SELECT id, nombre FROM persona");

} catch (java.sql.SQLException e) {

...

} finally { // Limpiar

try {

if (rset != null) rset.close();

if (stmt!= null) stmt.close();

} catch (Exception e) {

}

}

...

P d f t l i t d d t it

4.10 Manejando Transacciones

Page 523: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 523/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 2 4

Por defecto las conexiones se encuentran en un modo de auto commit.

Utilizando conn .se tAu toCommi t ( f a l se ) , desconectamos el

autocommit. El control de las transacciones cuando no se encuentra el modo

autocommit, se debe utilizar:

c o n n . c o m m i t ( ) ;

conn . ro l l back ( ) ;

5 Manipulación de Resultados

Page 524: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 524/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 2 5

2. Interfaces JDBC2. Interfaces JDBC

3. Preparación de la Base de Datos3. Preparación de la Base de Datos

4. Procesamiento de Resultados4. Procesamiento de Resultados

5. Manipulación de Resultados5. Manipulación de Resultados

1. Introducción1. Introducción

6. El Objeto PreparedStatement6. El Objeto PreparedStatement

7. Procedimientos Almacenados7. Procedimientos Almacenados

8. Ejercicios Prácticos8. Ejercicios Prácticos

SELECT col1 col2 FROM t1;

5.1 Navegando en un

ResultSet

Page 525: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 525/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.

5 2 6

Driver

Llama

JDBC

Comandos

Database

SELECT col1, col2 FROM t1;

Navegación en el Resultado

DDBB

Statement stmt conn createStatement

.navegación

de un ResultSet

Page 526: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 526/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.

5 2 7

Statement stmt = conn.createStatement

(ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_UPDATABLE);

ResultSet rset = stmt.executeQuery("SELECT id, nombre FROM persona");

col1 col25.3 Posiciones en un ResultSet

Page 527: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 527/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.

5 2 8

void beforeFirst()

 boolean first()

 boolean next()

 boolean absolute(int row)

 boolean relative (int row)

 boolean previous()

 boolean last()

void afterLast()

5.4 Actualizando el ResultSet

Page 528: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 528/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.

5 2 9

Navegando localmente en la fila por actualizar

Actualizando los valores utilizando los métodos updateXXX()

Actualizando la fila directamente en la base de datos

Eliminado la fila en la base de datos

Insertando la fila en la base de datos

rs.deleteRow();

rs.updateRow();

rs.updateString(1, “VALORNUEVO");

rs.updateFloat(“total", 14230.0f);

rs.insertRow();

6 El Objeto PreparedStatement

Page 529: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 529/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.

5 3 0

2. Interfaces JDBC2. Interfaces JDBC

3. Preparación de la Base de Datos3. Preparación de la Base de Datos

4. Procesamiento de Resultados4. Procesamiento de Resultados

5. Manipulación de Resultados5. Manipulación de Resultados

1. Introducción1. Introducción

6. El Objeto PreparedStatement6. El Objeto PreparedStatement

7. Procedimientos Almacenados7. Procedimientos Almacenados

8. Ejercicios Prácticos8. Ejercicios Prácticos

Un PreparedStatement pr ev iene e l reparseo de estatutos SQL.

6.1 El ObjetoPreparedStatement

Page 530: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 530/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 3 1

p p p Q

Se debe de utilizar en estatutos que se requieren ejecutar más deuna vez.

Hereda de Statement.

Sujeta los SQL’s precompilados.

El Sta t em en t es com p i l ado cada vez que se invoca, a lo

con t ra r io de PreparedSta tement , e l cua l es más e f i c ien tepor que so lo se com p i la la p r im era vez que es invocado .

Primero se debe de registrar el driver y crear la conexión a la base

6.2 Crear un

PreparedStatement

Page 531: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 531/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 3 2

Primero se debe de registrar el driver y crear la conexión a la basede datos.

Luego se crea una variable de tipo PreparedStatement,identificando las variables que se enviarán como parámetros con unsigno de pregunta (?)

PreparedStatement pstmt =

conn.prepareStatement("UPDATE persona SET nombre = ? WHERE id = ?");

PreparedStatement pstmt =

conn.prepareStatement("SELECT nombre FROM persona WHERE id = ? ");

Suministrarle valores a las variables

pstmt.setXXX(index, value);

6.3 Valores en un

PreparedStatement

Page 532: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 532/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 3 3

Ejecutar el estatuto

pstmt.setXXX(index, value);

pstmt.executeQuery();

pstmt.executeUpdate();

int idPersona = 06771;

PreparedStatement pstmt =

conn.prepareStatement("UPDATE persona

SET nombre = ? WHERE id = ? ");

pstmt.setString(1, “EFIBS");

pstmt.setInt(2, idPersona );

pstmt.executeUpdate();

7 Procedimientos Almacenados

Page 533: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 533/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 3 4

2. Interfaces JDBC2. Interfaces JDBC

3. Preparación de la Base de Datos3. Preparación de la Base de Datos

4. Procesamiento de Resultados4. Procesamiento de Resultados

5. Manipulación de Resultados5. Manipulación de Resultados

1. Introducción1. Introducción

6. El Objeto PreparedStatement6. El Objeto PreparedStatement

7. Procedimientos Almacenados7. Procedimientos Almacenados

8. Ejercicios Prácticos8. Ejercicios Prácticos

Para la manipulación de los procedimientos almacenados en una

7.1 Procedimientos

Almacenados

Page 534: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 534/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 3 5

base de datos, existe un objeto en Java para tal efecto.

Este objeto es el Cal lab leSta tement

A este objeto se le pueden enviar parámetros cada vez que se

ejecuta.

Los procedimientos almacenados son escritos y compiladosdirectamente en la base de datos.

Primero se debe de registrar el driver y crear la conexión a la base

7.2 Creación de un

CallableStatement

Page 535: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 535/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 3 6

Primero se debe de registrar el driver y crear la conexión a la basede datos.

Luego se crea una variable de tipo CallableStatemente,identificando las variables que se enviarán como parámetros con unsigno de pregunta (?)

Registrar los parámetros de Salida

CallableStatement cstmt =

conn.prepareCall("{call PROC(param1,param2)}"); // Cuando No hayretorno

conn.prepareCall("{? = call PROC(param1,param2)}"); // Cuando Hayretorno

cstmt.registerOutParameter(index,param_Type);

Enviar los parámetros de entrada

cstmt.setXXX(index, value);

7.2 … Creación de un

CallableStatement

Page 536: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 536/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 3 7

Ejecutar el estatuto

Obtener los parámetros de salida

Por Ejemplo

cstmt.execute();

var = cstmt.getXXX(index);

CallableStatement cstmt =conn.prepareCall ( {"call ADDITEM (?,?,?)} ");cstmt.setInt (1, itemNbr);cstmt.registerOutParameter(2,Types.INTEGER);cstmt.registerOutParameter(3,Type.DOUBLE);

cstmt.execute();

var = cstmt.getInt(2);

8 Ejercicios Prácticos

Page 537: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 537/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 3 8

2. Interfaces JDBC2. Interfaces JDBC

3. Preparación de la Base de Datos3. Preparación de la Base de Datos

4. Procesamiento de Resultados4. Procesamiento de Resultados

5. Manipulación de Resultados5. Manipulación de Resultados

1. Introducción1. Introducción

6. El Objeto PreparedStatement6. El Objeto PreparedStatement

7. Procedimientos Almacenados7. Procedimientos Almacenados

8. Ejercicios Prácticos8. Ejercicios Prácticos

El instructor le explicará la siguiente práctica:

8.1 Ejercicios Prácticos

Page 538: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 538/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 3 9

El instructor le explicará la siguiente práctica:

Cree un paquete llamado: org.efibs.sistemaDeOrdenes.BDdentro del paquete, cree una clase que se llame Servicio

Atributos: Objeto de tipo Conexión

Métodos: conectarse y desconectarse

Cree una clase ServicioCliente que herede de Servicio y quecontenga:

Atributos: Constantes de tipo String con cada uno de losSQL necesarios para dar soporte a un mantenimientocompleto a la tabla Clientes(insert,delete,update y

select).

8.1 … Ejercicios Prácticos Métodos :

1 ) inse r ta rC l ien te(recibe: objeto de tipocliente – no retorna ningún tipo (void)) –

Page 539: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 539/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 4 0

cliente no retorna ningún tipo (void)) Usar Ca l lab leSta tement .

2 ) ac tua l izarCl ien te (recibe: objeto de tipocliente – no retorna ningún tipo (void))Usar Prepar edSt a tem ent .

3 ) e l im ina rC l ien te (recibe el id a eliminar y esde tipo void).Usar Prepar edSt a tem ent .

4 ) b u s ca r I d (recibe el id a buscar y devuelve

un objeto de tipo Cliente) – UsarCa l lab leS ta tement .

5 ) busca rNombre (recibe el nombre a buscary devuelve un objeto de tipo Cliente si haydos con el mismo nombre devuelve elprimer registro). Usar Ca l lab leSta tement .

6 ) L is ta r (devuelve un objeto de tipo Collectioncon todos los registros de la tabla Cliente).Usar Ca l lab leSta tement .

Cree una clase que se llame Pr inc ipa l . j ava y lleve a cabo losiguiente:

8.1 … Ejercicios Prácticos

Page 540: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 540/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 4 1

Ingrese cinco clientes (debe darle valores en el constructor).

Liste los clientes. Elimine uno de los clientes dado un id

Liste los clientes.

Modifique un cliente dado su id y su nuevo: nombre, teléfonoy dirección.

Liste los clientes.

Busque el Cliente al cual a caba de hacerle cambios, muestresu información.

Repita los pasos anteriores pero para producto

Recuerd e : docum ent e las l íneas que ya n o ocupe .

Page 541: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 541/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 4 2

INTRODUCCIINTRODUCCIÓÓN AN AJAVA SERVLETSJAVA SERVLETS

Objetivos Explicar los conceptos de Servlets y JSP

Page 542: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 542/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 4 3

Explicar los conceptos de sesiones y cookies.Analizar ventajas y desventajas

Desarrollar ejemplos que pongan en prácticalos conceptos anteriores.

2. Arquitectura n Capas

2. Arquitectura n Capas

1. Introducción a Html

1. Introducción a Html

1 Introducción a Html

Page 543: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 543/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 4 4

q p

3. Definición de Servlets Java3. Definición de Servlets Java

4. Arquitectura del Paquete Servlet4. Arquitectura del Paquete Servlet

5. Métodos Básicos del Servlet5. Métodos Básicos del Servlet

6. Diagrama UML del Objeto Servlet6. Diagrama UML del Objeto Servlet

7. Ciclo de Vida de un Servlet7. Ciclo de Vida de un Servlet

8. Programación de Servlets8. Programación de Servlets

9. Manejo del Objeto Session9. Manejo del Objeto Session

10. Manejo del Objeto Cookie10. Manejo del Objeto Cookie

HTML es un lenguaje sencillo pensado para presentar información en laWWW.

1.1 Introducción a Html

Page 544: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 544/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 4 5

HTML (HyperText Markup Languaje), como su nombre indica es unlenguaje de marcas para la creación de hipertextos. Por hipertextoentenderemos texto con una presentación agradable, con inclusión deelementos multimedia (gráficos, video, audio) y con la presencia de

hiperenlaces que permiten relacionar otras fuentes de información endocumentos hipertextos.

Como se ha dicho es un lenguaje de marcas ya que en él las

1.1 … Introducción a Html

Page 545: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 545/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 4 6

Como se ha dicho es un lenguaje de marcas ya que en él, las

instrucciones son trozos de texto resaltados convenientemente - llamadasetiquetas o labels- , que definirán la estructura lógica del documento.

Por tanto un documento HTML constará de texto que será el contenido, lainformación del documento y de instrucciones HTML que resaltarán este

contenido y le darán un formato fácil y agradable de leer y con laposibilidad de relacionar documentos y fuentes de información mediantehiperenlaces o hipervínculos.

En este capitulo se definen las etiquetas básicas y las estructuras de datosque forman el lenguaje.

Un documento HTML está definido por una etiqueta de apertura <HTML> y unaetiqueta de cierre </HTML> Dentro de este se dividen dos partes fundamentales

1.2 Estructuras básicas de unHtml

Page 546: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 546/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 4 7

etiqueta de cierre </HTML>. Dentro de este se dividen dos partes fundamentales

la cabecera, delimitada por la etiqueta <HEAD> y el cuerpo, delimitado por laetiqueta <BODY>.

Por tanto la estructura de un documento HTML será:

<HTML><HEAD>

Definiciones de la cabecera

</HEAD>

<BODY>

Instrucciones HTML</BODY>

</HTML>

Para insertar comentarios dentro de un documento HTML utilizaremos laetiqueta especial <!--, definiéndose un comentario de la forma:

1.3 Comentarios en Html

Page 547: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 547/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 4 8

< ! - - Est o e s u n co m e n t a r io - - >

La cabecera de un documento HTML está delimitado por las etiquetas< HEAD> y < / HEAD> , en esta se incluirán las definiciones generales que

1.4 Cabecera en Html

Page 548: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 548/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 4 9

afectarán a todo el documento.

Todas sus etiquetas son opcionales y se utilizarán solo en casos muydeterminados, solo la etiqueta TITLE tiene un uso general y aunque esopcional se recomienda incluirla en todos los documentos que creemos.

A continuación se citan los distintos componentes que pueden formar la

cabecera de un documento HTML.

< TI TLE> : Tít u l o del docum en to

El tít l f t d l d t í i l i t

1.4 … Cabecera en Html

Page 549: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 549/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 5 0

El título no forma parte del documento en sí, y no se incluye ni se muestra

dentro del documento, normalmente se muestra en la parte superior de laventana del programa navegador.

Se utiliza principalmente para etiquetar e identificar la página en losbookmarks (marcadores o también conocidos como favoritos ) y las history list(lista de documentos accedidos) y también se utiliza por algunos servidores debúsqueda como resultado de una búsqueda para poder intuir el contenido deldocumento. El titulo deberá guardar relación con el contenido del documento ydefinirlo de forma general.

La etiqueta <TITLE>, debe ser usada dentro de las etiquetas que definen lacabecera de la siguiente forma: < HEAD>

< TI TLE> Ti t u l o de l docum en to HTML< / TI TLE>

< / H EAD >

< META> : I nd i cado res de l docum en to

1.4 … Cabecera en Html

Page 550: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 550/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 5 1

Un meta tag es un elemento del encabezado que registra información acerca de la página actual, tal como : e l au t o r , copyr igh t , o pa lab ras claves( k e y w o r d s ) .

Estos tags pueden también ser muy útiles para dar información al servidor,tal como: fecha de expiración, intervalos de refresco, y utilidades para

mejorar la búsqueda hacia esta página. Los meta se componen de la siguiente manera:

At t r i bu t e ( At r i bu t o ) : especifica si la etiqueta de la meta contiene la informacióndescriptiva sobre la página (el nombre) o HTTP título información (el http-equiv)

Va lu e ( Va lo r ) : especifica el tipo de información que usted está proporcionando en esta

etiqueta. Algunos valores, como la descripción, las palabras claves, y el refresco. Co n t en t ( c on t e ni do ) : información complementaria o de utilidad, que puede servir como

parámetro al meta.

Muchos robot motores-de-búsqueda (programas que automáticamente< m e t a n am e = " k e yw o r d s"

Tipo del contenido de la página, en este caso, contenido en formato HTML,

utilizando el set de caracteres iso-8859-1

< m e t a h t t p - e q u iv = " Co n t e n t -

Ty p e" co n t en t = " t e x t / h t m l ;

charset= i so -8859 -1 " >

1.4 … Cabecera en Html

Page 551: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 551/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 5 2

Se indica el número de segundos que deben pasar antes del refresco ( 5)

hacia la URL que sustituye (http://www.efibs.com ) a la actual.

Si se indica cero segundos la transición entre uno y otro documento seráinmediata. Si no se indica URL el documento actual se refrescará. Este

sistema es altamente utilizado en la implementación de la webcam. Pues una

misma página se debe estar refrescando, para mostrar la nueva fotografía.

< m e t a h t t p - eq u iv = " r e fr e sh "

co nt en t = " 5 ;URL= h t t p: / / w w w .

e f i bs . com">

Este meta tag, aporta lo mismo que el mencionado anteriormente, pero mas

aun, este es usado en oportunidades, para describir la página, en vez deutilizar un trozo del texto de ella.

< m e t a n a m e = " d e scr i p t i o n "

con ten t= " Capaci tac ión detecno log ías de in te rne t ,

l engua jes de p rogr am ación

para e l w eb , es tud io de

serv ic ios en la in t e rne t " >

q (p g q

navegan el web recopilando información para indexar en el motor de

búsqueda) leen el contenido del meta tag KeyWord y usan la información para

indexar las páginas en su base de datos. Debido a que motores limitan el

numero de palabras claves o ignoran todas las palabras claves, si exceden

cierto limite, es una buena idea usar solo unas pocas palabras pero bien

elegidas.

y

co n t e n t = " l en g u aj e s, w e b,

co r reo , p ro toco los , m anua l ,

d i cc ionar io ">

Permite la representación de datos por filas y columnas, en forma tabular.

La definición es muy flexible indicando solo los elementos que forman cadafil l l lá d d f t áti l t ñ d b t

1.5 Creación de Tablas

Page 552: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 552/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 5 3

fila y columna, calculándose de forma automática el tamaño que deben tenerlas celdas. En una tabla podemos introducir todo tipo de elementos dellenguaje HTML como imágenes, enlaces, texto, listas, cabeceras, formularios,etc.

< TABLE> Def in ic ión de la Tab laPara de f in i r una t ab la usarem os la e t ique t a < TABLE> , que t i ene el s igu ien te fo rm ato :

< TABLE BORDER= " tam año de l bo rde" >. .. Def in ic ión d e la t ab la . . .

< / TA BLE>

En la etiqueta inicial TABLE definiremos los atributos que afectarán a toda latabla, todos los atributos son opcionales. Todo lo que se incluya dentro de la

instrucción de tabla se considerará como tal, pudiendo definir tablas anidadas(tablas dentro de tablas).

<TABLE BORDER=1><TR>

<TD ALIGN=CENTER>Cabecera de Titulo 1 </TD><TD ALIGN=CENTER> Cabecera de Titulo 2</TD><TD ALIGN=CENTER> Cabecera de Titulo 3</TD><TD ALIGN=CENTER> Cabecera de Titulo 4</TD>

1.6 Ejemplo de Tablas

Page 553: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 553/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 5 4

<TD ALIGN=CENTER> Cabecera de Titulo 4</TD>

</TR><TR>

<TD ALIGN=LEFT>Celda 1</TD><TD ALIGN=CENTER> Celda 2</TD><TD ALIGN=RIGHT> Celda 3</TD>

<TD ALIGN=CENTER> Celda 4</TD></TR><TR>

<TD ALIGN=LEFT VALIGN=TOP>Celda 5</TD><TD ALIGN=CENTER><IMG SRC="/imagenes/bibliog.gif"></TD><TD ALIGN=RIGHT VALIGN=BOTTOM> Celda 7</TD><TD ALIGN=CENTER VALIGN=MIDDLE> Celda 8</TD>

</TR><TR>

<TD VALIGN=BOTTOM>Celda 9 </TD>

<TD VALIGN=MIDDLE> Celda 10<IMG SRC="/imagenes/mundog.gif"></TD><TD VALIGN=TOP> Celda 12</TD>

</TR></TABLE>

Los formularios son plantillas que permiten la creación de documentos HTMLcon peticiones de datos.

1.7 Formularios

Page 554: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 554/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 5 5

La principal utilidad de los formularios es la posibilidad de crearcuestionarios, encuestas, páginas de comentarios o cualquier documento en laque se desee una interacción por parte del usuario.

Se podrán definir distintos tipos de recuadros de dialogo, botones deselección, menús de múltiples opciones, ... Para permitir obtener los datos de

una manera más intuitiva.< FORM> Def i n i ci ón de f o rm u la r i os

Existe una instrucción HTML para la creación de formularios esta es FORM,que tiene la siguiente estructura:

< FORM ACTI ON " f i chero que t ra ta e l fo rm u la r io " METHOD POST | GET >

1.7 … Formularios

Page 555: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 555/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 5 6

< FORM ACTI ON= f i chero que t ra ta e l fo rm u la r io METHOD= POST | GET >

...El emen tos que f o rm an e l f o rm u la r i o...

< / FORM >

Dentro de la etiqueta del formulario se definirán los distintos elementos de

petición de datos. Estas instrucciones que se explicarán a continuacióndefinirán los tipos de botones, cajas de dialogo y ventanas para la introducciónde datos. Y definirán las variables que almacenarán los datos introducidos porel usuario. Estas etiquetas se incluirán entre la de definición del formulario y laetiqueta de final de formulario.

ACTI ON:

Indica el programa que se encargará de tratar los datos del formulario. Esteprograma debe encontrarse en el servidor y estar escrito en algún lenguaje deprogramación A este programa se pasará como parámetros los datos

1.8 … Atributos de las Etiquetas

Page 556: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 556/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 5 7

programación. A este programa se pasará como parámetros los datosintroducidos en el formulario y retornará un código HTML que se mostrará trasprocesar el formulario.

METHOD:

Indica el protocolo usado para el envío de los datos. Con POST envía los

datos en la entrada estándar del programa que trata el formulario y con GETlos datos se pasan por parámetro, en la línea de comandos, al programa. Elmétodo de uso más normal será POST.

Una vez definidas las características globales del formulario incluiremos losdistintos botones y cajas de dialogo que lo constituyen.

… METHOD:

Dentro de la instrucción del formulario podrán incluirse cualquier texto oetiqueta HTML, siendo recomendado a fin de poder etiquetar las opciones deentrada y especificar cualquier dato importante relacionado con el formulario

1.8 Atributos de las Etiquetas

Page 557: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 557/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 5 8

entrada y especificar cualquier dato importante relacionado con el formulario.

Igualmente un formulario puede ser incluido en algunas instrucciones HTMLcomo las listas, tablas, etc ...

< I NPUT> En t rada bási ca de datos

La etiqueta INPUT se utiliza para definir gran variedad de tipos de campos

1.8 … Atributos de las Etiquetas

Page 558: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 558/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 5 9

de entrada de datos. Por lo general serán entradas de texto corto (a lo sumouna frase) o opciones. El formato básico es el siguiente:

Sin tax is :

< INPUT TYPE = ( TEXT | PASSWORD | CHECKBOX | RADIO | HIDDEN |SUBMIT | IMAGE | RESET ) NAME = "Variable que toma el valor" VALUE ="Valor de Inicialización" >

Ejemp lo :

< INPUT TYPE=TEXT NAME="variable" VALUE="valor inicial" SIZE="tamaño"MAXLENGTH="longitud máxima" >

< TEXTAREA> Tex t o en m úl t ip les l íneas

Permite la introducción de un texto que puede abarcar varias líneas,

1.8 … Atributos de las Etiquetas

Page 559: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 559/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 6 0

introduciendo este en forma de párrafo. El formato general será:Ejemp lo :

<TEXTAREA NAME="variable" ROWS=Filas COLS=Columnas>Texto de Inicializaci&oacute;n que puedeincluir varias l&iacute;neas.

</TEXTAREA>

< SELECT> Elecc ión en t re m ú l t ip les opc iones

Se usa para menús simple o múltiples. Define menús de tipo pop-up (menúde barras) y ofrece una alternativa más compacta al uso de botones RADIO o

1.8 … Atributos de las Etiquetas

Page 560: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 560/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 6 1

de ba as) y o ece u a a te at a ás co pacta a uso de boto es O oCHECKBOX. Su formato es el siguiente:

< SELECT NAME= " var i ab le" >< OPTI ON SELECTED VALUE= valor 1> Opción Pr im era< OPTI ON VALUE= va lo r2> Opc ión Segunda

. . .< OPTI ON VALUE= valor n> Opción Enés im a< / SELECT>

Si se desea que sea un menú múltiple, se deberá incluir el atributoMULTIPLE en la etiqueta de SELECT, en este caso se mostrarán todas lasopciones en forma de tabla, en el otro caso se mostrará la opción activa y unbotón para poder modificar esta opción. En ambos casos solo podrá

seleccionarse una de las opciones. Cuando se envía el resultado del formulariola variables NAME tomará el valor de la opción que este activa.

< SELECT> Ejemplos

<SELECT NAME="variable"><OPTION VALUE=1> Opción Primera

1.8 … Atributos de las Etiquetas

Page 561: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 561/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 6 2

<OPTION SELECTED VALUE=2> Opción Segunda<OPTION VALUE=3> Opción Tercera</SELECT>

<SELECT NAME="variable" MULTI PLE><OPTION VALUE=1> Opción Primera<OPTION SELECTED VALUE=2> Opción Segunda<OPTION VALUE=3> Opción Tercera</SELECT>

1.9 Ejercicio Práctico

Page 562: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 562/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 6 3

Crear una página web (html) en la cual se debe de poner en práctica lautilización de formularios y tablas en formato html.

1.9 … Ejercicio Práctico

Page 563: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 563/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 6 4

El nombre que se le dará al formulario es de cliente, y su acción por elmomento será un signo de numeral (#) y su método será de tipo GET.

Verifique los resultados de los puntos anteriores, es importante observarcomo viajan los datos en base al método utilizado ya que el siguiente paso esmodificar el método del formulario de tipo POST y verificar nuevamente.

Como información adicional del curso se presenta a continuación un scriptpara realizar validaciones a nivel de formularios, para que de esta manera lainformación que viaje al realizar la acción sea valida antes de ser procesada.

<head>

<script languaje=javascript>function validar(cliente){

1.9 … Ejercicio Práctico

Page 564: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 564/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 6 5

( ){

if (cliente.id.value == ""){

alert("Por favor ingrese la identificación del usuario");cliente.id.focus();

return;}

cliente.submit();

</script></head>

Una vez validados los campos requeridos, se debe de invocar la funciónvalidación, en el momento de que el usuario de click sobre el botón deprocesar orden.

1.9 … Ejercicio Práctico

Page 565: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 565/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 6 6

La manera en que se invocará esta función será utilizando el evento onc l icken el botón de submit de la siguiente manera:

<INPUT NAME =accion TYPE="BUTTON" VALUE=“Insertar” onClick="return

validar(this.form)">

2. Arquitectura n Capas

2. Arquitectura n Capas

3 D fi i ió d S l J

3. Definición de Servlets Java

1. Introducción a Html

1. Introducción a Html

2 Arquitectura n Capas

Page 566: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 566/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 6 7

3. Definición de Servlets Java

4. Arquitectura del Paquete Servlet4. Arquitectura del Paquete Servlet

5. Métodos Básicos del Servlet5. Métodos Básicos del Servlet

6. Diagrama UML del Objeto Servlet6. Diagrama UML del Objeto Servlet

7. Ciclo de Vida de un Servlet7. Ciclo de Vida de un Servlet

8. Programación de Servlets8. Programación de Servlets

9. Manejo del Objeto Session9. Manejo del Objeto Session

10. Manejo del Objeto Cookie10. Manejo del Objeto Cookie

La arquitectura n Capas es una metodología para el diseño de sistemasdistribuidos.

2.1 Arquitectura n Capas

Page 567: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 567/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 6 8

Consiste en d iv id i r l a func iona l idad del sistema en capas lógicas parainteractuar entre ellas a alto nivel. Dichas capas lógicas pueden serencapsuladas como componentes.

Esta funcionalidad provoca un gran dinamismo en la gestión de lainformación requerida (Present ac ión , Negoc io , Dat os).

Permite desarrollar aplicaciones a alta ve loc idad y bajo cos to .

2.1 Arquitectura n Capas

Page 568: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 568/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 6 9

Son apl icac iones escalab les, permitiendo n cantidad de usuarios, por loque la inversión en software se puede mantener mientras el sistema crece.

Las n capas pueden estar contenidas en una misma máquina o tener unadiferente para cada capa. También pueden ser configuradas en clu st er d eap l icac iones.

Al separar la capa de presentación de las demás capas, un cambio dediseño no supone el cambio de toda la aplicación.

Se pueden reutilizar las aplicaciones ya existentes para diferentes

di i i ól bi d l d ió d i i

2.2 Ventajas de la Arquitecturapor Capas

Page 569: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 569/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 7 0

dispositivos sólo cambiando la capa de presentación, es decir, existe unamayor portabilidad entre plataformas.

Lo mismo podemos decir de la capa de datos, podemos cambiar el origende los datos sin necesidad de modificar componentes del resto de capas.

Inconvenientes de la Arquitectura n Capas: 

Se requiere un mayor esfuerzo de diseño para asegurar que la arquitecturaplanteada es la idónea y, como consecuencia, se obtiene una mayorcomplejidad de la aplicación en cuanto a número de componentes ycomunicación entre ellos.

2.3 Representación Gráfica

Page 570: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 570/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 7 1

2. Arquitectura n Capas

2. Arquitectura n Capas

3 Definición de Servlets Java

3. Definición de Servlets Java

1. Introducción a Html

1. Introducción a Html

3 Definición de Servlets Java

Page 571: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 571/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 7 2

3. Definición de Servlets Java4. Arquitectura del Paquete Servlet4. Arquitectura del Paquete Servlet

5. Métodos Básicos del Servlet5. Métodos Básicos del Servlet

6. Diagrama UML del Objeto Servlet6. Diagrama UML del Objeto Servlet

7. Ciclo de Vida de un Servlet7. Ciclo de Vida de un Servlet

8. Programación de Servlets8. Programación de Servlets

9. Manejo del Objeto Session9. Manejo del Objeto Session

10. Manejo del Objeto Cookie10. Manejo del Objeto Cookie

Los Servlets son la respuesta de la tecnología Java a la programación CGI(Common Gateway Interfase).

Son programas que se ejecutan en un servidor Web y construyen pág inasW e b d i n á m i c am e n t e

3.1 Definición de Servlets Java

Page 572: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 572/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 7 3

W e b d i n á m i c am e n t e.

Los Servlets son para los servidores lo que los applets son para losnavegadores. Sin embargo, al contrario que los applets, l os ser v l et s n ot i enen i n t e r f az g rá f i ca de usua r i o .

Se deberán utilizar páginas dinámicas cuando:

El con t en ido d e la pág ina es a pe t i ción de l c l i en t e, es decir, la página

Web está basada en datos enviados por el usuario Las páginas de resultados

3.1 … Definición de ServletsJava

Page 573: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 573/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 7 4

Web está basada en datos enviados por el usuario. Las páginas de resultadosde los motores de búsqueda se generan de esta forma, y los programas queprocesan pedidos desde sites de comercio electrónico también.

Los da tos camb ian f recuen temen te . Un informe sobre el tiempo o laspáginas de cabeceras de noticias se podrían construir dinámicamente, por

ejemplo devolviendo una página previamente construida y luegoactualizándola, con lo que sólo cambiaría el contenido, no el diseño.

La pág ina Web usa in fo rmac ión de bases de da tos co rpo ra t i vas uo t ras f uen tes . Por ejemplo una página web construida para una tienda on-line a partir de los datos de los precios actuales y el número de artículos en

stock.

Perm i t i r l a co laborac ión en t r e usuar ios . Un servlet puede manejar m ú l t i p l e spe t i c iones concur ren t es, y puede sincronizarlas. Esto permite a los servlets soportarsistemas como las conferencias on-line

Reenv iar pe t ic iones. Los Servlets pueden reenv ia r pe t i c iones a o t ros se rv ido resy servlets. Con esto los servlets pueden ser utilizados para cargar balances desde variosservidores que reflejan el mismo contenido y para particionar un único servicio lógico en

3.2 Otros usos de los Servlets

Page 574: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 574/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 7 5

servidores que reflejan el mismo contenido, y para particionar un único servicio lógico envarios servidores, de acuerdo con los tipos de tareas o la organización compartida.

 Acceso BD Lógica de Negocio

Servi dor HTTP

www.capris.co.cr

Firewall

Internet

ht mhtm

ht m

 j sp j sp j sp

JSP COMPI LER/ SERVLETG ENGI NE

servletsservlets

Firewall

Servidor de Web Servidor deDDBB

servletsservlets

 PresentaciónBrowser 

Los Servlets son módulos que extienden los servidores web y que estánorientados a resolver petición-respuesta (Request -Response) .

3.3 Orientación de los Servlets

Page 575: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 575/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 7 6

Los Servlets pueden ser incluidos en serv ido res d i fe ren tes porque el APIServlet, el que se utiliza para escribir Servlets, no asume nada sobre elentorno o protocolo del servidor.

Actualmente los Servlets se están utilizando ampliamente dentro deservidores HTTP.

El objetivo de esta práctica, es que el estudiante aprenda a crear unproyecto WEB haciendo uso del IDE.

Los siguientes son los pasos para poder lograr el objetivo anterior:

3.4 Ejercicio Práctico

Page 576: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 576/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 7 7

Los siguientes son los pasos para poder lograr el objetivo anterior:

Ingrese al IDE y seleccione New Proyect específicamenteproyecto WEB.

Póngale un nombre representativo a el content type (carpeta

donde se publicará la página).

El objetivo de esta práctica, es que el estudiante aprenda a crear unproyecto

WEB haciendo uso del IDE.

3.4 … Ejercicio Práctico

Page 577: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 577/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 7 8

WEB haciendo uso del IDE.

Los siguientes son los pasos para poder lograr el objetivo anterior:

No seleccione ninguna de las siguientes opciones (ver 5.5).

Dar click en finalización.

El objetivo de esta práctica, es que el estudiante aprenda a crear htmldesde el IDE.

Siga las instrucciones del instructor para poder tomar la página det i i t d li t h h l á ti t i i l l

3.4 … Ejercicio Práctico

Page 578: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 578/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 7 9

ga a u o d u o pa a pod o a a pág a dmantenimiento de clientes hecha en la práctica anterior e incorporarla en elIDE

Siga la siguiente ruta yagregue el código html

hecho en la práctica

anterior.

2. Arquitectura n Capas

2. Arquitectura n Capas

3. Definición de Servlets Java

3. Definición de Servlets Java

4 Arq itect ra del Paq ete Ser let

1. Introducción a Html

1. Introducción a Html

4 Arquitectura del PaqueteServlet

Page 579: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 579/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 8 0

4. Arquitectura del Paquete Servlet4. Arquitectura del Paquete Servlet

5. Métodos Básicos del Servlet5. Métodos Básicos del Servlet

6. Diagrama UML del Objeto Servlet6. Diagrama UML del Objeto Servlet

7. Ciclo de Vida de un Servlet7. Ciclo de Vida de un Servlet

8. Programación de Servlets8. Programación de Servlets

9. Manejo del Objeto Session

9. Manejo del Objeto Session

10. Manejo del Objeto Cookie10. Manejo del Objeto Cookie

El paquete  j av ax .ser v le t proporciona clases e interfaces para escribirservlets. La arquitectura de este paquete se describe a continuación.

La in t e r f az Serv le t .

La abstracción central en el API Servlet es la interfaz Servlet Todos los

4.1 Arquitectura del PaqueteServlet

Page 580: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 580/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 8 1

La abstracción central en el API Servlet es la interfaz Servlet. Todos losservlets implementan esta interfaz, bien directamente o, más comúnmente,extendiendo una clase que lo implemente como HttpServlet.

La interfaz Servlet declara pero no implementa métodos que manejan el

Servlet y su comunicación con los clientes. Al programar un Servlet se han decodificar algunos de esos métodos.

I n t e racción con e l cl i en t e

Cuando un servlet acepta una llamada de un cliente, recibe dos objetos,

Un ServletRequest, que encapsula la comunicación desde el cliente alservidor.

4.1 … Arquitectura del PaqueteServlet

Page 581: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 581/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 8 2

Un ServletResponse, que encapsula la comunicación de vuelta desde elservlet hacia el cliente.

ServletRequest y ServletResponse son interfaces definidas en el package javax.servlet.

La I n t e r faz Serv le t Reques t

La interfaz ServletRequest permite al servlet acceder a :

Información referente a los nombres de los parámetros pasados por

el cliente, el protocolo (esquema) que está siendo utilizado por elcliente y los nombres del host remote que ha realizado la petición y

4.1 … Arquitectura del PaqueteServlet

Page 582: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 582/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 8 3

cliente, y los nombres del host remote que ha realizado la petición yla del server que la ha recibido.

El stream de entrada, ServletInputStream. Los Servlets utilizan estestream para obtener los datos de los clientes que utilizan protocolos

como los métodos POST y PUT de HTTP.

Las interfaces, que extienden de la interfaz ServletRequest permitenal servlet recibir más datos específicos del protocolo. Por ejemplo, lainterfaz HttpServletRequest contiene métodos para acceder a información de

cabecera específica HTTP.

La in t e r f az Serv le tRespon se

La interfaz ServletResponse le da al servlet los métodos para

responder al cliente.

4.1 … Arquitectura del PaqueteServlet

Page 583: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 583/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 8 4

Permite al servlet seleccionar la longitud del contenido y el tipo MIMEde la respuesta.

Proporciona un stream de salida, ServletOutputStream, y un Writer a

través del cual el servlet puede responder datos. Las interfaces que extienden de ServletResponse le dan a los servletsmás capacidades específicas del protocolo. Por ejemplo, la interfaz

HttpServletResponse contiene métodos que permiten al servletmanipular información de cabecera específica HTTP.

Capacid ades ad ic ion ales de los ser v l e t s HTTP

Las clases e interfaces descritas anteriormente construyenun servlet básico. Para el caso de los servlets http, setienen algunos objetos adicionales que proporcionan:

Capacidades de seguimiento de sesión.

4.1 … Arquitectura del PaqueteServlet

Page 584: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 584/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 8 5

Capacidades de seguimiento de sesión.

Posibilidades de mantenimiento del estado entre el servlet yel cliente persistente a través de múltiplesconexiones durante un periodo de tiempo.

Capacidades de gestión de cookies. El API cookie se utilizapara guardar y recuperar datos dentro delcliente.

2. Arquitectura n Capas

2. Arquitectura n Capas

3. Definición de Servlets Java

3. Definición de Servlets Java

4 Arquitectura del Paquete Servlet

4. Arquitectura del Paquete Servlet

1. Introducción a Html

1. Introducción a Html

5 Métodos Básicos del Servlet

Page 585: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 585/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 8 6

4. Arquitectura del Paquete Servlet4. Arquitectura del Paquete Servlet

5. Métodos Básicos del Servlet5. Métodos Básicos del Servlet

6. Diagrama UML del Objeto Servlet

6. Diagrama UML del Objeto Servlet

7. Ciclo de Vida de un Servlet7. Ciclo de Vida de un Servlet

8. Programación de Servlets8. Programación de Servlets

9. Manejo del Objeto Session9. Manejo del Objeto Session

10. Manejo del Objeto Cookie10. Manejo del Objeto Cookie

I n i t ( ) : El código de este método se ejecuta solamente cuando se carga elservlet, es decir, se ejecuta una sola vez independientemente del número deveces que llamemos al servlet.

Serv ice ( ) : El código se ejecuta en respuesta a las peticiones del cliente(GET, POST, PUT, DELETE,...)

5.1 Métodos Básicos delServlet

Page 586: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 586/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 8 7

D e s t r o y ( ) : Cuando el servlet es "desmontado" se invoca este método. Esutilizado para hacer limpieza.

DoGe t ( ) y doPost ( ) : Son métodos idénticos excepto que uno atiende laspeticiones GET y el otro las POST. Son refinamientos del método service() enlos HttpServlets.

package org.efibs.accion; 

import java.io.*; 

import java.net.* 

import javax.servlet.*; 

import javax.servlet.http.*; 

bli l MiS l t t d Htt S l t {

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 

throws ServletException, IOException { 

response.setContentType("text/html"); 

PrintWriter out = response.getWriter(); 

 /* TODO output your page here 

out.println("<html>"); 

protected void doGet(HttpServletRequest request,HttpServletResponse response) 

throws ServletException, IOException { 

processRequest(request,response); 

protected void 

5.2 Estructura del Servlet

Page 587: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 587/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 8 8

public class MiServlet extends HttpServlet { 

public void init(ServletConfig config) throws ServletException { 

super.init(config); 

public void destroy() { 

 // Código antes de destruir el Servlet 

p ( );

out.println("<head>"); 

out.println("<title>EFIBS S.A.</title>"); 

out.println("</head>"); 

out.println("<body>"); 

out.println("</body>"); 

out.println("</html>"); 

*/ 

out.close(); 

pdoPost(HttpServletRequest request,HttpServletResponse response) 

throws ServletException, IOException { 

processRequest(request,

response); } 

public String getServletInfo() { 

return "Short description"; 

Sobre la carpeta WEB-INF classes cree un nuevo servlet llamadoBienvenida.java, utilizando el IDE.

De click derecho sobre la capeta classes y seleccione la opciónNewServlet.

Modifique el método processRequest del servlet, el cual forma una páginaht l j d bi id

5.3 Ejercicio Práctico

Page 588: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 588/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 8 9

html con un mensaje de bienvenida.

Compile el servlet.

Ejecutar el Servlet: Para realizar la ejecución del servlet cree una nuevapagina html en la cual en el action del formulario invoque al servlet deBienvenida de la siguiente manera:

< FORM N AM E= “ cu r s o” A CTI ON = “ B ie n v en i d a” >

.....

< / FORM >

A continuación se presenta la estructura e información del archivo web.xml,el cual el instructor le explicará detalladamente para su correctofuncionamiento.

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java sun com/xml/ns/j2ee http://java sun com/xml/ns/j2ee/web-

5.3 … Ejercicio Práctico

Page 589: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 589/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 9 0

xsi:schemaLocation= http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<serv le t>

<servlet-name>Bienvenida</servlet-name>

<servlet-class>org.efibs.accion.Bienvenida</servlet-class>

</servlet>

<se rv l e t -mapp ing>

<servlet-name>Bienvenida</servlet-name>

<url-pattern>/Bienvenida</url-pattern></servlet-mapping>

<sess ion-conf ig>

<session-timeout>30</session-timeout>

</session-config>

<w e lcom e- f i le - l i st ><welcome-file>index.jsp</welcome-file>

5.3 … Ejercicio Práctico

Page 590: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 590/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 9 1

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

</welcome-file-list>

</web-app>

2. Arquitectura n Capas

2. Arquitectura n Capas

3. Definición de Servlets Java

3. Definición de Servlets Java

4. Arquitectura del Paquete Servlet

4. Arquitectura del Paquete Servlet

1. Introducción a Html

1. Introducción a Html

6. Diagrama UML del ObjetoServlet

Page 591: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 591/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 9 2

q q

5. Métodos Básicos del Servlet5. Métodos Básicos del Servlet

6. Diagrama UML del Objeto Servlet6. Diagrama UML del Objeto Servlet

7. Ciclo de Vida de un Servlet7. Ciclo de Vida de un Servlet

8. Programación de Servlets8. Programación de Servlets

9. Manejo del Objeto Session9. Manejo del Objeto Session

10. Manejo del Objeto Cookie10. Manejo del Objeto Cookie

En esta imagen vemos un diagrama UML con los métodos más utilizados yla jerarquía básica de las clases que implementan la interfaz Servlet.

6.1 Diagrama UML del ObjetoServlet

Page 592: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 592/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 9 3

2. Arquitectura n Capas

2. Arquitectura n Capas

3. Definición de Servlets Java

3. Definición de Servlets Java

4. Arquitectura del Paquete Servlet

4. Arquitectura del Paquete Servlet

1. Introducción a Html

1. Introducción a Html

7. Ciclo de Vida de un Servlet

Page 593: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 593/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 9 4

5. Métodos Básicos del Servlet5. Métodos Básicos del Servlet

6. Diagrama UML del Objeto Servlet6. Diagrama UML del Objeto Servlet

7. Ciclo de Vida de un Servlet7. Ciclo de Vida de un Servlet

8. Programación de Servlets8. Programación de Servlets

9. Manejo del Objeto Session9. Manejo del Objeto Session

10. Manejo del Objeto Cookie10. Manejo del Objeto Cookie

Cada servlet tiene el mismo ciclo de vida.

Un servidor carga e inicializa el servlet.

El servlet maneja una o más peticiones de cliente.

El servidor elimina el servlet. (Algunos servidores sólo cumplen estepaso cuando se desconectan).

7.1 Ciclo de Vida de un Servlet

Page 594: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 594/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 9 5

•SE CARGA

•SE INICIALIZA

•SE EJECUTA

•SE DESTRUYE 

2. Arquitectura n Capas

2. Arquitectura n Capas

3. Definición de Servlets Java

3. Definición de Servlets Java

4. Arquitectura del Paquete Servlet

4. Arquitectura del Paquete Servlet

1. Introducción a Html

1. Introducción a Html

8. Programación de Servlets

Page 595: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 595/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 9 6

5. Métodos Básicos del Servlet5. Métodos Básicos del Servlet

6. Diagrama UML del Objeto Servlet6. Diagrama UML del Objeto Servlet

7. Ciclo de Vida de un Servlet7. Ciclo de Vida de un Servlet

8. Programación de Servlets8. Programación de Servlets

9. Manejo del Objeto Session9. Manejo del Objeto Session

10. Manejo del Objeto Cookie10. Manejo del Objeto Cookie

Servlets: Peticiones y Respuestas

Los métodos de la clase HttpServlet que manejan peticiones de clientetoman dos argumentos:

Un objeto Ht tpServ le tReques t , que encapsula los datos desde elcliente.

Un objeto Ht tpServ le tResponse que encapsula la respuesta hacia

8.1 Programación de Servlets

Page 596: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 596/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 9 7

Un objeto Ht tpServ le tResponse, que encapsula la respuesta haciael cliente.

Un objeto HttpServletRequest proporciona acceso a los datos de cabeceraHTTP.

El objeto HttpServletRequest también permite obtener los argumentos queel cliente envía como parte de la petición.

Para acceder a los datos del cliente.

é á

8.2 Objetos HttpServletRequest

Page 597: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 597/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 9 8

El método ge tPa rame te r devuelve el valor de un parámetro nombrado.

El método ge tParamete rVa lues devuelve un arreglo de valores del

parámetro nombrado.

Para peticiones GET de HTTP, el método ge tQue ryS t r i ng devuelve enun String una línea de datos desde el cliente.

Para peticiones POST, PUT, y DELETE de HTTP: Si esperamos los datos en formato texto, el método

getReader devuelve un BufferedReader

8.2 … ObjetosHttpServletRequest

Page 598: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 598/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.5 9 9

getReader devuelve un BufferedReader.

Si esperamos datos binarios, el método getInputStreamdevuelve un ServletInputStream.

Un objeto HttpServletResponse proporciona dos formas de devolver datos alusuario.

El método g e t W r i t e r devuelve un Writer

El método ge tOu tpu tS t ream devuelve un ServletOutputStream

Se utiliza el método getWriter para devolver datos en formato texto al

8.3 ObjetosHttpServletResponse

Page 599: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 599/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 0 0

g pusuario y el método getOutputStream para devolver datos binarios. Si secierra el Writer o el ServletOutputStream después de haber enviado larespuesta, se permite al servidor saber cuando la respuesta se ha completado.

Cabecer a de Dat os HTTP

Se debe seleccionar la cabecera de datos HTTP antes de acceder aWriter o a OutputStream. La clase HttpServletResponse

proporciona métodos para acceder a los datos de la cabecera. Porejemplo, el método setContentType selecciona el tipo del contenido.(Normalmente esta es la única cabecera que se seleccionamanualmente).

public class SimpleServlet extends HttpServlet {

public void init(ServletConfig config) throws ServletException {

super.init(config);

}

public void destroy() {

}

8.4 Estructura de un Servlet

Page 600: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 600/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 0 1

}

 / * * * Mane j a e l m é t odo GET de HTTP para cons t ru i r una  

senc i l la pág ina W eb.* / 

public void doGet (Ht tpS erv l e tRequest request , H t t pS erv l e tResponse response)throws ServletException, IOException {

Pr i nt W r i t er o ut ;String titulo = “Salida de un Servlet";

/ / p r im er o seleccion a el t i p o d e con t en id os y o t r os cam pos de cab ecer a d e la

8.5 Estructura de un Servlet

Page 601: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 601/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 0 2

 / / p r im er o se leccion a e l t i p o d e con t en id os y o t r os cam pos de cab ecer a d e la respues t a  

r e sp o n se .s et Co n t e n t Ty p e( " t e x t / h t m l " ) ;

 / / Lu ego escr ib e los da t os d e la r esp u est a 

out = r esponse .ge tWr i t e r ( ) ;out.println("<HTML><HEAD><TITLE>");out.println(“Simple Servlet”);out.println("</TITLE></HEAD><BODY>");out.println("<H1>" + titulo + "</H1>");out.println("<P>Esta es la salida del Servlet");out.println("</BODY></HTML>");out.close();

} / / Fi n Mét od o d oGe t ( ...)}

Después de la inicialización, el servlet puede manejar peticiones de clientes.Un Servlet HTTP maneja peticiones de cliente a través de su método service.

Los métodos en los que delega el método service las peticiones HTTP,incluyen

doGet, para manejar GET, GET condicional, y peticiones de HEAD

8.6 Interactuar con Clientes

Page 602: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 602/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 0 3

doPost, para manejar peticiones POST

doPut, para manejar peticiones PUT

doDelete, para manejar peticiones DELETE

Si en los servlets que se codifican no se sobrescriben estos métodos, pordefecto devuelven el error BAD_REQUEST (400).

Los servlets HTTP normalmente sirven a múltiples clientesconcurrentemente. Si los métodos de nuestro servlet trabaja con clientes queacceden a recursos compartidos, se puede manejar la concurrencia creandoun servlet que maneje sólo una petición de cliente a la vez.

Para hacer que el servlet maneje sólo un cliente a la vez, se tiene queimplementar de la interfaz SingleThreadModel además de extender de la claseHttpServlet.

8.7 Problemas con los Threads

Page 603: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 603/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 0 4

Implementar de SingleThreadModel no implica escribir ningún métodoextra. Sólo se declara que el servlet implementa la interfaz, y el servidor se

asegura de que nuestro servlet sólo ejecute un método service cada vez.public class ReceiptServlet extends HttpServlet implements SingleThreadModel {

public void doPost(HttpServletRequest request, HttpServletResponseresponse)

throws ServletException, IOException {

...

}

...

}

Para destruir un Servlet, se debe sobrescribir el método destroy como sepresenta a continuación:

p u b li c cl ass Bo ok D BSer v l et ex t e n d s Gen er i cSer v l et {

p r iv at e Book st or eDB book s; / / En el m ét od in i t ( ..)

p u b li c v o id d est r o y ( ) { / / El im i n ar l a i n st a n ci a y r e cu r so scom par t i dos

8.8 Cómo destruir un Servlet?

Page 604: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 604/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 0 5

com par t i dos

b oo ks = n u ll ; }

}

Un servlet puede ser invocado de la siguiente manera:

Desde un Navegador

h t t p : / / n o m b r e -d e- m á q u in a: p ue r t o/ se r vl et / n o m b r e -ser v l et

donde nombre-servlet se corresponde con el nombre con el que se

registra nuestro servlet en el servidor.

Desde una página HTML

8.9 Invocación de un Servlet

Page 605: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 605/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 0 6

< a h r e f= " se r vl et / d em o > D em o st r a ci ón I n v o ca r Se vl et < / a " >

< f or m n am e = “ f or m u lar io ” act ion = “ / ser v let / d em o ”

Desde otro Servlet

public class BookDetailServlet extends HttpServlet {

public void doGet (HttpServletRequest request,HttpServletResponseresponse)

throws ServletException, IOException {

...BookDBServlet database = (BookDBServlet)getServletConfig().getServletContext().getServlet("bookdb"); ...

}

}

8.10 Ejercicio Práctico

Page 606: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 606/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 0 7

El objetivo de esta práctica es el de crear un Sistema de Ordenes utilizandotecnología de servlets para las principales operaciones de mantenimiento parael módulo de Clientes y Productos.

El sistema deberá presentar al ingresar una pantalla de búsqueda para cada

uno de los módulos. Una vez que el usuario digite los parámetros requeridos ypresione el botón de submit, esta información viajará por el request a unservlet llamado Clientes y Productos respectivamente.

8.10 … Ejercicio Práctico

Page 607: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 607/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 0 8

Estos servlets deberán capturar dichos parámetros y realizar la opción debúsqueda para cada módulo.

En base al gráfico anterior se requiere inicialmente crear loscorrespondientes servicios los cuales interactuan directamente con la base dedatos utilizada en el curso. (Servicio, ServicioCliente y ServicioProducto).Estos servicios no se requiere que sean servlets sino simples objetos en Java.El instructor le entregará la clase de Servicio y ServicioCliente, las cuales

interactúan directamente con la base de datos que se encuentra referencia enel servidor de aplicaciones.

Los servlets deberá recibir como parámetro adicional una bandera llamada

8.10 … Ejercicio Práctico

Page 608: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 608/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 0 9

Los servlets deberá recibir como parámetro adicional una bandera llamadaacción, para controlar el tipo de operación que el usuario ha seleccionado(insertar, modificar, eliminar, consultar y listar).

El flujograma del módulo de clientes será semejante al que se presenta acontinuación.

8.10 … Ejercicio Práctico

Page 609: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 609/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 1 0

2. Arquitectura n Capas

2. Arquitectura n Capas

3. Definición de Servlets Java

3. Definición de Servlets Java

4. Arquitectura del Paquete Servlet

4. Arquitectura del Paquete Servlet

5 Métodos Básicos del Servlet

5. Métodos Básicos del Servlet

1. Introducción a Html

1. Introducción a Html

9. Manejo del Objeto Session

Page 610: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 610/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 1 1

5. Métodos Básicos del Servlet

6. Diagrama UML del Objeto Servlet6. Diagrama UML del Objeto Servlet

7. Ciclo de Vida de un Servlet7. Ciclo de Vida de un Servlet

8. Programación de Servlets8. Programación de Servlets

9. Manejo del Objeto Session9. Manejo del Objeto Session

10. Manejo del Objeto Cookie10. Manejo del Objeto Cookie

El seguimiento de sesión es un mecanismo que los servlets utilizan paramantener el estado sobre la serie de peticiones desde un mismo usuario (estoes, peticiones originadas desde el mismo navegador) durante un periodo detiempo.

Las sesiones son compartidas por los servlets a los que accede el cliente. Para utilizar el seguimiento de sesión se debe:

Ob ió ( bj H S i ) i

9.1 Manejo del Objeto Session

Page 611: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 611/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 1 2

Obtener una sesión (un objeto HttpSession) para un usuario.

Almacenar u obtener datos desde el objeto HttpSession.

Invalidar la sesión (opcional).

Single-thread ModelMulti-thread Model

9.2 Threading

Page 612: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 612/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 1 3

Cliente1

Cliente2

Instancia del Servlet 1

Instancia del Servlet 2

Cliente1

Cliente1

public class CatalogServlet extends HttpServlet {

public void doGet (HttpServletRequest request,HttpServletResponseresponse) throws ServletException, IOException {

 // Get the user's session and shopping cart

H t t p Se ssi o n se ssi o n = r e q u est . g et Se ssi o n ( t r u e ) ;

9.3 Obtener una sesión

Page 613: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 613/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 1 4

...

out = response.getWriter();

...

}

}

public class CatalogServlet extends HttpServlet {

public void doGet (HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {

 // Get the user's session and shopping cart

HttpSession session = request.getSession(true);ShoppingCart cart =

( Shopp ingCar t ) session .ge tA t t r i bu te ( session .ge t I d ( ) ) ;

9.4 Almacenar y Obtenerdatos de una sesión

Page 614: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 614/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 1 5

( pp g ) g ( g ( ) )

 // If the user has no cart, create a new one

if (cart == null) {

cart = new ShoppingCart();

session .setA t t r i bu t e ( sess ion .ge t I d ( ) , ca r t ) ;

}

}

}

public class ReceiptServlet extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponseresponse) throws ServletException, IOException {

scart =(ShoppingCart)session.getAttribute(session .ge t I d ( ) );

 // Clear out shopping cart by invalidating the session

9.5 Invalidar una sesión

Page 615: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 615/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 1 6

sess ion . inva l ida te ( ) ;

 // set content type header before accessing the Writer

response.setContentType("text/html");

out = response.getWriter();

}}

2. Arquitectura n Capas

2. Arquitectura n Capas

3. Definición de Servlets Java

3. Definición de Servlets Java

4. Arquitectura del Paquete Servlet

4. Arquitectura del Paquete Servlet

5. Métodos Básicos del Servlet

5. Métodos Básicos del Servlet

1. Introducción a Html

1. Introducción a Html

10. Manejo del Objeto Cookie

Page 616: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 616/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 1 7

6. Diagrama UML del Objeto Servlet6. Diagrama UML del Objeto Servlet

7. Ciclo de Vida de un Servlet7. Ciclo de Vida de un Servlet

8. Programación de Servlets8. Programación de Servlets

9. Manejo del Objeto Session9. Manejo del Objeto Session

10. Manejo del Objeto Cookie10. Manejo del Objeto Cookie

Las Cookies se utilizan para que un servidor (o un servlet, como parte de unservidor) envíe información al cliente para almacenarla, y para que el servidorpueda posteriormente recuperar esos datos desde el cliente.

Los servlet envían cookies al cliente añadiendo campos a las cabeceras de

respuesta HTTP. Los clientes devuelven las cookies automáticamenteañadiendo campos a las cabeceras de peticiones HTTP.

Las cookies que un cliente almacena para un servidor sólo pueden serdevueltas a ese mismo servidor

10.1 Manejo del Objeto Cookie

Page 617: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 617/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 1 8

devueltas a ese mismo servidor.

public void doGet (HttpServletRequest request, HttpServletResponseresponse) throws ServletException, IOException {

... //If the user wants to add a book, remember it by adding a cookieif (values != null) {

bookId = values[0];Cookie getBook = new Cookie("Buy", bookId);getBook.setComment("User has indicated a desire " +"to buy this book from the bookstore.");response addCook ie (ge tBook) ;

10.2 Enviar una Cookie

Page 618: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 618/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 1 9

response .addCook ie (ge tBook) ;}

public void doGet (HttpServletRequest request,HttpServletResponseresponse) throws ServletException, IOException {

 /* Handle any pending deletes from the shopping cart */String bookId = request.getParameter("Remove");

if (bookId != null) { // Find the cookie that pertains to the book to removeCo o k i e[ ] co o k i es = r e q u est . g et Co o k i es( ) ;...For (int i=0; i < cookies length; i++) {

10.3 Recuperar,Recorrer yEliminar una Cookie

Page 619: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 619/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 2 0

For (int i=0; i < cookies.length; i++) {Cookie thisCookie = cookie[i];

if ( t h i s Co o k i e.g e t N am e ( ) .e qu a l s( " Bu y " ) & &th i sCook ie .ge tVa lue ( ) .equa l s( book I d ) ) {

 // Delete the cookie by setting its maximum age tozero

thisCookie.setMaxAge(0);}

}}

Declarar la :

HttpSession session = request.getSession(true); Agregar la :

session.setAttribute(session.getId(),valor));valor: puede ser de tipo Object.

10.4 Session-Resumen

Page 620: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 620/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 2 1

p p j

Recuperar la :

Object valor =(Object)session.getAttribute(session.getId());valor: puede ser de tipo Object.

Declararla:

Cookie laCookie = new Cookie(id,valor);valor: de tipo String unicamente.

Duración de la cookie:

laCookie.setMaxAge(60*60*7*24); para que queden durante un rato

Adi i l ki

10.5 Cookie-Resumen

Page 621: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 621/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 2 2

Adicionar la cookie:

response.addCookie(laCookie);

Re cco r r e r u n a co o k i e:

Cookie[] c = null;c = request.getCookies();if (c != null) {

int iCLength = c.length;for(int i=0; i<iCLength; i++) {

Cookie galleta = c[i];if(galleta.getName().equals("NumItem")){

out println(galleta getName());

10.5 … Cookie-Resumen

Page 622: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 622/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 2 3

out.println(galleta.getName());out.print(galleta.getValue());

}}

Obt ener m ás de un da t o en una cook ie :

Cookie laCookie1 =new Cookie("InformacionCliente1", "123 , Juan , Moreno, Alajuela");

Cookie laCookie2 =new Cookie("InformacionCliente2", "321 , Jonathan, Flores, Arroyo, San José");

10.5 … Cookie-Resumen

Page 623: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 623/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 2 4

response.addCookie(laCookie1);

response.addCookie(laCookie2);

… Ob t e n e r m á s d e u n d a t o en u n a c oo k i e:

Cookie[] cookies = request.getCookies();if(cookies!=null){for(int i=0; i<cookies.length;i++){

if(cookies[i].getName().equals(Nombre)){String cadena = cookies[i].getValue();String[] resultado =cadena.split(",");

for(int c=0; c<resultado length;c++){

10.5 … Cookie-Resumen

Page 624: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 624/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 2 5

for(int c=0; c<resultado.length;c++){out.println(resultado[c]+"<br>");

}}

}}

else{out.print("Vacio");

}

INTRODUCCIINTRODUCCIÓÓN AN A

JAVASERVER PAGESJAVASERVER PAGES(JSP)(JSP)

Page 625: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 625/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 2 6

(JSP)(JSP)

2. Características Principales de JSPs

2. Características Principales de JSPs

3. Ciclo de Vida de un JSP

3. Ciclo de Vida de un JSP

4. Elemento Script JSP

4. Elemento Script JSP

5. Directivas JSP

5. Directivas JSP

1. Introducción y Objetivos

1. Introducción y Objetivos

1 Introducción y Objetos

Page 626: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 626/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 2 7

6. Variables Predefinidas u Objetos Implícitos6. Variables Predefinidas u Objetos Implícitos

7. Acciones7. Acciones

8. Comentarios - Caracteres Escape8. Comentarios - Caracteres Escape

9. Sumario de Sintaxis9. Sumario de Sintaxis

10. Ejercicios Prácticos10. Ejercicios Prácticos

Objetivos Específicos:

Describir como cargar, inicializar y ejecutar un JavaServer Pages (JSP’s).

Listar las principales características de un JSP.

Construir, generar y probar aplicaciones basadas en JSP´s.

1.1 Introducción y Objetos

Page 627: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 627/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 2 8

2. Características Principales de JSPs

2. Características Principales de JSPs

3. Ciclo de Vida de un JSP

3. Ciclo de Vida de un JSP

4. Elemento Script JSP

4. Elemento Script JSP

5. Directivas JSP

5. Directivas JSP

1. Introducción y Objetivos

1. Introducción y Objetivos

6 V i bl P d fi id Obj t I lí it

2. Características Principales deJSPs

Page 628: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 628/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 2 9

6. Variables Predefinidas u Objetos Implícitos6. Variables Predefinidas u Objetos Implícitos

7. Acciones7. Acciones

8. Comentarios - Caracteres de Escape8. Comentarios - Caracteres de Escape

9. Sumario de Sintaxis9. Sumario de Sintaxis

10. Ejercicios Prácticos10. Ejercicios Prácticos

Varias de las principales características de los JSP son:

Están basados en la tecnología de servlets

Permiten separar la parte dinámica de nuestras páginas Web

del HTML estático. Fácil creación de página.

Por medio de compilación se convierten en Servlets.

2.1 Características Principalesde JSPs

Page 629: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 629/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 3 0

Utilizan tags XML, para una mayor gestión.

Invocación de JavaBeans, EJB’s, XML

Con t ra Act i ve Se rve r Pages ( ASP) . ASP es una tecnología similar deMicrosoft. Las ventajas de JSP están duplicadas. Primero, la partedinámica está escrita en Java, no en Visual Basic, otro lenguaje específicode MS, por eso es mucho más poderosa y fácil de usar. Segundo, es

portable a otros sistemas operativos y servidores Web.

Cont ra los Serv le ts . JSP no nos da nada que no pudiéramos enprincipio hacer con un servlet. Pero es mucho más conveniente escribir (ymodificar!) HTML normal que tener que hacer un billón de sentencias

2.2 Ventajas de los JSP

Page 630: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 630/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 3 1

modificar!) HTML normal que tener que hacer un billón de sentencias

o u t . p r i n t l n que generen HTML. Además, separando el formato delcontenido podemos poner diferentes personas en diferentes tareas:nuestros expertos en diseño de páginas Web pueden construir el HTML,dejando espacio para que nuestros programadores de servlets inserten elcontenido dinámico.

Con t ra Ser ver -Side I n clu d es ( SSI ) . SSI es una tecnologíaampliamente soportada que incluye piezas definidas externamente dentrode una página Web estática. JSP es mejor porque nos permite usarservlets en vez de un programa separado para generar las partesdinámicas. Además, SSI, realmente está diseñado para inclusiones

sencillas, no para programas "reales" que usen formularios de datos,hagan conexiones a bases de datos, etc.

Cont r a JavaScr ip t . JavaScript puede generar HTML dinámicamente enel cliente. Esta es una capacidad útil, pero sólo maneja situaciones dondela información dinámica está basada en el entorno del cliente Con la

2.2 … Ventajas de los JSP

Page 631: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 631/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 3 2

la información dinámica está basada en el entorno del cliente. Con la

excepción de las cookies, el HTTP y el envió de formularios no estándisponibles con JavaScript. Y, como se ejecuta en el cliente, JavaScript nopuede acceder a los recursos en el lado del servidor, como bases dedatos, catálogos, información de precios, etc.

2. Características Principales de JSPs

2. Características Principales de JSPs

3. Ciclo de Vida de un JSP

3. Ciclo de Vida de un JSP

4. Elemento Script JSP

4. Elemento Script JSP

5. Directivas JSP

5. Directivas JSP

1. Introducción y Objetivos

1. Introducción y Objetivos

6 V i bl P d fi id Obj t I lí it

6 Variables Predefinidas u Objetos Implícitos

3. Ciclo de Vida de un JSP

Page 632: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 632/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 3 3

6. Variables Predefinidas u Objetos Implícitos6. Variables Predefinidas u Objetos Implícitos

7. Acciones7. Acciones

8. Comentarios - Caracteres Escape8. Comentarios - Caracteres Escape

9. Sumario de Sintaxis9. Sumario de Sintaxis

10. Ejercicios Prácticos10. Ejercicios Prácticos

Servidor de WebBrowser del Clientehttp: / / ww w.ef ibs.com/ demo.jsp

Prim er vez

1

CrearServlet

demo.java

2

3

3.1 Ciclo de Vida de un JSP

Page 633: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 633/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 3 4

2

Compilar Servlet

demo.class

Ciclo de Vida d el Servlet

2. Características Principales de JSPs

2. Características Principales de JSPs

3. Ciclo de Vida de un JSP

3. Ciclo de Vida de un JSP

4. Elemento Script JSP

4. Elemento Script JSP

5. Directivas JSP

5. Directivas JSP

1. Introducción y Objetivos

1. Introducción y Objetivos

6 Variables Predefinidas u Objetos Implícitos

6. Variables Predefinidas u Objetos Implícitos

4. Elemento Script JSP

Page 634: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 634/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 3 5

6. Variables Predefinidas u Objetos Implícitos6. Variables Predefinidas u Objetos Implícitos

7. Acciones7. Acciones

8. Comentarios - Caracteres de Escape8. Comentarios - Caracteres de Escape

9. Sumario de Sintaxis9. Sumario de Sintaxis

10. Ejercicios Prácticos10. Ejercicios Prácticos

Los elementos de script permiten insertar código Java dentro del servlet quese generará desde la página JSP. Hay tres formas de hacer esto:

Mediante expresiones de la forma < % = ex p r esión % > : sonevaluadas e insertadas en la salida.

Mediante scriptlets de la forma < % cód ig o % > : se insertan dentrodel método service del servlet.

Mediante declaraciones de la forma < % ! cód ig o % > : se insertan enel cuerpo de la clase del servlet, fuera de cualquier método existente.

4.1 Elemento Script JSP

Page 635: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 635/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 3 6

El Objeto request request 

El Objeto response response 

El Objeto session session 

El Objeto out ou t 

El Objeto exception exception 

4.2 Objetos Implícitos

Page 636: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 636/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 3 7

El Objeto application application 

Una expresión JSP se usa para insertar valores Java directamente en lasalida y tiene la siguiente forma:

< % = ex pr esió n Jav a % >

Ejemp lo :

Fecha Actual: <%= new java.util.Date() %>

En XML se puede usar una sintaxis alternativa para las expresiones JSP:

4.3 Expresiones JSP

Page 637: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 637/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 3 8

En XML, se puede usar una sintaxis alternativa para las expresiones JSP:

< j s p : ex p r e s si o n > Ex p r e s ió n J av a < / j s p : ex p r e s si o n >

Si se desea realizar algo más complejo que insertar una simple expresión,los scriptlets JSP nos permiten insertar código arbitrario dentro del métodoservlet que será construido al generar la página. Los Scriptlets tienen lasiguiente forma: < % Có d ig o Ja va % >

Ejemp lo :< %

St r i n g q u e r y Da t a = r eq u e st . g et Q u er y St r i n g ( ) ;

ou t . p r i n t l n ( “ A d jun t ando GET da ta : " + que ryDa ta ) ;

% >

4.4 Scriplets JSP

Page 638: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 638/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 3 9

% >

Si queremos usar los caracteres "%>" dentro de un scriptlet, debemosponer "%\>".

Finalmente, observa que el equivalente XML de <% Código Java %> es:

< j s p :scr i p t l et > Có d ig o < / j s p :scr i p t l et >

Una declaración JSP nos permite definir m étodos o cam pos que seráninsertados dentro del cuerpo principal de la clase servlet (fuera del métodoservice que procesa la petición). Tienen la siguiente forma:

< % ! Có di go Ja va % >

Ejemp lo :

< % ! p r iv at e in t acceso s = 0 ; % >

Cantidad de Accesos:

< % = + + accesos % >

4.5 Declaraciones JSP

Page 639: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 639/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 4 0

Como con los scriptlet, si queremos usar los caracteres "%>", ponemos"%\>". Finalmente, se puede observar que el equivalente XML de<%! Código %> es:

< j sp :dec la ra t i on> Cód igo< / j sp :dec la ra t i on>

2. Características Principales de JSPs

2. Características Principales de JSPs

3. Ciclo de Vida de un JSP

3. Ciclo de Vida de un JSP

4. Elemento Script JSP

4. Elemento Script JSP

5. Directivas JSP

5. Directivas JSP

1. Introducción y Objetivos

1. Introducción y Objetivos

6. Variables Predefinidas u Objetos Implícitos

6. Variables Predefinidas u Objetos Implícitos

5. Directivas JSP

Page 640: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 640/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 4 1

j p

7. Acciones7. Acciones

8. Comentarios - Caracteres de Escape8. Comentarios - Caracteres de Escape

9. Sumario de Sintaxis9. Sumario de Sintaxis

10. Ejercicios Prácticos10. Ejercicios Prácticos

Habilita la declaración de Variables globales.

Empieza con la secuencia <%@

Termina con la secuencia %> Existen los siguientes tipos:

Directiva page

Directiva i nc lude

5.1 Directivas JSP

Page 641: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 641/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 4 2

Directiva i nc lude

Directiva t ag l i b

La directiva page nos permite definir uno o más de los siguientes atributossensibles a las mayúsculas:

errorPage isThreadSafe

info contentType

extends import

5.2 Directiva Page

Page 642: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 642/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 4 3

autoflush

languaje buffer isErrorPage session

i m p o r t = " p a ck a g e.cl ass" oim por t= " package .c lass1 , ... ,pack age .c lassN" . Esta instrucción permiteespecificar los paqutes que deberían ser importados.

Por ejemplo:

< % @ p age im p or t = " j a va.u t il .* " % >

El atributo import es el único que puede aparecer múltiples veces.

5.3 Directiva import

Page 643: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 643/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 4 4

co n t e n t Ty p e = " M I M E- Ty p e " o co n t e n t Ty p e = " M I M E- Ty p e ;charset = Char act e r -Se t " . Esta instrucción especifica el tipo MIME de lasalida.

El valor por defecto es text/html.

Por ejemplo, la directiva:

< % @ p ag e con t en t Ty pe= " t ex t / p la in " % >

Tiene el mismo valor que el scriptlet

5.4 Directiva contentType

Page 644: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 644/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 4 5

< % r esp on se.set Co n t en t Ty p e( " t e x t / p la i n " ) ; % >

i sTh r eadSa fe= " t r ue | f a l se " . Un valor de t r u e (por defecto) indica un procesamiento del servlet normal,donde múltiples peticiones pueden procesarse simultáneamente con un sóloejemplar del servlet (bajo la suposición de que el autor sincroniza las variablesde ejemplar).

Un valor de fa lse indica que el servlet debería implementarSingleThreadModel, con peticiones enviadas de forma serializada o conpeticiones simultáneas siendo entregadas por ejemplares separados delservlet.

Single-thread Model (false)Multi-thread Model (true)

5.5 Directiva isThreadSafe

Page 645: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 645/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 4 6

Cliente1

Cliente2

Instancia del Servlet Cliente1

se ssi on = " t r u e | f a lse" .

Un valor de t r u e (por defecto) indica que la variable predefinida session(del tipo HttpSession) debería unirse a la sesión existente si existe una, y si noexiste, se debería crear una nueva sesión para unirla.

Un valor de fa lse indica que no se usarán sesiones y los intentos deacceder a la variable session provocarán errores en el momento en que lapágina JSP sea traducida a un servlet.

5.6 Directiva session

Page 646: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 646/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 4 7

b u f f er = " si zek b | n o ne" .

Esto especifica el tamaño del buffer para el JspWriter out.

El valor por defecto es específico del servidor y debería ser de al menos 8kb.

5.7 Directiva buffer

Page 647: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 647/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 4 8

a u t o f l u sh = " t r u e | f a l se" .

Un valor de t r u e (por defecto) indica que el buffer debería descargarsecuando esté lleno.

Un valor de fa lse, raramente utilizado, indica que se debe lanzar unaexcepción cuando el buffer se sobrecargue. Un valor de false es ilegal cuandousamos buffer="none".

5.8 Directiva autoflush

Page 648: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 648/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 4 9

ex t ends= " package .class " .

Esto indica la superclase del servlet que se va a generar.

Debemos usarla con extrema precaución, ya que el servidor podría utilizaruna superclase personalizada.

5.9 Directiva extends

Page 649: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 649/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 5 0

i n f o= " m essa ge " .

Define un string que puede usarse para ser recuperado mediante el métodogetServletInfo.

5.10 Directiva info

Page 650: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 650/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 5 1

e r r o r Pa ge = " u r l " .

Especifica la página JSP que se debería procesar si se lanzará cualquierThrowable.

5.11 Directiva errorPage

Page 651: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 651/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 5 2

i sEr r o r Pa g e= " t r u e | f a lse " .

Indica si la página actual actúa o no como página de error de otra páginaJSP.

El valor por defecto es false.

5.12 Directiva isErrorPage

Page 652: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 652/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 5 3

l an g u ag e= " j a v a" .

Esta instrucción está pensada para especificar el lenguaje a utilizar.

Por ahora, no debemos preocuparnos por ella ya que “ j a v a ” , es tanto elvalor por defecto como la única opción legal.

Por ejemplo, el equivalente XML de:

<%@ page import="java.util.*" %> es:

<jsp:directive.page import="java.util.*" />

5.13 Directiva language

Page 653: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 653/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 5 4

La sintaxis XML para definir directivas es:

< j s p : d ir e ct i v e .T ipoDi rec t i va  T ipoDi rec t i va  a t r i b u t o = va lo r  va lo r   / >

Por ejemplo, el equivalente XML de:

< % @ p age im p or t = " j av a.u t il .* " % >

es:

< j sp :d ir ect i ve.p ag e im p or t = " j a va.u t i l .* " / >

5.14 Sintaxis XML para definirdirectivas

Page 654: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 654/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 5 5

Esta directiva nos permite incluir ficheros en el momento en que la páginaJSP es traducida a un servlet.

< % @ in clu de f i le= " u r l r ela t iv a" % >

La URL especificada normalmente se interpreta como relativa a la páginaJSP a la que se refiere, pero, al igual que las URLs relativas en general,podemos decirle al sistema que interprete la URL relativa al directorio homedel se ido Web empe ando con na ba a in e tida

5.15 Directiva include

Page 655: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 655/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 5 6

del servidor Web, empezando con una barra invertida.

Los contenidos del fichero incluido son analizados como texto normal JSP, yasí pueden incluir HTML estático, elementos de script, directivas y acciones.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<TITLE>Tutorial EFIBS: JavaServer Pages (JSP)</TITLE>

<META NAME="author" CONTENT="[email protected]">

<META NAME="keywords" CONTENT="...">

<META NAME="description" CONTENT="...">

<LINK REL=STYLESHEET HREF="Site-Styles.css“ TYPE="text/css">

</HEAD>

5.16 Ejemplo Directiva include

Page 656: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 656/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 5 7

</HEAD><BODY>

< % @ in clu de f i le= " / n av bar .h t m l " % >

</BODY>

</HTML>

2. Características Principales de JSPs

2. Características Principales de JSPs

3. Ciclo de Vida de un JSP

3. Ciclo de Vida de un JSP

4. Elemento Script JSP

4. Elemento Script JSP

5. Directivas JSP

5. Directivas JSP

1. Introducción y Objetivos

1. Introducción y Objetivos

6. Variables Predefinidas u Objetos Implícitos

6. Variables Predefinidas u Objetos Implícitos

7 Acciones

7 Acciones

6. Variables Predefinidas uObjetos Implícitos

Page 657: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 657/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 5 8

7. Acciones7. Acciones

8. Comentarios - Caracteres Escape8. Comentarios - Caracteres Escape

9. Sumario de Sintaxis9. Sumario de Sintaxis

10. Ejercicios Prácticos10. Ejercicios Prácticos

El Objeto request request  : :  HttpServletRequestHttpServletRequest

El Objeto response response  : :  HttpServletResponseHttpServletResponse

El Objeto out ou t  : :  PrintWriter PrintWriter  El Objeto session session  : :  HttpSessionHttpSession

El Objeto application application  : :  Es elEs el ServletContextServletContext obtenido medianteobtenido mediante getServletConfig getServletConfig().(). getContext getContext()()..

El Objeto config config  : :  Es el objetoEs el objeto ServletConfigServletConfig para la p para la páá gina. gina.

El Obj t CC P C l í i d

6.1 … Variables Predefinidas uObjetos Implícitos

Page 658: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 658/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 5 9

El Objeto pageContext pageContext  : :  PageContextPageContext para encapsular caracter  para encapsular caracter í í sticas de usosticas de usoespecespecí í  ficas del ficas del servidor comoservidor como JspWriter  JspWriter ss de alto rendimientode alto rendimiento..

2. Características Principales de JSPs

2. Características Principales de JSPs

3. Ciclo de Vida de un JSP

3. Ciclo de Vida de un JSP

4. Elemento Script JSP

4. Elemento Script JSP

5. Directivas JSP

5. Directivas JSP

1. Introducción y Objetivos

1. Introducción y Objetivos

6. Variables Predefinidas u Objetos Implícitos

6. Variables Predefinidas u Objetos Implícitos

7 Acciones

7. Acciones

7. Acciones

Page 659: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 659/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 6 0

7. Acciones7. Acciones

8. Comentarios - Caracteres de Escape8. Comentarios - Caracteres de Escape

9. Sumario de Sintaxis9. Sumario de Sintaxis

10. Ejercicios Prácticos10. Ejercicios Prácticos

Las acciones JSP usan construcciones de sintaxis XML para controlar elcomportamiento del motor de Servlets.

Se pueden utilizar para:

Insertar un fichero dinámicamente.

Reutilizar componentes JavaBeans.

Reenviar al usuario a otra página o generar HTML para el plug-inJava.

7.1 Acciones

Page 660: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 660/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 6 1

Esta acción nos permite insertar ficheros en una página que está siendogenerada.

La sintaxis es la siguiente: < j sp : in clu d e p ag e= " r ela t iv e URL"f lu sh = " t r u e" / >

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

...

<BODY>

Este es un resumen de la más recientes noticias:

7.2 Acción jsp:include

Page 661: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 661/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 6 2

<UL>

<LI><jsp:include page="EjemploJSP/noticia1.htm"

flush="true"/>

<LI><jsp:include page="EjemploJSP/noticia2.htm"

flush="true"/>

<LI><jsp:include page="EjemploJSP/noticia3.htm"

flush="true"/>

<LI><jsp:include page="EjemploJSP/noticia4.htm"

flush="true"/>

</UL>

</BODY>

</HTML>

7.2 … Acción jsp:include

Page 662: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 662/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 6 3

Esta acción nos permite cargar y utilizar un JavaBean en la página JSP. Estaes una capacidad muy útil porque permite practicar la reusabilidad de lasclases Java. La sintaxis más simple para especificar que se debe usar un Beanes: < j s p :u se Be an i d = " n a m e " cl ass= " p ack a g e.cl ass" / >

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

...

<BODY>

<jsp:useBean id="test" class="SimpleBean" />

<jsp:setProperty name="test" property="message” value="Hola amigos" />

<H1>Message:

7.3 Acción jsp:useBean

Page 663: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 663/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 6 4

<jsp:getProperty name="test" property="message" />

</H1>

</BODY>

</HTML>

Indica el contexto en el que el bean debería estar disponible.

Hay cuatro posibles valores: page, request , session , y app l ica t ion .

El valor por defecto, page, indica que el bean está sólo disponible para lapágina actual (almacenado en el PageContext de la página actual).

Un valor de reques t indica que el bean sólo está disponible para la peticiónactual del cliente (almacenado en el objeto ServletRequest)

scope

Designa el nombre completo del paquete que contiene el bean.class

Da un nombre a la variable la cual contendrá la referencia al bean. Se usaráun objeto bean anterior en lugar de ejemplarizar uno nuevo si se puedeencontrar uno con el mismo id y scope.

idUsoAtributo

7.4 Atributos de jsp:useBean

Page 664: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 664/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 6 5

actual del cliente (almacenado en el objeto ServletRequest).

Un valor de session indica que el objeto está disponible para todas laspáginas durante el tiempo de vida de la HttpSession actual.

Un valor de app l i ca t ion indica que está disponible para todas las páginas

que compartan el mismo ServletContext.

Da el nombre del bean, como se ingresaría en el método instantiate deBeans. Esta permitido suministrar un type y un beanName, y omitir elatributo class.

beanName

Especifica el tipo de la variable a la que se referirá el objeto. Este debecorresponder con el nombre de la clase o ser una superclase o un interfaceque implemente la clase. Recuerda que el nombre de la variable se designamediante el atributo id.

type

UsoAtributo

7.4 … Atributos de jsp:useBean

Page 665: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 665/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 6 6

Esta acción permite reenviar la petición a otra página. Tiene un sóloatributo, page, que debería consistir en una URL relativa.

Éste podría ser un valor estático o podría ser calculado en el momento de lapetición. Aquí se muestran dos ejemplos:

< j sp :f or w ar d p ag e= " / u t i l s/ er r or Rep or t er .j sp " / >

< j sp :f or w a rd p ag e= " < % = som eJav aEx pr ession % > " / >

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

...

<BODY>

7.5 Acción jsp:forward

Page 666: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 666/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 6 7

<jsp:forward page="/main.jsp" />

</H1>

</BODY>

</HTML>

Cuando se invoca un elemento include o forward, el objeto request originales enviado a la página de destino.

Aquí se muestran un ejemplos:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

...

<BODY>

<jsp:include page="..." >

<jsp:param name=”param1” value="value1"/>

/

7.6 Acción jsp:param

Page 667: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 667/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 6 8

</jsp:include>

</H1>

</BODY>

</HTML>

Esta acción nos permite insertar un elemento OBJECT o EMBED específicodel navegador para indicar que el navegador debería ejecutar un appletusando el Plug-in Java.

<jsp:plugin

type="bean|applet"

code="objectCode"

codebase="objectCodebase"{ align="alignment" }

{ archive="archiveList" }

{ height="height" }

{ hspace="hspace" }

{ jreversion="jreversion" }

{ name="componentName" }

{ vspace="vspace" }

7.7 Acción jsp:plugin

Page 668: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 668/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 6 9

{ vspace vspace }

{ width="width" }

{ nspluginurl="url" }

{ iepluginurl="url" } >

{ <jsp:params>

{ <jsp:param name="paramName" value= paramValue" /> }+

</jsp:params> }

{ <jsp:fallback> arbitrary_text </jsp:fallback> }

</jsp:plugin>

<jsp:plugin type="applet“ code="JavaClock.class“ height="200" width="200"nspluginurl="http://java.sun.com/products/plugin/1.3.0_01/plugin-install.html"iepluginurl="http://java.sun.com/products/plugin/1.3.0_01/jinstall-130_01win32.cab#Version=1,3,0,1" >

<jsp:params>

<jsp:param name="delay" value="100" />

<jsp:param name="border" value="5" />

<jsp:param name="nradius" value="80" />

<jsp:param name="bgcolor" value="ffffff" />

<jsp:param name="shcolor" value="ff0000" />

<jsp:param name="mhcolor" value="00ff00" />

7.7 … Acción jsp:plugin

Page 669: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 669/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 7 0

<jsp:param name="hhcolor" value="0000ff" />

<jsp:param name="ccolor" value="dddddd" />

<jsp:param name="ncolor" value="000000" />

</jsp:params>

<jsp:fallback>

<p>No se ha podido arrancar el plugin.</p>

</jsp:fallback>

</jsp:plugin>

7.7 … Acción jsp:plugin

Page 670: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 670/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 7 1

2. Características Principales de JSPs

2. Características Principales de JSPs

3. Ciclo de Vida de un JSP

3. Ciclo de Vida de un JSP

4. Elemento Script JSP

4. Elemento Script JSP

5. Directivas JSP

5. Directivas JSP

1. Introducción y Objetivos

1. Introducción y Objetivos

6. Variables Predefinidas u Objetos Implícitos

6. Variables Predefinidas u Objetos Implícitos

7. Acciones

7. Acciones

8 C t i C t d E

8. Comentarios –Caracteres deEscape

Page 671: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 671/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 7 2

8. Comentarios - Caracteres de Escape8. Comentarios - Caracteres de Escape

9. Sumario de Sintaxis9. Sumario de Sintaxis

10. Ejercicios Prácticos10. Ejercicios Prácticos

Una doble comilla en un atributo que usa comillas dobles. Sin embargo, recuerdaque podemos usar comillas dobles o simples y que otros tipos de comillas serán

\"

Una sola comilla en un atributo que usa comillas simples. Sin embargo, recuerdaque podemos usar comillas dobles o simples, y que otros tipos de comillas seráncaracteres regulares.

\'

Usado en elementos de script donde realmente queremos escribir "%>".%\>

Usado en plantillas de texto (HTML estático) donde realmente queremos escribir"<%".<\%

Un comentario HTML. Se pasa al HTML resultante. Cualquier elemento de script,directivas o acciones embebidas se ejecutan normalmente.

<!-- comment -->

Un comentario JSP. Ignorado por el traductor JSP-a-scriptlet. Cualquier elementode script, directivas o acciones embebidas son ignorados.

<%-- comment --%>

Propós i toS in tax is

8.1 Comentarios –Caracteresde Escape

Page 672: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 672/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 7 3

<% en un atributo.<\%

%> en un atributo%\>

que podemos usar comillas dobles o simples, y que otros tipos de comillas seráncaracteres regulares.

2. Características Principales de JSPs

2. Características Principales de JSPs

3. Ciclo de Vida de un JSP

3. Ciclo de Vida de un JSP

4. Elemento Script JSP

4. Elemento Script JSP

5. Directivas JSP

5. Directivas JSP

1. Introducción y Objetivos

1. Introducción y Objetivos

6. Variables Predefinidas u Objetos Implícitos

6. Variables Predefinidas u Objetos Implícitos

7. Acciones

7. Acciones

8 Comentarios Caracteres de Escape

9. Sumario de Sintaxis

Page 673: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 673/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 7 4

8. Comentarios - Caracteres de Escape8. Comentarios - Caracteres de Escape

9. Sumario de Sintaxis9. Sumario de Sintaxis

10. Ejercicios Prácticos10. Ejercicios Prácticos

Sumario de Sintaxis

Sumario de Sintaxis

9.1 … Sumario de Sintaxis

Page 674: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 674/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 7 5

2. Características Principales de JSPs

2. Características Principales de JSPs

3. Ciclo de Vida de un JSP

3. Ciclo de Vida de un JSP

4. Elemento Script JSP

4. Elemento Script JSP

5. Directivas JSP

5. Directivas JSP

1. Introducción y Objetivos

1. Introducción y Objetivos

6. Variables Predefinidas u Objetos Implícitos

6. Variables Predefinidas u Objetos Implícitos

7. Acciones

7. Acciones

8 C t i C t d E

8 Comentarios - Caracteres de Escape

10. Ejercicios Prácticos

Page 675: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 675/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 7 6

8. Comentarios - Caracteres de Escape8. Comentarios - Caracteres de Escape

9. Sumario de Sintaxis9. Sumario de Sintaxis

10. Ejercicios Prácticos10. Ejercicios Prácticos

El instructor le explicará la siguiente práctica:

Convierta en JSPs todas las páginas html que se hicieron en la prácticaanterior.

Crear una página llamada login.jsp, la cual debe contener un formulario conlos siguientes datos:

Contraseña

Usuario

login

10.1 Ejercicios Prácticos

Page 676: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 676/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 7 7

Contraseña

La página anterior deberá de redireccionarse por medio de un método posta un servlet, el cual se llamará va l ida rLog in . java .

El Servlet va l ida rLog in . java , recibirá como parámetros todos los valoresenviados en el punto 2.

Una vez completado el punto anterior, el servlet debe validar la integridadde la información, así como también, si el usuario existe o no en la base dedatos.

De existir errores, la colección generada se deberá almacenar en un objetode session, para que luego sea desplegado en la página login.jsp.

En caso contrario al punto 6, se debe generar una cookie con el nombre delusuario y deberá aparecer en la página sistemaOrdenes jsp la cual

10.1 … Ejercicios Prácticos

Page 677: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 677/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 7 8

usuario y deberá aparecer en la página sistemaOrdenes.jsp, la cualúnicamente tendrá dos enlaces, uno a mantenimientoClientes.jsp y otro amantenimientoProductos.jsp.

De ingresar a cualquiera de las dos páginas, deberá llamar un servletmantenimientoClientes.java ó mantenimientoProductos.java

Sí se selecciona algunas de las siguientes opciones: insertar, modificar óeliminar, se deberá devolver en el objeto request un mensaje donde seestablezca la transacción satisfactoria o bien el mensaje de error que hayaocurrido.

En el caso de consultar deberá aparecer la información del cliente o bien unmensaje de no existencia del mismo.

Para el caso de listar, cree un objeto session donde estén todos los clienteprovenientes en de la base de datos y preséntelo en otra página de desplieguet t l li t l d t

10.1 … Ejercicios Prácticos

Page 678: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 678/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 7 9

tanto para los clientes como para los productos.

Pruebe exhaustivamente la página hasta que haya sido totalmente validaday que esté funcionalmente correcta. Haga exactamente los mismos pasos para

el módulo de productos.

10.1 … Ejercicios Prácticos

La página debería quedar como la siguiente:

Page 679: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 679/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 8 0

FRAMEWORKFRAMEWORK

STRUTSSTRUTS

Page 680: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 680/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 8 1

Objetivos

Explicar los principales componentes delframework ,específicamente Beans, Forms,Actions, Messages y Errors.

Analizar los componentes dentro del contextode las n-capas.

Aplicar los conceptos de Struts al sistema de

Page 681: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 681/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 8 2

Ordenes.

2. Modelo 3 Capas

2. Modelo 3 Capas

3. Framework STRUTS

3. Framework STRUTS

4. Estructura Aplicación

4. Estructura Aplicación

1. Introducción

1. Introducción

1 Introducción

5. Ejercicios Prácticos

5. Ejercicios Prácticos

Page 682: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 682/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 8 3

¿ Qu e es u n f r am e w o r k ?

Es la implementación de un grupo de componentes y servicios basados enpatrones, estándares, y prácticas disponibles para web.

La plataforma J2EE es un sistema multi-capas, así pues, un f r a m e w o r k quesigue el estándar de J2EE debe adap t a rse a ese m ism o esquem a –  p r esen t ación , negoc io e in t eg rac ión .

Basado en el lineamiento anterior, han surgido variedades de frameworks

para el desarrollo de aplicaciones web, siendo uno de estos S t r u t s.

1.1 Introducción

Page 683: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 683/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 8 4

Genera l idades

Struts es un framework J2EE que:

Parte del p royec to Jaka r t a , el cual fué patrocinado por la fundaciónde software Apache (Apache Software Foundation)

Se basa en el paradigma de J2EE, Model - View - Con t r ol ler ( MVC) ,

ideal para el desarrollo de aplicaciones Web basado en servlets ytecnología Java Server Pages (JSP).

1.1 … Introducción

Page 684: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 684/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 8 5

2 Modelo 3 Capas

2. Modelo 3 Capas

2. Modelo 3 Capas

3. Framework STRUTS

3. Framework STRUTS

4. Estructura Aplicación

4. Estructura Aplicación

1. Introducción

1. Introducción

5. Ejercicios Prácticos

5. Ejercicios Prácticos

Page 685: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 685/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 8 6

Presentación

Lógica de

Negocio

Base de

Datos

Explorer Código JAVA

Esquem a Gener a l

2 … Modelo 3 Capas

Page 686: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 686/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 8 7

JSP, HTML

Deta l le de l esquem a en t res capas

2 … Modelo 3 Capas

Page 687: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 687/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 8 8

Est ruc tu ra bien d i fe renc iada

La l óg ica de n eg ocio n o se mezc la con la presen tac ión de la

aplicación El acceso a los da t os se realiza en un b loqu e d i fe renc iado de

la lógica de negoc io

Cada desarrollador se especia l iza en una capa de la aplicación.

M a n t e n i m i e n t o de la aplicación mucho más fác i l y ef icaz

¿ Porqué el desarrollo en tres capas ?

2 … Modelo 3 Capas

Page 688: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 688/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 8 9

Requiere:

Los más utilizados son Netscape o Explorer.

Browser: Permite visualizar la aplicación.

Contiene:

Imágenes.

HTML: Código que el browser entiende para dibujarcomponentes en la ventana.

JSP

Capa d e Pr esent ac ión

2 … Modelo 3 Capas

Page 689: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 689/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 9 0

JSP.

Contiene:

Clases JAVA

Helpers

Session Beans

EJB’s

Capa d e Lógica de Neg ocio

2 … Modelo 3 Capas

Page 690: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 690/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 9 1

Contiene

Estructura de la base de datos

Tablas

Capa d e Dat os

2 … Modelo 3 Capas

Page 691: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 691/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 9 2

2. Modelo 3 Capas

2. Modelo 3 Capas

3. Framework STRUTS

3. Framework STRUTS

4. Estructura Aplicación

4. Estructura Aplicación

1. Introducción

1. Introducción

3 Framework STRUTS

5. Ejercicios Prácticos

5. Ejercicios Prácticos

Page 692: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 692/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 9 3

Framework para desarrollar aplicaciones Java

Código abierto

Pertenece a Apache

Tiene dos años en el mercado

¿ Qué es ?

3 … Framework STRUTS

FRAMEWORK:Extensión de un lenguaje mediante jerarquías de clases queimplementan una funcionalidad y que pueden ser extendidas.

St ru t s :

Page 693: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 693/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 9 4

Tiene dos años en el mercado

Manejo del interface con el usuario, es decir manejo de laCapa de presentación

Manejo del flujo de la aplicación

Manejo de la lógica de la aplicación

Struts permite que el desarrollo y mantenimiento de las aplicaciones

¿ Porqué se utiliza Struts en los proyectos ?

3 … Framework STRUTS

Page 694: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 694/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 9 5

complejas o que crecen en el tiempo sea mucho más fácil

Struts consiste en una librería de clases y una serie deconfiguraciones

Java Development Kit

Servlet Container

Java Server Pages

XML Parser compatible con Java API for XML Parsing JDBC 2.0 Optional Package Classes

¿ Co m o p o n er e n f u n ci o n am i en t o St r u t s ?

3 … Framework STRUTS

Page 695: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 695/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 9 6

MODEL VI EW CONTROLLER

Controller

(Servlet)

Model

(Java Beans)

Cliente

( Browser )

Esquema

3 … Framework STRUTS

Page 696: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 696/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 9 7

View

(JSP)

Estándar Web Browser

Su función es la de manejar el workflow de la aplicación:

La sesión.

Flujo de las peticiones del cliente.

Realiza el Mapping de requests a las clases quegestionan la lógica de negocio.

El con t ro lador maneja las peticiones dirigidas hacia

Cliente

Controller

3 … Framework STRUTS

Page 697: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 697/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 9 8

El con t ro lador maneja las peticiones dirigidas haciaun A ct i o n cl ass.

El “ Act i on Class ” , clase del tipo JavaBean o EJB, quecorresponde al modelo en sí, encapsula la lógica del negocio. Laforma de ligar éste con los demás archivos, es a través delarchivo de configuración struts-con f i g . xm l .

El “ Fo r m Cl ass” , que corresponde a la vista (view, siguiendo elmodelo MVC), constituye un grupo de librerías que funcionan enconcordancia con el controlador para conectar un .JSP con dichas

librerías. Las páginas JSP pertenecientes a la capa de presentación utilizan

librerias de marcas para mostrar el estado del Model.

Model

View

3 … Framework STRUTS

Page 698: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 698/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.6 9 9

MODEL VI EW CONTROLLER

ControllerDefine el comportamiento de la aplicación

Mapea las acciones del usuario al model

Selecciona views para la respuesta

View

Presenta páginas al usuario

Actualiza peticiones del Model

Manda al Controller peticiones del usuario

Model

Encapsula el estado de la aplicación

Da respuesta a las queries

Se encarga de la lógica de negocio

Notifica cambios en la capa de presentaciónNotificación

de Cambio

Petición de

EstadoCambio de Estado

G ti d l U i

Selección de la View

Invocación a métodos

Eventos

3 … Framework STRUTS

Page 699: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 699/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 0 0

Uno para cada funcionalidad.Manda al Controller peticiones del usuario

Permite al Controller seleccionar la viewGestiones del Usuario

2.Acciones

3. Resultados

4. Redireccionamiento

6. Resultado 5. Consulta

Model

(Java Beans

y/o EJBs)

1. Solicitud Controller

( Servlet)

View

(JSPs TagLibs)

¿ Como funciona esto en aplicaciones WEB ?

3 … Framework STRUTS

Page 700: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 700/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 0 1

(JSPs, TagLibs)

( 1 ) El navegador genera una solicitud que es atendida por el Controller(Servlet especializado).

( 2 ) El Controller analiza la solicitud, siguiendo la configuración que se leha programado en su XML y llama al Action correspondientepasándole los parámetros enviados. El Action instancia y/o utilizarálos objetos de negocio para concretar la tarea.

( 3 ) Según el resultado que retorne el Action, ( 4 ) el Controller derivará la

generación de interfaz a una o más JSPs, ( 5 ) las cuales podránconsultar los objetos del Model a ( 6 ) fines de realizar su tarea.

¿ Com o fu nc iona est o en ap l i cac iones W EB ?

3 … Framework STRUTS

Page 701: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 701/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 0 2

Separación del workflow de la aplicación del modelo de objetos denegocio y de la generación de interfaz.

El controlador ya está implementado por Struts, aunque se puede

extender y heredar. El workflow se puede programar desde un archivoXML.

La generación de interfaz se soporta mediante un conjunto de Tagspredefinidos por Struts.

Logísticamente, permite desarrollar la interfaz del workflow y la lógica

de negocio conjuntamente o con personal especializado en cada capa. Potencia la reutilización, soporte de múltiples interfaces ( Html).

Caract er íst icas Pr in c ipa les

3 … Framework STRUTS

Page 702: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 702/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 0 3

Errors.java

ActionServlet Action.java

Session Beans

Entity Beans

Tables

Tables

Tables

.jsp

ActionForm.java

Struts-config.XML

View Controller Model EJB Database

1:1 fields + validation

forward

add form errors

display errors

Instanciate ActionForm Bean

forward

action mapping

add logic errors

forward

invoke / replay

use

invoke / replay

Diagr am a de Clases

3 … Framework STRUTS

Page 703: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 703/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 0 4

g

Es la parte fundamental de la capa de presentación.

Permite mezclar código HTML estático con HTML generadodinámicamente ( código JAVA ).

Se ejecutan en cualquier servidor WEB

VI EW con JSPs

3 … Framework STRUTS

Page 704: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 704/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 0 5

Al realizar el usuario una acción, la JSP llama al ActionServlet que

contiene la clase Form que ha de llamarse para validar los datos.

Cualquier aplicación con páginas dinámicas en respuesta a lasacciones realizadas por el usuario es susceptible de usar JSP’s.

VI EW con JSPs

3 … Framework STRUTS

Page 705: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 705/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 0 6

Estructura visual de la página, junto con HTML.

Acceder a objetos del servidor.

Modificar los datos.

Para incluir código de acceso a la base de datos. Para incluir código de lógica de negocio

¿ Para que usar JSP’s ?

¿ Para que no usar JSP’s ?

3 … Framework STRUTS

Page 706: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 706/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 0 7

<HTML><HEAD>

<TITLE>Welcome to Our Store</TITLE></HEAD><BODY>

<H1>Welcome to Our Store</H1><SMALL>Welcome,<!-- User name is "New User" for 1st-timevisitor-->

< % o u t . p r i n t l n ( Ut i l s.g e t Use r N am e Fr o m Co o k i e( r e q u e st ) ) ;% >

To access your account settings, click<A HREF="Account-Settings.html">here.</A>

</SMALL><P> Regular HTML for all the rest of the on-line store's Web page.</BODY>

</HTML>

JSP - Ej e m p l o

3 … Framework STRUTS

Page 707: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 707/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 0 8

Un archivo .Properties se utiliza para definir los mensajes a desplegaren un JSP. Estos mensajes se pueden utilizar como mensajes deerror, es decir, captions de etiquetas. Dentro de este archivo se

especifican entradas de la forma n o m b r e = v a lo r .

Existe uno principal que se llama NombreAp l i cac ion .p roper t ies ,donde se refiere al nombre configurado de la aplicación en el servletinicial. Aquí se definirán todas las etiquetas necesarias para la

aplicación.

Et iq ue t as en u n .Prop er t ies

3 … Framework STRUTS

Page 708: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 708/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 0 9

Cuando se haga referencia a una etiqueta, Struts buscará el archivoprincipal por defecto correspondiente al nombreAplicacion.properties.

Este archivo se encuentra ubicado en la carpeta WEB-INF/classes.

Etiquetas en un .Properties

3 … Framework STRUTS

Page 709: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 709/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 1 0

A continuación se muestra como utilizar los distintos elementosde Struts en una página JSP para generar un Form que envíe unapetición y controle automáticamente los errores.

< % @ t ag lib u r i= " / W EB- I NF/ t ld s/ st r u t s- bean .t l d" p ref ix = " b ean " % >

< % @ t ag li b u r i= " / W EB- I NF/ t ld s/ st r u t s- h t m l .t ld " p ref ix = " h t m l " % >

< % @ t a gl ib u r i= " / W EB- I N F/ t l ds/ st r u t s- lo gi c.t l d" p r ef ix = " l og ic" % >

Com b inando elemen t os de St r u t s en un JSP

3 … Framework STRUTS

Page 710: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 710/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 1 1

<html><head><title>JSP Page</title></head><body><html:errors/><br>

<html:form action="/prueba" scope="session"><TABLE>

<TR><TD WIDTH="3%"><bean:message

key="index.titulo"/></TD>

</TR><TR><TD>

<!-- Inicio Tabla Detalle -->

3 … Framework STRUTS

Page 711: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 711/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 1 2

<TABLE><TR>

<TD>Nombre:</TD><TD><html:text property="nombre" /></TD>

</TR>

<TR><TD>Apellido1:</TD><TD><html:text property="apellido1" /></TD>

</TR><TABLE>

</TD></TR>

<TR><TD WIDTH="3%"></TD></TR>

</TABLE></html:form>

</body>

Com b inando elemen t os de St r u t s en un JSP

3 … Framework STRUTS

Page 712: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 712/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 1 3

</html>

Un form de struts se define como la agrupación de información deentrada, encapsulada en una clase de java llamada Form y la misma se

captura directamente de una sesión de usuario.

La función principal de este componente es la va l idac ión de los

t ipos de los da tos. Cuando se trata la información que el usuario hadigitado, lo ideal es que la misma no vaya con errores en cuanto altipo de las variables. De igual forma, si ese es el caso, el desarrolladordesearía tener el medio por el cual poder comunicarle al usuario queha cometido un error en la digitación. Esta es otra de las funciones delForm.

VI EW - - - - ACTI ON FORM

3 … Framework STRUTS

Page 713: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 713/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 1 4

Cada formulario tiene su propio Form.

Contiene la declaración de todos los campos del formulario, sus

métodos g et () y set () y los métodos va l i da te y rese t . Las variables y sus métodos deben usar el mismo nombre.

Contiene las validaciones para que se pueda redireccionar la página aotra JSP o se devuelva un resultado en la misma ventana.

VI EW - - - - ACTI ON FORM

3 … Framework STRUTS

Page 714: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 714/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 1 5

Se trata de una clase integramente JAVA.

Si las validaciones son correctas, se llama al Action para realizar la

lógica de negocio. Se trata de un firewall entre Cliente y Action. Si bien el ActionForm tiene características que corresponden al Model,

pertenece a la View.

VIEW ---- ACTION FORM

3 … Framework STRUTS

Page 715: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 715/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 1 6

Como Crear un Action Form

Para definir un form se deben seguir los siguientes pasos:

Crear la clase NombreForm.java, en donde Nom bre se sust i t uye

po r un nom bre s i gn i f i ca t i vo qu e haga re fe rencia al con ten idode la c lase.

Importar los paquetes org.apache.struts.action.* y javax.servlet.http.*.

Esta clase debe extender la clase ActionForm de l paque te

i m p o r t a d o a n t e r i or m e n t e .

3 … Framework STRUTS

Page 716: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 716/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 1 7

Método Get Método Set

 public String getPropiedad () { 

return propiedad; }

Public void setPropiedad (String propiedad) { 

this.propiedad = propiedad;

 }

… Como Crear un Action Form

Definir Strings de tipo privado para cada una de las propiedadesque compondrán este formulario. ( Ej . Nom br e , Ape l l ido1 ,

Ape l l i do2 , Sa la r io , e tc ) .

Por cada uno de esas propiedades, definir dos métodos:

3 … Framework STRUTS

Page 717: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 717/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 1 8

Ahora se debe sobreescribir el siguiente método:

p u b l i c A ct i o n Er r o r s v a li d at e ( A ct i o n Ma pp i n g m a pp i n g,

H t t p Se r v l et Re q u est r e q u est )

Por medio de este método se realizan las validaciones de losdatos recibidos en cada una de las propiedades definidasanteriormente. En el JSP asociado a este form, deben definirse

cada una de estas propiedades como objetos de HTMLpara que al hacer “submit” del formulario de HTML, dichaspropiedades sean almacenadas en la clase de java o Formdestinado para ello.

Como Crear un Action Form

3 … Framework STRUTS

Page 718: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 718/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 1 9

Dentro del método validate se capturan los errores a través de

un objeto de errores (Ej. ActionErrors errors= new

ActionErrors(); será la primera variable local a declarar)que la función se encargará de devolver. Si no se encuentraningún error, entonces se devuelve un null o una instancia de laclase ActionErrors de zero-length.

3 … Framework STRUTS

Page 719: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 719/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 2 0

Si alguna validación no se cumple, entonces se agrega un errornuevo a la instancia de ActionErrors, como sigue:

er r o r s .a dd ( " n o m b r e Er r o r " ,n ew A ct i o n Er r o r ( ” D escr i p ci ón ” ) ) ;

nom breEr r o r : Et i qu e ta i den t i f i cando e l e r ro r .

Descripción: La descripción es el mensaje que se le desplegaráal usuario al devolver el foco al formulario de HTML. Puede seruna cadena definida por el desarrollador en el momento de

agregar el error , o puede ser una etiqueta definida en el archivode .properties de la aplicación (Ej. NewActionError("error.descripcion")).

Como Crear un Action Form

3 … Framework STRUTS

Page 720: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 720/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 2 1

Es posible agregar tantos errores como se deseen.

Posteriormente, en el JSP a través de un tag de HTML(<html:errors/>) se desplegarán los errores una vez que el formse haya invocado.

Com o Crea r un Act i on Fo rm

3 … Framework STRUTS

Page 721: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 721/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 2 2

También se puede utilizar el siguiente método que será requeridocuando se utilicen checkbox:

Pu b l ic v o id r e set ( Act i o n Ma pp i n g m ap p i n g, H t t p Se r v le t Req u estreques t )

Este método únicamente llevará la inicialización de las variables.

Como Crear un Action Form

3 … Framework STRUTS

Page 722: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 722/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 2 3

Esto es todo lo que debe contener la claseNombreForm.java.

Por último, se debe incluir la definición de este form en el archivode configuración del Struts, struts-config.xml :

<!—===== Definición de formas ====== --><form-beans><form-bean name="NombreForm"

type="paquete.paquete2.paqueteN.nombreForm"/>

</form-beans>

Como Crear un Action Form

3 … Framework STRUTS

Page 723: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 723/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 2 4

En donde NombreForm, corresponde a un nombre por el cual sehará referencia al archivo .java que se ha generado, a través detoda la aplicación y paquete.paquete2.paqueteN.nombreForm

que corresponde a la ruta física delarchivo dentro de la aplicación, de acuerdo a la especificación denombres de archivos de JAVA (fully qualified name).

Com o Crea r un Act i on Fo rm

3 … Framework STRUTS

Page 724: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 724/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 2 5

public final class DireccionForm extends ActionForm {

private String tipDireccion;

public void reset(ActionMapping mapping,HttpServletRequest request) {

this.tipDireccion = null;}

ActionForm - Ejemplo

3 … Framework STRUTS

Page 725: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 725/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 2 6

p u b l i c A ct i o n Er r o r s v a l i d at e ( A ct i o n M ap p i n g m a p p in g ,

Ht tpServ le tReques t

reques t ) {

ActionErrors errors = new ActionErrors();DetalleTipoHelper detalleTipoHelper = null;boolean validar = true;

 //Se valida el Tipo de Direccion.if (this.tipDireccion == null ||"".equals(this.tipDireccion.trim()) ||

"-1".equals(this.tipDireccion.trim())) {

errors.add("tipDireccion",newActionError("error.direccion.tipDireccion.requerido"));

}return errors;

}

ActionForm – Ejemplo (cont.)

3 … Framework STRUTS

Page 726: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 726/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 2 7

 / / Def in i ción d el m ét odo get ( )public String getTipDireccion() {

return tipDireccion;

} / / Def in i ción del m et odo set ( )public void setTipDireccion(String tipDireccion) {

this.tipDireccion = tipDireccion;}

}

ActionForm – Ejemplo (Cont.)

3 … Framework STRUTS

Page 727: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 727/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 2 8

Comprende la funcionalidad involucrada desde que el usuario generaun estímulo (click en link, envió de formulario...) hasta que se generala interfaz de respuesta.

En medio, llama a los objetos de negocio del Model para queresuelvan funcionalidad de la lógica de negocio y según el resultado,ejecutará la JSP que deba generar la interfaz resultante

CONTROLLER ---- ACTION SERVLET

3 … Framework STRUTS

Page 728: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 728/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 2 9

El Controller usado por defecto se encuentra en

org.apache.action.Action y puede extenderse o modificarse la clase.

Se basa en el fichero struts-config.XML

CONTROLLER ---- ACTION SERVLET

3 … Framework STRUTS

Page 729: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 729/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 3 0

Para integrar struts a una aplicación WEB es necesarioinicializar el framework a través del actionServlet. Estaclase representa el “controlador” en la estructura de

MVC (Model View Controller). La inicialización se realiza en el archivo web.xml y loselementos a configurar, se especifican a continuación:

Serv le t -name : Nombre del Servlet.

App l i ca t ion : Nombre de la Aplicación.

Conf ig : Ruta donde se encuentra el archivo struts-config.xml.

CONFIGURAR EL SERVLET INICIAL

3 … Framework STRUTS

Page 730: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 730/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 3 1

Deb u g y d et a il : Parámetros para controlar errores. Va desde cero,desactivado, hasta un nivel de 6, muy serio.

Va l ida te : Se debe utilizar un parser de XML para validar el archivo deconfiguración.

CONFI GURAR EL SERVLET I NI CI AL

3 … Framework STRUTS

Page 731: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 731/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 3 2

<servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class><init-param>

<param-name>application</param-name><param-value>afiliacion</param-value></init-param><init-param>

<param-name>config</param-name><param-value>/WEB-INF/struts-config.xml</param-

value></init-param><init-param>

<param-name>debug</param-name><param-value>0</param-value>

EJEMPLO - -- - ACTI ON SERVLET

3 … Framework STRUTS

Page 732: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 732/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 3 3

</init-param>

<init-param><param-name>detail</param-name><param-value>0</param-value>

</init-param><init-param>

<param-name>validate</param-name><param-value>true</param-value>

</init-param><load-on-startup>1</load-on-startup>

</servlet>

EJEMPLO - -- - ACTI ON SERVLET

3 … Framework STRUTS

Page 733: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 733/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 3 4

Fichero XML básico para el funcionamiento de la aplicación.

En él se definen todos los ActionForm de cada uno de los formulariosde la aplicación.

También pueden definirse los redireccionamientos globales.

CONTROLLER - - - - STRUTS- CONFI G.XML

3 … Framework STRUTS

Page 734: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 734/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 3 5

Y todos los action-mapping de la aplicación.

Si este fichero no se define correctamente, la aplicación no pasará deeste punto, o estará mal redireccionada.

CONTROLLER - - - - STRUTS- CONFI G.XML

3 … Framework STRUTS

Page 735: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 735/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 3 6

<?xml version="1.0" encoding="ISO-8859-1" ?><struts-config>

< ! - - = = = = Def in ición de f o r m as = = = - - ><form-beans>

<form-bean name=“NombreForm"type=“paquete1.paquete2.nombreForm.java"/>

</form-beans>

< ! - - = = = Def in ici ón de r ed ir eccio nam i en t os g lo bales = = = -- >

<global-forwards><forward name="success" path="/main.jsp"/></global-forwards>

Struts-Config - Ejemplo

3 … Framework STRUTS

Page 736: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 736/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 3 7

< ! - - = = = Def in i cion d e accion es = = = - - ><action-mappings>

<action path="/actionFormHTML"type="paquete1.paqute2.nombreAction.java"

name="nombreForm"scope="request"validate="true/false"input="/ArchivoRutaJSP"><forward name="success“

path="/ArchivoRutaJSP"/></action>

</action-mappings></struts-config>

St r u t s - Co n f i g ( Co n t . )

3 … Framework STRUTS

Page 737: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 737/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 3 8

Form-bean : Aquí se define la clase de java correspondiente alnombreForm.java.

Ac t i on -mapp ings : Elemento de XML donde se define la información

asociada con el actionclass de java: Path : Nombre del formulario. Este nombre es el que se utiliza en una

página JSP para asociar un form de HTML con un form de Struts. Deesta forma, al hacer el “submit” desde la página JSP, el Model ViewController de Struts manejará la solicitud en concordancia con el

nombreForm.java y el nombreAction.java.

Elem ent os St ru ts -Con f ig

3 … Framework STRUTS

Page 738: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 738/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 3 9

Tape: Nombre completo de la clase de java nombreAction.java.Corresponde a la ruta física del archivo dentro de la aplicación, deacuerdo a la especificación de nombres de archivos de JAVA (fully

qualified name).

Name: Nombre del Formulario.

Scope: Alcance del formulario, es decir, si se quiere que estéalmacenado en sesión o en el objeto request. Posibles valores =REQUEST ó SESSIÓN.

Elem ent os St ru ts -Con f ig

3 … Framework STRUTS

Page 739: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 739/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 4 0

Va l ida te : Determina si el método validate del form de struts seráinvocado. Posibles valores = TRUE ó FALSE.

I n p u t : Ruta de la página JSP que invocó al form de struts. De estamanera, al haber un error, struts sabrá a quien devolver el Foco parala corrección de éste.

F o r w a r d - n a m e : Corresponde a una etiqueta asociada a una ruta deuna página JSP. Esto permitirá que desde el action, con solo invocar amapping.findForward(etiqueta) sea posible efectuar la llamada.

Elem ent os St ru ts -Con f ig

3 … Framework STRUTS

Page 740: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 740/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 4 1

2. Sets y Validate

4. Perform

7. Redireccionamiento

9. Resultado 8. ConsultaObjetos de

Negocio

JavaBeans

1. Solicitud

Controller

(Servlet)

View(JSPs, TagLibs)

config

XML

Action

Form

Action

3. Resultado

6. Resultado

5. Acciones

Model

Esquem a fu nc iona l

3 … Framework STRUTS

Page 741: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 741/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 4 2

Model

( 1 ) Cuando un usuario completa un formulario y lo envia, elController busca en el struts-config.xml el ActionForm Bean

correspondiente.( 2 ) Luego realiza un set por cada input del form y llama al métodovalidate. ( 3 a ) Si retorna errores, ( 7 ) ( 8 ) ( 9 ) el Controller llamaría a laJSP del formulario para que esta lo volviera a generar ( con losvalores establecidos por el usuario ) e incluyera los mensajes de error

correspondientes.

Descripción del esquema funcional

3 … Framework STRUTS

Page 742: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 742/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 4 3

( 3 b ) Si todo estuviese bien, ( 4 ) llamaría al método perform delAction (también configurado en el struts-config.xml) pasándole elActionForm Bean como parámetro para que sea utilizado para ( 5 )

obtener los valores de los datos.

( 6 ) Retorna los resultados, ( 7 ) el Controller redirecciona a la JSPcorrespondiente, y se ( 9 ) retorna la JSP resultante ( 8 ) con sus datosinformados.

3 … Framework STRUTS

Page 743: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 743/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 4 4

El action es la clase de java en donde se manipula la informaciónrecolectada en el form.

Contiene los Objetos donde se implementa toda la lógica de negocio

de la aplicación (el “how it’s done”) y donde se soportan todos losrequisitos funcionales del Sistema sin mezclarlo con el workflow(“what to do”) que corresponden al Controller.

MODEL - - - - ACTI ON

3 … Framework STRUTS

Page 744: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 744/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 4 5

Se accede al Action si las validaciones del Form (usuario y sesión) soncorrectas. Es aquí donde realmente se manipulan los datos, paraalmacenarlos en la Base de datos o para desplegarlos en un JSP.

Si no aparecen problemas, retorna la respuesta al Controller para queredireccione la aplicación a la nueva página JSP (Action Forward)

MODEL - - - - ACTI ON

3 … Framework STRUTS

Page 745: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 745/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 4 6

Crear la clase NombreAction.java. En donde Nombre se

sustituye por un nombre significativo que haga

referencia al contenido de la clase. Importar los paquetes:

import org.apache.struts.action.*;import javax.servlet.http.*;import javax.servlet.*;

import java.io.*;

Com o c rea r un Act ion

3 … Framework STRUTS

Page 746: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 746/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 4 7

Ahora se debe sobreescribir el método:

public ActionForward perform(ActionMapping mapping,ActionForm

form,HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException

Com o c rea r un Act ion

3 … Framework STRUTS

Page 747: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 747/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 4 8

Esta clase debe ser declarada como final y debe extender la claseAction contenida en el paquete action importado anteriormente.

Aquí se validará la información contenida en el Form. Estavalidación será de contenido y no de forma (Ej: El monto deun depósito que no pueda ser menor a cierta cantidad).

Dependiendo del resultado de la validación, se enviará al usuario auna página específica.

Como crear un Action

3 … Framework STRUTS

Page 748: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 748/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 4 9

Si existiese algún error, basta con agregar la etiqueta de error yla descripción a una instancia de la clase ActionError.(ver punto 6de la sección definiendo nuevos Forms). Una vez que se tiene lainstancia de la clase ActionError se almacena en el objetorequest para ser invocada al retornar al

f o r m u l a r i o q u e i n v ocó el a ct i o n ( m a pp i n g.g et I n p u t ( ) ) :

i f ( ! er r o r s.em p t y ( ) ) {

saveEr r o rs ( request , e r r o rs ) ;

r et u r n ( n e w Act i on Fo r w ar d ( m ap pi ng .g et I n p ut ( ) ) ) ;}

Como crear un Action

3 … Framework STRUTS

Page 749: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 749/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 5 0

Inmediatamente después de esté fragmento de código, se debecontemplar la posibilidad de que no exista ningún error, en cuyocaso , se debe remover la información del Action Formalmacenada en la sessión o en el objeto request.

i f ( m ap p in g .g et A t t r i bu t e ( ) ! = n u l l ) {

i f ( " r e qu e st " .eq u al s( m ap p in g .g et Sco p e( ) ) )

r e q u e s t . r e m o v e A t t r i b u t e ( m a p p i n g . g e t A t t r i b u t e ( ) ) ;

e lse

s e s s i o n . r e m o v e A t t r i b u t e ( m a p p i n g . g e t A t t r i b u t e ( ) ) ;

}

Como crear un Action

3 … Framework STRUTS

Page 750: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 750/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 5 1

Finalmente para redireccionar el Form a una página desde elaction class:

mapp ing . f i ndFo rwa rd (nombreD i recc iona r )

Donde el nombreDireccionar se reemplazará por el alias definidoen el archivo struts-config.xml en la sección de action-mappingspara el action class en cuestión.

Por último, se debe definir el Action class en el atributo < a ct i o n -m a p p i n g s > del archivo de configuración struts-config.xml visto conanterioridad.

Como crear un Action

3 … Framework STRUTS

Page 751: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 751/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 5 2

public final class DireccionAction extends Action {p u b l i c A ct i o n Fo r w ar d p er f o r m ( Act i o n Ma pp i n g m a pp i n g,

Act i on Fo rm f or m ,H t t p Se r v l et Re qu e st r e q u est ,H t t pSe rv le tResponse response )

throws IOException, ServletException {ActionErrors errors = new ActionErrors();HttpSession session = request.getSession();ControlDireccionHelper controlDireccionHelper = null;

 / / Si e l Usu ar io n o se en cu en t r a en la session se en v iaa la pag in a in ic ia l .UsuarioHelper usuario = (UsuarioHelper)session.getAttribute("usuario");if (usuario == null || "".equals(usuario)) {return mapping.findForward("redirigirSimpleModal");}

Act ion - Ej em p lo

3 … Framework STRUTS

Page 752: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 752/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 5 3

D ir e cci on H el p er d i r ecci on H el p er = n ewDi recc ionHe lpe r ( ) ;i f ( bo ton .equa ls I gno reCase ( " GRABAR" ) ) {

try {

direccionHelper.setNumId(new Long(numId));direccionHelper.crear();} catch (CreateException e) {

e.printStackTrace();errors.add(Act ionErrors.GLOBAL_ERROR,

n ewAc t i onEr ro r ( "e r ro r . d i recc ion .ope rac ion " ) ) ;

}}

Act i on – Ej e m p l o ( Co n t .)

3 … Framework STRUTS

Page 753: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 753/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 5 4

i f ( ! er r o r s .em p t y ( ) ) {saveErrors(request, errors);return (new ActionForward(mapping.getInput()));

}

if (mapping.getAttribute() != null) {if ("request".equals(mapping.getScope()))request.removeAttribute(mapping.getAttribute());

elsesession.removeAttribute(mapping.getAttribute());

}r e t u r n ( m a p p i n g . f i n d F o r w a r d ( " s u c c e s s " ) ) ;

}}

Action – Ejemplo (Cont.)

3 … Framework STRUTS

Page 754: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 754/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 5 5

Invoca las clases que se ejecutan en el servidor de aplicaciones.

Llama a los métodos contenidos en los Session Beans y los EJB’s.

Contiene una instancia de la clase Home.

MODEL ---- HELPER CLASS

3 … Framework STRUTS

Page 755: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 755/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 5 6

Debe ser serializable.

Contiene métodos get() y set() de las variables.

Puede contener un VO que retorna los valores del Bean accedido.

MODEL - - -- HELPER CLASS

3 … Framework STRUTS

Page 756: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 756/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 5 7

public final class DireccionHelper implements Ser ia l izab le {

private Long numId;private Long tipDireccion;private DireccionHome home = null;

public DireccionHelper() throws NamingException {Co n t ex t i n i t i a l = n ew I n i t i al Co n t ex t ( ) ;Ob jec t

o bj r e f = i n i t ia l .l oo k u p( " j a v a: co m p / en v / e j b / Di r ecci on " ) ;h o m e =

(D i recc ionHome)Po r tab leRemo teOb jec t . na r row(ob j re f ,

D i recc ionHome.c lass) ;}

Helper Class - Ejemplo

3 … Framework STRUTS

Page 757: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 757/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 5 8

pub l i c vo id l ee r ( ) throws RemoteException, FinderException {Ll av eD ir e cci on l la v e = n ew Ll av eD ir e cci on ( n u m I d ,

t i pD i recc ion ,conSecuenc ia ) ;

Direccion direccion = home.f i ndByPr ima ryKey(llave);

bajar(direccion);direccion = null;}public Long g e t N u m I d () {

return numId;}public void s e t N u m I d (Long numId) {

this.numId = numId;}

Helper Class – Ejemplo (Cont.)

3 … Framework STRUTS

Page 758: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 758/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 5 9

public Direcc ionVO getDireccionVO() {return crearDireccionVO();

}

private DireccionVO crearDireccionVO() {

DireccionVO direccionVO = newDireccionVO();direccionVO.setNumId(this.numId);direccionVO.setTipDireccion(this.tipDireccion);return direccionVO;

}}

Helper Class – Ejemplo (Cont.)

3 … Framework STRUTS

Page 759: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 759/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 6 0

C i ht F ió S l i I f áti EFIBS S A

Son un middelware entre la parte cliente y la parte servidor deInternet.

Posibilitan crear la lógica de negocio como componentes reusables,para poder usarlos en cualquier tipo de servidor que soporte la

especificación EJB. El programar EJBs en lugar de aplicaciones enteras en JAVA permite

ahorrarse preocupaciones de seguridad, pool de conexiones, gestióntransaccional, control de estado, persistencia o multithreading, ya queson características propias del servidor de aplicaciones.

MODEL ---- ENTERPRISE JAVA BEANS (EJB)

3 … Framework STRUTS

Page 760: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 760/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 6 1

Copyright Formación y Soluciones Informáticas EFIBS S A

Se ssi o n Be an s

En t i t y Bean s

MODEL --- Tipos de EJB

3 … Framework STRUTS

Page 761: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 761/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 6 2

Copyright Formación y Soluciones Informáticas EFIBS S A

Representación del cliente en el servidor.

Una instancia de un session bean siempre pertenece a un únicocliente.

Solo se permite el acceso al cliente que lo ha creado.

El servidor es responsable de mantener los datos entre las diferentesllamadas del cliente.

Existen dos tipos de session bean:

Stateless Stateful

¿ Qué es un Session Bean ?

3 … Framework STRUTS

Page 762: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 762/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 6 3

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 6 4

No guarda estado entre las diferentes peticiones peticiones del cliente.

Se reutilizan las instancias para dar servicio a diferentes clientes, alno guardar información del cliente.

Guarda información del estado del cliente.

Sus instancias no son reutilizables entre llamadas de diferentes

clientes. No guarda datos ante una posible caida del servidor.

Stateless Session Beans

Statefull Session Beans

3 … Framework STRUTS

Page 763: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 763/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 6 4

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 6 5

Se pueden definir como Representaciones de datos del servidor.

No están ligados a ningún cliente, su instancia pertenece al servidor.

Se utilizan para englobar el acceso a la base de datos del servidor.

Responsables de mantener persistencia y de estar sincronizados conlos datos a los que representan.

El servidor puede crear diferentes instancias si es necesario para lacarga de peticiones del bean

¿ Qué es un Entity Bean ?

3 … Framework STRUTS

Page 764: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 764/879

py g y7 6 5

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 6 6

Se deben desarrollar tres partes: La clase en cuestión, su interfazHOME y la interfaz remota.

La Clase contiene la lógica de negocio.

La interfaz Home contiene la interfaz de acceso a la clase Bean.

Ciclo de desarrollo de un EJB

3 … Framework STRUTS

Page 765: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 765/879

7 6 6

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 6 7

El interfaz Remote contiene la interfaz remota de acceso a los valoresretornados por la Clase Bean.

El deployment permite definir las propiedades del EJB, tales como

nombre, tipo (Session o Entity), clases, campos,y se configura sucomportamiento transaccional y su seguridad. El fichero es en XML.

Cic lo de d esarr o l lo de u n EJB

3 … Framework STRUTS

Page 766: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 766/879

6

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 6 8

Un EJB corre dentro de un container en un servidor de aplicaciones. ElContainer lo facilita el fabricante del servidor de aplicaciones y es elinterface entre el EJB desarrollado y el servidor escogido.

Los containers proporcionan independencia al EJB del servidor en elque corre.

Arquitectura para EJB’s

3 … Framework STRUTS

Page 767: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 767/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 6 9

Contenedor EJBInvoca automaticamente servicios para la EJB basándose en

requisitos definidos en los descriptores de despliegue (ciclo

de vida, estados, transacciones, seguridad, persistencia)

Servidor de Aplicaciones EJBProporciona gestión de recursos y servicios middleware

(transacciones, seguridad, persistencia)

EJB Home

(ID del bean)Entorno

Contexto

Enterprise

BeanCliente

Pooling de recursos

Tolerancia a fallos

Conectividad

Multithreading

Cache de DatosControl concurrencia

métodos

métodos

create

lookup

destroy

create

lookup

destroy

Descriptoresde despliegue

Objeto EJB

(vista de cliente)

Arquitectura para EJB’s

3 … Framework STRUTS

Page 768: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 768/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 7 0

Se usan en proyectos internet de tipo medio grande, es decir, los quecorran en servidores de aplicaciones.

Se benefician de crear porciones de código reutilizables en diversos

proyectos

¿ Para que usar EJB’s ?

3 … Framework STRUTS

Page 769: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 769/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 7 1

2. Modelo 3 Capas

2. Modelo 3 Capas

3. Framework STRUTS

3. Framework STRUTS

4. Estructura - Aplicación

4. Estructura - Aplicación

1. Introducción

1. Introducción

5. Ejercicios Prácticos

5. Ejercicios Prácticos

4. Estructura - Aplicación

Page 770: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 770/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 7 2

View Controller Model EJB Database

WAR ( Web Application Archive) JAR (Java Archive)

EAR ( Enterprise Application Archive )

4 … Estructura de la Aplicación

Page 771: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 771/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 7 3

Permite agrupar clases desarrolladas en el lenguaje Java.

Otorga nivel de comprensión y reduce la carga administrativa al

distribuir clases en el lenguaje.

No pueden ser observados ni manipulados directamente.

Un EJB-JAR es un JAR pero contiene la distribución del desarrollo delos EJB’s. Modulariza el desarrollo de los EJB’s.

JAR (Java Archives)

4 … Estructura de la Aplicación

Page 772: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 772/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 7 4

Permite agrupar un conjunto de clases y documentos que conformanuna aplicación Web en Java .

Es simplemente un WAR y un EJB-JAR agrupados. La razón de suexistencia es basicamente para seguir la estructura de un “JavaApplication Server” 

Un aplicación Server contiene el “Servlet Engine” (ambiente usadopara WAR’s) y el “EJB Container” (ambiente usado para EJB-JAR’s)

W AR ( W eb Arch ives )

EAR ( Ent erp r i se Arch i ves)

4 … Estructura de la Aplicación

Page 773: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 773/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 7 5

Se necesitan ejecutables paragenerar el JAR, el WAR y el EAR de

la aplicación

Est r uc tu ra Pr in c ipa l

4 … Estructura de la Aplicación

Page 774: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 774/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 7 6

app l i ca t i on . xm l – define sigeneramos entorno de produccióno de desarrollo

e j b - j a r . x m l – contiene eldeployment descriptor utilizado

en EJB’s

w e b l o g i c - e j b - j a r – archivo deconfiguración utilizado por el

 “Application Server” (concretamente el EJB-

Container)

ccss.af i l iac ion.* – contienetodas las clases Java necesariaspara definir los distintos EJB’s

Estructura de Directorios

4 … Estructura de la Aplicación

Page 775: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 775/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 7 7

af i l iac ion --- interfaz Remota delEJB afiliacion

a f i l i ac ionHome --- interfaz decreacion del EJB afiliación

a f i l ia ci onEJB - - - clase Java que

contiene la el acceso a los datosde la afiliación

af i l iac iónVO --- Value Object quecontiene todos los campos del EJB

afiliación

Estructura de Directorios

4 … Estructura de la Aplicación

Page 776: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 776/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 7 8

 / * .h t m l , * .j sp , * .css,* .g i f ---directorios que contienen los elementos

comunmente utilizados

w e b . x m l – contiene elementos de seguridadde la aplicación así como detalles sobre los

servlets que serán usados dentro de lamisma

classes – contiene las clases Javaadicionales a las del JDK que serán

empleadas por las JSP’s

l ib – Contiene los JAR’s que usará laaplicación

t l d s – clases que usa struts

web log i c -e j b - j a r – archivo deconfiguración utilizado por el “ApplicationServer” (concretamente el Servlet Engine)

Estructura de Directorios

4 … Estructura de la Aplicación

Page 777: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 777/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 7 9

apor tac ionHe lpe r --- clase Java deconexión entre el WAR y el JAR

BusquedaApo r tac ionAct i on - - - claseJava que contiene la lógica de negocio

de este formulario

BusquedaApor tac ionForm --- ClaseJava que valida y contiene todos los

campos del formulario

Estructura de Directorios

4 … Estructura de la Aplicación

Page 778: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 778/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 8 0

SESSI ON BEAN

JAR

ARCHI VO FORM JAVA

JAR

ARCHI VO FORM JSP

WAR

ARCHI VO CONTROLADOR JSP

WAR

4 … Estructura de la Aplicación

Page 779: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 779/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 8 1

STRUTS - ACTI ON

WAR

HELPER

WAR

SESSI ON BEAN

JAR

ARCHI VO JSPWAR

STRUTS - FORM

WAR

ENTI TY BEAN

JAR

4 … Estructura de la Aplicación

Page 780: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 780/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 8 2

2. Modelo 3 Capas

2. Modelo 3 Capas

3. Framework STRUTS

3. Framework STRUTS

4. Estructura - Aplicación

4. Estructura - Aplicación

1. Introducción

1. Introducción

4 Estructura - Aplicación

5. Ejercicios Prácticos

5. Ejercicios Prácticos

Page 781: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 781/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 8 3

El i nst r uc to r l e exp l i ca rá la si gu ien te p rác t i ca :

Cree un paquete que se llame:org .e f ibs .s i s temaDeOrdenes .s t ru ts.

Dentro del paquete anterior, cree un objeto Action y un Form. El

primero tendrá como nombre ClienteAction y el segundo tendrácomo nombre ClienteForm.

Dentro del Cl ien teAct ion , cree una instancia de Serv ic ioCl ien te einvoque cada una de las acciones para manipular la base de datos:insertar, modificar, eliminar y buscar respectivamente. Haga uso demétodos privados para mantener modularidad.

5 … Ejercicios Prácticos

Page 782: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 782/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 8 4

Para hacer uso de la información del form-bean, deberá utilizar lasiguiente línea: Cl i en t e sFo r m f o r m u l ar i o = ( Cl i en t e s Fo r m ) f o r m .

Recuerde ingresar el detalle de los mensajes en el archivoApp l i ca t ionResource .p rope r t ies  tal y como se aprecia en elsiguiente ejemplo: m e n sa j es.i n ser t a r = I n ser ci ón

Sat is fac to r ia !

Utilice objetos de tipo: sesión y request , para poder enviar lainformación de un cliente o de varios clientes a la páginarespectiva. Por ejemplo: "));

sess ion .se tA t t r i bu te ( "C l ien te " ,e lC l ien te ) ;

reques t . se tA t t r i bu te ( " l i s t aC l i en tes " , l i s t a ) ;

Administre los errores de la siguiente manera:e r r o r s . a d d ( " " , n e w

A c t i o n E r r o r ( " m e n s a j e s . i n s e r t a r ) ) ;

!

5 … Ejercicios Prácticos

Page 783: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 783/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 8 5

Dentro del Cl ienteForm , implemente cada uno de los set y getscorrespondientes a los atributos que vaya a tener el JSP. Así porejemplo, en el caso del módulo clientes los campos serían : id,nombre , dirección y teléfono.

Para el manejo automático de los errores pueden agregarse las

siguientes líneas de código en el método validate del formulario:A ct i o n Er r o r s e r r o r s = su p e r .v a l i d at e ( m a p p in g ,r e q u e st ) ;

r e t u r n er r o r s ;

Recuerde hacer el siguiente cambio en el struts-config.xml:!

!

5 … Ejercicios Prácticos

< a ct i o n - m a p p i n g s>< a ct i o n p a t h = " / Cl ie n t es " t y p e = " co m . m y a p p .st r u t s.Cl ie n t es Act i o n "v al id at e = " t r u e " i n pu t = " / t e m p l at e .j s p" n am e= " Cl ien t e sFo r m " >< f or w ar d n am e = " d esp leg ar " p at h = " / d esp li eg u e_ cl ien t e.j sp " / >< f o r w a r d n am e= " d esp l eg ar To d os" p at h = " / d esp l i eg u e_ cl ien t e s.j s p" / >< f or w ar d n am e= " sat i sf acci on " p at h = " / sat i sf acci on .j sp " / >< f or w ar d n am e = " er r or es" p at h = " / er r or es.j sp " / >< / act ion >

Page 784: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 784/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 8 6

Otros cambios en el struts.config.xml serán agregadosautomáticamente tales como:!

5 … Ejercicios Prácticos

<form-bean name="ClientesForm" type="com.myapp.struts.ClientesForm"/>

En el caso de las JSP, se hará uso de tiles como parte de plantillasque le permita darle mayor extensibilidad a la aplicación. Elsiguiente código, deberá ubicarse en el archivo tiles-defs.xml

<definition name="mantenimientoClientes" path="/template.jsp"><put name="header" value="/header.jsp"/> <put name="body"value="/mantenimiento_de_clientes.jsp"/> <put name="foot"value="/foot.jsp"/> </definition>

Page 785: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 785/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 8 7

INTRODUCCION AINTRODUCCION A

J2EEJ2EE

Page 786: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 786/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 8 8

Objetivos

Crear y aplicar todos los términos yconceptos alrededor de la Tecnología J2EE.

Desplegar y construir Enterprise Java Beans

Construir, generar y probar Componentes

Java utilizando un Ambiente de desarrolloIntegrado (IDE).

Page 787: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 787/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 8 9

2. Definición de Enterprise Java Beans

2. Definición de Enterprise Java Beans

3. Tecnología de Enterprise Java Beans

3. Tecnología de Enterprise Java Beans

4. Contenedor de Enterprise Java Beans

4. Contenedor de Enterprise Java Beans

5. Beneficios y Características

5. Beneficios y Características

1. Introducción

1. Introducción

6. Mecanismos de Interacción

6. Mecanismos de Interacción

1 Introducción

Page 788: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 788/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 9 0

8. Tipos de los Enterprise Java Beans

8. Tipos de los Enterprise Java Beans

9. Session Beans

9. Session Beans

10. Entity Beans

10. Entity Beans

11. Message-Driven Beans

11. Message-Driven Beans

12. Formas de Acceso

12. Formas de Acceso

7. Conceptos Básicos J2EE

7. Conceptos Básicos J2EE

1 Introducción

13. Ejercicio Práctico

13. Ejercicio Práctico

Page 789: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 789/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 9 1

J2EE, es utilizado para crear aplicaciones empresariales y comerciales.Ha tenido gran auge y sobre todo brinda bastante seguridad yabstracción en la implementación de los sistemas. Es por este motivo,que durante este curso se le enseñará al estudiante como poder crear ypublicar los principales componentes de la arquitectura.

Es esencial, que el estudiante posea un conocimiento sólido detecnologías tales como: JSP, Servlets, JDBC y si es posible también

Struts.

1.1 Introducción

Page 790: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 790/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 9 2

2. Definición de Enterprise Java Beans

2. Definición de Enterprise Java Beans

3. Tecnología de Enterprise Java Beans

3. Tecnología de Enterprise Java Beans

4. Contenedor de Enterprise Java Beans

4. Contenedor de Enterprise Java Beans

5. Beneficios y Características

5. Beneficios y Características

1. Introducción

1. Introducción

6. Mecanismos de Interacción

6. Mecanismos de Interacción

2 Definición de Enterprise JavaBeans

Page 791: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 791/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 9 3

8. Tipos de los Enterprise Java Beans

8. Tipos de los Enterprise Java Beans

9. Session Beans

9. Session Beans

10. Entity Beans

10. Entity Beans

11. Message-Driven Beans

11. Message-Driven Beans

12. Formas de Acceso

12. Formas de Acceso

7. Conceptos Básicos J2EE

7. Conceptos Básicos J2EE

2 Definición de Enterprise JavaBeans

13. Ejercicio Práctico

13. Ejercicio Práctico

Page 792: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 792/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 9 4

De acuerdo a la definición de Sun Microsystems:

 “Los Enterprise JavaBeans es una arquitectura para el desarrollo y ensamblajede aplicaciones distribuidas de negocio basado en componentes. Lasaplicaciones que se desarrollen utilizando EJB son escalables, transaccionales yposeen seguridad multi-usuario. Estas aplicaciones pueden ser escritas una

vez, y ser ensambladas en cualquier plataforma de servidor que soporte laespecificación de los EJB.” 

Los Enterprise JavaBeans son escritos en el lenguaje de programación Java.

Son componentes del lado del servidor (server-side), los cuales encapsulan

la lógica de Negocio de una aplicación.

2.1 Definición deEnterprise Java Beans

Page 793: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 793/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 9 5

2. Definición de Enterprise Java Beans

2. Definición de Enterprise Java Beans

3. Tecnología de Enterprise Java Beans

3. Tecnología de Enterprise Java Beans

4. Contenedor de Enterprise Java Beans

4. Contenedor de Enterprise Java Beans

5. Beneficios y Características

5. Beneficios y Características

1. Introducción

1. Introducción

6. Mecanismos de Interacción

6. Mecanismos de Interacción

3 Tecnología deEnterprise Java Beans

Page 794: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 794/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 9 6

8. Tipos de los Enterprise Java Beans8. Tipos de los Enterprise Java Beans

9. Session Beans9. Session Beans

10. Entity Beans10. Entity Beans

11. Message-Driven Beans11. Message-Driven Beans

12. Formas de Acceso12. Formas de Acceso

7. Conceptos Básicos J2EE7. Conceptos Básicos J2EE

3 Tecnología deEnterprise Java Beans

13. Ejercicio Práctico13. Ejercicio Práctico

Page 795: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 795/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 9 7

La especificación de Enterprise JavaBeans define una arquitectura para unsistema transaccional de objetos distribuidos basado en componentes.

La especificación contiene un modelo de programación; es decir,convenciones o protocolos y un conjunto de clases e interfaces que crean elAPI EJB.

Este modelo de programación proporciona a los desarrolladores de Beans ya los vendedores de servidores EJB un conjunto de contratos que definen unaplataforma de desarrollo común.

El objetivo de estos contratos es asegurar la portabilidad a través de los

vendedores y el soporte de un rico conjunto de funcionalidades.

3.1 Tecnología de EJBs

Page 796: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 796/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 9 8

La plataforma Java 2 Enterprise Edition se utiliza para distribuir en unmodelo de capas las aplicaciones Enterprise.

La lógica de la aplicación es dividida en componentes acorde a lafuncionalidad.

3.2 Plataforma J2EE

Page 797: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 797/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.7 9 9

3.3 Comunicación de Servidores

Page 798: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 798/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 0 0

3.4 Componentes de Negocio

Page 799: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 799/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 0 1

3.5 J2EE API Plataforma

Page 800: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 800/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 0 2

 Acceso BD Lógica de Negocio

Servidor HTTPhttp://www.efibs.com

Servidor de

Aplicaciones

ejbejb

ejb

Firewall

Internet

 JDBC(Pool)

htmhtm

htm

 jsp jsp

 jsp

 JSP COMPILER/ SERVLETG ENGINE

servletsservlets

Firewall

Servidor de Web

servletsservlets

Entity BeansSession Beans

 Java Beans

Servidor deBase de Datos

servletsservlets

 Presentación / Gestión de EventosUtilización de framework para la

 gestión de eventos, errores yexcepciones. Permite desarrollar aplicaciones muy estables,

 facilitando la gestión del interfaz gráfico.

 Lógica de Negocio Mediante la utilización deEJBs (Session y EntityBeans) o Java Beans seimplementa la lógica denegocio, perfectamenteaislada y controladamediante el framework.

 Acceso DatosEn algunos casosmediante

 procedimientosalmacenados en la BDse encapsula lógica denegocio.

 Presentación / Gestión de Eventos

 Presentación Browser 

3.6 J2EE - Escenario Simple

Page 801: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 801/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 0 3

2. Definición de Enterprise Java Beans2. Definición de Enterprise Java Beans

3. Tecnología de Enterprise Java Beans3. Tecnología de Enterprise Java Beans

4. Contenedor de Enterprise Java Beans4. Contenedor de Enterprise Java Beans

5. Beneficios y Características5. Beneficios y Características

1. Introducción1. Introducción

6. Mecanismos de Interacción6. Mecanismos de Interacción

4 Contenedor deEnterprise Java Beans

Page 802: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 802/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 0 4

8. Tipos de los Enterprise Java Beans8. Tipos de los Enterprise Java Beans

9. Session Beans9. Session Beans

10. Entity Beans10. Entity Beans

11. Message-Driven Beans11. Message-Driven Beans

12. Formas de Acceso12. Formas de Acceso

7. Conceptos Básicos J2EE7. Conceptos Básicos J2EE

4 Contenedor deEnterprise Java Beans

13. Ejercicio Práctico13. Ejercicio Práctico

Page 803: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 803/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 0 5

Los Beans Enterprise son componentes de software que se ejecutan en unentorno especial llamado un contenedor EJB.

El contenedor contiene y maneja un Bean enterprise de igual forma que elServidor Web Java contiene un servlet o un servidor Web contiene un appletJava.

Un Bean Enterprise no puede funcionar fuera de un contenedor EJB.

El contenedor EJB controla cada aspecto del bean enterprise en tiempo deejecución incluyendo accesos remotos al bean, seguridad, persistencia,transacciones, concurrencia, y accesos a un almacén de recursos.

4.1 Contenedor de EJBs

Page 804: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 804/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 0 6

El contenedor aísla al bean enterprise deaccesos directos por parte de aplicacionescliente.

Cuando una aplicación cliente invoca unmétodo remoto de un bean enterprise, el

contenedor primero intercepta la llamadapara asegurar que la persistencia, lastransacciones, y la seguridad son aplicadasapropiadamente a cada operación que elcliente realiza en el Bean.

El contenedor maneja estos aspectos deforma automática, por eso el desarrolladorno tiene que escribir este tipo de lógicadentro del propio código del bean.

4.1 … Contenedor de EJBs

Page 805: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 805/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 0 7

2. Definición de Enterprise Java Beans2. Definición de Enterprise Java Beans

3. Tecnología de Enterprise Java Beans3. Tecnología de Enterprise Java Beans

4. Contenedor de Enterprise Java Beans4. Contenedor de Enterprise Java Beans

5. Beneficios y Características5. Beneficios y Características

1. Introducción1. Introducción

6. Mecanismos de Interacción6. Mecanismos de Interacción

5 Beneficios y Características

Page 806: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 806/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 0 8

8. Tipos de los Enterprise Java Beans8. Tipos de los Enterprise Java Beans

9. Session Beans9. Session Beans

10. Entity Beans10. Entity Beans

11. Message-Driven Beans11. Message-Driven Beans

12. Formas de Acceso12. Formas de Acceso

7. Conceptos Básicos J2EE7. Conceptos Básicos J2EE

5 Beneficios y Características

13. Ejercicio Práctico13. Ejercicio Práctico

Page 807: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 807/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 0 9

Simplifican los desarrollos largos y las aplicaciones distribuidas.

El contenedor (Container) de EJB proporciona servicios a nivel de sistema. Se concentran en la solución de problemas de negocio.

El EJB-Container es responsable de la administración de las transaccionesy de la autorización de la seguridad, dando como beneficio, que el

desarrollador de Bean no se preocupe por estos temas. División de grupos de trabajo.

La capa de presentación puede ejecutarse en dispositivos pequeños.

Los EJB’s son componentes portables.

Se pueden construir nuevos componentes en base a los existentes.

5.1 Beneficios y Características

Page 808: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 808/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 1 0

Entre las características más importantes, se encuentran las siguientes: Si se requiere la distribución de componentes entre múltiples maquinas.

Cuando las aplicaciones deben ser escalables. (Número creciente deusuarios).

Cuando se requiere integridad de datos ya que soportan transacciones.

Cuando se desea manejar el acceso concurrente de objetoscompartidos.

Cuando la aplicación tiene una gran cantidad de desarrolladores ya que

con pocas líneas de código, los clientes remotamente pueden localizar loscomponentes EJB desarrollados por otras personas.

5.1 ¿Cuándo utilizar EJBs?

Page 809: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 809/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 1 1

La po r tab i l i dad es el principal valor que EJB pone encima de la mesa. Laportabilidad asegura que un bean desarrollado para un contenedor puede

migrarse a otro si ese otro ofrece mejor rendimiento, características, oahorros. Portabilidad también significa que la destreza del desarrollador debeans puede influenciarse a través de varios contenedores EJB,proporcionando mejores oportunidades para las organizaciones y losdesarrolladores.

La s imp l i c idad del modelo de programación EJB hace que este sea muyvalioso. Como el contenedor tiene cuidado de manejar las complejas tareascomo la seguridad, las transacciones, la persistencia, la concurrencia y elcontrol de recursos, el desarrollador de beans es libre para enfocar suatención en las reglas del negocio y en un modelo de programación muy

sencillo. Esto quiere decir que los beans pueden desarrollarse rápidamente sinnecesidad de profundos conocimientos en objetos distribuidos, transacciones yotros sistemas enterprise.

5.2 Otras Características

Page 810: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 810/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 1 2

2. Definición de Enterprise Java Beans2. Definición de Enterprise Java Beans

3. Tecnología de Enterprise Java Beans3. Tecnología de Enterprise Java Beans

4. Contenedor de Enterprise Java Beans4. Contenedor de Enterprise Java Beans

5. Beneficios y Características5. Beneficios y Características

1. Introducción1. Introducción

6. Mecanismos de Interacción6. Mecanismos de Interacción

6 Mecanismos de Interacción

Page 811: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 811/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 1 3

8. Tipos de los Enterprise Java Beans8. Tipos de los Enterprise Java Beans

9. Session Beans9. Session Beans

10. Entity Beans10. Entity Beans

11. Message-Driven Beans11. Message-Driven Beans

12. Formas de Acceso12. Formas de Acceso

7. Conceptos Básicos J2EE7. Conceptos Básicos J2EE

6 Mecanismos de Interacción

13. Ejercicio Práctico13. Ejercicio Práctico

Page 812: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 812/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 1 4

Un Enterprise Bean depende del contenedor para todo lo que necesite.

Si un Enterprise Bean necesita acceder a una conexión JDBC o a otroEnterprise Bean, lo hace a través del contenedor.

Si un Enterprise Bean necesita acceder a la identidad del que lo invoca,

obtiene una referencia a sí mismo, o accede a las propiedades a través de sucontenedor.

El Enterprise Bean interactúa con su contenedor a través de uno de lossiguientes tres mecanismos:

6.1 Mecanismos de Interacción

Page 813: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 813/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 1 5

Todo bean implementa un subtipo del interface EnterpriseBean que define

muchos métodos, llamados métodos de retrollamada. Cada uno de estos métodos alerta al bean sobre un evento diferente en suciclo de vida y el contenedor llamará a estos métodos para notificar al beancuando lo va a activar, persistir su estado a la base de datos, finalizar latransacción, eliminar el bean de la memoria, etc.

Los métodos de retrollamada le dan al bean la oportunidad de hacer algúntrabajo inmediatamente antes o después de algún evento.

6.1.1 Métodos de Retrollamada

Page 814: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 814/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 1 6

Todo bean obtiene un objeto EJBContext, que es una referencia directa a sucontenedor.

El interface EJBContext proporciona métodos para interactuar con elcontenedor para que el bean pueda solicitar información sobre su entornocomo la identidad de sus clientes, el estado de una transacción, o paraobtener referencias remotas a sí mismo.

6.1.2 EJBContext

Page 815: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 815/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 1 7

El Inteface Java de Nombres y Directorios (JNDI) es una extensión estándarde la plataforma Java para acceder a sistemas de nombrado como LDAP,NetWare, sistemas de ficheros, etc.

Todo bean t i ene au t om á t i cam en te acceso a un s i st em a de nom brado

esp eci al l l am ad o En v ir o n m e nt N am i ng Co n t ex t ( EN C) . El EN C est ácon t ro lado po r e l con t enedo r y l os bean acceden a é l usando JNDI .

El JNDI ENC permite al bean acceder a recursos como conexiones JDBC,otros enterprise beans, y a propiedades específicas para ese bean.

6.1.3 Java Naming and

Directory Interface (JNDI)

Page 816: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 816/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 1 8

2. Definición de Enterprise Java Beans2. Definición de Enterprise Java Beans

3. Tecnología de Enterprise Java Beans3. Tecnología de Enterprise Java Beans

4. Contenedor de Enterprise Java Beans4. Contenedor de Enterprise Java Beans

5. Beneficios y Características5. Beneficios y Características

1. Introducción1. Introducción

6. Mecanismos de Interacción6. Mecanismos de Interacción

7. Conceptos Básicos J2EE

Page 817: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 817/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 1 9

8. Tipos de los Enterprise Java Beans8. Tipos de los Enterprise Java Beans

9. Session Beans9. Session Beans

10. Entity Beans10. Entity Beans

11. Message-Driven Beans11. Message-Driven Beans

12. Formas de Acceso12. Formas de Acceso

7. Conceptos Básicos J2EE7. Conceptos Básicos J2EE

7. Conceptos Básicos J2EE

13. Ejercicio Práctico13. Ejercicio Práctico

Page 818: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 818/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 2 0

Una aplicación de Java 2 Edición Empresarial (Java 2 Enterprise Edition porsus siglas en inglés, J2EE) consiste en una arquitectura que contiene módulos

de: Conexión a base de datos y lógica de negocio.

Módulos de páginas WEB a ser desplegados en un navegador de Internet.

Este tipo de aplicaciones constituye un estándar desarrollado por la empresa

Sun Microsystems, Inc.

Una aplicación de J2EE, está definida básicamente por tres archivos:

Enterprise Archive (EAR)

Java Archive (JAR) Web Archive (WAR)

los cuales se detallan a continuación:

7.1 Conceptos Básicos J2EE

Page 819: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 819/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 2 1

El archivo de Web (Web A rch i ve , por sus siglas en Inglés) contiene lacapa de presentación o páginas web que se desplegarán en el browser del

cliente.

Todos los elementos relacionados con las páginas web deben ser incluidosen este archivo, como por ejemplo, imágenes, javascript, java server pages(JSP), Hypertext Markup Language (HTML), hoja de estilos (.CSS), etc.

Todos los archivos que se incluyan en el .WAR, debe ser organizarlos endiferentes carpetas como “images”, “js” para javascript, etc. Por medio deesta estructura se facilitará el acceso una vez que la aplicación web estéinstalada.

El archivo WAR debe contener un archivo principal (index.jsp o index.html)

que servirá de inicio a la aplicación. En la raíz de la estructura directorios quecontendrá este archivo, se distingue el archivo principal index.jsp oindex.html.

7.1.1 Estructura Básica del War

Page 820: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 820/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 2 2

 / Nom br eW AR/ : Carpeta que contendrá toda la definición dela capa de presentación de la Aplicación WEB. Nombre se refiere

al nombre de la aplicación. En la raíz de esta carpeta puedenincluirse ciertos archivos, como por ejemplo un index.html. Serecomienda que los demás archivos de despliegue al cliente (.jsp,.html) sean incluidos en subcarpetas que hagan referencia alcontenido del archivo, como por ejemplo,

 “usuarios”,”recibos”,”notas de crédito y débito”, etc. / Nom b r eW AR/ W EB- I NF/  : Carpeta estándar paraaplicaciones web. Dentro de ella se incluirán archivos deconfiguración (.xml) así como archivos java para validaciones oredireccionar archivos. Se recomienda colocar aquí cualquierarchivo de dominio no público, esto quiere decir que esta carpetano estará visible en el navegador o browser de internet.

7.1.2 Estructura de Directorios

War

Page 821: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 821/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 2 3

 / Nom br eW AR/ W EB- I NF/ w eb .x m l: Este archivo contendrála definición del archivo principal, definición de paquetes o

servlets a utilizar, variables de ambiente, página de error,referencias a objetos reutilizables (EJB), etc. Dependiendo delservidor de aplicaciones que se esté manejando, es posible quesea necesario incluir otro archivo como complemento delweb.xml. Por ejemplo, en el Oracle 9IAS se incluye un orion-web.xml, cuyo contenido es una variación del web.xml, y esnecesario para ser interpretado por dicho servidor.

7.1.2 … Estructura de

Directorios War

Page 822: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 822/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 2 4

 / Nom br eW AR/ W EB- I NF/ classes/ : Carpeta donde se ubicarán archivos.java para determinadas tareas.

 / Nom br eW AR/ W EB- I NF/ l ib / : Carpeta donde se encuentran distintaslibrerías para el funcionamiento de la aplicación.

 / Nom br eW AR/ W EB- I NF/ t ld s/ : Carpeta donde se guardan los descriptoresde las librerias de tags.

 / Nom b r eW AR/ j s/ : En esta carpeta se incluyen todos los archivos de

Javascript. / Nom br eW AR/ st y les/ : En esta carpeta se incluyen todos los archivos deHojas de Estilos.

 / Nom b r eW AR/ im ages/ : En esta carpeta se incluyen todas las imágenes dela aplicación.

7.1.2 … Estructura de

Directorios War

Page 823: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 823/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 2 5

7.1.2 … Estructura de

Directorios War

Page 824: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 824/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 2 6

El archivo de Java (Java Arch ive , por sus siglas en inglés) se refiere a la

 jerarquía de archivos que se encargará de soportar la conexión a la base dedatos así como las clases conteniendo la lógica del negocio.

Para una mejor agrupación de los archivos dentro del .JAR, las clases deacceso a la base de datos, deben ser agrupadas en una carpeta con un nombrerepresentativo a la aplicación. Además, existirá otra carpeta denominada META-

INF, en mayúsculas estrictamente. Aquí se ubicará el archivo ejb-jar.xml, el cual se refiere al estándar deconfiguración de los objetos o componentes.

7.1.3 Estructura Básica JAR

Page 825: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 825/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 2 7

Algunos de los elementos a definir dentro de este archivo son los siguientes:

Descripción del .JAR

Declaración de session beans.

Declaración de entity beans.

Seguridad en los accesos a beans y

Transacciones de base de datos por bean y por método.

7.1.3 … Estructura Básica JAR

Page 826: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 826/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 2 8

NombreJAR/  : Carpeta principal del Archivo JAR. Dentro de ella se localizandescriptores de configuración de objetos de acceso a base de datos (Entity

Beans y Session Beans).

 / META- I NF/  : Contiene el descriptor de los EJBs llamado ejb-jar.xml.Dependiendo del servidor de aplicaciones que se esté utilizando, es posible que

más archivos .xml sean requeridos, por ejemplo orion-ejb-jar.xml en el caso delOracle 9IAS.

 / META- I NF/ ej b - j ar .x m l: Dentro de este archivo se definen cada objeto de

base de datos EJB. Por cada uno de ellos debe especificarse su nombre, la rutade acceso a la clases que lo componen y las relaciones que existen entre ellos.También se definen aquí roles de seguridad en cuanto al acceso, así como losniveles de transacción por Bean.

7.1.4 … Estructura de

Directorios JAR

Page 827: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 827/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 2 9

 / Nom b r eJAR/ Nom b r eAp l icacion / : Dentro de esta carpeta se encuentran ladefinición de las clases de los EJB. NombreAplicacion hace referencia a un

nombre relacionado con la aplicación y constituye el nombre del paquete base aespecificar en cada clase java. Por cada EJB deberá definirse una carpetaconteniendo, mínimo, las tres clases básicas de las que se compone un Bean.

 / META- I NF/ Nom br eAp l icacion / Nom br eBean : Se definirán tanto Beanscomo tablas o lógica de negocio se requieran. Como se mencionó antes, cada

Enterprise Java Bean contendrá al menos 3 clases java.

7.1.4 … Estructura de

Directorios JAR

Page 828: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 828/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 3 0

7.1.5 … Ejemplo de Directorios

Page 829: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 829/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 3 1

Dentro del archivo empresarial (En t er p r i se Ar ch iv e, por sus siglas eninglés) se incluyen varias estructuras de directorio y archivos XML paraconfiguración. Los estándares de J2EE utilizan ciertos acrónicos para losnombres de los archivos (Ej. WAR, EAR, JAR).

La estructura a seguir se describe a continuación:

7.1.6 … Estructura Básica EAR

Page 830: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 830/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 3 2

nombreAPP.ear Archivo de aplicación que podrá ser ejecutado en el servidorde aplicaciones Oracle 9IAS. Dependiendo del servidor a utilizar, así serán lasmodificaciones que habrá que realizar en el .EAR, siendo estas mínimas en laprogramación y la lógica. Este archivo contendrá la siguiente estructura dearchivos:

Ap l i ca t i on . xm l

Aquí se incluye la configuración de la aplicación y serviráde guía o referencia al servidor de aplicaciones en el momento deinstalar la aplicación. Algunos de los elementos básicos másimportantes que deben ser configurados son:

Nombre de despliegue de la aplicación.Módulos que contiene el .EAR y sus rutas.Carpeta raíz de la aplicación, etc.

Este archivo estará localizado dentro de una carpeta llamadaMETA-INF, estrictamente en mayúscula.

7.1.6 … Estructura Básica EAR

Page 831: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 831/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 3 3

NombreWAR.war

Contiene los módulos de las páginas WEB. Dichas páginas sedesplegarán en el cliente y combinan llamadas a los objetos delógica de negocio con elementos de HTML. La palabra Nombredebe ser reemplazada por el nombre genérico asociado a laaplicación. Nota: debe tenerse en cuenta que el nombre asignadoa la aplicación a utilizar debe ser igual para todos los archivos dela aplicación. NombreJAR. ja r

Archivo que contiene los módulos de lógica de negocio, objetosreutilizables y conexión a base de datos. La palabra Nombre debeser reemplazada por el nombre genérico asociado a la aplicación.

Nota: debe tenerse en cuenta que el nombre asignado a laaplicación a utilizar debe ser igual para todos los archivos de laaplicación.

7.1.7 … Estructura de

Directorios EAR

Page 832: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 832/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 3 4

Los archivos de definición de tipo de Documento (DTD, Document TypeDefinition) son aquellos que definen los “tags” o elementos utilizados en un

archivo XML. Aquí se especifica cuantos subelementos posee un elemento ycuales son requeridos y cuales opcionales.

Es necesario utilizar un DTD para realizar las validaciones sintácticas de unarchivo XML. De esta forma, el parser que se utilice podrá indicar errorescometidos en la definición de un tag. Algunos ejemplos de errores a detectar

son: Un tag mal escrito. Utilización de una propiedad en un lugar que no corresponde. Omisión de un elemento requerido.

7.1.8 Definición de los DTD’s

Page 833: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 833/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 3 5

Refer encia Local :

La referencia local se refiere a tener una copia en un disco duro de cada uno delos Archivos DTD utilizado por un xml. De esta forma, al invocarse desde unaaplicación web, las validaciones se realizarán localmente. La ventaja quepresenta, es un control total sobre la disponibilidad del DTD.

La copia local debe encontrarse en una carpeta en un servidor web y debe poderleerse desde el navegador o browser.

Para referenciar un DTD debe describirse su ubicación al inicio del archivo XMLque lo utiliza:

< ?x m l v er si on = " 1 .0 " en co di ng = " UTF- 8 " ?>< !DOCTYPE e jb - j a r PUBLI C

" - / / Su n Mi cr o sy st e m s, I n c./ / DTD En t er p r i se Jav aBean s 2 .0 / / EN "" h t t p :/ / l oca lh ost : 90 0 0/ d t ds/ e j b - j ar _ 2 _0 .d t d" >

7.1.9 Referencias Locales DTD’s

7 1 10 Ti d R f i

Page 834: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 834/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 3 6

Referen c ia W eb

En el caso de los EJB, Sun Microsystems dispone públicamente de dtd quecontiene la especificación de los elementos, que debe contener el archivo ejb- jar.xml. Únicamente debe escribirse la dirección web donde se encuentra elarchivo:

< ?x m l v er si on = " 1 .0 " en co di ng = " UTF- 8 " ?>

< !DOCTYPE e jb - j a r PUBLI C" - / / Su n Mi cr o sy st e m s, I n c./ / DTD En t er p r i se Jav aBean s 2 .0 / / EN "" h t t p : / / w w w .j av a.su n .com / d t d/ ej b - j ar _ 2_ 0.d t d" >

7.1.10 Tipos de Referencia

Web a DTD’s

Page 835: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 835/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 3 7

<?xml version="1.0"?>

< ! DOCTY PE w e b - ap p P UB LI C ' - / / Su n M i cr o s y st e m s , I n c . / / D TDW e b A pp l ic at i on 2 .3 / / EN '

' h t t p :/ / j a v a.s u n.co m / d t d / w e b -a pp _ 2 _ 3 .d t d '>

<web-app>

<serv le t >

<servlet-name>Bienvenida</servlet-name>

<servlet-class>org.efibs.accion.Bienvenida</servlet-class>

</servlet>

<se rv l e t -mapp i ng >

<servlet-name>Bienvenida</servlet-name>

<url-pattern>/Bienvenida</url-pattern>

</servlet-mapping>

<sess ion-conf ig>

<session-timeout>30</session-timeout>

</session-config>

<w e l com e- f i l e - l is t>

<welcome-file>index.jsp</welcome-file>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

</welcome-file-list>

< e j b -r e f>

< e j b -r e f- n a m e > e j b / U su a r io < / e j b -r e f- n am e >

< e j b -r e f- t y p e> En t i t y < / e j b -r e f- t y p e>

< h o m e > o r g .s ic a. co m u n . u su a r i o .U su a r i oH o m e < / h o m e >

< r e m o t e > o r g .s ic a. co m u n . u su a r i o .U su a r i o < / r e m o t e >

< / e jb - r ef >

< e j b -r e f>

< e j b - r e f - n am e > e j b / L is t a sD ed u c ci o n es < / e j b - r e f - n am e >

< e j b - r e f - t y p e> Se ss i on < / e j b - r e f - t y p e>

< hom e> org . s ica .cxc .dedp l a .l i s t as. Li s t asHome< / hom e>

< rem o t e> o rg . s ica .cxc .dedp l a .l i st as .L i st as< / rem o t e>

< / e jb - r ef >

</web-app>

7.1.11 Ejemplo de un web.xml

7 1 12 Ej l d

Page 836: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 836/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 3 8

< ?x m l v e r si on = ' 1 .0 ' en co d in g = ' UTF- 8 ' ?>

< ! D OCT YPE ej b - j a r PU BL I C " - / / Su n M i c r o sy s t e m s , I n c . / / D TD En t e r p r i se

Ja v aB ea n s 2 .0 / / EN " " h t t p : / / j a v a.s un .co m / d t d / e j b -j a r _ 2 _ 0.d t d " >

< e j b - j a r >

<display-name>sicaJAR</display-name>

< en t e rp r i se -beans>

< e n t it y >

<display-name>UsuarioEJB</display-name>

<ejb-name>ejb/Usuario</ejb-name><home>org.sica.comun.usuario.UsuarioHome</home>

<remote>org.sica.comun.usuario.Usuario</remote>

<ejb-class>org.sica.comun.usuario.UsuarioEJB</ejb-class>

<persistence-type>Bean</persistence-type>

<prim-key-class>org.sica.comun.usuario.LlaveUsuario</prim-key-class>

<reentrant>False</reentrant>

</entity>

< sess i on>

<display-

name>ListasDeduccionesEJB</display-name><ejb-name>ejb/ListasDeducciones</ejb-

name>

<home>org.sica.cxc.dedpla.listas.ListasHome</home>

<remote>org.sica.cxc.dedpla.listas.Listas</remote>

<ejb-class>org.sica.cxc.dedpla.listas.ListasEJB</ejb-class>

<session-type>Stateless</session-type>

</session>

< / e n t e r p r i se - b ea n s>

< / ej b -j ar >

7.1.12 Ejemplo de un

ejb.jar.xml

8 Ti d l E t i J

Page 837: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 837/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 3 9

2. Definición de Enterprise Java Beans2. Definición de Enterprise Java Beans

3. Tecnología de Enterprise Java Beans3. Tecnología de Enterprise Java Beans

4. Contenedor de Enterprise Java Beans4. Contenedor de Enterprise Java Beans

5. Beneficios y Características5. Beneficios y Características

1. Introducción1. Introducción

6. Mecanismos de Interacción6. Mecanismos de Interacción

8. Tipos de los Enterprise Java

Beans

8 Tipo de lo Ente p i e J

Page 838: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 838/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 4 0

8. Tipos de los Enterprise Java Beans8. Tipos de los Enterprise Java Beans

9. Session Beans9. Session Beans

10. Entity Beans10. Entity Beans

11. Message-Driven Beans11. Message-Driven Beans

12. Formas de Acceso12. Formas de Acceso

7. Conceptos Básicos J2EE7. Conceptos Básicos J2EE

8. Tipos de los Enterprise Java

Beans

13. Ejercicio Práctico13. Ejercicio Práctico

8 1 Tipos de los Enterprise Java

Page 839: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 839/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 4 1

Existen 3 tipos de Enterprise Java Beans (EJB):

Actua como listener para el API de JavaMessage Service, procesando mensajes

asincrónicamente

Message-Driven

Representa un objeto de la entidad denegocio que exista en almacenajepersistente.

Entity Bean

Realiza una tarea para un cliente,implementa Servicios Web.

Session Bean

PropósitoTipos de Enterprise JavaBeans

8.1 Tipos de los Enterprise Java

Beans

Page 840: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 840/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 4 2

2. Definición de Enterprise Java Beans2. Definición de Enterprise Java Beans

3. Tecnología de Enterprise Java Beans3. Tecnología de Enterprise Java Beans

4. Contenedor de Enterprise Java Beans4. Contenedor de Enterprise Java Beans

5. Beneficios y Características5. Beneficios y Características

1. Introducción1. Introducción

6. Mecanismos de Interacción6. Mecanismos de Interacción

9. Sesion Beans

Page 841: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 841/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 4 3

8. Tipos de los Enterprise Java Beans8. Tipos de los Enterprise Java Beans

9. Session Beans9. Session Beans

10. Entity Beans10. Entity Beans

11. Message-Driven Beans11. Message-Driven Beans

12. Formas de Acceso12. Formas de Acceso

7. Conceptos Básicos J2EE7. Conceptos Básicos J2EE

9. Sesion Beans

13. Ejercicio Práctico13. Ejercicio Práctico

Page 842: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 842/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 4 4

Los beans de sesión representan un proceso o tarea, que se realizan en

beneficio de la aplicación cliente Los session beans se dividen en dos categorías:

Cuando se completa una llamada a algún método del bean, éste queda librepara satisfacer las necesidades de otro cliente.

Mantiene un estado conocido como estadoconversacional, que significa que el bean puedemantener sus variables en cache con respecto al

cliente que está atendiendo y serán modificadaspor los métodos en invocaciones posteriores.

StateFull (Con Estado)

Colección de funciones o métodos encargados

de realizar operaciones en la base de datos,comúnmente de lectura.

Stateless (Sin Estado)

9.1 Session Beans

Page 843: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 843/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 4 5

Para crear un Session Bean se deben especificar los siguientes 3 archivos:Clase Nombre del Archivo Descripción

Interfaz Remota Nombre.java En esta interfaz se definen los encabezados de losmétodos del negocio que se presentan como públicos parapoder ser utilizado desde una clase java o desde un .JSP.Deben arrojar la excepción remoteExceptionobligatoriamente y extender la clase javax.ejb.EJBObject.

Clase Home Remota NombreHome.java Esta interfaz define el encabezado del método create queserá definido en la clase del bean. Debe arrojar la excepciónremoteException obligatoriamente y extender la clase

 javax.ejb.EJBHome.

Clase del Bean NombreEJB.java Los métodos del ciclo de vida del bean de tipo Sessión,son definidos en esta clase. Los encabezados definidosvarían un poco con respecto a las interfaces anteriores.Por ejemplo, en esta clase el método create se defineejbCreate y en la interfaz home se define como create. Estainterfaz debe implementar la clase javax.ejb.SessionBean.

9.1 … Session Beans

9 2 Session Beans – Ciclos de

Page 844: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 844/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 4 6

Cuando el Session Bean se invoca, se revisa el pool de conexiones y sedetermina si existe algún bean creado que esté libre. De no ser así, se creauna nueva instancia y se invoca al método create() que inicializa la interfaz

remota. Posteriormente, cada uno de los métodos de negocio definidos,podrán ser invocados mientras el Bean se mantenga en su ciclo de vida.

Este tipo de Session Bean es de tipo stateless, lo que significa que noguarda ningún estado y las acciones que realiza en memoria son inmediatas yfinales.

Stateless Session BeanStateful Session Bean

9.2 Session Beans – Ciclos de

Vida

9 3 ¿Cuando utilizar un

Page 845: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 845/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 4 7

Cuando solo un cliente tiene acceso a la instancia del Bean en cualquier

tiempo.

Cuando el estado del Bean no es persistente, existiendo por periodoscortos.

Cuando se pone un servicio web en ejecución.

9.3 ¿Cuando utilizar un

Session Beans?

Page 846: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 846/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 4 8

Cuando el estado del bean representa una interacción entre el bean y uncliente en especifico.

Cuando el Bean necesita llevar a cabo la información sobre el cliente a través deinvocaciones del método.

Cuando el Bean interviene entre el cliente y los otros componentes,presentando una visión simplificada del cliente.

Cuando Bean maneja el flujo de trabajo de varios Beans de la empresa.

9.4 Cuando utilizar un Stateful

Page 847: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 847/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 4 9

Cuando el estado del bean no tiene ningún dato para un cliente enespecifico.

Cuando en una invocación del método, el Bean realiza una tarea genéricapara todos los clientes. Por ejemplo: Enviar un correo que confirm a una orden de compra.

Cuando se requiere solicitud de información de la base de datos de registrosen forma de solo lectura (SELECT).

9.5 Cuando utilizar un Stateless

9 6 Ejemplo de Session-Bean

Page 848: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 848/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 5 0

package org.efibs.session.mensaje;

import java.sql.*;

import java.util.*;

import javax.ejb.*;

import javax.naming.*;

import java.rmi.*;

public interface Mensajes extends javax.ejb.EJBObject {

public Collection getMensajeBienvenida() throws RemoteException, NamingException,SQLException, FinderException;

}

9.6 Ejemplo de Session Bean

Interfaz Remota

9.6 Ejemplo de Session-Bean

Page 849: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 849/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 5 1

package org.efibs.session.mensaje;

import javax.ejb.EJBHome;

import javax.ejb.CreateException;

import java.rmi.RemoteException;

public interface MensajesHome extends EJBHome {

public Mensaje create () throws RemoteException, CreateException;

}

9.6 … Ejemplo de Session Bean

Interfaz Remota

9.7 Ejemplo de Session-Bean

Page 850: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 850/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 5 2

package org.efibs.session.mensaje;

import java.rmi.RemoteException;

import javax.ejb.SessionBean;

import javax.ejb.SessionContext;

public class MensajeEJB implements SessionBean {

public MensajeEJB() { }

public String getMensajeBienvenida() {

return "EFIBS S.A. - Mi Primer SessionBean";

}

public void ejbCreate() { }

public void ejbRemove() { }

public void ejbActivate() { }

public void ejbPassivate() { }

public void setSessionContext(SessionContext sc) { }

}

9.7 Ejemplo de Session Bean

Clase Bean.

9.8 Ejemplo de Session-Bean

Page 851: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 851/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 5 3

<session>

<display-name>ejb/Mensajes</display-name><ejb-name>ejb/Mensajes</ejb-name>

<home>org.efibs.session.mensaje.MensajesHome</home>

<remote>org.efibs.session.mensaje.Mensajes</remote>

<ejb-class>org.efibs.session.mensaje.MensajesEJB</ejb-class>

<session-type>Stateless</session-type>

<transaction-type>Bean</transaction-type>

</session>

9.8 Ejemplo de Session Bean

ejb.jar.xml

Page 852: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 852/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 5 4

El objetivo de esta práctica es el de crear un Session Bean que retorne unmensaje de Bienvenida. Guiándose en el ejemplo anterior.

Seguidamente, realizar un Session Bean que retorne todos los usuarios quese encuentran registrados en la base de datos. Recuerde utilizar todos losmétodos correspondientes a la base de datos utilizados en los cursosanteriores.

Los resultados deberán de visualizarce por pantalla.

El i n st r u ct o r l e g u i ar é e n t o d o el p r o ce so d e cr e aci ó n d e e st o s

componen tes .

9.9 Ejercicio Práctico

Page 853: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 853/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 5 5

2. Definición de Enterprise Java Beans2. Definición de Enterprise Java Beans

3. Tecnología de Enterprise Java Beans3. Tecnología de Enterprise Java Beans

4. Contenedor de Enterprise Java Beans4. Contenedor de Enterprise Java Beans

5. Beneficios y Características5. Beneficios y Características

1. Introducción1. Introducción

6. Mecanismos de Interacción6. Mecanismos de Interacción

10. Entity Beans

Page 854: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 854/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 5 6

8. Tipos de los Enterprise Java Beans8. Tipos de los Enterprise Java Beans

9. Session Beans9. Session Beans

10. Entity Beans10. Entity Beans

11. Message-Driven Beans11. Message-Driven Beans

12. Formas de Acceso12. Formas de Acceso

7. Conceptos Básicos J2EE7. Conceptos Básicos J2EE

10. Entity Beans

13. Ejercicio Práctico13. Ejercicio Práctico

Page 855: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 855/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 5 7

El Enterprise Java Bean de tipo Entity se caracteriza por ser una representación robusta

y persistente de la información contenida en una base de datos. Cada Entity Bean será asociado a una tabla específica y definirá las cuatro instruccionesbásicas del Lenguaje de Consulta Simple para bases de datos (SQL, por sus referenciasen inglés): SELECT, INSERT, UPDATE, DELETE.

De todas las anteriores, es obligatorio definir el SELECT ya que cuando el Bean es

inicializado, debe “poblarse” con la información de un (os) registro (s) de la base dedatos que el desarrollador le especifique.

Para crear un Entity bean se deben especificar los archivos a seguir:

10.1 Entity Beans

Page 856: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 856/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 5 8

Clase Nombre de Archivo Descripción

Interfaz Remota Nombre.java En esta interfaz se definen los encabezados de los métodos delnegocio. Deben arrojar la excepción remoteException obligatoriamente y extender la clase  javax.ejb.EJBObject.

Clase Home Remota NombreHome.java Esta interfaz define encabezados de los métodos del ciclo de vida deun Bean: para crearlo, modificarlo, eliminarlo, etc. Los métodosdeben extender la clase javax.ejbEJBHome.

Clase del Bean NombreEJB.java Debe definir los encabezados y su contenido. Esta interfaz debeimplementar la clase  javax.ejb.EntityBean.

Llave Primaria (opcional) LlaveClase.java Clase que incluye los campos de una llave compuesta de una tabla aser representada en un bean. En el archivo de configuración de XMLejb-jar.xml, se utilizará el elemento prim-key-class para definir laclase de Llave Primaria. El nombre queda sujeto a criterio deldesarrollador. Debe implementar java.io.Serializable.

10.2 Archivos de Especificación

10.3 Ciclo de de vida de un

Page 857: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 857/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 5 9

Cuando el entity bean comienza, existen varias

instancias del mismo en el pool de beans (esto varíade vendedor a vendedor). Cada una de estasinstancias están listas para ser utilizadas.

Un Entity Bean pasa a estar listo cuando elcontainer asigna una instancia del Bean a un objeto.

En este momento es cuando se puede invocar amétodos como el select, el load , el store u otrosmétodos de negocio definidos por el desarrollador(ejbHome<METHOD>).

Entity

10.4 Diferencia entre los

Page 858: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 858/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 6 0

Los Entity Bean son Persistentes.

Permiten el Acceso Compartido.

Trabajan por medio de Llaves Primarias.

Pueden participar en relacion con otros Entity Beans.

Entity y los Session Beans

Page 859: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 859/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 6 1

Bean-Managed Persistence (BMP)

Con el código con el que se escribe el programador debe preocuparse por lasrelaciones.

Existe código SQL.

Container-Managed Persistence (CMP).

El contenedor asume y ejecuta las relaciones.

No Existe código SQL. (EJBQL)

10.5 Tipos de Entity

10.6 Cuando utilizar los Entity

Page 860: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 860/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 6 2

Cuando el Bean representa una entidad de negocio y no un procedimiento.

Por ejemplo: UsuarioBean sería la entidad, pero ValidarUsuarioBean sería unBean de Session.

Cuando el estado del Bean debe ser persistente. Si en caso de que un Beantermine o si se cierra el servidor de Aplicaciones, el estado del Bean aún existe

en el almacenaje persistente (una base de datos).

Beans

Page 861: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 861/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 6 3

package perfil;

import javax.ejb.*;

import java.rmi.*;

import java.sql.*;

public interface Perfil extends EJBObject {

public Long getPerIdPerfil() throws RemoteException;

public void setPerIdPerfil(String perIdPerfil) throws RemoteException;

public String getPerDescripcion() throws RemoteException;

public void setPerDescripcion(String perDescripcion) throws RemoteException;

public void setCambiar(boolean cambiar) throws RemoteException;

}

10.7 Ejemplo de Entity Beans

Page 862: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 862/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 6 4

package org.efibs.comun.perfil;

import java.util.*;

import java.rmi.*;

import javax.ejb.*;

public interface PerfilHome extends EJBHome {

public Perfil create(String idPerfil, String perDescripcion)

throws RemoteException, CreateException, FinderException;

public Perfil findByPrimaryKey(String idPerfil) throws RemoteException, FinderException;

public Collection findByAll() throws RemoteException, FinderException;

}

10.7 … Ejemplo de Entity Beans

Page 863: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 863/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 6 5

10.7 … Ejemplo de Entity Beans

Page 864: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 864/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 6 6

10.7 … Ejemplo de Entity Beans

Page 865: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 865/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 6 7

El objetivo de esta práctica es el poder crear un Entity Bean que localice un usuario enbase al username utilizando campos CMP.

El i nst r uc to r l e en t r ega rá una cl ase j ava para com prende r y est r uc tu ra r m e jo r l ac reac ión de los m ismos . Es ta c lase además será exp l i cada de ta l ladam ente .

10.8 Ejercicio Práctico

Page 866: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 866/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 6 8

2. Definición de Enterprise Java Beans2. Definición de Enterprise Java Beans

3. Tecnología de Enterprise Java Beans3. Tecnología de Enterprise Java Beans

4. Contenedor de Enterprise Java Beans4. Contenedor de Enterprise Java Beans

5. Beneficios y Características5. Beneficios y Características

1. Introducción

1. Introducción

6. Mecanismos de Interacción6. Mecanismos de Interacción

11. Message-Driven Beans

Page 867: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 867/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 6 9

8. Tipos de los Enterprise Java Beans8. Tipos de los Enterprise Java Beans

9. Session Beans9. Session Beans

10. Entity Beans

10. Entity Beans

11. Message-Driven Beans11. Message-Driven Beans

12. Formas de Acceso12. Formas de Acceso

7. Conceptos Básicos J2EE

7. Conceptos Básicos J2EE

11. Message-Driven Beans

13. Ejercicio Práctico

13. Ejercicio Práctico

Page 868: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 868/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 7 0

El Message-Driven Bean es un Enterprise Bean que permite procesarmensajes asíncronos.

Normalmente actúa como un JavaMessageService message listerner (JMS),donde el evento listerner es similar excepto que recibe mensajes instanciadosde los eventos.

El mensaje pueden ser enviados por componentes J2EE como por ejemplo:

Desde una aplicación Cliente.

Desde otro Enterprise Java Bean.

Desde un componente Web.

Los Message-driven beans, pueden procesar múltiples JMS u otras clases deMensajes.

11.1 Message-Driven Beans

11.2 Diferencia entre Message-

Page 869: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 869/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 7 1

La diferencia radica en que los cliente no pueden tener acceso al Message-Driven Bean por medio de interfaces.

Se tienen que programar sólo una clase.

Los Message-Driven Bean se aseme jan a los stateless session bean

No conservan ningún dato o estado conversacional para un cliente.

Todas las instancias son equivalentes, permitiendo al contenedor deEJB’s asignar un mensaje a cualquier instancia del bean.

Contiene un pool de instancias permitiendo el procesamientoconcurrente.

Se pueden procesar mensajes para múltiples clientes.

Driven,Session y Entity Beans

11.3 Características de los

Page 870: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 870/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 7 2

Se invocan asincrónicamente.

Son relativamente de una duración breve.

No representan datos directamente compartidos en la base de datos, sino que puedentener acceso y actualizar al dí a a estos datos.

Son Stateless.

Se utilizan para recibir mensajes asincrónicamente.

Message-Driven Bean

Page 871: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 871/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 7 3

2. Definición de Enterprise Java Beans2. Definición de Enterprise Java Beans

3. Tecnología de Enterprise Java Beans3. Tecnología de Enterprise Java Beans

4. Contenedor de Enterprise Java Beans4. Contenedor de Enterprise Java Beans

5. Beneficios y Características5. Beneficios y Características

1. Introducción1. Introducción

6. Mecanismos de Interacción6. Mecanismos de Interacción

12. Formas de Acceso

Page 872: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 872/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 7 4

8. Tipos de los Enterprise Java Beans8. Tipos de los Enterprise Java Beans

9. Session Beans9. Session Beans

10. Entity Beans10. Entity Beans

11. Message-Driven Beans11. Message-Driven Beans

12. Formas de Acceso12. Formas de Acceso

7. Conceptos Básicos J2EE7. Conceptos Básicos J2EE

12. Formas de Acceso

13. Ejercicio Práctico13. Ejercicio Práctico

Page 873: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 873/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 7 5

Accesos Remotos.

Pueden ejecutarse en diferentes máquinas y en diferentes JVM.

Puede ser un componente del Web, una aplicación cliente, u otro Enterprise Bean.

Para un cliente remoto la localización del Bean es transparente (JNDI).

Accesos Locales.

Se ejecutan sobre una sola JVM.

Puede ser un componente del Web u otro Entrerpise Bean.

Para un cliente local la localización del Bean no es transparente.

Utilización de CMP para comunicarse con otros Entity Beans.

12.1 Formas de Acceso

Page 874: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 874/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 7 6

12.2 Contenido de un EJB

Page 875: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 875/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 7 7

2. Definición de Enterprise Java Beans2. Definición de Enterprise Java Beans

3. Tecnología de Enterprise Java Beans3. Tecnología de Enterprise Java Beans

4. Contenedor de Enterprise Java Beans4. Contenedor de Enterprise Java Beans

5. Beneficios y Características5. Beneficios y Características

1. Introducción1. Introducción

6. Mecanismos de Interacción6. Mecanismos de Interacción

13. Ejercicio Práctico

Page 876: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 876/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 7 8

8. Tipos de los Enterprise Java Beans8. Tipos de los Enterprise Java Beans

9. Session Beans9. Session Beans

10. Entity Beans10. Entity Beans

11. Message-Driven Beans11. Message-Driven Beans

12. Formas de Acceso12. Formas de Acceso

7. Conceptos Básicos J2EE7. Conceptos Básicos J2EE

13. Ejercicio Práctico

13. Ejercicio Práctico13. Ejercicio Práctico

Page 877: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 877/879

Copyright Formación y Soluciones Informáticas EFIBS S.A.8 7 9

Paso 1 . Crear un modelo de datos tal y como se en la siguiente diapositiva ycon el cual se basará todo el ejercicio de este curso.

Paso 2 . Implemente un session bean y un CMP Entity bean para cada uno delos objetos del diagrama. El objetivo es que el session tenga los métodos deinsertar, modificar, eliminar, consultar y listar los cuales tendránimplementado los correspondientes “finders” del Entity.

Paso 3. Para el caso del listar, deberá crear un findAll que retorne unacolección con los elementos de la tabla. So l i ci t e a l ins t r uc to r e l e jem p lo deusua r i o y t óm e lo com o m ode lo .

Paso 4. Crear las clases correspondientes a nivel del war, las cuales serviráncomo “helpers” para poder pasar la información entre el war y jar.

13 Ejercicio Práctico

Page 878: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 878/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 8 8 0

Paso 5 . Cree las páginas web necesarias para poder desarrollar el sistema. Aparte de las clases especificadas en el UML, debe incluir la de Login de

usuarios.

Paso 6. Pruebe cada uno de los módulos conforme los vaya terminando.Recuerde validar adecuadamente la aplicación.

Paso 7. Finalmente, implemente el módulo de cliente pero utilizando sessionbeans y BMP Entity Beans. Solicite ayuda del instructor. Utilice las clases deacceso a la base de datos creadas en el curso de java y base de datos.

El i ns t ruc t o r l e en t r ega rá , un e j em p l o de un m an t en i m i en t o comp l e t o de l a t ab l a usuar i os .

Se debe rá basar en d i cho e j em p l o pa ra pode r hace r l os rest an t es ej e rc i ci os .

13 … Ejercicio Práctico

M d l d l Si t d O d

Page 879: Cases Java

7/13/2019 Cases Java

http://slidepdf.com/reader/full/cases-java 879/879

Copyright Formación y Soluciones Informáticas EFIBS S.A. 8 8 1

Modelo del Sistema de Ordenes

Ordenid: int

fechaOrden: Date

totalOrden: double

agregarItem()eliminarItem()setFechaOrden()getFechaOrden()setTotalOrden()getTotalOrden()

ItemOrden

NumLinea: int

cantidad: intprecio: double

getCantidad()setCantidad()setPrecio()getPrecio()getTotalItem()

Cliente

id: int

nombe: Stringdireccion: Stringtelefono: StringgetNombre()setNombre()setDireccion()getDireccion()

Empresacontacto: String

descuento:doublegetContacto()setContacto()..

Producto

id: int

nombre: Stringdescripcion: Stringprecio: double

getPrecio():