cur so java by oracle

417
Oracle10g: Programación Java Presentación Electrónica D17249CS10 Edición 1.0 Enero 2005 D40257

Upload: wendy-sarmiento-martinez

Post on 27-Oct-2015

86 views

Category:

Documents


9 download

TRANSCRIPT

Oracle10g: Programación Java

Presentación Electrónica

D17249CS10Edición 1.0Enero 2005D40257

Copyright © 2004, Oracle. Todos los derechos reservados.

Esta documentación contiene información propiedad de Oracle Corporation; se suministra bajo los términos de un contrato de licencia que contiene restricciones de uso y de revelación y está también protegida por la legislación de derechos de autor. Queda prohibida la ingeniería reversa del software. Si esta documentación se entrega a una agencia del Ministerio de Defensa del Gobierno de EE.UU., se aplicará la siguiente advertencia de “Restricted Rights”:

Restricted Rights Legend

Use, duplication or disclosure by the Government is subject to restrictions for commercial computer software and shall be deemed to be Restricted Rights software under Federal law, as set forth in subparagraph (c) (1) (ii) of DFARS 252.227-7013, Rights in Technical Data and Computer Software (October 1988).

Este material ni ninguna parte del mismo podrá ser reproducido en cualquier forma o a través de cualquier medio sin el expreso consentimiento por escrito de Oracle Corporation. La reproducción es una violación de la ley de derechos de autor y puede tener consecuencias penales o civiles.

Si esta documentación se entrega a una agencia del Gobierno de EE.UU. no perteneciente al Ministerio de Defensa, se aplicará la advertencia de “Restricted Rights” definida en FAR 52.227-14, Rights in Data-General, incluido Alternate III (junio de 1987).

La información contenida en este documento está sujeta a cambio sin previo aviso. Si detecta cualquier problema en la documentación, le agradeceremos lo comunique por escrito a Education Products, Oracle Corporation, 500 Oracle Parkway, Box SB-6, Redwood Shores, CA 94065. Oracle Corporation no garantiza que este documento esté exento de errores.

Todas las referencias a Oracle y a productos Oracle son marcas comerciales o marcas comerciales registradas de Oracle Corporation.

Todos los demás nombres de compañías y productos mencionados se utilizan a los exclusivos fines de su identificación y pueden ser marcas comerciales de sus respectivos propietarios.

Autores

Jeff Gallus Glenn Stokol

Revisores y ColaboradoresTécnicos

Kenneth Cooper Christian Dugas Peter Driver Craig Hollister Chika Izumi Pete Laseau Glenn Maslen Monica Motley Gayathri Rajagopal

Editor

Michael Sebastian

Copyright © 2004, Oracle. Todos los derechos reservados.1

Introducción

2 Copyright © 2004, Oracle. Todos los derechos reservados.

Objetivos

Al finalizar este curso, debería estar capacitado para:• Escribir aplicaciones autónomas con el lenguaje

de programación Java• Desarrollar y desplegar una aplicación• Crear, generar y probar componentes de

aplicación mediante Oracle JDeveloper 10g

3 Copyright © 2004, Oracle. Todos los derechos reservados.

Visión General del Curso

• Este curso le enseñará a escribir aplicaciones Java.• También aprenderá a crear, depurar y desplegar

aplicaciones mediante Oracle JDeveloper 10g.• El entorno de desarrollo es Oracle JDeveloper 10g y

la base de datos Oracle.

Copyright © 2004, Oracle. Todos los derechos reservados.1

Introducción a las Plataformas Oracle y Java

2 Copyright © 2004, Oracle. Todos los derechos reservados.

Objetivos

Al finalizar esta lección, debería estar capacitado para:• Identificar los elementos clave de Java• Describir la JVM (Java Virtual Machine)• Examinar cómo se utiliza Java para crear aplicaciones• Identificar los componentes clave de J2SE Java

Development Kit (conocido como JDK o SDK)• Describir las opciones de despliegue de Java

3 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué es Java?

Java:• Es un lenguaje orientado a objetos y a plataformas.• Fue diseñado originalmente por Sun Microsystems

para los productos electrónicos de consumo masivo.• Contiene una biblioteca de clases.• Utiliza una máquina virtual para la ejecución de

programas.

4 Copyright © 2004, Oracle. Todos los derechos reservados.

Ventajas Principales de Java

• Orientado a objetos• Interpretado e independiente de la plataforma• Dinámico y distribuido• Multithread• Sólido y seguro

5 Copyright © 2004, Oracle. Todos los derechos reservados.

Enfoque Orientado a Objetos

• Objetos y Clases– Un objeto es una representación de tiempo de

ejecución de una “cosa”.– Una clase es una “definición estática de las cosas”.

• Los modelos de clases elaboran:– Objetos y clases existentes– Comportamiento, objetivo y estructura– Relaciones entre las clases– Relaciones entre los objetos de tiempo de ejecución

• Los mismos modelos existen en todo el proyecto.Análisis Implementación Integración

y pruebaDiseño

MODELOS DE CLASES

6 Copyright © 2004, Oracle. Todos los derechos reservados.

Independencia de la Plataforma

• El código de origen Java se almacena como texto en un archivo .java.

• El archivo .java se compila en archivos .class.• Un archivo .class contiene bytecodes

(instrucciones) de Java.• Los bytecodes se interpretan en tiempo de ejecución.

– El archivo .class de Java es el código ejecutable.

Compila

Movie.java

JVM

Programa en ejecución

Movie.class

(javac) (java)

7 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de Java con Computaciónde Internet de Empresa

ServidorWeb

Servidor de aplicaciones

Presentación Lógica denegocio

• Servlets• JSP (JavaServer

Pages)

• EJB (EnterpriseJavaBeans)

• CORBA

Cliente Datos

8 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de la JVM (Java Virtual Machine)

Sistema operativo

JVM

Aplicación

9 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Cómo Funciona JVM?

• El cargador de clase carga todas las clases necesarias.– JVM utiliza un valor CLASSPATH para ubicar los archivos

de clase. • El verificador de JVM comprueba la existencia de

bytecodes no válidos.• El verificador de JVM ejecuta los bytecodes.

– JVM puede llamar a un compilador JIT (Just-In-Time).• El gestor de memoria libera la memoria utilizada por el

objeto con referencia cancelada y la devuelve al SO.– JVM maneja la recopilación de desechos.

10 Copyright © 2004, Oracle. Todos los derechos reservados.

Ventajas de los Compiladores JIT (Just-In-Time)

Los compiladores JIT:• Mejoran el rendimiento.• Son útiles si se ejecutan de forma repetida los

mismos bytecodes.• Convierten los bytecodes en la instrucción nativa.• Optimizan el código repetitivo como, por ejemplo,

los bucles.• Utilizan la VM (máquina virtual) de Java HotSpot

para mejorar el rendimiento y la fiabilidad.

11 Copyright © 2004, Oracle. Todos los derechos reservados.

Implementación de Seguridaden el Entorno Java

Acceso específico de interfaz

Verificador de bytecode

Lenguaje y compilador

Cargador de clase

12 Copyright © 2004, Oracle. Todos los derechos reservados.

Despliegue de Aplicaciones Java

• Despliegue del cliente:– JVM ejecuta aplicaciones autónomas desde la línea de

comandos.– Las clases se cargan desde un disco local, lo que

elimina la necesidad de cargarlas a través de una red.• Despliegue del servidor:

– Sirve a varios clientes desde un único origen.– Es compatible con un modelo de varias capas para la

computación de Internet.

13 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de Java con Oracle 10g

Base dedatos Oracle

ServidorWebCliente

Servidor de aplicaciones

Presentación Lógica denegocio

Datos

OracleApplication Server

14 Copyright © 2004, Oracle. Todos los derechos reservados.

Java Software Development Kit

Sun Java J2SE (conocido como JDK y Java SDK) proporciona:• Compilador (javac)• Biblioteca de clases principales

– classes.zip– rt.jar

• Depurador (jdb)• Intérprete de bytecode: La JVM (java)• Generador de documentación (javadoc)• Utilidad jar (Archivo Java)• Otros

J2SE

15 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso del Kit de Desarrollo Adecuado

Java2 ofrece tres tamaños:• J2ME (Micro Edition): Versión dirigida

específicamente al espacio del consumidor• J2SE (Standard Edition): Entorno de desarrollo

completo para Internet• J2EE (Enterprise Edition): Todos los componentes

de J2SE, además de un servidor de aplicaciones y herramientas de creación de prototipos

16 Copyright © 2004, Oracle. Todos los derechos reservados.

Entorno de Desarrollo Integrado

Desarrollo

UML

ADF

XML

SCM

Depuración

Intercambio

Base de datos

HTML

Despliegue

Cambios sincronizados

17 Copyright © 2004, Oracle. Todos los derechos reservados.

Exploración del Entorno de Oracle JDeveloper

Navegador del Sistema Editor de Códigos Inspector de Propiedades

Paleta de Componentes

18 Copyright © 2004, Oracle. Todos los derechos reservados.

Productos Oracle10g

19 Copyright © 2004, Oracle. Todos los derechos reservados.

Resumen

En esta lección, ha aprendido lo siguiente:• El código Java se compila en bytecodes independientes

de la plataforma.• JVM interpreta los bytecodes.• Las aplicaciones Java pueden ser autónomas o se

pueden implementar a través de un modelo de computación de Internet.

Copyright © 2004, Oracle. Todos los derechos reservados.1

Definición de Principios Orientados a Objetos

2 Copyright © 2004, Oracle. Todos los derechos reservados.

Objetivos

Al finalizar esta lección, debería estar capacitado para:• Definir objetos y explicar cómo se utilizan• Asociar objetos para que se puedan comunicar y

puedan interactuar mediante mensajes• Definir clases y explicar cómo se utilizan• Describir los principios OO (orientados a objetos):

Clases, objetos y métodos• Describir el valor de los componentes de software

reutilizables • Examinar el modelo OO que se utiliza en este curso

3 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué es el Modelado?

• Los modelos realizan las siguientes funciones:– Describen exactamente cuáles son las necesidades

de negocio.– Facilitan la discusión.– Evitan errores.

• El modelado y la implementación se tratan por separado.

• Antes de que pueda comenzar la codificación, el modelo debe ser correcto.

4 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué Son las Clases y los Objetos?

• Una clase:– Modela una abstracción de los objetos.– Define los atributos y los comportamientos

de los objetos.– Es el plano que define un objeto.

• Un objeto:– Está moldeado en función de la clase.– Es una instancia única de una clase.– Retiene la estructura y el comportamiento

de una clase.

5 Copyright © 2004, Oracle. Todos los derechos reservados.

Los Atributos de un Objeto Mantienen su Estado

• Los objetos conocen su estado actual.• Un atributo es un fragmento de información.

– Los valores de los atributos indican el estado de los objetos.

Atributo: Cantidad de tinta

Atributo: Efectivo disponible

Objeto: Mi pluma azul

Objeto: Cajero automático

6 Copyright © 2004, Oracle. Todos los derechos reservados.

Los Objetos Tienen un Comportamiento

• Un objeto existe para proporcionar un comportamiento (funcionalidad) al sistema.

• Cada comportamiento distinto se denomina operación.

Operación: Escribir

Operación: Dispensar efectivo

Objeto: Mi pluma azul

Objeto: Cajero automático

7 Copyright © 2004, Oracle. Todos los derechos reservados.

Los Objetos se Modelan como Abstracciones

• Un objeto Java se modela como una representación abstracta de un objeto del mundo real.

• Sólo debe modelar los atributos y las operaciones que sean relevantes en el contexto del problema.

Atributos/operaciones del mundo real que puede que no desee modelar:• Atributos: Color de tinta• Operaciones: Rellenar tinta, cambiar color, señalar,

escribir

Contexto: Catálogo de productosAtributos/operaciones del mundo real que puede que desee modelar:

• Atributos: Modelo, fabricante, precio• Operaciones: Cambiar precio

8 Copyright © 2004, Oracle. Todos los derechos reservados.

Una PC puede ser un objeto.

Una PC puede tener una unidad de CD, que puede

ser un objeto.

Una PC puede tener un teclado, un mouse y una

tarjeta de red, y todos pueden ser objetos.

Definición de Composición de Objetos

• Los objetos pueden estar compuestos de otros objetos.

• Los objetos pueden formar parte de otros objetos.• Esta relación entre los objetos se conoce como

agregación.

9 Copyright © 2004, Oracle. Todos los derechos reservados.

Diagrama de Donut

getAge()

Cliente oremitente

Persona

Mensajenombredirecciónfecha denacimiento

getName

setBirthdate getAge

getAddress setAddress

10 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica Guiada:Distinción de Operaciones y Atributos

11 Copyright © 2004, Oracle. Todos los derechos reservados.

Objetos de Colaboración

Los objetos de colaboración funcionan juntos para terminar una tarea y constituyen la base de un sistema de aplicaciones.• Todos los métodos se definen dentro de una clase y

no globalmente, como en los lenguajes tradicionales.• Todos los objetos se crean a partir de clases y

contienen todos los atributos y todos los métodos de dichas clases.

• Los objetos se deben asociar entre ellos para poder colaborar en tareas comunes.

• Los objetos asociados se comunican mediante el envío de mensajes.

12 Copyright © 2004, Oracle. Todos los derechos reservados.

Interacción de Objetos a través de Mensajes

• Los objetos se comunican mediante el envío de mensajes.

• El objeto emisor se debe asociar o enlazar al objeto receptor.

• El emisor del mensaje solicita al receptor que realice la operación que se especifica en el mensaje.

• Esta comunicación es similar a llamar a un procedimiento:– El emisor llama a un método del receptor.– El receptor ejecuta el método especificado.

• La llamada a un método siempre se produce en el contexto de un objeto concreto:– myPen.write( ): Programación orientada a objetos– write (myPen): Programación de estructura

tradicional

13 Copyright © 2004, Oracle. Todos los derechos reservados.

Al crear el objeto mi pluma azul, no es necesario que especifique sus operaciones ni sus atributos. Simplemente debe explicar a qué clase pertenece.

¿Qué es una Clase?

• Una clase es una plantilla para objetos.• Una definición de clase especifica las operaciones y

los atributos para todas las instancias de esa clase.• Las clases se utilizan para gestionar la complejidad.

14 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Cómo se Identifica una Clase?

• Identifique la estructura y el comportamiento comunes de un grupo de objetos.

• Reconozca un único concepto lógico.• Atención: Un error bastante común es utilizar las

palabras clases y objetos indistintamente. Las clases definen objetos.

Mi pluma azul operaciones: escribir, rellenar tintaatributos: cantidad de tinta, color

de tinta

Su pluma azul operaciones: escribir, rellenar tintaatributos: cantidad de tinta

15 Copyright © 2004, Oracle. Todos los derechos reservados.

Comparación de Clases y Objetos

• Las clases son definiciones estáticas que puede utilizar para entender todos los objetos de una clase.

• Los objetos son entidades dinámicas que existen en el mundo real y la simulación que hace de él.

• Atención: Las personas que trabajan con orientación a objetos casi siempre utilizan las palabras clases y objetos indistintamente, por lo que es necesario comprender el contexto para diferenciar sus significados.

16 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué es la Encapsulación?

La encapsulación oculta las operaciones y la estructura internas de un objeto detrás de una interfaz.• Un cajero automático es un objeto que permite que los

usuarios retiren efectivo.– El cajero oculta (encapsula) la operación real de retirada

de efectivo del usuario.– La interfaz (la forma de operar el cajero) se proporciona

mediante las funciones del teclado, la pantalla, el dispositivo que permite dispensar efectivo, etc.

– Ignorar la encapsulación constituye un robo bancario.• Es imposible ignorar la encapsulación en la

programación orientada a objetos.

17 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué Es la Herencia?

• Puede haber aspectos comunes entre clases distintas.• Define las propiedades comunes de una superclase.

• Las subclases utilizan la herencia para incluir dichas propiedades.

Cuenta de ahorros Cuenta corrienteCuenta

18 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de la Relación “Es un Tipo de”

• Un objeto de subclase “es un tipo de” objeto de superclase.

• Una subclase debe tener todos los atributos y todos los comportamientos de la superclase.

Cuenta de ahorros

Cuenta Pluma

Lápiz

19 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué es el Polimorfismo?

El término polimorfismo hace referencia a:• Muchas formas para la misma operación.• La capacidad de solicitar una operación con el mismo

significado para objetos distintos. Sin embargo, cada objeto implementa la operación de una forma única.

• Los principios de herencia y sustitución de objetos.

Carga de pasajeros

20 Copyright © 2004, Oracle. Todos los derechos reservados.

Reglas de Arquitectura para la Reutilización

Escriba código que contenga:• Eventos que puedan interactuar con la aplicación Java • Propiedades que se puedan exponer• Métodos a los que se pueda llamar

Escriba código que soporte:• Introspección o reflexión• Personalización• Persistencia

21 Copyright © 2004, Oracle. Todos los derechos reservados.

Ingeniería para un Entorno de Caja Negra

Los JavaBeans siguen el enfoque de caja negra, que le permite:• Simplificar algo de una complejidad arbitraria en un

único objeto que todos puedan comprender• Considerar a los sistemas grandes una recopilación

de entidades interconectadas (cajas negras) que se comunican a través de sus interfaces

22 Copyright © 2004, Oracle. Todos los derechos reservados.

Diagrama UML de Registro de Pedidos

23 Copyright © 2004, Oracle. Todos los derechos reservados.

Resumen

En esta lección, ha aprendido lo siguiente:• Un objeto es una abstracción de un objeto del

mundo real.• Una clase es una plantilla o un plano para los

objetos.• Las clases forman árboles de herencia: Las

operaciones que se definen en una clase las heredan todas las subclases.

• El polimorfismo libera al emisor de la llamada de la responsabilidad de conocer la clase del objeto del receptor.

24 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica 2: Visión General

Esta práctica cubre:• Identificación de objetos de negocio para el sistema

de registro de pedidos• Identificación de métodos para las clases• Identificación de atributos para las clases• Búsqueda de herencia en las clases• Examen del modelo de clases UML para la aplicación

del curso

25 Copyright © 2004, Oracle. Todos los derechos reservados.

Modelo de Clases UML Parcialde Sistema de Registro de Pedidos

Order

id: intorderDate: DateshipDate: DateshipMode: StringorderTotal: double

addItem()removeItem()setOrderDate()getOrderDate()setShipDate():

OrderItemlineNo: intquantity: intprice: double

getQuantity()setQuantity()setPrice()getPrice()getItemTotal():

Customername : Stringaddress: Stringphone: double

getName()setName()setAddress()getAddress():

Companycontact: Stringdiscount: int

getContact()setContact():

IndividuallicNumber: String

setLicNumber()getLicNumber():

Productid: intname: Stringdescription: StringretailPrice: double

getPrice():

Copyright © 2004, Oracle. Todos los derechos reservados.1

Reglas Sintácticas y de Codificación Básicas de Java

2 Copyright © 2004, Oracle. Todos los derechos reservados.

Objetivos

Al finalizar esta lección, debería estar capacitado para:• Identificar los componentes clave del lenguaje Java• Identificar las tres construcciones de nivel superior de

un programa Java• Identificar y describir paquetes Java• Describir la sintaxis básica del lenguaje e identificar

las palabras clave de Java• Identificar las construcciones básicas de un

programa Java• Compilar y ejecutar una aplicación Java• Examinar la arquitectura de JavaBeans como ejemplo

de prácticas de codificación estándar • Usar la variable CLASSPATH y comprender su

importancia en tiempo de compilación y ejecución.

3 Copyright © 2004, Oracle. Todos los derechos reservados.

Examen de los Componentes de Toolkit

J2SE/J2EE de Sun proporciona:• Compilador• Intérprete de bytecodes• Generador de documentación

J2SE

4 Copyright © 2004, Oracle. Todos los derechos reservados.

Exploración de Paquetes de J2SE/J2EE

J2SE/J2EE de Sun proporciona paquetes estándar para:• Lenguaje• Ventanas• Entrada/salida• Comunicación de red

J2SE

5 Copyright © 2004, Oracle. Todos los derechos reservados.

Documentación sobre el Uso de J2SE

J2SE/J2EE de Sun proporciona soporte de documentación para:• Comentarios

– Implementación– Documentación

• Generador de documentación

J2SE

6 Copyright © 2004, Oracle. Todos los derechos reservados.

Contenido de un Origen Java

• Un archivo de origen Java puede contener tres construcciones de nivel superior:– Por cada archivo, sólo una palabra clave package,

seguida del nombre del paquete– Alguna o ninguna sentencia import, seguida de

nombres de clase totalmente cualificados o de “*” cualificado por un nombre de paquete

– Una o varias definiciones class o interface, seguidas de un nombre y de un bloque

• El archivo debe tener el mismo nombre que la clase pública o que la interfaz pública.

7 Copyright © 2004, Oracle. Todos los derechos reservados.

Establecimiento de Reglas de Nomenclatura

Las reglas de nomenclatura incluyen:• Nombres de clases

– Customer, RentalItem, InventoryItem• Nombres de archivos

– Customer.java, RentalItem.java• Nombres de métodos

– getCustomerName(), setRentalItemPrice()• Nombres de paquetes

– oracle.xml.xsql, java.awt, java.io

8 Copyright © 2004, Oracle. Todos los derechos reservados.

Información Adicional sobre Reglas de Nomenclatura

• Variables:– customerName, customerCreditLimit

• Constantes:– MIN_WIDTH, MAX_NUMBER_OF_ITEMS

• Caracteres en minúsculas y en mayúsculas• Caracteres numéricos y caracteres especiales

9 Copyright © 2004, Oracle. Todos los derechos reservados.

Definición de una Clase

Normalmente, las definiciones de clases incluyen:• Modificador de acceso• Palabra clave de clase• Campos de instancia• Constructores• Métodos de instancia• Campos de clase• Métodos de clase

10 Copyright © 2004, Oracle. Todos los derechos reservados.

Clase Rental: Ejemplo

public class Rental {//Class variablestatic int lateFee;// Instance variablesint rentalId;String rentalDate;float rentalAmountDue;… // Instance methodsfloat getAmountDue (int rentId) {…

}… }

Declaración

Variable de instancia

Método de instancia

Modificador de acceso

11 Copyright © 2004, Oracle. Todos los derechos reservados.

Creación de Bloques de Código

• Escriba todas las declaraciones de clase entre llaves.• Escriba todas las declaraciones de método entre llaves.• Agrupe los demás segmentos de código relacionados.

public class SayHello {

public static void main(String[] args) {

System.out.println("Hello world");

}

}

12 Copyright © 2004, Oracle. Todos los derechos reservados.

Definición de Métodos Java

• Siempre se definen dentro de una clase.• Especifique:

– Modificador de acceso– Palabra clave estática– Argumentos– Tipo de retorno

[access-modifiers] [static] "return-type"

"method-name" ([arguments]) {

"java code block“ … }

return

13 Copyright © 2004, Oracle. Todos los derechos reservados.

Ejemplos de un Método

public float getAmountDue (String cust){

// method variables

int numberOfDays;

float due;

float lateFee = 1.50F;

String customerName;

// method body

numberOfDays = getOverDueDays();

due = numberOfDays * lateFee;

customerName = getCustomerName(cust);

return due;

}

Declaración

Variables de método

Sentencias de método

Retorno

14 Copyright © 2004, Oracle. Todos los derechos reservados.

Declaración de Variables

• Puede declarar variables en cualquier lugar de un bloque de clase y fuera de cualquier método.

• Debe declarar las variables antes de que se utilicen dentro de un método.

• Normalmente, las variables se declaran al inicio de un bloque de clase.

• El ámbito o la visibilidad de las variables se determina en el bloque de código.

• Debe inicializar las variables de método antes de utilizarlas.

• Las variables de instancia y de clase se inicializan automáticamente.

15 Copyright © 2004, Oracle. Todos los derechos reservados.

Ejemplos de Variables en el Contexto de un Método

public float getAmountDue (String cust) {

float due = 0;

int numberOfDays = 0;

float lateFee = 1.50F;

{int tempCount = 1; // new code block

due = numberOfDays * lateFee;

tempCount++;

} // end code block

return due;

}

Variables de método

Variables temporales

16 Copyright © 2004, Oracle. Todos los derechos reservados.

Reglas para la Creación de Sentencias

• Utilice un punto y coma para terminar las sentencias.• Defina las sentencias múltiples entre llaves.• Utilice llaves para las sentencias de control.

17 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué Son los JavaBeans?

Un JavaBean es un componente de software reutilizable y de plataforma neutral que:• Se puede manipular visualmente en una herramienta

de creador• Se comunica con otros JavaBeans mediante eventos• Comprende componentes visibles que deben heredar

de otros componentes visibles• Proporciona una arquitectura para construir los

bloques integrantes de una aplicación

18 Copyright © 2004, Oracle. Todos los derechos reservados.

Gestión de Propiedades de Bean

• Las propiedades son las variables de miembro de clase bean. (Las variables pueden ser objetos o tipos primitivos.)

• Una propiedad puede ser:– No enlazada, que es una propiedad simple.– Enlazada, que dispara un evento si se modifica el campo.– Restringida, en la cual los objetos de listener interesados

aceptan o vetan los cambios

19 Copyright © 2004, Oracle. Todos los derechos reservados.

Exposición de Propiedades y Métodos

Métodosde obtención(public)

Métodosdefinidores

(public void)

T getVar()

T[] getArr()

boolean isVar()

setVar(T val)

setArr(T[] val)

setVar(boolean val)

privateT var;T[] arr;

20 Copyright © 2004, Oracle. Todos los derechos reservados.

Estándares de JavaBean Durante el Diseño

Las ventajas durante el diseño son:• Se facilita la interacción entre diseñador, herramienta

y bean• Beans instanciados y en funcionamiento en una

herramienta visual• Entorno de desarrollo muy iterativo• Creación de aplicaciones en pequeñas partes que se

conectan y desconectan• Almacenamiento y recuperación de

objetos instanciados

21 Copyright © 2004, Oracle. Todos los derechos reservados.

Compilación y Ejecuciónde una Aplicación Java

• Para compilar un archivo .java:

• Para ejecutar un archivo .class:

• Recuerde que debe tener en cuenta las mayúsculas/minúsculas.

prompt> javac SayHello.java

… compiler output …

prompt> java SayHello

Hello world

prompt>

22 Copyright © 2004, Oracle. Todos los derechos reservados.

La Variable CLASSPATH

• Se define en el sistema operativo.• Dirige a JVM y a las aplicaciones Java a la ubicación

en la que pueden encontrar los archivos .class.• Hace referencia a bibliotecas incorporadas o a

bibliotecas definidas por el usuario.• Permite que el intérprete busque rutas de acceso y

carga las clases incorporadas antes que las clases definidas por el usuario.

• Se puede utilizar con los comandos “javac” y “java”.

23 Copyright © 2004, Oracle. Todos los derechos reservados.

CLASSPATH: Ejemplo

C:\>set CLASSPATH=D:labs\les03\classes\oe

Definición de CLASSPATH

Ubicación de los archivos .class en el paquete oe

24 Copyright © 2004, Oracle. Todos los derechos reservados.

Resumen

En esta lección, ha aprendido lo siguiente:• J2SE proporciona herramientas básicas de Java.• J2SE proporciona un juego enriquecido de

métodos y clases predefinidos.• Los programas Java están formados por clases,

objetos y métodos.• Si se siguen los estándares de programación, se

facilita la lectura y la reutilización del código.

25 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica 3: Visión General

Esta práctica cubre:• Examen del entorno Java• Escritura y ejecución de una aplicación Java sencilla• Examen de la aplicación de solución del curso• Inspección de clases, métodos y variables• Creación de archivos de clase y de una clase de

aplicación con un método main( )• Compilación y ejecución de una aplicación

Copyright © 2004, Oracle. Todos los derechos reservados.1

Exploración de Operadores y Tiposde Datos Primitivos

2 Copyright © 2004, Oracle. Todos los derechos reservados.

Objetivos

Al finalizar esta lección, debería estar capacitado para:• Distinguir entre palabras reservadas y otros nombres

en Java• Describir las variables y los tipos de datos primitivos

de Java• Declarar e inicializar variables primitivas• Utilizar operadores para manipular variables primitivas• Describir los usos de los literales y de los operadores

Java• Identificar las categorías válidas de operadores

y la prioridad de operadores• Utilizar los literales de objeto de cadena y el operador

de concatenación

3 Copyright © 2004, Oracle. Todos los derechos reservados.

Palabras Clave Reservadas

abstractfinalnativeprivateprotectedpublicstaticsynchronizedtransientvolatilestrictfp

breakcasecatchcontinuedefaultdoelsefinallyforifreturnswitchthrowtrywhile

booleanbytechardoublefloatintlongshortvoid

true falsenull

classextendsimplementsinterfacethrows

instanceofnewsuperthis

importpackage

4 Copyright © 2004, Oracle. Todos los derechos reservados.

Tipos de Variables

• Ocho tipos de datos primitivos:– Seis tipos numéricos– Un tipo de carácter– Un tipo booleano (para valores verdaderos/falsos)

• Tipos definidos por el usuario:– Clases– Interfaces– Matrices

abc

5 Copyright © 2004, Oracle. Todos los derechos reservados.

Tipos de Datos Primitivos

Agregue al número una letra “L” o “F” en mayúsculas o enminúsculas para especificar un número largo o flotante.

Entero Comaflotante Carácter Verdadero

Falso

byteshort

intlong

floatdouble char boolean

1, 2, 3, 4207

0xff

0

3.0F.3337F

4.022E23

0.0f

'a' '\141''\u0061'

'\n'

‘\u0000’

truefalse

false

6 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué Son las Variables?

• Una variable es una unidad básica de almacenamiento.• Las variables se deben declarar explícitamente.• Cada variable tiene un tipo, un identificador y un

ámbito.• Hay tres tipos de variables: Clase, instancia y método.

int myAge;

boolean isAMovie;

float maxItemCost = 17.98F;

TipoIdentificador

Valor inicial

Título: “Blue Moon”

7 Copyright © 2004, Oracle. Todos los derechos reservados.

Declaración de Variables

• Forma básica de declaración de variable:– type identifier [ = value];

• Las variables se pueden inicializar cuando sedeclaran.

public static void main(String[] args) {

int itemsRented = 1;

float itemCost;

int i, j, k;

double interestRate;

}

8 Copyright © 2004, Oracle. Todos los derechos reservados.

Variables Locales

• Las variables locales sólo se definen dentro de unmétodo o de un bloque de código.

• Se deben inicializar para que se pueda leer su contenido o hacer referencia a él.

class Rental {

private int instVar; // instance variable

public void addItem() {

float itemCost = 3.50F; // local variable

int numOfDays = 3; // local variable

}

}

9 Copyright © 2004, Oracle. Todos los derechos reservados.

Definición de Nombres de Variables

• Los nombres de variables deben comenzar por una letra del alfabeto, por un guión bajo o por el símbolo $.

• Otros caracteres pueden incluir dígitos.

• Utilice nombres significativos para las variables, comocustomerFirstName y ageNextBirthday.

a item_Cost

itemCost _itemCost

item$Cost itemCost2

item#Cost item-Cost

item*Cost abstract

2itemCost

10 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué Son los Literales Numéricos?

0 1 42 -23795 (decimal)

02 077 0123 (octal)

0x0 0x2a 0X1FF (hex)

365L 077L 0x1000L (long)

1.0 4.2 .47

1.22e19 4.61E-9

6.2f 6.21F

Literales enteros

Literales de comaflotante

Seis tipos: byte, short, int, long, float, double

11 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué Son los Literales No Numéricos?

True false

'a' '\n' '\t' '\077‘ '\u006F'

"Hello, world\n"

Literales booleanos

Literales de cadena

Literales de carácter

12 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica Guiada: Declaración de Variables

Localice y corrija los errores en este código:

byte sizeof = 200;

short mom = 43;

short hello mom;

int big = sizeof * sizeof * sizeof;

long bigger = big + big + big // ouch

double old = 78.0;

double new = 0.1;

boolean consequence = true;

boolean max = big > bigger;

char maine = "New England state";

char ming = 'd';

1

2

3

4

5

6

7

8

9

10

11

13 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué Son los Operadores?

• Los operadores manipulan datos y objetos.• Los operadores toman uno o varios argumentos y

producen un valor.• Hay 44 operadores distintos.• Algunos operadores cambian el valor del operando.

14 Copyright © 2004, Oracle. Todos los derechos reservados.

Clasificación de Operadores

Hay cinco tipos de operadores:• Asignación• Aritméticos• Enteros a nivel de bits• Relacionales• Booleanos

15 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso del Operador de Asignación

El resultado de una operación de asignación es un valor y se puede utilizar siempre que esté permitido eluso de expresiones.• El valor de la derecha está asignado al

identificador de la izquierda:

• La expresión de la derecha siempre se evalúaantes de la asignación.

• Las asignaciones se pueden encadenar:

int var1 = 0, var2 = 0;

var1 = 50; // var1 now equals 50

var2 = var1 + 10; // var2 now equals 60

var1 = var2 = var3 = 50;

16 Copyright © 2004, Oracle. Todos los derechos reservados.

Trabajo con Operadores Aritméticos

• Realizan operaciones aritméticas básicas.• Trabajan con literales y con variables numéricas.

int a, b, c, d, e;

a = 2 + 2; // addition

b = a * 3; // multiplication

c = b - 2; // subtraction

d = b / 2; // division

e = b % 2; // returns the remainder of division

17 Copyright © 2004, Oracle. Todos los derechos reservados.

Información Adicional sobre Operadores Aritméticos

La mayoría de las operaciones dan como resultado valores int o long:• Los valores byte, char y short cambian a la

categoría int antes de la operación.• Si algún argumento es de tipo long, el otro también

cambia a long y el resultado es de tipo long.

byte b1 = 1, b2 = 2, b3;

b3 = b1 + b2; // ERROR: result is an int

// b3 is byte

18 Copyright © 2004, Oracle. Todos los derechos reservados.

Examen de Conversiones

• Java convierte automáticamente un valor de untipo numérico en un tipo más largo.

• Java no realiza conversiones automáticas a tipos más cortos.

byte shortchar int

long

byte longintshortchar

19 Copyright © 2004, Oracle. Todos los derechos reservados.

Aumento y Disminución de Valores

• Los operadores ++ y -- aumentan y disminuyen en 1respectivamente:

• Los operadores ++ y -- se pueden utilizar de dosformas:

int var1 = 3;

var1++; // var1 now equals 4

int var1 = 3, var2 = 0;

var2 = ++var1; // Prefix: Increment var1 first,

// then assign to var2.

var2 = var1++; // Postfix: Assign to var2 first,

// then increment var1.

20 Copyright © 2004, Oracle. Todos los derechos reservados.

mayor quemayor o igual quemenor quemenor o igual queigual queno igual que

>>=<<===!=

Operadores Relacionales y de Igualdad

int var1 = 7, var2 = 13;

boolean res = true;

res = (var1 == var2); // res now equals false

res = (var2 > var1); // res now equals true

21 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso del Operador Condicional (?:)

• Alternativa útil a la estructura if…else:

• Si boolean_expr tiene el valor true, el resultado esexpr1; en caso contrario, el resultado es expr2:

boolean_expr ? expr1 : expr2

int val1 = 120, val2 = 0;

int highest;

highest = (val1 > val2) ? val1 : val2;

System.out.println("Highest value is " + highest);

22 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de Operadores Lógicos

Los resultados de las expresiones booleanas sepueden combinar utilizando operadores lógicos:

AND (con o sin evaluación de cortocircuito)OR (con o sin evaluación de cortocircuito)operación OR exclusivaNOT

&& &|| |^!

int var0 = 0, var1 = 1, var2 = 2;

boolean res = true;highest = (val1 > val2)? val1 : val2;

res = !res;

23 Copyright © 2004, Oracle. Todos los derechos reservados.

Operadores de Asignación Compuesta

Un operador de asignación se puede combinar concualquier operador binario convencional:

double total=0, num = 1;

double percentage = .50;

total = total + num; // total is now 1

total += num; // total is now 2

total -= num; // total is now 1

total *= percentage; // total is now .5total /= 2; // total is now 0.25

num %= percentage; // num is now 0

24 Copyright © 2004, Oracle. Todos los derechos reservados.

Prioridad de Operadores

Operadores

++ -- + - ~! (type)* / %+ - +<< >> >>>

< > <= >=instanceof== !=&^|&&||?:= op=

Comentarios

Operadores unarios

Multiplicación, división, restoSuma, resta, adición de cadenaDesplazamiento (>>> es desplazary rellenar con ceros)Comparación de tipo, relacional

IgualdadOperación AND lógica/bitOperación OR exclusiva lógica/bitOperación OR de inclusión lógica/bitOperación AND lógicaOperación OR lógicaOperador condicionalOperadores de asignación

Orden

1

234

5

678910111213

Asoc.

R

LLLL

LLLLLLRR

25 Copyright © 2004, Oracle. Todos los derechos reservados.

Información Adicional sobre Prioridadde Operadores

• La prioridad de los operadores determina el orden enque se ejecutan:

• Los operadores que tienen la misma prioridad seejecutan de izquierda a derecha (consulte la nota deltexto):

• Utilice los paréntesis para sustituir el orden por defecto.

int var1 = 0;

var1 = 2 + 3 * 4; // var1 now equals 14

int var1 = 0;

var1 = 12 - 6 + 3; // var1 now equals 9

26 Copyright © 2004, Oracle. Todos los derechos reservados.

Concatenación de Cadenas

El operador + crea cadenas y las concatena:

String name = "Jane ";

String lastName = "Hathaway";

String fullName;

name = name + lastName; // name is now

//"Jane Hathaway"

// OR

name += lastName; // same result

fullName = name;

27 Copyright © 2004, Oracle. Todos los derechos reservados.

Resumen

En esta lección, ha aprendido lo siguiente:• Java tiene ocho tipos de datos primitivos.• Se debe declarar una variable para poder utilizarla.• Java proporciona un juego global de operadores.• Si utiliza tipos de datos más cortos que int,

puede que necesite la conversión explícita.• Los operadores + y += se pueden utilizar para

crear cadenas y concatenarlas.

28 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica 4: Visión General

Esta práctica cubre:• Declaración e inicialización de variables• Uso de distintos operadores para calcular valores

nuevos• Visualización de resultados en la consola

Copyright © 2004, Oracle. Todos los derechos reservados.1

Control de Flujo de Programa

Copyright © 2004, Oracle. Todos los derechos reservados.2

Objetivos

Al finalizar esta lección, debería estar capacitado para:• Utilizar construcciones de toma de decisiones• Realizar operaciones de bucle• Escribir sentencias switch

Copyright © 2004, Oracle. Todos los derechos reservados.3

Clasificación de Tipos de Control de Flujo Básicos

El control de flujo se puede clasificar en cuatro tipos:

Secuencial

TransferenciaSelección

Iteración

Copyright © 2004, Oracle. Todos los derechos reservados.4

Uso de Control de Flujo en Java

• Las sentencias simples terminan con un punto y coma (;).

• Puede agrupar sentencias mediante llaves { }.• Cada bloque se ejecuta como una única sentencia

dentro de la estructura de flujo de control.

{boolean finished = true;System.out.println("i = " + i);i++;

}

Copyright © 2004, Oracle. Todos los derechos reservados.5

Uso de la Sentencia if

if ( boolean_expr )

statement1;[else

statement2];

if (i % 2 == 0)

System.out.println("Even");

else

System.out.println("Odd");

… if (i % 2 == 0) {

System.out.print(i);

System.out.println(" is even");

}

General:

Ejemplos:

Copyright © 2004, Oracle. Todos los derechos reservados.6

Anidación de Sentencias ifif (speed >= 25)

if (speed > 65)

System.out.println("Speed over 65");

else

System.out.println("Speed >= 25 but <= 65");

else

System.out.println("Speed under 25");

if (speed > 65)

System.out.println("Speed over 65");

else if (speed >= 25)

System.out.println("Speed greater… to 65");

else

System.out.println("Speed under 25");

Copyright © 2004, Oracle. Todos los derechos reservados.7

Práctica Guiada: Localización de Errores

int x = 3, y = 5;

if (x >= 0)

if (y < x)

System.out.println("y is less than x");

else

System.out.println("x is negative");

int x = 7;

if (x = 0)

System.out.println("x is zero");

int x = 14, y = 24;

if ( x % 2 == 0 && y % 2 == 0 );

System.out.println("x and y are even");

1

2

3

Copyright © 2004, Oracle. Todos los derechos reservados.8

Definición de la Sentencia switch

• La sentenciaswitch resulta útil al seleccionar una acción entre diversos valores enteros alternativos.

• Los valores de Integer_expr deben ser byte, int, charo short.

switch ( integer_expr ) {

case constant_expr1:statement1;break;

case constant_expr2:statement2;break;

[default:

statement3;]}

Copyright © 2004, Oracle. Todos los derechos reservados.9

Información Adicional sobre la Sentencia switch

• Las etiquetascase deben ser constantes.

• Utilice break para salir de un switch.

• Es recomendable proporcionar siempre una etiqueta default.

switch (choice) {

case 37:

System.out.println("Coffee?");

break;

case 45:

System.out.println("Tea?");

break;

default:

System.out.println("???");

break;

}

Copyright © 2004, Oracle. Todos los derechos reservados.10

Ejecución de Bucles en Java

• Hay tres tipos de bucles en Java:– while– do…while– for

• Todos los bucles tienen cuatro partes:– Inicialización– Condición de iteración– Cuerpo– Terminación

Copyright © 2004, Oracle. Todos los derechos reservados.11

Uso del Bucle while

while es la sentencia de bucle más simple y contiene la forma general siguiente:

while ( boolean_expr )

statement;

int i = 0;

while (i < 10) {

System.out.println("i = " + i);

i++;

}

Ejemplo:

Copyright © 2004, Oracle. Todos los derechos reservados.12

Uso del Bucle do…while

Los bucles do…while colocan la prueba al final:

do

statement;while ( termination );

int i = 0;

do {

System.out.println("i = " + i);

i++;

} while (i < 10);

Ejemplo:

Copyright © 2004, Oracle. Todos los derechos reservados.13

Uso del Bucle for

Los bucles for son los más comunes:

¿Cuál sería el aspecto de este bucle for utilizando un bucle while?

for (i = 0; i < 10; i++)

System.out.println(i);

for ( initialization; termination; iteration )statement;

Ejemplo:

Copyright © 2004, Oracle. Todos los derechos reservados.14

Información Adicional sobre el Bucle for

• Se pueden declarar variables en la parte de inicialización de un bucle for:

• La inicialización y la iteración pueden estar formadas por una lista de expresiones separadas por comas:

for (int i = 0; i < 10; i++)

System.out.println("i = " + i);

for (int i = 0, j = 10; i < j; i++, j--) {System.out.println("i = " + i);

System.out.println("j = " + j);

}

Copyright © 2004, Oracle. Todos los derechos reservados.15

Práctica Guiada: Localización de Errores

int x = 10;

while (x > 0);

System.out.println(x--);

System.out.println("We have lift off!");

int x = 10;

while (x > 0)

System.out.println("x is " + x);

x--;

int sum = 0;

for (; i < 10; sum += i++);

System.out.println("Sum is " + sum);

1

2

3

Copyright © 2004, Oracle. Todos los derechos reservados.16

La Sentencia break

• Permite salir de un bucle o de una sentencia switch.

• Transfiere el control a la primera sentencia después del cuerpo del bucle o a la sentencia switch.

• Puede simplificar el código pero se debe utilizar con moderación.

… while (age <= 65) {

balance = (balance+payment) * (1 + interest);if (balance >= 250000)

break;age++;

}…

Copyright © 2004, Oracle. Todos los derechos reservados.17

Resumen

En esta lección, ha aprendido lo siguiente:• El medio principal para la toma de decisiones es la

sentencia if, con la cláusula else opcional.• Java también ofrece la sentencia switch.• Java proporciona tres sentencias de bucle: while,

do…while y for.• Debe utilizar las sentencias break y continue

con moderación.

Copyright © 2004, Oracle. Todos los derechos reservados.18

Práctica 5: Visión General

Esta práctica cubre:• Realización de pruebas mediante sentencias

if…else

• Uso de bucles para realizar operaciones iterativas• Uso de la sentencia break para salir de un bucle• Uso de los operadores &&, || y ! en expresiones

booleanas

Copyright © 2004, Oracle. Todos los derechos reservados.1

Creación de Aplicaciones con Oracle JDeveloper 10g

2 Copyright © 2004, Oracle. Todos los derechos reservados.

Objetivos

Al finalizar esta lección, debería estar capacitado para:• Crear nuevos proyectos, espacios de trabajo

y aplicaciones• Crear aplicaciones Java en Oracle JDeveloper• Mejorar el diseño de marco de interfaz de usuario• Depurar una aplicación mediante el depurador de

JDeveloper• Definir clases mediante JDeveloper• Describir cómo se puede utilizar JDeveloper para

crear aplicaciones empresariales

3 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué Es Oracle JDeveloper 10g?

• Oracle JDeveloper 10g proporciona un IDE (Entorno de Desarrollo Integrado).

• Puede crear, compilar y ejecutar aplicaciones Java mediante Oracle JDeveloper.

• Los asistentes le ayudan a crear el código de origen.• Puede ver objetos desde distintas perspectivas:

código, estructura, diseño, etc.

4 Copyright © 2004, Oracle. Todos los derechos reservados.

Exploración del Entorno de Oracle JDeveloper

Navegador del sistema Editor de códigos Inspector de propiedades

Paleta de componentes

5 Copyright © 2004, Oracle. Todos los derechos reservados.

Examen de Espacios de Trabajo

• Contienen varios proyectos• Le permiten ver los objetos

usados actualmenteEspacio de trabajo

Panel Navigator

Panel Structure

6 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué Son los Proyectos?

• Contienen archivos relacionados

• Gestionan los valores de entorno y de proyecto

• Gestionan las opciones de depuración y del compilador

Proyecto

Archivosde proyecto

7 Copyright © 2004, Oracle. Todos los derechos reservados.

Creación de Elementos de Oracle JDeveloper

• Los elementos de JDeveloper se llaman seleccionando File > New.

• Están clasificados por tipo:– General– Capa de negocio– Capa de cliente– Capa de base de datos– Capa Web

• Puede crear cualquier elemento de JDeveloper.

8 Copyright © 2004, Oracle. Todos los derechos reservados.

Creación de un Espacio de Trabajo de Aplicación

En la categoría General, seleccione Application Workspace para llamar al panel Property.

9 Copyright © 2004, Oracle. Todos los derechos reservados.

Especificación de Detalles de Proyecto

10 Copyright © 2004, Oracle. Todos los derechos reservados.

Selección de Bibliotecas Adicionales

11 Copyright © 2004, Oracle. Todos los derechos reservados.

Adición de un J2SE Nuevo

Las definiciones de J2SE nuevos son:• Ejecutable de Java• Una classpath• Una ruta de acceso de origen• Una ruta de acceso de

documento

12 Copyright © 2004, Oracle. Todos los derechos reservados.

Visualización de la Estructura de Directorio

Oracle JDeveloper crea y almacena los archivos .javay .class mediante la siguiente regla:• <ORACLE_HOME>\jdev\mywork• Seguido del nombre del

espacio de nombres• Seguido del nombre del proyecto

– \classes\<package name>\– \src\<package_name>\

• Seguido de archivos class y src

13 Copyright © 2004, Oracle. Todos los derechos reservados.

Exploración de la Aplicación Esqueleto JavaContiene clases de marco y de aplicación.

14 Copyright © 2004, Oracle. Todos los derechos reservados.

Búsqueda de Métodos y CamposBusque métodos y campos mediante el panel Structure.

15 Copyright © 2004, Oracle. Todos los derechos reservados.

Soporte del Desarrollo de Código con el Analizador de Perfil y CodeCoach

• Mejore la calidad del código con CodeCoach.• Evalúe la pila de ejecución con el analizador de perfil

Execution Sample.• Examine el uso de la memoria de pila con el analizador

de perfil Memory.• Analice la duración y la incidencia de eventos con el

analizador de perfil Event para:– Eventos JVM– Eventos Business Components for Java– Eventos personalizados

16 Copyright © 2004, Oracle. Todos los derechos reservados.

Personalización de JDeveloper

Personalice el IDE• Aspecto• Entorno general• Ventanas que se pueden mover• Paleta de componentes• Cargue mapas de teclas predefinidos

Cambie de nombre las clases y los paquetes mediante la reprogramación.

17 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso del Sistema de Ayuda

18 Copyright © 2004, Oracle. Todos los derechos reservados.

Obtención de Ayuda sobre un Tema

Utilice [F1] para llamar a la ayuda específica

del contexto.

19 Copyright © 2004, Oracle. Todos los derechos reservados.

Depurador de Oracle JDeveloper 10g

• Ayuda a buscar y a corregir errores de programa:– Errores de tiempo de ejecución– Errores de lógica

• Permite el control de ejecución.• Permite el examen de variables.

20 Copyright © 2004, Oracle. Todos los derechos reservados.

Definición de Puntos de Ruptura

Definición de puntos de ruptura:• Gestión de varios puntos de ruptura• Gestión de puntos de ruptura condicionales• Definición de las columnas que aparecen en la

ventana– Descripción– Tipo– Estado, etc.

• Control de ámbito de acción– Global > Espacio de trabajo > Proyecto

21 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de las Ventanas del Depurador

Visualización de información de depuración:• Classes: Muestra una lista de las clases cargadas y

el estado.• Watch: Evalúa y muestra las expresiones.• Monitors: Muestra información sobre los monitores

activos.• Threads: Muestra los nombres y los estados de

todos los threads.• Smart Data: Analiza el código de origen cercano al

punto de ejecución.• … etc.

22 Copyright © 2004, Oracle. Todos los derechos reservados.

Desplazamiento por un Programa

Desplácese por el programa mediante los botones de la barra de herramientas Debugger:• Iniciar el depurador.• Reanudar el programa.• Ir a la siguiente línea de código de la llamada al

método.• Ir a la primera línea ejecutable de la llamada al método.• Salir de la llamada al método.• Ir al final del método.• Realizar una pausa en la ejecución.• Parar el depurador.

23 Copyright © 2004, Oracle. Todos los derechos reservados.

Observación de Datos y Variables

• El separador Smart Data muestra los campos y las variables analizadas.

• El separador Data muestra los argumentos, las variables locales y los campos estáticos desde el contexto actual.

• Para observar otras variables:– Seleccione una variable en la ventana de origen y haga

clic con el botón derecho del mouse.– Seleccione Watch... at Cursor en el menú contextual.– Vea la variable en el separador Watch.– Haga clic con el botón derecho del mouse en un

elemento de datos para modificarlo.

24 Copyright © 2004, Oracle. Todos los derechos reservados.

Resumen

En esta lección, ha aprendido que:• Oracle JDeveloper crea, depura y ejecuta todos los

tipos de aplicaciones Java• Oracle JDeveloper se puede utilizar para desarrollar:

– Aplicaciones Java– Servlets Java– JSP– EJB

• JDeveloper se puede utilizar para crear aplicaciones empresariales

25 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica 6: Visión General

Esta práctica cubre:• Exploración del IDE de Oracle JDeveloper 10g• Creación de un espacio de trabajo y un proyecto • Inclusión de los archivos de aplicación de la lección

anterior

Copyright © 2004, Oracle. Todos los derechos reservados.1

Creación de Clases y Objetos

2 Copyright © 2004, Oracle. Todos los derechos reservados.

Objetivos

Al finalizar esta lección, debería estar capacitado para:• Definir métodos y variables de instancia• Definir el método de constructor no-arg (por defecto)• Instanciar clases y llamar a métodos de instancia• Realizar la encapsulación mediante paquetes para

agrupar clases relacionadas• Controlar el acceso con los modificadores de acceso

public y private• Utilizar métodos y variables de clase

3 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de Clases Java

Paquetes

Métodos Objetos

Referenciasde objetos

Atributos

Contenidos en una clase

4 Copyright © 2004, Oracle. Todos los derechos reservados.

título: “Gone with…”clasificación: “PG”

título: “Last Action…”clasificación: “PG-13”

Comparación de Clases y Objetos

• Un objeto es una instancia de una clase.

• Los objetos tienen su propia memoria.

• Se deben cargar las definiciones de clase para crear las instancias.

public void displayDetails()

private String title;

private String rating;

public void setRating()

Movie

mov1 mov2

5 Copyright © 2004, Oracle. Todos los derechos reservados.

Creación de Objetos

• Normalmente, los objetos se crean mediante el operador new:

• Por ejemplo, para crear dos objetos Movie:

Movie mov1 = new Movie("Gone ...");

Movie mov2 = new Movie("Last ...");

ClassName objectRef = new ClassName();

título: “Gone with…”clasificación: “PG”

título: “Last Action…”clasificación: “PG-13”

6 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso del Operador new

El operador new realiza las siguientes acciones:• Asigna e inicializa la memoria para el objeto

nuevo.• Llama a un método de inicialización especial en la

clase, denominado constructor.• Devuelve una referencia al objeto nuevo.

Movie mov1 = new Movie("Gone with…");

mov1(Cuando se ha instanciado)

título: “Gone with…”clasificación: “PG”

7 Copyright © 2004, Oracle. Todos los derechos reservados.

Comparación de Variables Primitivas y Variables de Objeto

Las variables primitivas contienen un valor.

int i;

int j = 3; Movie mov1 = new Movie();

Las variables de objetocontienen referencias.

título: nullclasificación: null

mov1

Movie mov1;

mov10

3

i

j

null

8 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de la Referencia null

• Se puede asignar un valor especial null a una referencia de objeto, pero no a un primitivo.

• Puede comparar las referencias de objeto en null. • Puede eliminar la asociación a un objeto definiendo la

referencia de objeto en null.

Movie mov1; //Declare object reference

if (mov1 == null) //Ref not initialized?mov1 = new Movie(); //Create a Movie object

mov1 = null; //Forget the Movie object

9 Copyright © 2004, Oracle. Todos los derechos reservados.

Asignación de Referencias

Si se asigna una referencia a otra, el resultado son dos referencias al mismo objeto:

Movie mov1 = new Movie("Gone...");

mov1

Movie mov2 = mov1;

mov2

título: “Gone with…”clasificación: “PG”

10 Copyright © 2004, Oracle. Todos los derechos reservados.

título: nullclasificación: null

título: nullclasificación: null

Declaración de Variables de Instancia

Las variables de instancia se declaran dentro de la clase, pero fuera de los métodos o de los inicializadores estáticos o de instancia.public class Movie {

public String title;

public String rating;

public float getPrice(){

return price;

}

}

Movie mov1 = new Movie();

Movie mov2 = new Movie();

mov2

mov1

Creación de objetos movie:

11 Copyright © 2004, Oracle. Todos los derechos reservados.

Acceso a Variables de Instancia de Tipo public

Se puede acceder a las variables de instancia de tipopublic mediante el operador dot:

public class Movie {

public String title;

public String rating;

}Movie mov1 = new Movie();

mov1.title = "Gone ...";

if (mov1.title.equals("Gone ... ") )

mov1.rating = "PG";

12 Copyright © 2004, Oracle. Todos los derechos reservados.

Definición de Métodos

Un método en Java es equivalente a una función o a una subrutina en otros lenguajes.

modifier returnType methodName (argumentList) {

// method body

};

13 Copyright © 2004, Oracle. Todos los derechos reservados.

Llamada a un Método

Los objetos se comunican mediante mensajes:• Todos los métodos se definen dentro de una clase y

no globalmente, como en los lenguajes tradicionales.• La llamada a un método siempre se produce en el

contexto de un objeto concreto.– myPen.write( ): Programación orientada a objetos– Write (myPen): Programación de estructura

tradicional

14 Copyright © 2004, Oracle. Todos los derechos reservados.

Especificación de Argumentos de Método: Ejemplos

• Especifique el número y el tipo de argumentos en la definición del método:

• Si el método no toma ningún argumento, deje los paréntesis vacíos:

public void displayDetails() {

System.out.println("Title is " + title);

System.out.println("Rating is " + rating);

}

public void setRating(String newRating) {

rating = newRating;

}

15 Copyright © 2004, Oracle. Todos los derechos reservados.

Devolución de un Valor desde un Método

• Utilice una sentencia return para salir de un método y devolver un valor desde un método:

• Si el tipo de retorno es void, no será necesario ningún retorno.

• Puede utilizar un retorno sin ningún valor para terminar un método con un tipo de retorno nulo.

public class Movie {private String rating;… public String getRating () {return rating

}}

16 Copyright © 2004, Oracle. Todos los derechos reservados.

Llamada a Métodos de Instancia

public class Movie {

private String title, rating;

public String getRating(){

return rating;

}

public void setRating(String newRating){

rating = newRating;

}

}Movie mov1 = new Movie();

String r = mov1.getRating();

if (r.equals("G")) …Utilice el operador dot:

17 Copyright © 2004, Oracle. Todos los derechos reservados.

Aplicación de Encapsulación en Java

• Las variables de instancia se deben declarar como private.

• Los métodos de instancia son los únicos que pueden acceder a variables de instancia de tipo private.

• private desacopla la interfaz de la clase de su operación interna.

Movie mov1 = new Movie();String rating = mov1.getRating();String r = mov1.rating; // error: private...

if (rating.equals("G"))

var

aMethod

aMethod()

18 Copyright © 2004, Oracle. Todos los derechos reservados.

Transferencia de Primitivos a Métodos

Cuando un valor de referencia de objeto o un valor primitivo se transfiere a un método, se genera una copia del valor:

public void aMethod(int arg) {

if (arg < 0 || arg > 100)

arg = 0;

System.out.println("arg: " + arg);

}

int num = 150;

anObj.aMethod(num);

System.out.println("num: " + num);

arg150

num150

19 Copyright © 2004, Oracle. Todos los derechos reservados.

título: “Gone with…”clasificación: “PG”

Transferencia de Referencias de Objeto a Métodos

Cuando se transfiere una referencia de objeto a un método, no se copia el objeto sino el puntero al objeto:

public void aMethod(Movie ref2) {

ref2.setRating("R");

}

mov1

ref2

Movie mov1 =

new Movie("Gone…");

mov1.setRating("PG");

anObj.aMethod(mov1);

20 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué Son las Variables de Clase?

Las variables de clase:• Pertenecen a una clase y son comunes a todas las

instancias de dicha clase.• Se declaran como estáticas en las definiciones de clase.public class Movie {

private static double minPrice; // class var

private String title, rating; // inst vars

variable de clase Movie objetos Movie

titlerating

titlerating

titlerating

minPrice

21 Copyright © 2004, Oracle. Todos los derechos reservados.

Inicialización de Variables de Clase

• Las variables de clase se pueden inicializar en la declaración.

• La inicialización se produce cuando se carga la clase.• Utilice un bloque de inicializador estático para la

inicialización compleja.• Todas las variables de clase se inicializan de forma

implícita en valores por defecto dependiendo del tipo de datos.

public class Movie {

private static double minPrice = 1.29;

private String title, rating;

private int length = 0;

22 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué Son los Métodos de Clase?

Los métodos de clase:• Los comparten todas las instancias.• Son útiles para manipular variables de clase.• Se declaran como estáticos.

Para llamar a un método de clase, se utiliza el nombre de la clase o una referencia de objeto.

public static void increaseMinPrice(double inc) {

minPrice += inc;

}

Movie.increaseMinPrice(.50);

mov1.increaseMinPrice(.50);

23 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica Guiada: Métodos de Claseo Métodos de Instancia

public class Movie {

private static float price = 3.50f;private String rating;…

public static void setPrice(float newPrice) {price = newPrice;

}public float getRating() {

return rating;}}

Movie.setPrice(3.98f); Movie mov1 = new Movie(…);mov1.setPrice(3.98f);float a = Movie.getRating();float b = mov1.getRating();¿Es válido o no?

24 Copyright © 2004, Oracle. Todos los derechos reservados.

Ejemplos en Java

Ejemplos de variables y métodos estáticos:• main()• Math.sqrt()• System.out.println()

public class MyClass {

public static void main(String[] args) {double num, root;… root = Math.sqrt(num);System.out.println("Root is " + root);

} …

25 Copyright © 2004, Oracle. Todos los derechos reservados.

Creación de Clases mediante el Editor de Clases

26 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué Son los Paquetes Java?

oe

Customer Order Util

OrderEntry OrderItem

27 Copyright © 2004, Oracle. Todos los derechos reservados.

Agrupamiento de Clases en un Paquete

• Incluya la palabra clave package seguida del nombre de paquete en la parte superior del archivo de origen Java. Utilice la notación de puntos para mostrar la ruta de acceso al paquete.

• Si omite la palabra clave package, el compilador coloca la clase en un paquete “sin nombre” por defecto.

• Utilice el indicador –d con el compilador javac para crear la estructura de árbol de paquete en relación al directorio especificado.

• La ejecución de un método main() en una clase empaquetada requiere:– Que CLASSPATH contenga el directorio que tiene

el nombre de raíz del árbol de paquete.– Que el nombre de clase se cualifique mediante su

nombre de paquete.

28 Copyright © 2004, Oracle. Todos los derechos reservados.

Definición de CLASSPATH con Paquetes

CLASSPATH incluye el directorio que contiene el nivel superior del árbol de paquete:

Nombre de paquete Ubicación de .class

C:\>set CLASSPATH=E:\Curriculum\courses\java\les06CLASSPATH

29 Copyright © 2004, Oracle. Todos los derechos reservados.

Modificadores de Acceso

private

protected

acmevideo acmetools

public public

30 Copyright © 2004, Oracle. Todos los derechos reservados.

Resumen

En esta lección, ha aprendido lo siguiente:• Una definición de clase especifica una plantilla para

la creación de objetos con funciones idénticas como, por ejemplo, métodos y variables de instancia.

• Un objeto es una instancia de una clase determinada.– Para crear un objeto, utilice el operador new.– Para manipular un objeto, utilice sus métodos de

instancia públicos.

31 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica 7: Visión General

Esta práctica cubre:• Definición de clases nuevas• Especificación de métodos de instancia y variables de

instancia de las clases• Creación de objetos Customer en main()• Manipulación de objetos Customer mediante métodos

de instancia públicos

Copyright © 2004, Oracle. Todos los derechos reservados.1

Clases Internas y Ciclo de Vida de Objetos

2 Copyright © 2004, Oracle. Todos los derechos reservados.

Objetivos

Al finalizar esta lección, debería estar capacitado para:• Proporcionar dos o más métodos con el mismo nombre

en una clase• Proporcionar uno o varios constructores para una clase• Utilizar inicializadores para inicializar variables de clase

y de instancia• Describir el proceso de carga y de inicialización de

clases, así como el ciclo de vida de los objetos• Definir y utilizar las clases internas

3 Copyright © 2004, Oracle. Todos los derechos reservados.

Métodos de Sobrecarga

• Varios métodos de una clase pueden tener el mismo nombre.

• Los métodos deben tener firmas distintas.

public class Movie {

public void setPrice() {

price = 3.50F;

}

public void setPrice(float newPrice) {

price = newPrice;

} …

}

Movie mov1 = new Movie();

mov1.setPrice();

mov1.setPrice(3.25F);

4 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de la Referencia this

Los métodos de instancia reciben un argumento denominado this, que hace referencia al objeto actual.

public class Movie {

public void setRating(String newRating) {

this.rating = newRating;

}

void anyMethod() {

Movie mov1 = new Movie();

Movie mov2 = new Movie();

mov1.setRating("PG"); …título: null

clasificación: nullmov2

mov1

título: nullclasificación: “PG”

this

5 Copyright © 2004, Oracle. Todos los derechos reservados.

Inicialización de Variables de Instancia

• Las variables de instancia se pueden inicializar de forma explícita en la declaración.

• La inicialización se produce en la creación del objeto.••••• Todas las variables de instancia se inicializan de

forma implícita en valores por defecto dependiendo del tipo de datos.

• La inicialización más compleja se debe colocar en un constructor.

public class Movie {

private String title;

private String rating = "G";

private int numOfOscars = 0;

6 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué Son los Constructores?

• Para que la inicialización sea correcta, una clase debe proporcionar un constructor.

• Cuando se crea un objeto, se llama automáticamente a un constructor:– Normalmente se declara como public. – Tiene el mismo nombre que la clase.– No debe especificar un tipo de retorno.

• El compilador especifica un constructor no-arg sólo si no se ha proporcionado de forma explícita ningún constructor.– Si se ha proporcionado de forma explícita algún

constructor, el compilador no genera el constructor no-arg.

7 Copyright © 2004, Oracle. Todos los derechos reservados.

Definición y Sobrecarga de Constructores

La clase Movieproporciona ahora dos constructores.

public class Movie {

private String title;

private String rating = "PG";

public Movie() {

title = "Last Action …";}

public Movie(String newTitle) {

title = newTitle;

}

}Movie mov1 = new Movie();

Movie mov2 = new Movie("Gone …");Movie mov3 = new Movie("The Good …");

8 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso Compartido de Código entre Constructores

Un constructorpuede llamar a otromediante this().

¿Qué ocurre aquí?

Movie mov2 = new Movie();

public class Movie {

private String title;

private String rating;

public Movie() {

this("G");

}

public Movie(String newRating) {

rating = newRating;

}

}

9 Copyright © 2004, Oracle. Todos los derechos reservados.

Clases, Métodos y Variables final

• Una variable final es una constante y no se puede modificar.– Por lo tanto, se debe inicializar.– Se suele declarar como public static para uso

externo.• Un método final no se puede sustituir por una

subclase.• Una clase final no se puede subclasificar.public final class Color {

public final static Color black=new Color(0,0,0);

}

10 Copyright © 2004, Oracle. Todos los derechos reservados.

Reclamación de Memoria

• Cuando se han perdido todas las referencias a un objeto, el objeto se marca para la recopilación de desechos.

• La recopilación de desechos reclama la memoria que utiliza el objeto.

• La recopilación de desechos es automática.• No es necesario que el programador haga nada, pero

puede ofrecer una indicación a System.gc();.

11 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso del Método finalize()

• Si un objeto contiene un recurso como, por ejemplo, un archivo, el objeto debe ser capaz de limpiarlo.

• Puede proporcionar un método finalize() en la clase.• Se llama al método finalize() justo antes de la

recopilación de desechos.

¿Algún problema?

public class Movie {

public void finalize() {

System.out.println("Goodbye");

}

}

12 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué Son las Clases Internas?

• Las clases internas son clases anidadas que se definen en una clase o en un método.

• Fuerzan una relación entre dos clases.• Pueden ser de cuatro tipos:

– Estática– Miembro– Local– Anónima

Clase delimitadora

public class Outer { …

class Inner { …

}

}

13 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de Clase Interna de Miembro

• Se declara dentro de otra clase.• Se permite el anidamiento.• Puede acceder a variables dentro de su propia

clase y de cualquier clase delimitadora. • Sólo puede declarar métodos estáticos final.public class CalendarPopup {...class MonthSelector {

class DayOfMonth{...};DayOfMonth[] NumberOfDaysInMonth...

}}

14 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de la Clase Interna Local

• Se declara dentro de un bloque de código (dentro de un método).

• Todos los parámetros o variables finaldeclarados en el bloque son accesibles para los métodos de la clase interna.

public class CalendarPopup {...public void handlerMethod(){

class DateHandler{…};DateHandler sc = new DateHandler();...

}}

15 Copyright © 2004, Oracle. Todos los derechos reservados.

Definición de Clases Internas Anónimas

• Se definen en el nivel de método.• Se declaran dentro de un bloque de código.• No tienen las palabras clave class, extends e

implements.• No pueden tener un constructor.public class Outer {...public void outerMethod(){

...myObject.myAnonymous(new SomeOtherClass(){...} )

}}

16 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de la Clase Calendar

• Se convierte entre un objeto de fecha y un juego de campos de enteros.

• Representa un momento concreto en el tiempo.• Las subclases interpretan una fecha de acuerdo

con el sistema de calendario específico.public class Order {...public void String getShipDate(){

...Calendar c = Calendar.getInstance();c.setTime(orderDate); ...} )

}}

17 Copyright © 2004, Oracle. Todos los derechos reservados.

Resumen

En esta lección, ha aprendido lo siguiente:• Los métodos se pueden sobrecargar en Java.• Los métodos de instancia reciben una referencia

this al objeto actual.• La mayoría de las clases proporcionan uno o varios

constructores para inicializar objetos nuevos.• Las variables de clase y los métodos de clase se

pueden definir para comportamientos y propiedades de toda la clase.

• Las clases se pueden definir de varias formas dentro de una clase.

18 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica 8: Visión General

Esta práctica cubre:• Definición y uso de métodos sobrecargados• Uso de un constructor no-arg para una clase• Uso de constructores adicionales para una clase• Definición de variables estáticas y métodos

estáticos para el comportamiento de toda la clase• Uso de métodos estáticos

Copyright © 2004, Oracle. Todos los derechos reservados.1

Uso de Clases String, StringBuffer, Wrapper y de Formato de Texto

2 Copyright © 2004, Oracle. Todos los derechos reservados.

Objetivos

Al finalizar esta lección, debería estar capacitado para:• Crear cadenas en Java• Utilizar los métodos de conversión que proporcionan

las clases wrapper predefinidas• Utilizar la clase StringBuffer para manipular datos

de caracteres• Introducir las clases DateFormat, DecimalFormat y

MessageFormat

• Examinar la salida estándar y la serialización

3 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué Es String?

• String es una clase.• Un objeto String contiene una secuencia de

caracteres.• Los objetos String son de sólo lectura (inmutables);

sus valores no se pueden cambiar después de la creación.

• La clase String representa todas las cadenas de Java.

4 Copyright © 2004, Oracle. Todos los derechos reservados.

Creación de String

• Asigne una constante entre comillas dobles a una variable String:

• Concatene otras cadenas:

• Utilice un constructor:

String category = "Action";

String empName = firstName + " " + lastName;

String empName = new String(“Bob Smith");

5 Copyright © 2004, Oracle. Todos los derechos reservados.

Concatenación de Cadenas

• Utilice el operador + para concatenar cadenas.

• Puede concatenar primitivos y cadenas.

• La clase String tiene un método de instancia concat() que se puede utilizar para concatenar cadenas.

System.out.println("Name = " + empName);

int age = getAge();

System.out.println("Age = " + age);

6 Copyright © 2004, Oracle. Todos los derechos reservados.

Realización de Operaciones en Cadenas

• Búsqueda de la longitud de una cadena:

• Búsqueda del carácter en un índice específico:

• Devolución de una subcadena de la cadena:

int length(); String str = "Comedy";

int len = str.length();

char charAt(int index); String str = "Comedy";

char c = str.charAt(1);

String substring

(int beginIndex,

int endIndex);

String str = "Comedy";

String sub =

str.substring(2,4);

7 Copyright © 2004, Oracle. Todos los derechos reservados.

Realización de Operaciones Adicionales en Cadenas

• Conversión en mayúsculas o en minúsculas:

• Recorte de espacio en blanco:

• Búsqueda del índice de una subcadena:

String toUpperCase();

String toLowerCase();

String caps =

str.toUpperCase();

String trim(); String nospaces =

str.trim();

int indexOf (String str);

int lastIndexOf

(String str);

int index =

str.indexOf("me");

8 Copyright © 2004, Oracle. Todos los derechos reservados.

Comparación de Objetos String

• Utilice equals() si desea tener en cuenta las mayúsculas/minúsculas:

• Utilice equalsIgnoreCase() si desea ignorar las mayúsculas/minúsculas:

• No utilice ==.

String passwd = connection.getPassword();

if (passwd.equals("fgHPUw"))… // Case is important

String cat = getCategory();

if (cat.equalsIgnoreCase("Drama"))…

// We just want the word to match

9 Copyright © 2004, Oracle. Todos los derechos reservados.

Producción de Cadenas desde Otros Objetos

• Utilice el método Object.toString().• La clase puede sustituir a toString().

• System.out.println() llama automáticamente al método toString() de un objeto si se le transfiere la referencia.

public Class Movie {…

public String toString () {

return name + " (" + Year + ")";

}…

Movie mov = new Movie(…);

System.out.println(mov);

10 Copyright © 2004, Oracle. Todos los derechos reservados.

Producción de Cadenas desde Primitivos

• Utilice String.valueOf():

• Existe una versión de System.out.println()para cada tipo primitivo:

int count;

System.out.println(count);

String seven = String.valueOf(7);

String onePoint0 = String.valueOf(1.0f);

11 Copyright © 2004, Oracle. Todos los derechos reservados.

Producción de Primitivos desde Cadenas

• Utilice las clases wrapper primitivas.• Existe una clase wrapper para cada tipo primitivo:

– Integer ajusta el tipo int.– Float ajusta el tipo float.– Character ajusta el tipo char.– Boolean ajusta el tipo boolean.– Etc.

• Las clases wrapper proporcionan métodos para convertir un String en un primitivo y un primitivo en un String.

12 Copyright © 2004, Oracle. Todos los derechos reservados.

Métodos de Conversión de Clases Wrapper

Ejemplo: Utilice los métodos para procesar datos de campos según se declaran.

String qtyVal = "17";

String priceVal = "425.00";

int qty = Integer.parseInt(qtyVal);

float price = Float.parseFloat(priceVal);

float itemTotal = qty * price;

13 Copyright © 2004, Oracle. Todos los derechos reservados.

Cambio del Contenido de una Cadena

• Utilice la clase StringBuffer para cadenas modificables de caracteres:

• Utilice StringBuffer si necesita seguir agregando caracteres a una cadena.

Nota: StringBuffer tiene un método reverse().

public String reverseIt(String s) {

StringBuffer sb = new StringBuffer();

for (int i = s.length() - 1; i >= 0; i--)

sb.append(s.charAt(i));

return sb.toString();

}

14 Copyright © 2004, Oracle. Todos los derechos reservados.

Formato de Clases

El paquete java.text contiene:• Una clase abstracta denominada Format con el

método format() mostrado en el siguiente ejemplo:

• Clases que formatean información sensible al código local como, por ejemplo, fechas, números y mensajes– DateFormat, NumberFormat y MessageFormat

public abstract class Format … {public final String format(Object obj){//Formats an object and produces a string. }…

}

15 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de la Clase SimpleDateFormat

SimpleDateFormat:• Es una clase concreta para el formato y el análisis de

fechas de un modo sensible al código local.• Permite comenzar seleccionando cualquier patrón

definido por el usuario para el formato de fecha-hora.• Utiliza una cadena de patrón de tiempo para visualizar

la fecha:– y año 1996– M mes del año July o 07– m minuto de la hora 30

16 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de la Clase MessageFormat

MessageFormat:• Es una clase concreta para construir mensajes

que se adaptan al idioma y que se muestran para los usuarios finales

• Toma un juego de objetos, los formatea y, a continuación, inserta las cadenas formateadas en los lugares adecuados del patrón

• Se diferencia de otras clases de Format en que es el usuario el que crea los objetos MessageFormat

• Se define normalmente de manera dinámica en tiempo de ejecución

17 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de DecimalFormat

DecimalFormat:• Es una subclase concreta de NumberFormat para el

formato de números decimales.• Permite la utilización de una gran variedad de

parámetros y la localización a números de juegos occidentales, de Oriente Medio y de Extremo Oriente.

• Utiliza la notación numérica estándar en el formato.

public DecimalFormat(String pattern);

18 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica Guiada:

1. ¿Cuál es la salida de cada fragmento de código?a.

b.

String s = new String("Friday");

if(s == "Friday")

System.out.println("Equal A");

if(s.equals("Friday"))

System.out.println("Equal B");

int num = 1234567;

System.out.println(String.valueOf(num).charAt(3));

19 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica Guiada:

2. ¿Cuál es la salida de cada fragmento de código?a.

b.

String s1 = "Monday";

String s2 = "Tuesday";

System.out.println(s1.concat(s2).substring(4,8));

// s3 begins with 2 spaces and ends with 2 spaces

String s3 = " Monday ";

System.out.println(s3.indexOf("day"));

System.out.println(s3.trim().indexOf("day"));

20 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de Expresiones Normales

• Hace coincidir secuencias de caracteres con patrones especificados mediante expresiones normales

• Incluye una clase Matcher que es la que realiza las operaciones de coincidencia

• Emplea una clase Pattern para proporcionar una representación compilada de una expresión normal

Pattern p = Pattern.compile("a*b");

Matcher m = p.matcher("aaaaab");

boolean b = m.matches();

21 Copyright © 2004, Oracle. Todos los derechos reservados.

Acerca de System.out.println

Comprensión de System.out.println()• System es una clase del paquete java.lang.• out es una variable public final static (de clase).

– Se declara como una referencia de objeto PrintStream.• println() es un método sobrecargado de la clase

PrintStream.– PrintStream pertenece a FilterOutputStream,

subclase de OutputStream.• System.err también se proporciona como una

referencia de objeto PrintStream para escribir en un error estándar.

22 Copyright © 2004, Oracle. Todos los derechos reservados.

Acerca de OutputStream y PrintStream

• OutputStream proporciona operaciones de E/S de byte básicas:– write(int b) para escribir un byte– write(byte[] b) para escribir una matriz de bytes– write(byte[] b,int off,int len) para escribir un

subjuego de una matriz de bytes– flush() y close() para vaciar y cerrar el flujo

• PrintStream es una subclase de (Filter)Output Stream, que– Convierte Unicode en codificación byte de entorno.– Termina las líneas de un modo independiente de la

plataforma.– Vacía el flujo de salida.

23 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué Es la Serialización de Objetos?

La serialización es un mecanismo de persistencia sencilla para guardar y restaurar flujos de bytes que contengan primitivos y objetos.• Una clase indica que sus instancias se pueden

serializar:– Mediante la implementación de la interfaz

java.io.Serializable o java.io.Externalizable– Asegurando que todos sus campos son serializables,

incluidas otras referencias de objeto– Mediante el modificador transient para evitar que los

campos se guarden y se restauren

24 Copyright © 2004, Oracle. Todos los derechos reservados.

Modificadores, Interfaces y Flujosde Serialización

• Ejemplo de implementación de java.io.Serializable– Marque los campos con el modificador transient para

evitar que se guarden; es decir, para proteger la información.

• Escriba el objeto con java.io.ObjectOutputStream.• Lea el objeto con java.io.ObjectInputStream.

import java.io.Serializable;public class Member implements Serializable {private int id;private String name;private transient String password;…

}

25 Copyright © 2004, Oracle. Todos los derechos reservados.

Resumen

En esta lección ha aprendido a:• Crear cadenas en Java• Utilizar los métodos de conversión que proporcionan

las clases wrapper predefinidas• Utilizar la clase StringBuffer para manipular datos

de caracteres• Manipular objetos mediante las clases DateFormat,

DecimalFormat y MessageFormat

26 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica 9: Visión General

Esta práctica cubre:• Creación de una clase Order nueva• Relleno y formato de orderDate• Formato de valores orderDate existentes con la

clase GregorianCalendar• Formato de orderTotal

Copyright © 2004, Oracle. Todos los derechos reservados.1

Reutilización de Código con Herenciay Polimorfismo

2 Copyright © 2004, Oracle. Todos los derechos reservados.

Objetivos

Al finalizar esta lección, debería estar capacitado para:• Definir el concepto de herencia• Utilizar la herencia para definir clases nuevas• Proporcionar constructores adecuados• Sustituir los métodos de la superclase• Describir qué es el polimorfismo• Utilizar el polimorfismo de forma eficaz

3 Copyright © 2004, Oracle. Todos los derechos reservados.

Componentes Orientados a Objetos Clave

• Herencia• Constructores a los que hace referencia la subclase• Polimorfismo• La herencia como concepto fundamental en la

orientación a objetos

InventoryItem

Movie Game Vcr

Superclase

Subclases

4 Copyright © 2004, Oracle. Todos los derechos reservados.

Ejemplo de Herencia

• La clase InventoryItem define métodos y variables.

• Movie amplía InventoryItem y puede:– Agregar variables nuevas– Agregar métodos nuevos– Sustituir los métodos de la clase InventoryItem

InventoryItem

Movie

5 Copyright © 2004, Oracle. Todos los derechos reservados.

Especificación de la Herencia en Java

• La herencia se define especificando qué superclase amplía la subclase.

• Movie hereda todas las variables y todos los métodos de InventoryItem.

• Si falta la palabra clave extends, java.lang.Objectes la superclase implícita.

public class InventoryItem {

}public class Movie extends InventoryItem {

}

6 Copyright © 2004, Oracle. Todos los derechos reservados.

Definición de Herencia mediante Oracle JDeveloper 10g

• Al especificar una clase, Oracle JDeveloper pide su superclase:

• Oracle JDeveloper genera el código automáticamente.

7 Copyright © 2004, Oracle. Todos los derechos reservados.

Movie

duración depelícula

condición deprecio

¿Qué Aspecto Tiene un Objeto de Subclase?

Una subclase hereda todas las variables de instancia de su superclase.

public class

Movie extends InventoryItem {

private String title;

private int length; …

}

public class InventoryItem {

private float price;

private String condition; …

}

8 Copyright © 2004, Oracle. Todos los derechos reservados.

Inicialización por Defecto

• ¿Qué ocurre cuando se crea un objeto de subclase?

• Si no se ha definido ningún constructor:– En primer lugar, se llama al

constructor no-arg por defecto en la superclase.

– A continuación, se llama al constructor no-arg por defecto en la subclase.

Movie movie1 = new Movie(); Movie

duración depelícula

condición deprecio

9 Copyright © 2004, Oracle. Todos los derechos reservados.

Referencia super

• Hace referencia a la clase base de nivel superior.• Resulta útil para llamar a constructores de clase base.• Debe ser la primera línea del constructor de la clase

derivada.• Se puede utilizar para llamar a cualquier método de

clase base.

10 Copyright © 2004, Oracle. Todos los derechos reservados.

Ejemplo de Referencia super

public class InventoryItem {

InventoryItem(String cond) {

System.out.println("InventoryItem");

}

}

class Movie extends InventoryItem {

Movie(String title) {

Movie(String title, String cond)

{super(cond);

System.out.println("Movie");

}

}

Constructor de clase base

Llama al constructor

de la clase base

11 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de Constructores de Superclase

Utilice super() para llamar a un constructor de superclase:

public class InventoryItem {

InventoryItem(float p, String cond) {

price = p;

condition = cond;

} … public class Movie extends InventoryItem {

Movie(String t, float p, String cond) {

super(p, cond);

title = t;

} …

12 Copyright © 2004, Oracle. Todos los derechos reservados.

Especificación de Métodos Adicionales

• La superclase define métodos para todos los tipos de InventoryItem.

• La subclase puede especificar métodos adicionales que sean específicos de Movie.

public class InventoryItem {

public float calcDeposit()…

public String calcDateDue()…

… public class Movie extends InventoryItem {

public void getTitle()…

public String getLength()…

13 Copyright © 2004, Oracle. Todos los derechos reservados.

Sustitución de Métodos de Superclase

• Una subclase hereda todos los métodos de su superclase.

• La subclase puede sustituir un método por su propia versión especializada.– El método de la subclase debe tener la misma firma y

la misma semántica que el método de la superclase.

public class InventoryItem {

public float calcDeposit(int custId) {

if …

return itemDeposit;

}

public class Vcr extends InventoryItem {

public float calcDeposit(int custId) {

if …

return itemDeposit;

}

14 Copyright © 2004, Oracle. Todos los derechos reservados.

Llamada a Métodos de Superclase

• Si una subclase sustituye un método, puede seguir llamando al método de superclase original.

• Utilice super.method() para llamar a un método de superclase desde la subclase.

public class InventoryItem {

public float calcDeposit(int custId) {

if …

return 33.00;

}

public class Vcr extends InventoryItem {

public float calcDeposit(int custId) {

itemDeposit = super.calcDeposit(custId);

return (itemDeposit + vcrDeposit);

}

15 Copyright © 2004, Oracle. Todos los derechos reservados.

Ejemplo de Polimorfismo en Java

Recuerde que la clase java.lang.Object es la clase raíz de todas las clases Java.• Los métodos de la clase Object son heredados

por sus subclases.• El método toString() se suele sustituir para

conseguir el comportamiento polimórfico.• Por ejemplo: public class InventoryItem {

public String toString() {

return "InventoryItem value";

}

}InventoryItem item = new InventoryItem();

System.out.println(item); // toString() called

16 Copyright © 2004, Oracle. Todos los derechos reservados.

Trato de una Subclase como su Superclase

Una instancia de objeto Java de una subclase se puede asignar a su definición de superclase.• Puede asignar un objeto de subclase a una

referencia declarada en la superclase.

• El compilador trata el objeto mediante su referencia (es decir, en función de su definición de superclase).

• El entorno de tiempo de ejecución de JVM crea un objeto de subclase, ejecutando los métodos de subclase, si se han sustituido.

public static void main(String[] args) {

InventoryItem item = new Vcr();

double deposit = item.calcDeposit();

}

17 Copyright © 2004, Oracle. Todos los derechos reservados.

Examen de Referencias de Superclasemediante Oracle JDeveloper 10g

Oracle JDeveloper facilita el examen del contenido de la superclase.

3

1

2

18 Copyright © 2004, Oracle. Todos los derechos reservados.

Acme Video y Polimorfismo

• Acme Video empezó alquilando solamente vídeos.• Acme Video agregó juegos y reproductores de vídeos.• ¿Qué será lo siguiente?• El polimorfismo soluciona este problema.

19 Copyright © 2004, Oracle. Todos los derechos reservados.

ShoppingBasket

Uso del Polimorfismo para Acme Video

void addItem(InventoryItem item) {

// this method is called each time

// the clerk scans in a new item

float deposit = item.calcDeposit();

}

InventoryItem

Vcr Movie

calcDeposit(){…}

calcDeposit(){…}calcDeposit(){…}

20 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso del Operador instanceof

• Puede determinar el tipo verdadero de un objeto mediante un operador instanceof.

• Una referencia de objeto puede realizar una conversión al tipo correcto, si fuera necesario.

public void aMethod(InventoryItem i) {

if (i instanceof Vcr)

((Vcr)i).playTestTape();

}

21 Copyright © 2004, Oracle. Todos los derechos reservados.

Limitación de Métodos y Clases con final

• Puede marcar un método como final para evitar que se sustituya.

• Puede marcar una clase entera como final para evitar que se amplíe.

public final class Color {

}

public final boolean checkPassword(String p) {

}

22 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de la Herencia Real

• La herencia sólo se debe utilizar para relaciones “es un tipo de” (“is-a-kind-of”) reales:– Debe ser siempre posible sustituir un objeto de

subclase por uno de superclase.– Todos los métodos de la superclase deben tener

sentido en la subclase.• El uso de la herencia como solución a corto plazo

provoca problemas en el futuro.

23 Copyright © 2004, Oracle. Todos los derechos reservados.

Resumen

En esta lección, ha aprendido lo siguiente:• Una subclase hereda todas las variables y todos los

métodos de su superclase.• Puede especificar métodos y variables adicionales y

sustituir los métodos. • Una subclase puede llamar a un método de

superclase sustituido mediante super.• El polimorfismo garantiza que se llama a la versión

adecuada de un método en tiempo de ejecución.

24 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica 10: Visión General

Esta práctica cubre:• Definición de subclases de Customer• Utilización de constructores de subclase• Adición de métodos nuevos a las subclases• Sustitución de métodos de superclase existentes

Copyright © 2004, Oracle. Todos los derechos reservados.1

Uso de Matrices y Recopilaciones

2 Copyright © 2004, Oracle. Todos los derechos reservados.

Objetivos

Al finalizar esta lección, debería estar capacitado para:• Describir cómo se crean matrices de primitivos y

objetos• Procesar variables de línea de comandos• Trabajar con vectores• Explorar otras recopilaciones Java como, por

ejemplo, Enumerators, Iterators, ArrayListsy Hashtables

• Procesar las propiedades de sistema y de línea de comandos

3 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué es una Matriz?

Una matriz es una recopilación de variables del mismo tipo.• Cada elemento puede contener un único elemento.• Los elementos pueden ser primitivos o referencias

de objeto.• La longitud de la matriz se fija durante su creación.

1

2

4

8

[0]

[1]

[2]

[3]

Acción

Comedia

Drama

[0]

[1]

[2]

4 Copyright © 2004, Oracle. Todos los derechos reservados.

Creación de una Matriz de Primitivos

1. Declare la matriz:

type es un primitivo, como int, etc.2. Cree el objeto de matriz:

3. Inicialice los elementos de matriz (opcional).

NullarrayName

arrayName1

2

4

0

0

0

arrayName

type[] arrayName;

… or …

type arrayName[];

// Create array object syntax

arrayName = new type[size];

5 Copyright © 2004, Oracle. Todos los derechos reservados.

Declaración de una Matriz de Primitivos

• Cree una variable para hacer referencia al objeto de matriz:

• Cuando se declara una variable de matriz:– Su variable de instancia se inicializa en null hasta

que se haya creado el objeto de matriz

– Su variable de método es desconocida hasta que se cree el objeto

int[] powers; // Example

nullpowers

6 Copyright © 2004, Oracle. Todos los derechos reservados.

Creación de un Objeto de Matriz para una Matriz de Primitivos

• Cree una matriz de la longitud necesaria y asígnela a la variable de matriz:––

– El objeto de matriz se crea mediante el operador new.• El contenido de una matriz de primitivos se

inicializa automáticamente.

int[] powers; // Declare array variable

powers = new int[4]; //Create array object

powers 0000

7 Copyright © 2004, Oracle. Todos los derechos reservados.

Inicialización de Elementos de Matriz

• Asigne valores a cada elemento:

• Cree e inicialice las matrices al mismo tiempo:

int[] primes = {2, 3, 5, 7};

type[] arrayName = {valueList};

primes[0][1][2]

2357 [3]

arrayName[index] = value;

powers[0] = 1;powers

[0][1][2]

1000 [3]

8 Copyright © 2004, Oracle. Todos los derechos reservados.

Creación de una Matriz de Referencias Object

1. Declare la matriz:

2. Cree el objeto de matriz:

3. Inicialice los objetos de la matriz.

nullarrVar

null

null

null

arrVar

Acción

Comedia

Drama

arrVar

ClassName[] arrVar;

… or …

ClassName arrVar[];

// Create array object syntax

arrVar = new ClassName[size];

9 Copyright © 2004, Oracle. Todos los derechos reservados.

Inicialización de Objetos de Matriz

• Asigne un valor a cada elemento de la matriz:

• Cree e inicialice la matriz al mismo tiempo:

String[] categories =

{"Action", "Comedy", "Drama"};

// Create an array of four empty Strings

String[] arr = new String[4];

for (int i = 0; i < arr.length; i++) {

arr[i] = new String();

}

10 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de una Matriz de Referencias Object

• Cualquier elemento se puede asignar a un objeto del tipo correcto:

• Cada elemento se puede tratar como un objeto individual:

• Un elemento de matriz se puede transferir a cualquier método; los elementos de matriz se transfieren por referencia.

System.out.println

("Length is " + categories[2].length());

String category = categories[0];

11 Copyright © 2004, Oracle. Todos los derechos reservados.

Matrices y Excepciones

• ArrayIndexOutOfBoundsException se produce si un índice de matriz no es válido:

• NullPointerException se produce si intenta acceder a un elemento que no se haya inicializado:

Movie[] movieList = new Movie[3];

// The following will throw NullPointerException

String director = movieList[0].getDirector();

String[] list = new String[4];//The following throws ArrayIndexOutOfBoundsExceptionSystem.out.println(list[4]);

12 Copyright © 2004, Oracle. Todos los derechos reservados.

Matrices Multidimensionales

Java soporta matrices de matrices:

type[][] arrayname = new type[n1][n2];

int[][] mdarr = new int[4][2];

mdarr[0][0] = 1;

mdarr[0][1] = 7;

[0]

[1]

[2]

[3]

1 7

0 0

0 0

0 0

mdarr

[0][0] [0][1]

13 Copyright © 2004, Oracle. Todos los derechos reservados.

Revisión de main()

• main() tiene un único parámetro, args.• args es una matriz de objetos String que

contiene parámetros de línea de comandos:

public class SayHello {

public static void main(String[] args) {

if (args.length != 2)

System.out.println("Specify 2 arguments");

else

System.out.println(args[0]+" "+args[1]);

} …

C:\> java SayHello Hello World

14 Copyright © 2004, Oracle. Todos los derechos reservados.

Trabajo con Estructuras de Longitud Variable

La clase Vector implementa una matriz “redimensionable” de cualquier tipo de objeto:• Creación de un vector vacío:

• Creación de un vector con un tamaño inicial:

Vector members = new Vector();

// Create a vector with 10 elements. The vector //

can be expanded later.

Vector members = new Vector(10);

15 Copyright © 2004, Oracle. Todos los derechos reservados.

Modificación de un Vector

• Adición de un elemento al final del vector:

• Adición de un elemento en una posición específica:

• Eliminación del elemento en un índice específico:

String name = MyMovie.getNextName();

members.addElement(name);

// Remove the first element

members.removeElementAt(0);

// Insert a string at the beginning

members.insertElementAt(name, 0);

16 Copyright © 2004, Oracle. Todos los derechos reservados.

Acceso a un Vector

• Obtención del primer elemento:

• Obtención de un elemento en una posición específica:

• Búsqueda de un objeto en un vector:

• Obtención del tamaño de un vector:

String s = (String)members.firstElement();

int size = members.size();

String s = (String)members.elementAt(2);

int position = members.indexOf(name);

17 Copyright © 2004, Oracle. Todos los derechos reservados.

Java Collections Framework

Java Collections Framework es una arquitectura de API para la gestión de un grupo de objetos que se pueden manipular independientemente de su implementación interna. Esta arquitectura:• Se encuentra en el paquete java.util.• Se define mediante seis interfaces principales y

algunas clases de implementación:– Interfaz Collection: Grupo genérico de elementos– Interfaz Set: Grupo de elementos únicos– Interfaz List: Grupo ordenado de elementos– Interfaz Map: Grupo de claves únicas y sus valores– SortedSet y SortedMap para Set y Map ordenados

18 Copyright © 2004, Oracle. Todos los derechos reservados.

Componentes de Collections Framework

Collections Framework es un juego de interfaces y clases que se utiliza para almacenar y manipular grupos de datos como una sola unidad.• Las interfaces principales son las interfaces que

se utilizan para manipular las recopilaciones y para transferirlas de un método a otro.

• Las implementaciones son los objetos de datos reales que se utilizan para almacenar las recopilaciones, que implementan la interfaz de recopilación principal.

• Los algoritmos son partes de funciones reutilizables que proporciona JDK.

19 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de ArrayList y Hashtable

La clase ArrayList:• Es una implementación redimensionable de la

interfaz List.• Permite la manipulación del tamaño de la matriz.• Tiene una capacidad que aumenta a medida que

se agregan elementos a la lista.La clase Hashtable:• Es una clase heredada similar a las

implementaciones Map.• Se utiliza para almacenar objetos arbitrarios

indexados por otro objeto arbitrario.• Se utiliza normalmente con String como clave

para almacenar objetos como valores.

20 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de Iterators

La interfaz Iterator, que es parte de Java Collections Framework, se puede utilizar para procesar una serie de objetos. La interfaz java.util.Iterator:• Implementa un enfoque orientado a objetos para

acceder a los elementos de una recopilación• Sustituye al enfoque java.util.Enumeration• Contiene los siguientes métodos:

– hasNext() devuelve true si existen más elementos.– next() devuelve el siguiente objeto, si hay alguno.– remove() elimina el último elemento devuelto.

21 Copyright © 2004, Oracle. Todos los derechos reservados.

Resumen

En esta lección ha aprendido a:• Crear matrices Java de primitivos• Crear matrices de referencias de objeto• Inicializar matrices de primitivos o referencias de

objeto• Procesar argumentos de línea de comandos en el

método main()• Utilizar el objeto Vector para implementar

matrices redimensionables• Utilizar clases ArrayList y Hashtable

22 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica 11: Visión General

Esta práctica cubre:• Modificación de la clase DataMan

– Creación de una matriz que contenga los objetos Customer, Company e Individual

– Adición de un método para garantizar que la matriz se crea y se inicializa correctamente

– Adición de un método para buscar un cliente mediante un valor de identificación

Copyright © 2004, Oracle. Todos los derechos reservados.1

Estructuración de Código medianteInterfaces y Clases Abstractas

2 Copyright © 2004, Oracle. Todos los derechos reservados.

Objetivos

Al finalizar esta lección, debería estar capacitado para:• Definir clases abstractas• Definir métodos abstractos• Definir interfaces• Implementar interfaces

3 Copyright © 2004, Oracle. Todos los derechos reservados.

Definición de Clases Abstractas

• Una clase abstracta no se puede instanciar.• Las subclases deben implementar los métodos

abstractos.• Las interfaces soportan la herencia múltiple.

Superclase abstracta

Subclases concretas

InventoryItem

Movie VCR

4 Copyright © 2004, Oracle. Todos los derechos reservados.

Creación de Clases Abstractas

Utilice la palabra clave abstract para declarar una clase como abstracta.

public abstract class InventoryItem {

private float price;

public boolean isRentable()…

}

public class Movie

extends InventoryItem {

private String title;

public int getLength()…

public class Vcr

extends InventoryItem {

private int serialNbr;

public void setTimer()…

5 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué Son los Métodos Abstractos?

• Un método abstracto:– Es una variable pendiente de implementación.– Forma parte de una clase abstracta.– Una subclase concreta lo debe sustituir.

• Cada subclase concreta puede implementar el método de un modo distinto.

6 Copyright © 2004, Oracle. Todos los derechos reservados.

Definición de Métodos Abstractos

• Utilice la palabra clave abstract para declarar un método como abstracto:– Proporcione sólo la firma del método.– La clase también debe ser abstracta.

• ¿Por qué resulta útil?– Declare la estructura de una clase determinada sin

proporcionar una implementación completa de cada método.

public abstract class InventoryItem {

public abstract boolean isRentable();

7 Copyright © 2004, Oracle. Todos los derechos reservados.

Definición y Uso de Interfaces

• Una interfaz es como una clase totalmente abstracta:– Todos sus métodos son abstractos.– Todas las variables se declaran como public static

final.• Una interfaz enumera un juego de firmas de método

sin ningún detalle de código.• La clase que implementa la interfaz debe proporcionar

detalles de código para todos los métodos de la interfaz.

• Una clase puede implementar muchas interfaces, pero sólo puede ampliar una clase.

8 Copyright © 2004, Oracle. Todos los derechos reservados.

Ejemplos de Interfaces

• Las interfaces describen un aspecto del comportamiento que requieren clases distintas.

• Por ejemplo, las clases que se pueden direccionar soportan la interfaz “direccionable”.

• Las clases pueden no estar relacionadas.

DireccionableNo direccionable

9 Copyright © 2004, Oracle. Todos los derechos reservados.

Creación de Interfaces

• Utilice la palabra clave interface:

• Todos los métodos se declaran como public abstract.

• Todas las variables se declaran como public static final.

public interface Steerable {

int MAXTURN = 45;

void turnLeft(int deg);

void turnRight(int deg);

}

10 Copyright © 2004, Oracle. Todos los derechos reservados.

Implementación de Interfaces

Utilice la palabra clave implements:

public class Yacht extends Boat

implements Steerable {

public void turnLeft(int deg) {…}

public void turnRight(int deg) {…}

}

11 Copyright © 2004, Oracle. Todos los derechos reservados.

Ordenación: Ejemplo del Mundo Real

• Varias clases no relacionadas la utilizan.• Contiene un juego conocido de métodos.• Es necesaria para ordenar cualquier tipo de objeto.• Utiliza las reglas de comparación conocidas sólo en

el objeto ordenable.• Soporta la reutilización correcta del código.

12 Copyright © 2004, Oracle. Todos los derechos reservados.

Visión General de las Clases

• Las crea el experto en ordenación:

• Las crea el experto en películas:

public classMyApplication

public class Movieimplements Sortable

public interface Sortable

public abstract class Sort

13 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Cómo Funciona la Ordenación?

MyApplication transfiere una matriz de películas a Sort.sortObjects().

sortObjects()pide una película para compararla

con otra.

La película devuelve el

resultado de la comparación.

sortObjects()devuelve la lista

ordenada.1

23

4

MyApplication

Movie

Ordenación

14 Copyright © 2004, Oracle. Todos los derechos reservados.

Interfaz Sortable

Especifica el método compare():

public interface Sortable {

// compare(): Compare this object to another object

// Returns:

// 0 if this object is equal to obj2

// a value < 0 if this object < obj2

// a value > 0 if this object > obj2

int compare(Object obj2);

}

15 Copyright © 2004, Oracle. Todos los derechos reservados.

Clase Sort

Contiene el método sortObjects():

public abstract class Sort {

public static void sortObjects(Sortable[] items) {

// Step through the array comparing and swapping;

// do this length-1 times

for (int i = 1; i < items.length; i++) {

for (int j = 0; j < items.length - 1; j++) {

if (items[j].compare(items[j+1]) > 0) {

Sortable tempitem = items[j+1];

items[j+1] = items[j];

items[j] = tempitem; } } } } }

16 Copyright © 2004, Oracle. Todos los derechos reservados.

Clase Movie

Implementa la interfaz Sortable:

public class Movie extends InventoryItemimplements Sortable {

String title; public int compare(Object movie2) {String title1 = this.title;String title2 = ((Movie)movie2).getTitle();return(title1.compareTo(title2));

}}

17 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de la Ordenación

Llame a Sort.sortObjects(Sortable []) con una matriz de Movie como argumento:

class myApplication {

Movie[] movielist;

… // build the array of MovieSort.sortObjects(movielist);

}

18 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de instanceof con Interfaces

• Utilice el operador instanceof para determinar si un objeto implementa una interfaz.

• Utilice la conversión a tipos más cortos para llamar a métodos que estén definidos en la interfaz:

public void aMethod(Object obj) {

if (obj instanceof Sortable)

((Sortable)obj).compare(obj2);

}

19 Copyright © 2004, Oracle. Todos los derechos reservados.

Resumen

En esta lección, ha aprendido lo siguiente:• Una clase abstracta no se puede instanciar.• Un método abstracto tiene una firma pero no código.• Una interfaz es una recopilación de métodos

abstractos que se van a implementar en otro lugar.• Una clase puede implementar muchas interfaces.• La implementación de varias interfaces es comparable

a la herencia múltiple.

20 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica 12: Visión General

Esta práctica cubre:• Creación de una interfaz y una clase abstracta• Implementación de la interfaz java.lang.Comparable

para ordenar objetos• Prueba de las clases de interfaz y de las clases

abstractas

Copyright © 2004, Oracle. Todos los derechos reservados.1

Devolución y Obtención de Excepciones

2 Copyright © 2004, Oracle. Todos los derechos reservados.

Objetivos

Al finalizar esta lección, debería estar capacitado para:• Explicar los conceptos básicos del manejo de

excepciones• Escribir código para obtener y manejar

excepciones• Escribir código para devolver excepciones• Crear excepciones propias

3 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué es una Excepción?

Una excepción es un evento inesperado.

4 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Cómo Maneja Java las Excepciones?

• Un método devuelve una excepción.• Un manejador obtiene la excepción.

Sí No

¿Hay algúnmanejador para esta

excepción?

Objeto Exception

5 Copyright © 2004, Oracle. Todos los derechos reservados.

Ventajas de las Excepciones Java: Separación del Código de Gestión de Errores

• En la programación tradicional, la gestión de errores normalmente provoca que el código sea más difícil de leer.

• Java separa los detalles de la gestión de errores inesperados del trabajo principal del programa.

• La lectura del código resultante es más clara y, por lo tanto, no induce a bugs.

6 Copyright © 2004, Oracle. Todos los derechos reservados.

Ventajas de las Excepciones Java: Transferencia de Errores hasta la Pila de Llamadas

method4

method3

method2

method1 //handle error

Código de error

Código de error

Código de error

method4

method3

method2

Method1//handle ex

Excepciónex

Cada método comprueba los errores y devuelve un código de error a su método de llamada.

method4 devuelve una excepción; finalmente, method1 la obtiene.

Gestión de errores tradicional

Excepciones Java

7 Copyright © 2004, Oracle. Todos los derechos reservados.

method4

method3

method1 //handle error

method2

Ventajas de las Excepciones Java: Las Excepciones No se Pueden Ignorar

Si method3 ignora el error, no se gestionará nunca.

Código de error

La excepción se debe obtener y manejar en algún lugar.

Gestión de errores tradicional

method4

method3

method2Excepciónex

Excepciones Java

method1//handle ex

8 Copyright © 2004, Oracle. Todos los derechos reservados.

Excepciones Activadas, Excepciones No Activadas y Errores

Todos los errores y todas las excepciones amplían la clase Throwable.

Throwable

Errores irrecuperables

Excepcionesactivadas

Excepciones no activadas (de tiempo de ejecución)

RuntimeException

Error Exception

9 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Qué se Debe Hacer con una Excepción?

• Obtenga la excepción y manéjela.• Permita que la excepción se transfiera al método

de llamada.• Obtenga la excepción y devuelva otra distinta.

10 Copyright © 2004, Oracle. Todos los derechos reservados.

Obtención y Manejo de Excepciones

• Introduzca la llamada al método en un bloque try.

• Maneje cada una de las excepciones en un bloque catch.

• Realice cualquier procesamiento final en un bloque finally.

try {

// call the method

}

catch (exception1) {

// handle exception1

}

catch (exception2) {

// handle exception2

}…

finally {

// any final processing

}

11 Copyright © 2004, Oracle. Todos los derechos reservados.

Obtención de una Única Excepción

int qty;

String s = getQtyFromForm();

try {

// Might throw NumberFormatExceptionqty = Integer.parseInt(s);

}

catch ( NumberFormatException e ) {

// Handle the exception}

// If no exceptions were thrown, we end up here

12 Copyright © 2004, Oracle. Todos los derechos reservados.

Obtención de Varias Excepciones

try {

// Might throw MalformedURLException

URL u = new URL(str);

// Might throw IOException

URLConnection c = u.openConnection();

}

catch (MalformedURLException e) {

System.err.println("Could not open URL: " + e);

}

catch (IOException e) {

System.err.println("Could not connect: " + e);

}

13 Copyright © 2004, Oracle. Todos los derechos reservados.

Limpieza con un Bloque finally

FileInputStream f = null;

try {

f = new FileInputStream(filePath);

while (f.read() != -1)

charcount++;

}

catch(IOException e) {

System.out.println("Error accessing file " + e);

}

finally {

// This block is always executed

f.close();

}

14 Copyright © 2004, Oracle. Todos los derechos reservados.

Obtención y Manejo de Excepciones:Práctica Guiada

void makeConnection(String url) {

try {

URL u = new URL(url);

}

catch (MalformedURLException e) {

System.out.println("Invalid URL: " + url);

return;

}

finally {

System.out.println("Finally block");

}

System.out.println("Exiting makeConnection");

}

15 Copyright © 2004, Oracle. Todos los derechos reservados.

Obtención y Manejo de Excepciones: Práctica Guiada

void myMethod () {

try {

getSomething();

} catch (IndexOutOfBoundsException e1) {

System.out.println("Caught IOBException ");

} catch (Exception e2) {

System.out.println("Caught Exception ");

} finally {

System.out.println("No more exceptions ");

}

System.out.println("Goodbye");

}

16 Copyright © 2004, Oracle. Todos los derechos reservados.

Transferencia de una Excepción al Método de Llamada

• Utilice throws en la declaración del método.• La excepción se propaga al método de llamada.

public int myMethod() throws exception1 {

// code that might throw exception1}

public URL changeURL(URL oldURL)

throws MalformedURLException {

return new URL("http://www.oracle.com");

}

17 Copyright © 2004, Oracle. Todos los derechos reservados.

Devolución de Excepciones

• Devuelva las excepciones mediante la palabra clave throw.

• Utilice throws en la declaración del método.

public String getValue(int index) throws

IndexOutOfBoundsException {

if (index < 0 || index >= values.length) {

throw new IndexOutOfBoundsException();

}

}

throw new Exception1();

18 Copyright © 2004, Oracle. Todos los derechos reservados.

Creación de Excepciones

Amplíe la clase Exception.

public class UserFileException extends Exception {

public UserFileException (String message) {

super(message);

}

}

public class MyException extends Exception { … }

19 Copyright © 2004, Oracle. Todos los derechos reservados.

Obtención de una Excepción y Devolución de Otra Distinta

catch (excepción1 e) {

throw new exception2(…);

}

void readUserFile() throws UserFileException {

try {

// code to open and read userfile}

catch(IOException e) {

throw new UserFileException(e.toString());

}

}

20 Copyright © 2004, Oracle. Todos los derechos reservados.

Resumen

En esta lección, ha aprendido a:• Utilizar las excepciones Java para la gestión sólida de

errores• Manejar excepciones mediante try, catch y finally• Utilizar la palabra clave throw para devolver una

excepción• Utilizar un método para declarar una excepción en su

firma para transferirla hasta la pila de llamadas

21 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica 13: Visión General

Esta práctica cubre:• Creación de una excepción personalizada• Cambio de los métodos de búsqueda de DataMan

para devolver excepciones• Manejo de las excepciones al llamar a los métodos

de búsqueda de DataMan• Prueba de los cambios realizados en el código

Copyright © 2004, Oracle. Todos los derechos reservados.1

Diseño de Interfaz de Usuario: Conceptos Básicos de Swing para la Planificación del

Diseño de la Aplicación

2 Copyright © 2004, Oracle. Todos los derechos reservados.

Objetivos

Al finalizar esta lección, debería estar capacitado para:• Explicar AWT (Abstract Window Toolkit), Swing y

JFC (Java Foundation Classes)• Detallar la jerarquía de contención UI de Swing• Describir cómo se utilizan los gestores de diseños• Agregar contenedores UI a una aplicación para

agrupar componentes• Embeber componentes UI en contenedores UI• Utilizar el Look and Feel conectable de Swing

3 Copyright © 2004, Oracle. Todos los derechos reservados.

Ejecución de Aplicaciones UI Java

4 Copyright © 2004, Oracle. Todos los derechos reservados.

AWT, Swing y JFC

• AWT o Abstract Window Toolkit (java.awt):– Biblioteca de interfaz gráfica de usuario– Predecesor de los componentes Swing y base de Swing

y JFC• Swing (javax.swing):

– Biblioteca de interfaz gráfica de usuario más potente– Creado sobre la jerarquía de clases AWT

• JFC (Java Foundation Classes):– Recopilación de API, incluidos AWT, Swing, API

Accessibility, Look and Feel Conectable– API 2D de Java, soporte para arrastrar y soltar (a partir

de JDK 1.2)

5 Copyright © 2004, Oracle. Todos los derechos reservados.

JButton JSlider JTree

JComboBox JTextField JProgressBar

InventoryItem

Funciones Swing

Es un juego de componentes visuales disponible a partir de JDK 1.1, pero forma parte del paquete principal de JDK a partir de la versión 1.2:• Componentes sencillos en comparación con AWT• API Look and Feel conectable• Muchos más componentes que AWT

6 Copyright © 2004, Oracle. Todos los derechos reservados.

¿Componentes Sencillos o Complejos?

Componentes sencillos• Independencia de código

peer nativo.• Pueden tener fondos

transparentes.• Casi todos los

componentes Swing son sencillos.

• Cuando se muestran, su forma puede ser no rectangular.

• Se deben visualizar en un contenedor complejo.

Componentes complejos• Dependencia fuerte de

código peer nativo.• Cada uno se presenta en

su propia ventana opaca.• Casi todos los primeros

componentes AWT eran complejos.

• Incluyen algunos componentes de nivel superior Swing (JFrame, JApplet, JDialog).

7 Copyright © 2004, Oracle. Todos los derechos reservados.

Planificación del Diseño de UI

La creación de una aplicación UI implica una planificación, especialmente al crear aplicaciones Swing. La planificación requiere la comprensión de los siguientes conceptos y de la relación entre ellos:• Jerarquía de contención de UI (componente raíz que

incluye componentes y contenedores anidados)• Tipos y niveles de contenedores (por ejemplo,

contenedores intermedios o de nivel superior)• Gestores de diseños y sus tipos (utilizados por cada

contenedor)• Los componentes que se pueden agregar a los

contenedores

8 Copyright © 2004, Oracle. Todos los derechos reservados.

Jerarquía de Contención

• Contenedores de nivel superior– Marco– Diálogo– Applet

• Contenedores intermedios– Panel– Panel de desplazamiento

• Componentes atómicos– Etiqueta– Elementos de texto– Botones

Marco

PanelComponentes

atómicos

9 Copyright © 2004, Oracle. Todos los derechos reservados.

Contenedores de Nivel Superior

• Swing proporciona JFrame, JDialog o JApplet con propiedades modificables como, por ejemplo:– Un panel de contenido para componentes o

contenedores intermedios, mediante los métodos getContentPane() o setContentPane()

– Un borde, mediante un método setBorder()– Un título, mediante un método setTitle()– Decoraciones de ventana como, por ejemplo, botones

para cerrar y minimizar (se excluyen los applets)• AWT proporciona Frame, Dialog o Applet.

– Estos elementos no proporcionan propiedades (como, por ejemplo, bordes o un panel de contenido).

10 Copyright © 2004, Oracle. Todos los derechos reservados.

Contenedores Intermedios

• Diseñados para contener componentes (o contenedores): Se pueden anidar dentro de otros contenedores

• Tipos de contenedores intermedios:– Paneles para agrupar contenedores o componentes– Paneles de desplazamiento para agregar barras de

desplazamiento en componentes que pueden aumentar como, por ejemplo, una lista o un área de texto

– Paneles de división para visualizar dos componentes en un área fija, que puede ajustar el usuario

– Paneles de separador para contener varios componentes, mostrando sólo uno a la vez, según la selección del usuario

– Barras de herramientas para agrupar componentes como, por ejemplo, botones

– Marcos internos para ventanas anidadas

11 Copyright © 2004, Oracle. Todos los derechos reservados.

Componentes Atómicos

• Botones• Casillas de control• Recuadros combinados• Texto• Listas• Etiquetas

12 Copyright © 2004, Oracle. Todos los derechos reservados.

Visión General de la Gestión del Diseño

13 Copyright © 2004, Oracle. Todos los derechos reservados.

Diseño Border

• Tiene cinco áreas: North, South, West, East y Center.• El área Center se amplía hasta rellenar todo el espacio

disponible.• Muestra un solo componente en cada área.• Hace que las áreas sean útiles para contener paneles

intermedios.

14 Copyright © 2004, Oracle. Todos los derechos reservados.

Diseño GridBag

• Se basa en una cuadrícula.• Permite que los componentes abarquen varias

filas y varias columnas.• Permite tamaños diferentes de las filas y de las

columnas.• Utiliza el tamaño preferido del componente para

controlar el tamaño de celda.

15 Copyright © 2004, Oracle. Todos los derechos reservados.

Restricciones de GridBag

Posición de celda

Ampliación de celda

Peso de expansión

Reglas de relleno

Fijación

Relleno decomponente

Recuadros externos

16 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de Gestores de Diseños

• El objetivo de los gestores de diseños es gestionar varios componentes al mismo tiempo.

• El uso de un gestor de diseños con contenedores requiere:– Crear un contenedor y un objeto de gestor de

diseños– Definir la propiedad de diseño del contenedor– Agregar elementos (componentes u otros

contenedores) a las regiones que define el gestor de diseños

• Los gestores de diseños diferentes requieren argumentos diferentes para controlar la ubicación del componente.

17 Copyright © 2004, Oracle. Todos los derechos reservados.

Combinación de Gestores de Diseños

VerticalFlow

Grid

GridBag

null

Border

18 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de Marcos o Recuadros de Diálogo

Un marco Java es equivalente a una ventana de aplicación.• Utilice JFrame para una ventana principal

– Tiene propiedades para los iconos, el título y las decoraciones de ventana para los botones de minimizar, maximizar y cerrar.

– Utiliza por defecto BorderLayout.– Proporciona un panel de contenido por defecto que

ocupa la región central del diseño.– Puede definir el tamaño del marco con el método

setSize() y hacer que sea visible mediante el método setVisible().

• Utilice JDialog para una ventana modal– Debe desactivar la ventana modal para que se pueda

activar la aplicación que la llama.

19 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de Contenedores JPanel

JPanel es un contenedor de uso general.• Puede utilizar cualquier gestor de diseños

(utiliza por defecto Flowlayout).• Puede utilizar cualquier borde.• Puede tener componentes agregados

u otros paneles/contenedores mediante el método add().

JPanel myPanel = new JPanel(new BorderLayout());

JTextArea jTextArea1 = new JTextArea();

myPanel.setBorder(BorderFactory.createRaisedBevelBorder());

myPanel.add(jTextArea1, BorderLayout.SOUTH);

20 Copyright © 2004, Oracle. Todos los derechos reservados.

Adición de Bordes a Componentes

• Los bordes son objetos Swing.– Se definen en javax.swing.borders.

• Utilice setBorder() para asignar un borde a un componente.

• Cree bordes con la clase javax.swing.BorderFactory.

• Cree los bordes por separado para utilizarlos con muchos componentes.

jPanel1.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.lightGray,Color.darkGray));

Border etchedBorder = BorderFactory.createEtchedBorder();//pre-create border

jPanel2.setBorder(etchedBorder); // use border`

21 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de Marcos Internos

Un marco interno es el equivalente a una ventana de documento contenida dentro de una ventana de aplicación para aplicaciones de ventanas MDI (interfaz de varios documentos).• Utilice JInternalFrame para una ventana interna:

– De forma similar a JFrame, puede contener componentes y contenedores intermedios y utilizar un gestor de diseños.

– Por defecto, no se puede cerrar, minimizar, ni maximizar y no es visible.

• Utilice JDesktopPane como panel de contenido en el que se agregan los marcos internos:– Controla el tamaño y la ubicación de los marcos

internos.– Utiliza un gestor de diseños null por defecto.

22 Copyright © 2004, Oracle. Todos los derechos reservados.

Controles de Texto Swing

23 Copyright © 2004, Oracle. Todos los derechos reservados.

Adición de Componentes con Oracle JDeveloper 10g

• Utilice el asistente para crear un JFrame.• Seleccione un gestor de diseños.• Agregue componentes desde la paleta de

componentes.• Ajuste las propiedades de componente.

24 Copyright © 2004, Oracle. Todos los derechos reservados.

Creación de un Marco

Marco

25 Copyright © 2004, Oracle. Todos los derechos reservados.

Adición de Componentes

Utilice la paleta de componentes para agregar elementos de Swing al marco

26 Copyright © 2004, Oracle. Todos los derechos reservados.

Definición del Look and Feel Conectable

Las aplicaciones Swing proporcionan soporte para adaptar un aspecto diferente al entorno visual del sistema operativo. El aspecto:• Es específico de la aplicación:

– Se puede inicializar al iniciar la aplicación.– Puede cambiar dinámicamente.

• Afecta a los componentes Swing sencillos.• Soporta Win, Mac, Java (Metal) y Motif.• Utiliza la clase javax.swing.UIManager.

– Proporciona el método setLookAndFeel(), que acepta una cadena de nombre de clase de aspecto.

27 Copyright © 2004, Oracle. Todos los derechos reservados.

Resumen

En esta lección, ha aprendido lo siguiente:• Los marcos son contenedores de nivel superior.• Los paneles son contenedores intermedios que se

pueden anidar.• Cada contenedor puede tener su propio gestor de

diseños.• Los gestores de diseños controlan la ubicación

del componente.• Puede combinar gestores de diseños dentro de

una aplicación.• Puede controlar el aspecto de la aplicación.

28 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica 14: Visión General

Esta práctica cubre:• Creación de una clase basada en JFrame para la

ventana principal de la aplicación OrderEntry.– Agregue una barra de estado y un menú por defecto.– Agregue un objeto JDesktopPane y defínalo como panel

de contenido.• Creación de una clase basada en JInternalFrame

para gestionar la creación de pedidos y la introducción de datos.– Cree la estructura jerárquica de diseño de contenedor

para los componentes de marco de registro de pedidos.– Agregue algunos componentes a este marco.

• Definición de gestores de diseños para cada contenedor

Copyright © 2004, Oracle. Todos los derechos reservados.1

Adición de Componentes de Interfaz de Usuarioy Manejo de Eventos

2 Copyright © 2004, Oracle. Todos los derechos reservados.

Objetivos

Al finalizar esta lección, debería estar capacitado para:• Agregar componentes Swing a una aplicación• Obtener y modificar el contenido de los componentes• Proporcionar manejadores para tipos comunes de

eventos• Crear una barra de menús

3 Copyright © 2004, Oracle. Todos los derechos reservados.

Componentes Swing

• Controles de texto– JTextField– JPasswordField– JTextArea– JEditorPane– JTextPane

• Controles gráficos– JTree– JTable– JToggleButton

4 Copyright © 2004, Oracle. Todos los derechos reservados.

Componentes Swing en Oracle JDeveloper

Utilice la paleta de componentes Swing para agregar elementos.

5 Copyright © 2004, Oracle. Todos los derechos reservados.

Navegador del Sistema

Llamada al Editor de UI

Haga clic con el botón derecho del mouse y seleccione Open en el menú contextual.

Editor de Códigos

Menú contextual

6 Copyright © 2004, Oracle. Todos los derechos reservados.

1: Abra la paleta de componentes; seleccione la categoría Swing.

2: Arrastre el componente a la pantalla. La clase se actualiza automáticamente.

Adición de un Componente a una Pantalla

7 Copyright © 2004, Oracle. Todos los derechos reservados.

Cambio de valores de propiedad en el inspector

Edición de las Propiedades de un Componente

8 Copyright © 2004, Oracle. Todos los derechos reservados.

Código Generado por JDeveloper

Por ejemplo: Adición de un JButton a un objeto JFrame:

import javax.swing.JButton;

public class JFrame1 extends JFrame {JButton jButton1 = new JButton();

...

public void jbInit() throws Exception {...

jbutton1.setText("jButton1");

...

this.getContentPane().add(jButton1,

new XYConstraints(21, 20, 118, 48));

}

9 Copyright © 2004, Oracle. Todos los derechos reservados.

Creación de un Menú• Seleccione “Create Menu Bar” durante la creación de

la aplicación.• Agregue un objeto JMenuBar desde la paleta de

componentes.• Oracle JDeveloper crea:

– JMenuBar para un contenedor visual de menús– Jmenu, que representa un menú de opciones, agregado

a una barra de menús– JmenuItems, que se colocan en un objeto JMenu

• Cada objeto JMenuItem soporta eventos, interfaces y métodos de manejador de la misma forma que otros componentes UI de Swing.

• Un objeto JMenuBar se puede agregar a cualquier contenedor de nivel superior como, por ejemplo, marcos, recuadros de diálogo o applets.

10 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso del Editor de Menús de Oracle JDeveloper• En el editor de menús de Oracle JDeveloper, utilice el

panel de estructura:– Amplíe el nodo Menu.– Haga clic en el objeto de la barra de menús para

obtener una representación visual.– Haga clic con el botón derecho del mouse en el menú o

en las opciones de menú para modificar la estructura desde las opciones del menú contextual.

Haga clicen el objeto de

la barra de menúsen el panel Structure

para mostrarla barra de menús

Menú contextual al hacer clic con el botón derecho del

mouse en una opción de menú

11 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica 15-1: Visión General

Esta práctica cubre:• Creación del menú OrderEntryMDIFrame• Adición de las opciones de menú y un separador

al menú Order• Adición de componentes a OrderEntryFrame

para formar su estructura visual

12 Copyright © 2004, Oracle. Todos los derechos reservados.

UI para Aplicación Java

13 Copyright © 2004, Oracle. Todos los derechos reservados.

Modelo de Manejo de Eventos Java

• Funcionamiento:– El evento se origina desde el origen y genera un objeto

de evento.– Un listener de evento recibe un evento específico.– Un manejador de eventos determina lo que se debe

hacer.• Configuración:

1. Cree un objeto de origen de evento.2. Cree un objeto de listener de evento que implemente una

interfaz con métodos para manejar el objeto de evento.3. Escriba un método específico del evento para manejarlo.4. Registre el objeto de listener con el origen de evento para

el evento especificado.

14 Copyright © 2004, Oracle. Todos los derechos reservados.

Conceptos Básicos de Código de Manejo de Eventos

• Cree el origen de evento.

• Cree el listener de evento que implementa la interfaz de evento necesaria.

• Registre el listener con el origen de evento.

Jbutton findBtn = new Jbutton("Find");

class MyListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

// handler logic

}

}

findBtn.addActionListener(new MyListener());

15 Copyright © 2004, Oracle. Todos los derechos reservados.

Proceso de Manejo de Eventos: Registro

MyListener actionListenerObj = new MyListener();

public void jbInit() {

button1.addActionListener(actionListenerObj);

}

OK

Objeto de listener de evento

Método de manejador

Origen

16 Copyright © 2004, Oracle. Todos los derechos reservados.

Proceso de Manejo de Eventos: Se Produce el Evento

Notificación

public void jbInit() {

button1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

// Your code to handle the ActionEvent}

}); … }

OK

OrigenObjeto de listener de evento

Método de manejador

17 Copyright © 2004, Oracle. Todos los derechos reservados.

Proceso de Manejo de Eventos: Ejecución del Manejador de Eventos

OK

OrigenObjeto de listener de evento

Método de manejador:guardar cambios y salir

18 Copyright © 2004, Oracle. Todos los derechos reservados.

interface MouseListener {

// Declares five methods

} class MouseAdapter implements MouseListener {

// Empty implementations of all five methods

}

public class MyListener extends MouseAdapter {

// Override only the methods you need}

Uso de Clases de Adaptador para Listeners

Las clases de adaptador resultan útiles para implementar la interfaz de listener de evento:• Proporcionan implementaciones de método vacías.• Se amplían y se puede sustituir el método deseado.

19 Copyright © 2004, Oracle. Todos los derechos reservados.

Arquitectura Modelo/Vista/Controlador de Swing• Principios de Modelo, Vista, Controlador

• Explicación de los términos:– El modelo representa los datos o la información.– La vista proporciona una representación visual de

los datos.– El controlador maneja los eventos modificando la

vista o el modelo.• Actualice siempre los componentes Swing en la

cola de thread de evento o utilice los métodos SwingUtilities.

Modelo

Controlador VistaVistaEventomodifica

modifica

Notificación de actualización

Obtención de datos cambiados

20 Copyright © 2004, Oracle. Todos los derechos reservados.

Métodos de Componente de Texto Básicos

• Métodos de elemento de texto (JLabel, JTextFieldy JButton):void setText(String value)String getText()

• Métodos adicionales de JTextArea:void append(String value)void insert(String value, int pos)

• Los cambios en el contenido del componente normalmente se realizan en el thread de manejo de eventos.

Nota: Consulte la documentación de API Java para obtener información detallada sobre las capacidades de cada componente.

21 Copyright © 2004, Oracle. Todos los derechos reservados.

Métodos de Componente JList Básicos

El subjuego de métodos de componente JList incluye:• void setListData(Vector)

– Copia Vector en un objeto ListModel aplicado con un método setModel.

• void setModel(ListModel)– Define el modelo que representa los datos y borra la

selección. Utiliza la clase DefaultListModel para el modelo.

• Object getSelectedValue()– Devuelve el objeto seleccionado o null si no se ha

seleccionado nada.• int getSelectedIndex()

– Devuelve el índice del elemento seleccionado o –1 si no se ha seleccionado nada.

22 Copyright © 2004, Oracle. Todos los derechos reservados.

Eventos que puede generar un componente

Métodos del manejador de

eventos

¿Qué Eventos Puede Generar un Componente?

23 Copyright © 2004, Oracle. Todos los derechos reservados.

1: Seleccione el evento que desea manejar.

2: Haga clic en la columna derecha para rellenar un nombre de método.

3: Haga clic dos veces en la columna derecha para crear el método.

Definición de un Manejador de Eventosen Oracle JDeveloper

24 Copyright © 2004, Oracle. Todos los derechos reservados.

public void jbInit() throws Exception {

findButton.addActionListener(

new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

findButton_actionPerformed(e);

}

}); …

void findButton_actionPerformed(ActionEvent e) {

// Your code to handle the ActionEvent}

Find

Estilo de Código de Manejo de Eventos por Defecto Generado por Oracle JDeveloper

25 Copyright © 2004, Oracle. Todos los derechos reservados.

public class JFrame1 extends JFrame {

void findButton_actionPerformed(ActionEvent e){

// When the user clicks the button, display

// the list of customers in jTextArea1

String findList = (“Supplies-R-Us " + "\n" +

“Consulting Inc. " + "\n" +

“Just-In-Time Training ");

jTextArea1.setText(findList);

}

}

Terminación del Método de Manejador de Eventos

26 Copyright © 2004, Oracle. Todos los derechos reservados.

Resumen

En esta lección ha aprendido a:• Agregar un componente Swing a un contenedor

visual• Obtener y modificar el contenido de los componentes• Utilizar el modelo de manejo de eventos AWT para:

– Crear un origen de evento– Crear un listener de evento y código de manejador– Registrar un listener para el evento que va a manejar

• Crear una barra de menús con menús y opciones de menú

• Manejar eventos

27 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica 15-2: Visión General

Esta práctica cubre la adición de manejo de eventos para:• Menú Order > New• Botón Find Customer• Botón Add Product

Copyright © 2004, Oracle. Todos los derechos reservados.1

Uso de JDBC para Acceder a la Base de Datos

2 Copyright © 2004, Oracle. Todos los derechos reservados.

Objetivos

Al finalizar esta lección, debería estar capacitado para:• Describir cómo se conectan las aplicaciones Java a la

base de datos• Describir cómo la base de datos Oracle soporta la

funcionalidad de base de datos Java• Cargar y registrar un controlador JDBC• Conectarse a una base de datos Oracle• Seguir los pasos para ejecutar una sentencia SELECT

sencilla• Asignar tipos de bases de datos Oracle simples a

tipos Java

3 Copyright © 2004, Oracle. Todos los derechos reservados.

Java, J2EE y Oracle 10g

Base de datos Oracle

Servidor WebCliente

Servidor de aplicaciones

Presentación Lógica denegocio

Datos

OracleApplication Server 10g

Entorno Certificado J2EE

JDBC

4 Copyright © 2004, Oracle. Todos los derechos reservados.

Aplicación cliente o applet

Conexión a una Base de Datos con Java

Las aplicaciones cliente, las JSP y los servlets utilizan JDBC.

JDBC Base de datos relacional

5 Copyright © 2004, Oracle. Todos los derechos reservados.

• JDBC es una interfaz estándar para conectarse a bases de datos relacionales desde Java.– La API JDBC incluye el paquete de API principal en

java.sql.– La API JDBC 2.0 incluye la API del paquete opcional en

javax.sql.– La API JDBC 3.0 incluye la API principal y la API del

paquete opcional.

• Incluye el archivo del controlador JDBC de Oracle en CLASSPATH.

• La biblioteca de clases JDBC forma parte de J2SE (Java 2, Standard Edition).

¿Qué Es JDBC?

6 Copyright © 2004, Oracle. Todos los derechos reservados.

// Paquetes estándarimport java.sql.*;

import java.math.*; // optional

// Extensión Oracle a paquetes JDBCimport oracle.jdbc.*;

import oracle.sql.*;

Preparación del Entorno

• Defina CLASSPATH:

• Importe los paquetes JDBC:

[Oracle Home]\jdbc\lib\classes12.jar

7 Copyright © 2004, Oracle. Todos los derechos reservados.

Pasos para el Uso de JDBC a fin de Ejecutar Sentencias SQL

1. Registrar el controlador JDBC.

4. Ejecutar una sentencia SQL.

4a. Procesar la sentenciaSELECT.

4b. Procesar la sentenciaDML o DDL.

6. Cerrar las conexiones.5. Procesar los resultados de la consulta.

3. Crear un objeto de sentencia.

2. Obtener una conexión.

8 Copyright © 2004, Oracle. Todos los derechos reservados.

Paso 1: Registro del Controlador

• Registre el controlador en el código:– DriverManager.registerDriver (new

oracle.jdbc.OracleDriver());– Class.forName

("oracle.jdbc.OracleDriver");

• Registre el controlador al iniciar la clase:– java –D jdbc.drivers =

oracle.jdbc.OracleDriver <ClassName>;

9 Copyright © 2004, Oracle. Todos los derechos reservados.

Mediante el paquete oracle.jdbc.driver, Oracle proporciona diferentes controladores para establecer una conexión con la base de datos.

Llamadas JDBC

Comandos de base de

datosBase de

datos

Conexión a la Base de Datos

Controlador deOracle

• Cliente fino • OCI• Basado en servidor

• …

10 Copyright © 2004, Oracle. Todos los derechos reservados.

Cliente

Controladores JDBC de Oracle: Controlador Fino de Cliente

• Está escrito completamente en Java• Deben utilizarlo los applets

Servidor

Oracle

Applet

JDBC

Controlador fino

11 Copyright © 2004, Oracle. Todos los derechos reservados.

Aplicación

JDBC

Controlador OCI

Controladores JDBC de Oracle: Controladores OCI de Cliente

• Está escrito en C y Java • Debe estar instalado en el cliente

Cliente Servidor

Oracleocixxx.dll

12 Copyright © 2004, Oracle. Todos los derechos reservados.

Selección del Controlador Correcto

OCIFino

Controlador

Fino

Del servidor

OCI

Fino

Applet

Aplicación cliente

EJB, servlet (en la capa media)

Procedimiento almacenado

Tipo de Programa

13 Copyright © 2004, Oracle. Todos los derechos reservados.

Paso 2: Obtención de una Conexión a la Base de Datos

• En JDBC 1.0, utilice la clase DriverManager, que proporciona métodos getConnection()sobrecargados.– Todos los métodos de conexión requieren una

dirección URL de JDBC para especificar los detalles de la conexión.

• Ejemplo:

• Los proveedores pueden proporcionar distintos tipos de controladores JDBC.

Connection conn = DriverManager.getConnection(

"jdbc:oracle:thin:@myhost:1521:ORCL","scott","tiger");

14 Copyright © 2004, Oracle. Todos los derechos reservados.

Acerca de las Direcciones URL de JDBC

• JDBC utiliza una cadena similar a una dirección URL. La dirección URL identifica– El controlador JDBC que se debe utilizar para la

conexión– Detalles de la conexión a la base de datos, que varían

en función del controlador utilizado

• Ejemplo del uso del controlador JDBC fino de Oracle:– jdbc:oracle:thin:@myhost:1521:ORCL

jdbc:<subprotocol>:<subname>

jdbc:oracle:<driver>:@<database>

Protocolo Identificación de base de datos

15 Copyright © 2004, Oracle. Todos los derechos reservados.

Direcciones URL de JDBC con Controladores Oracle

• Controlador fino de Oracle

• Controlador OCI de Oracle

Syntax: jdbc:oracle:thin:@<host>:<port>:<SID>

Example: "jdbc:oracle:thin:@myhost:1521:orcl"

Syntax: jdbc:oracle:oci:@<tnsname entry>

Example: "jdbc:oracle:oci:@orcl"

16 Copyright © 2004, Oracle. Todos los derechos reservados.

Paso 3: Creación de una Sentencia

Los objetos Statement de JDBC se crean desde la instancia Connection:• Utilice el método createStatement(), que

proporciona un contexto para ejecutar una sentencia SQL.

• Ejemplo:

Connection conn = DriverManager.getConnection(

"jdbc:oracle:thin:@myhost:1521:ORCL", "scott","tiger");

Statement stmt = conn.createStatement();

17 Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de la Interfaz Statement

La interfaz Statement proporciona tres métodos para ejecutar sentencias SQL:• Utilice executeQuery(String sql)para

sentencias SELECT.– Devuelve un objeto ResultSet para procesar filas

• Utilice executeUpdate(String sql) para DML o DDL.– Devuelve un int

• Utilice execute(String) para cualquier sentencia SQL.– Devuelve un valor boolean

18 Copyright © 2004, Oracle. Todos los derechos reservados.

Paso 4a: Ejecución de una Consulta

Proporcione una cadena de consulta SQL, sin punto y coma, como argumento para el método executeQuery().• Devuelve un objeto ResultSet:

Statement stmt = null;ResultSet rset = null;

stmt = conn.createStatement();rset = stmt.executeQuery

("SELECT ename FROM emp");

19 Copyright © 2004, Oracle. Todos los derechos reservados.

El Objeto ResultSet

• El controlador JDBC devuelve los resultados de una consulta en un objeto ResultSet.

• ResultSet:– Mantiene un cursor apuntando a su fila de datos actual– Proporciona métodos para recuperar valores de columna

20 Copyright © 2004, Oracle. Todos los derechos reservados.

Paso 4b: Ejecución de Sentencias DML

1. Cree un objeto Statement vacío:

2. Utilice executeUpdate para ejecutar la sentencia:

Ejemplo:

Statement stmt = conn.createStatement();

int count = stmt.executeUpdate(SQLDMLstatement);

Statement stmt = conn.createStatement();

int rowcount = stmt.executeUpdate

("DELETE FROM order_items

WHERE order_id = 2354");

21 Copyright © 2004, Oracle. Todos los derechos reservados.

1. Cree un objeto Statement vacío:

2. Utilice executeUpdate para ejecutar la sentencia:

Ejemplo:

Statement stmt = conn.createStatement();

int rowcount = stmt.executeUpdate

("CREATE TABLE temp (col1 NUMBER(5,2),

col2 VARCHAR2(30)");

Paso 4b: Ejecución de Sentencias DDL

Statement stmt = conn.createStatement();

int count = stmt.executeUpdate(SQLDDLstatement);

22 Copyright © 2004, Oracle. Todos los derechos reservados.

Paso 5: Procesamiento de los Resultados de la Consulta

El método executeQuery() devuelve un juego de resultados.• Utilice el método next() en bucle para iterar a través

de las filas.• Utilice los métodos getXXX() para obtener valores de

columna por posición de la columna en la consulta o por el nombre de columna.

stmt = conn.createStatement();rset = stmt.executeQuery(

"SELECT ename FROM emp");while (rset.next()) {

System.out.println (rset.getString("ename"));}

23 Copyright © 2004, Oracle. Todos los derechos reservados.

Paso 6: Cierre de Conexiones

Cierre de manera explícita un objeto Connection, Statement y ResultSet para liberar recursos que ya no sean necesarios.• Llame a los métodos close() respectivos:Connection conn = ...; Statement stmt = ...;ResultSet rset = stmt.executeQuery(

"SELECT ename FROM emp");...// clean uprset.close(); stmt.close(); conn.close();...

24 Copyright © 2004, Oracle. Todos los derechos reservados.

Ejemplo de Consulta Básicaimport java.sql.*;class TestJdbc {

public static void main (String args [ ]) throws SQLException {DriverManager.registerDriver (new oracle.jdbc.OracleDriver());Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@myHost:1521:ORCL","scott", "tiger");Statement stmt = conn.createStatement ();ResultSet rset = stmt.executeQuery

("SELECT ename FROM emp");while (rset.next ())

System.out.println (rset.getString ("ename"));rset.close(); stmt.close();conn.close();}

}

25 Copyright © 2004, Oracle. Todos los derechos reservados.

ResultSet rset = stmt.executeQuery("SELECT empno, hiredate, job FROM emp");

while (rset.next()){int id = rset.getInt(1);Date hiredate = rset.getDate(2); String job = rset.getString(3);

Nombre de columna

empno

hiredate

job

Tipo

NUMBER

DATE

VARCHAR2

Asignación de Tipos de Bases de Datos a Tipos Java

ResultSet asigna tipos de bases de datos a tipos Java:

Método

getInt()

getDate()

getString()

26 Copyright © 2004, Oracle. Todos los derechos reservados.

1. Cree un objeto Statement vacío:

2. Utilice execute para ejecutar la sentencia:

3. Procese la sentencia de acuerdo de la manera correspondiente:

boolean isQuery = stmt.execute(SQLstatement);

if (isQuery) { // was a query - process resultsResultSet r = stmt.getResultSet(); ...

}else { // was an update or DDL - process resultint count = stmt.getUpdateCount(); ...}

Manejo de una Sentencia SQL Desconocida

Statement stmt = conn.createStatement();

27 Copyright © 2004, Oracle. Todos los derechos reservados.

• Las sentencias SQL pueden devolver una excepción java.sql.SQLException.

• Utilice métodos de manejo de errores estándar de Java.

Manejo de Excepciones

try {rset = stmt.executeQuery("SELECT empno, ename FROM emp");} catch (java.sql.SQLException e) { ... /* handle SQL errors */ }

...finally { // clean uptry { if (rset != null) rset.close(); }

catch (Exception e){ ... /* handle closing errors */ }

...

28 Copyright © 2004, Oracle. Todos los derechos reservados.

Gestión de Transacciones

• Por defecto, las conexiones están en modo de confirmación automática.

• Utilice conn.setAutoCommit(false) para desactivar la confirmación automática.

• Para controlar las transacciones cuando no se encuentre en modo de confirmación automática, utilice:– conn.commit(): Confirmar una transacción– conn.rollback(): Realizar rollback de una transacción

• Al cerrar una conexión, se confirma la transacción aunque esté desactivada la confirmación automática.

29 Copyright © 2004, Oracle. Todos los derechos reservados.

El Objeto PreparedStatement

• Un PreparedStatement evita nuevos análisis de sentencias SQL.

• Utilice este objeto para sentencias que desee ejecutar más de una vez.

• Un PreparedStatement puede contener variables que proporcione cada vez que ejecute la sentencia.

30 Copyright © 2004, Oracle. Todos los derechos reservados.

PreparedStatement pstmt =conn.prepareStatement

("UPDATE emp SET ename = ? WHERE empno = ?");

PreparedStatement pstmt =conn.prepareStatement

("SELECT ename FROM emp WHERE empno = ?");

Cómo Crear un Objeto PreparedStatement

1. Registre el controlador y cree la conexión a la base de datos.

2. Cree PreparedStatement e identifique las variables con un signo de interrogación (?):

31 Copyright © 2004, Oracle. Todos los derechos reservados.

1. Proporcione valores para las variables:

2. Ejecute la sentencia:pstmt.setXXX(index, value);

pstmt.executeQuery();

pstmt.executeUpdate();

int empNo = 3521;PreparedStatement pstmt =conn.prepareStatement("UPDATE empSET ename = ? WHERE empno = ? ");

pstmt.setString(1, "DURAND");pstmt.setInt(2, empNo);pstmt.executeUpdate();

Cómo Ejecutar una Sentencia PreparedStatement

32 Copyright © 2004, Oracle. Todos los derechos reservados.

Maximización del Acceso a la Base de Datos

• Utilice el pool de conexiones para minimizar los costos operativos de crear y cerrar sesiones.

• Utilice una declaración de origen de datos explícita para la referencia física a la base de datos.

• Utilice el método getConnection() para obtener una instancia de conexión lógica.

33 Copyright © 2004, Oracle. Todos los derechos reservados.

Base de datos

Comandos de base de datos

Origen de datos

ConnectionPoolDataSource

Servlet Java

Código de servidor de capa media

Capa media

Pool de Conexiones

ControladorJDBC

34 Copyright © 2004, Oracle. Todos los derechos reservados.

Resumen

En esta lección, ha aprendido lo siguiente:• JDBC proporciona una conectividad de base de datos

para varias construcciones Java, incluidos servlets y aplicaciones cliente.

• JDBC es una interfaz estándar de Java y forma parte de J2SE.

• Los pasos para utilizar sentencias SQL en Java son registrar, conectar, ejecutar y cerrar.

• Las sentencias SQL pueden devolver excepciones.• Puede controlar el comportamiento por defecto de las

transacciones.

35 Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica 16: Visión General

Esta práctica cubre:• Configuración del entorno Java para JDBC• Adición de componentes JDBC para consultar la base

de datos• Relleno de OrderEntryFrame con clientes de la base

de datos

Copyright © 2004, Oracle. Todos los derechos reservados.1

Despliegue de Aplicaciones medianteJava Web Start

Copyright © 2004, Oracle. Todos los derechos reservados.2

Objetivos

Al finalizar esta lección, debería estar capacitado para:• Definir la arquitectura de Java Web Start• Describir las ventajas de utilizar Java Web Start• Desplegar una aplicación mediante Web Start

Copyright © 2004, Oracle. Todos los derechos reservados.3

¿Qué es Java Web Start?

• Es una tecnología de despliegue de aplicaciones basada en la plataforma Java 2.

• Inicia aplicaciones con todas las funciones mediante cualquier explorador en cualquier plataforma y desde cualquier lugar de la Web.

Copyright © 2004, Oracle. Todos los derechos reservados.4

Ejecución de una Aplicación Web Start

1. Solicite la aplicación.2. Inicie Web Start en la

máquina local.3. Descargue la

aplicación.4. Inicie la aplicación

(Draw).

HTTP

HTTP

1 2

3

4

Copyright © 2004, Oracle. Todos los derechos reservados.5

Ventajas de Web Start

• Presenta una interfaz de usuario enriquecida y con gran capacidad de respuesta

• Inicia las aplicaciones desde el menú Start o desde el escritorio

• No requiere ningún explorador en ejecución• Permite que las aplicaciones funcionen offline• Actualiza las aplicaciones de manera automática

cuando se las llama

Copyright © 2004, Oracle. Todos los derechos reservados.6

Examen del Archivo JNLP

El archivo JNLP define:• La ubicación de los recursos de la aplicación• La información que aparece mientras se carga la

aplicación• Cuáles son los recursos de la aplicación

Copyright © 2004, Oracle. Todos los derechos reservados.7

Despliegue de Aplicaciones con JDeveloper

El asistente de perfiles de despliegue de JDeveloper:• Detecta dependencias entre clases• Crea archivos .ear, .war, .jar o .zip• Le permite tener el control sobre otros archivos

que se agreguen al archivado desplegado• Le permite guardar los valores de perfil de

despliegue en archivos de proyecto:– Para simplificar el redespliegue cuando cambie el

código– Que se pueden actualizar automáticamente con

nuevas clases a medida que se vayan agregando al proyecto

Copyright © 2004, Oracle. Todos los derechos reservados.8

Creación del Archivo de Perfil de Despliegue

Seleccione File > New

Copyright © 2004, Oracle. Todos los derechos reservados.9

Guardado del Perfil de Despliegue

Seleccione un destino y un nombre para el perfil de despliegue.

Copyright © 2004, Oracle. Todos los derechos reservados.10

Selección de los Archivos que se Van a Desplegar

Seleccione los tipos de archivo que se van a incluir. Otros valores difieren para otros tipos de perfiles de despliegue.

Copyright © 2004, Oracle. Todos los derechos reservados.11

Creación de un Archivo .jar Ejecutable

En JAR Options, defina el campo Main Class en el nombre de la clase que contiene el método main().

Copyright © 2004, Oracle. Todos los derechos reservados.12

Creación y Despliegue del Archivo de Archivado

• Haga clic con el botón derecho del mouse en el archivo de perfil de despliegue.

• Seleccione la opción de menú Deploy to.• El archivo .jar se crea en el directorio mostrado

en las propiedades de despliegue.

Copyright © 2004, Oracle. Todos los derechos reservados.13

Uso de JDeveloper para Desplegar una Aplicación en Java Web Start

Paso 1: Genere los perfiles de despliegue y archive la aplicación. Paso 2: Inicie OC4J y cree una conexión.Paso 3: Utilice el asistente de Web Start para crear un archivo JNLP.Paso 4: Archive y despliegue la aplicación en el servidor OC4J.

Copyright © 2004, Oracle. Todos los derechos reservados.14

Paso 1: Genere los Perfiles de Despliegue y Archive la Aplicación

Empaquete todos los archivos de la aplicación Java en un archivado .jar simple.

Copyright © 2004, Oracle. Todos los derechos reservados.15

Paso 2a: Inicie OC4J

Utilice la línea de comandos para iniciar el servidor.

Copyright © 2004, Oracle. Todos los derechos reservados.16

Paso 2b: Creación de una Conexión

Utilice el Asistente de Conexión para crear una conexión al servidor de aplicaciones. Debe especificar:• El tipo de conexión (OC4J)• El nombre de usuario y la contraseña para la

autenticación• Dirección URL local, dirección Web de destino y

directorio local para OC4J

Copyright © 2004, Oracle. Todos los derechos reservados.17

Paso 3: Utilice el Asistente de Web Start para Crear un Archivo JNLP

• Especifique el nombre de Web Start, el archivado de la aplicación (.jar) y la clase de aplicación principal.

• Incluya información para que se muestre al usuario durante la descarga (por ejemplo, título de la aplicación, proveedor y una breve descripción)

Copyright © 2004, Oracle. Todos los derechos reservados.18

Paso 4: Archive y Despliegue la Aplicación en el Servidor OC4J

• Especifique las propiedades de los componentes Web y la descripción de despliegue.

• Despliegue a la conexión a OC4J creada en el paso 2.• Ejecute el archivo HTML generado.

Copyright © 2004, Oracle. Todos los derechos reservados.19

Resumen

En este módulo, ha aprendido a:• Describir cómo se ejecuta una aplicación Java

Web Start• Describir las ventajas de utilizar Java Web Start• Utilizar JDeveloper para desplegar una aplicación

mediante Web Start

Copyright © 2004, Oracle. Todos los derechos reservados.20

Práctica 17: Visión General

Esta práctica cubre los siguientes temas:• Archivado de la aplicación Java• Creación de un nuevo proyecto que contenga los

archivos Web Start y definición de la preferencia del servidor OC4J

• Instalación e inicio del servidor de aplicaciones OC4J autónomo

• Creación de una conexión de servidor de aplicaciones en JDeveloper

• Archivado y despliegue de los archivos de aplicación en OC4J y prueba de la aplicación