2011
Introduccin a Java
Conceptos Bsicos
Que es Java ?
Java es un Lenguaje de Programacin Orientado a Objetos desarrollado por Sun Microsystems. Java es una Maquina Virtual (entorno de ejecucin) que puede ser integrada en los navegadores web (web browsers ejem: Netscape, Internet Explorer ) y en diversos Sistemas Operativos. Java es un conjunto de Clases, Libreras estandarizadas (paquetes) APIs, que permiten implementar diversas funcionalidades.
Caractersticas Principales
Sencillo Orientado a objetos Distribuido Interpretado Robusto Seguro Arquitectura neutra Portable Altas prestaciones Multithread (multihilo) Dinmico
La plataforma Java
La plataforma de Java tiene dos Componentes: Maquina Virtual de Java Interfaz de Programacin de Aplicaciones Java(API)
Java API
Est conformado por un conjunto de clases que nos permite obtener funcionalidades especficas en el desarrollo de nuestras aplicaciones. Organizada a travs de mdulos que son incrementales. Pueden ser una API estndar o extendidas.
Herramientas de Desarrollo. Herramientas para compilar, ejecutar, monitorear, depurar, y documentar aplicaciones. Interface de Programacin de Aplicaciones (API). Las APIs proporcionan las funcionalidades Bsicas de Java. Tecnologa de Despliegue. Java Proporciona Mecanismos para el despliegue de las aplicaciones a los usuarios finales. (Java Web Start, Java Plug-In) Kit de Herramientas para las GUI. Para la creacin de GUI sofisticadas se puede usar Swing y Java 2D. Libreras de Integracin. Se puede integrar libreras como JDBC API, JNDI API, RMI API, etc.
Tipos de Archivo
java : es la extensin de los archivos fuente del lenguaje java, ejem. HelloWorldApp.java , MyApplet.java. class : el resultado de compilar un archivo fuente java es un archivo en byte-code con extensin class, ejem. HelloWorldApp.class, MyApplet.class. El comando usado para compilar los arhivos con extensin java es javac y para su ejecucin el comando java que vienen incluidos en el JDK (Java Development Kit) de Sun Microsystems. jar/zip : las clases desarrolladas en java suelen por lo general guardarse en estos tipos de archivos comprimidos.
Organizacin
Paquetes (Packages) : son un grupo o librera de clases desarrolladas en java que se utilizan para algo especfico. Las principales clases de java son las siguientes (incluidas en el JDK) : java.applet Desarrollo de Applets. java.awt Abstract Window Toolkit. java.awt.event Soporte y procesamiento de eventos. java.swing Soporte para componentes grficos de Java. java.swing.event Soporte y procesamiento de eventos para componentes swing. java.io Input/output streams. java.lang Clases fundamentales del lenguaje JAVA. java.net Soporte para networking. java.util Utilidades extras.
Organizacin
Clases : como JAVA es un lenguaje OO (Orientado a objetos) tipico su estructura esta basada en clases. Una clase es una plantilla que define las caractersticas de un objeto una vez que es instanciado. La herencia y el nivel de acceso entre clases son soportados por JAVA.
Organizacin
Mtodos : los mtodos en JAVA como en cualquier lenguaje orientado a objetos se utilizan para realizar alguna accin especfica, estos se definen dentro de la clase y asi como las clases tambin poseen niveles de acceso. Los mtodos pueden recibir parmetros y retornar algun valor.
Teora de Objetos.
Orientacin a Objetos
Orientacin a objetos
Conjunto de disciplinas que desarrollan y modelizan software que facilitan la construccin de sistemas a partir de componentes.
Principios del SW OO
Abstraccin Encapsulamiento Principio cliente-servidor Jerarquas Polimorfismo Modularidad Persistencia
Principios del SW OO
Abstraccin Representacin de las caractersticas esenciales de un objeto, as como de su comportamiento. Programas = descripcin abstracta de un procedimiento del mundo real.
Principios del SW OO
Encapsulamiento Propiedad que permite asegurar que el contenido de la informacin de un objeto est oculta al mundo exterior. Es el proceso de ocultar los secretos de un objeto Permite la divisin de un programa en mdulos.
Principios del SW OO
Encapsulamiento La encapsulacin presenta dos ventajas bsicas: Se protegen los datos de accesos indebidos El acoplamiento entre las clases se disminuye Favorece la modularidad y el mantenimiento Los atributos de una clase no deberan ser manipulables directamente por el resto de objetos
Principios del SW OO
Encapsulamiento Los niveles de encapsulacin estn heredados de los niveles de C++: (-) Privado : es el ms fuerte. Esta parte es totalmente invisible (excepto para clases friends en terminologa C++). (#) Los atributos/operaciones protegidos estn visibles para las clases friends y para las clases derivadas de la original. (+) Los atributos/operaciones pblicos son visibles a otras clases (cuando se trata de atributos se est transgrediendo el principio de encapsulacin).
Principios del SW OO
Encapsulamiento
Ejemplo:
Reglas de visibilidad Atributo pblico : Integer Atributo protegido : Integer Atributo privado : Integer "Operacin pblica"() "Operacin protegida"() "Operacin privada"()
Principios del SW OO
Cliente-servidor Se basa en la interaccin de dos entidades: El cliente hace solicitudes al servidor para que este realice servicios.
Principios del SW OO
Jerarquas Propiedad que permite una ordenacin de las abstracciones. Existen 2 tipos: Generalizacin / especializacin conocidas como herencia Agregacin, permite el agrupamiento fsico de estructuras relacionadas lgicamente.
Principios del SW OO
Polimorfismo Propiedad que indica la posibilidad que una entidad tome diversas formas Posibilidad de desencadenar operaciones distintas en respuesta a un mismo mensaje
Principios del SW OO
Polimorfismo
Animal dormir()
Dormir() { }
Len dormir()
Dormir() { sobre el vientre }
Oso dormir()
Tigre dormir()
Dormir() { en un rbol }
Principios del SW OO
Modularidad Propiedad que permite subdividir una aplicacin en partes mas pequeas (mdulos) Cada modulo es tan independiente como sea posible
Principios del SW OO
Persistencia Capacidad de un objeto de trascender en el tiempo y espacio Conserva su estado en almacenamiento permanente un sistema de
Clasificacin
El mundo real puede ser visto desde abstracciones diferentes (subjetividad) Mecanismos de abstraccin: Clasificacin / Instanciacin Composicin / Descomposicin Agrupacin / Individualizacin Especializacin / Generalizacin La clasificacin es uno de los mecanismos de abstraccin ms utilizados. Una abstraccin trata de mostrar las propiedades y comportamientos de un objeto que lo diferencia de otro.
Clases
Modela una abstraccin definiendo propiedades y comportamientos para los objetos representados. La clase define el mbito de definicin de un conjunto de objetos. Cada objeto pertenece a una clase. Los objetos se crean por instanciacin de las clases.
Clases
Propiedades : Atributos, variables. Comportamientos : Operaciones, mtodos. Contratos : Define qu servicios proporciona una clase. Implementacin : Define cmo se proporcionan los servicios en una clase.
Definicin de objeto
Ente real o conceptual que posea caractersticas y comportamiento propios, nicos e inconfundibles Es una instancia concreta de la abstraccin que representa la clase.
Juan Prez
Computador
Identidad de un objeto
Cada objeto tiene una identidad nica, incluso si su estado es idntico al de otro objeto.
Identificador de un objeto
Caractersticas del Identificador: nico y global Determinado en el momento de su creacin Es independiente de la localizacin fsica del objeto Es independiente de las propiedades del objeto
Caractersticas y Comportamiento
Caractersticas (atributos): Nombre Estatura Edad Comportamiento (operacin): Caminar Hablar Saltar
Comportamiento y Estado
Comportamiento Agrupa las competencias de un objeto, Conocido como OPERACIN Es consecuencia de un estmulo externo (mensaje) Ejemplo: Prender CPU Estado Representado por los valores de los atributos Ejemplo: Prendido, apagado
Identificando objetos
Imaginemos que tenemos estacionado en nuestra cochera un Audi - A8 6.0 450CV quattro color azul que corre hasta 250 km/h.
Marca = Audi Modelo = A8 6.0 450CV quattro Color = Azul Velocidad Mxima = 250 km/h
Cuando a las caractersticas del objeto le asignamos valores decimos que el objeto tiene estados.
Comunicacin
Sistema = Conjunto de objetos autnomos y concurrentes que trabajan de manera coordinada en la consecucin de un fin especifico.
Mensaje Unidad de comunicacin entre objetos Para que exista un comportamiento (Operacin) es necesario que exista un mensaje
Comunicacin
Objetos: UML
En UML, un objeto se representa por un rectngulo con un nombre subrayado
Otro objeto
Un objeto
Otro objeto ms
Asociaciones
Relaciones entre clases
Clases
Conjunto de objetos con caractersticas (atributos) y comportamientos (operaciones) similares.
CLASE: Persona
Representacin UML
Clases: ejemplo
Una Cuenta Corriente que posee como caracterstica Balance Puede realizar las siguientes operaciones Depositar Girar y Balance
Dependencia y Agregacin (vista como un caso particular de asociacin) Generalizacin/Especializacin Las relaciones de Agregacin y Generalizacin forman jerarquas de clases
Asociacin
La asociacin permite asociar objetos que colaboran entre si. Cabe destacar que no es una relacin fuerte, es decir, el tiempo de vida de un objeto no depende del otro. Una asociacin es una abstraccin de la relacin existente en los enlaces entre los objetos
Univ. de Murcia : Universidad Un enlace Antonio : Estudiante
Estudiante
Asociacin
Especificacin de multiplicidad (mnima...mxima) 1 Uno y slo uno 0..1 Cero o uno M..N Desde M hasta N (enteros naturales) * Cero o muchos 0..* Cero o muchos 1..* Uno o muchos (al menos uno) La multiplicidad mnima >= 1 establece una restriccin de existencia
Asociacin
Ejemplo Un cliente puede tener asociadas muchas Ordenes de Compra, en cambio una orden de compra solo puede tener asociado un cliente.
Asociacin
Ejemplo:
marido casado-con
0..1 0..1
mujer
emplea-a
jefe Administra
0.. 1
empleado
Dependencia
La relacin de Dependencia o tambin conocida como de instanciacin representa un tipo de relacin muy particular, en la que una clase es instanciada (su instanciacin es dependiente de otro objeto/clase). Se denota por una flecha punteada.
Dependencia
El uso ms particular de este tipo de relacin es para denotar la dependencia que tiene una clase de otra, como por ejemplo una aplicacin grafica que instancia una ventana (la creacin del Objeto Ventana esta condicionado a la instanciacin proveniente desde el objeto Aplicacin):
Agregacin
La agregacin representa una relacin parte_de entre objetos En UML se proporciona una escasa caracterizacin de la agregacin Puede ser caracterizada con precisin determinando las relaciones de comportamiento y estructura que existen entre el objeto agregado y cada uno de sus objetos componentes
Agregacin
Para modelar objetos complejos, no bastan los tipos de datos bsicos que proveen los lenguajes (enteros, reales y cadena de caracteres). Cuando se requiere componer objetos que son instancias de clases definidas por el desarrollador de la aplicacin, tenemos dos posibilidades:
Por
Agregacin
Por Valor: Es un tipo de relacin esttica, en donde el tiempo de vida del objeto incluido esta condicionado por el tiempo de vida del que lo incluye. Este tipo de relacin es comnmente llamada Composicin (el Objeto base se construye a partir del objeto incluido, es decir, es "parte/todo"). Por Referencia: Es un tipo de relacin dinmica, en donde el tiempo de vida del objeto incluido es independiente del que lo incluye. Este tipo de relacin es comnmente llamada Agregacin (el objeto base utiliza al incluido para su funcionamiento).
Agregacin: Ejemplo
Un Almacn posee Clientes y Cuentas, cuando se destruye el Objeto Almacn tambin son destruidos los objetos Cuenta asociados, en cambio no son afectados los objetos Cliente asociados. La composicin se destaca por un rombo relleno. La agregacin se destaca por un rombo transparente.
Agregacin: Ejemplo
Window scrollbar[2] : Slider title : Header body : Panel
Window
1 1 1
scrollbar
2
title 1 Header
body
Slider
Panel
Herencia
Es un concepto que determina que una clase, que en adelante llamaremos subclase, puede heredar (extenderse) de una nica clase principal, a la que llamaremos superclase, recibiendo las variables y mtodos visibles de la Superclase (public y protected). El concepto de herencia es la verdadera base de la OOP, el cual permite la reutilizacin de cdigo de forma natural.
Herencia
Generalizacin
Permite gestionar la complejidad mediante un ordenamiento taxonmico de clases Se obtiene usando los mecanismos de abstraccin de Generalizacin y/o Especializacin La Generalizacin consiste en factorizar las propiedades comunes de un conjunto de clases en una clase ms general
Generalizacin
Nombres usados: clase padre - clase hija. Otros nombres: superclase - subclase, clase base - clase derivada Las subclases heredan propiedades de sus clases padre, es decir, atributos y operaciones (y asociaciones) de la clase padre estn disponibles en sus clases hijas
Generalizacin
Vehculo
Veihculo Terrestre
Vehculo Areo
Coche
Camin
Avin
Helicptero
Generalizacin
La especializacin es una tcnica muy eficaz para la extensin y reutilizacin
Coche
Funcionando
Est ropeado
... Generalizacin
La nocin de clase est prxima a la de conjunto Dada una clase, podemos ver el conjunto relativo a las instancias que posee o bien relativo a las propiedades de la clase Generalizacin y especializacin expresan relaciones de inclusin entre conjuntos
... Generalizacin
Particionamiento del espacio de objetos => Clasificacin Esttica Particionamiento del espacio de estados de los objetos => Clasificacin Dinmica En ambos casos se recomienda considerar generalizaciones/especializaciones disjuntas
... Generalizacin
Un ejemplo de Clasificacin Esttica:
Ve hcu lo Areo
{ esttica }
Avin
Helicptero
... Generalizacin
Un ejemplo de Clasificacin Dinmica:
Coche
{ dinmica }
Funcionando
Est ropeado
... Generalizacin
Ejemplo: varias especializaciones a partir de la misma clase padre, usando discriminadores:
Comercial Militar
estructura
Avin
Helicptero
Herencia Mltiple
Uso disciplinado de la herencia mltiple: clasificaciones disjuntas con clases padre en hojas de jerarquas alternativas
Bpedo nro patas Con Pelos cubertura Con Plumas cobertura cobertura Con Escamas Animal comida Carnvoro comida Cuadrpedo nro patas Herbvoro
Conejo
Netbeans
Interfaz de Desarrollo
www.netbeans.org
Qu es NetBeans?
NetBeans es un proyecto exitoso de cdigo abierto con una gran base de usuarios y una comunidad en constante crecimiento. Sun MicroSystems fund el proyecto de cdigo abierto NetBeans en junio 2000 y contina siendo el patrocinador principal de los proyectos. Al da de hoy hay disponibles dos productos: el NetBeans IDE y NetBeans Platform.
NetBeans IDE
Es una herramienta para que los programadores puedan escribir, compilar, depurar y ejecutar programas. Es un entorno de desarrollo y est escrito en Java pero puede servir para cualquier otro lenguaje de programacin. Existe adems un nmero importante de mdulos para extender el NetBeans IDE. Es un producto libre y gratuito sin restricciones de uso.
NetBeans IDE
Sintaxis y Referencia
Estructura del Lenguaje Java
Estndares de Programacin
Paquetes: Nombre nico se escribe todo en minsculas. Clases: Nombres sustantivos siendo la primera letra de cada palabra con Mayscula. Interfaces: Similar a de las Clases. Mtodos: Debe comenzar con un verbo en minscula y la primera letra de las siguientes palabras (diferentes al verbo) con mayscula. Variables: La primera letra con minscula, las palabras internas empiezan con mayscula. Constantes: Deben estar todas con maysculas y las palabras separadas por el carcter de subrayado _.
Identificadores
Caracteres Unicode : 16 bits El primer carcter no puede ser un dgito Pueden empezar con un subrayado o un dlar ( _ ) ( $ ) Java es Case-Sensitive : se distinguen mayscula de minsculas Pueden ser de cualquier longitud. No puede ser una palabra reservada o (true, false,null)
Clases
Nombramiento (Estndar) Usar el sustantivo singular Los nombres de la clase deben empezar con maysculas No debe usarse el subrayado Los nombres compuestos se ponen juntos y la primera palabra se escribir con mayscula Ejemplo: Alumno, SistemaDePago
Modificadores de Acceso
Definen el grado de comunicacin y visibilidad de los atributos y mtodos de ellos con el entorno, estos son: public (+): Indica que el atributo ser visible tanto dentro como fuera de la clase, es decir, es accsesible desde todos lados sin restricciones. private (-): Indica que el atributo slo ser accesible desde dentro de la clase que lo declara (slo sus mtodos lo pueden acceder).
(#): Indica que el atributo es accesible desde cualquier subclase (tanto dentro como fuera del paquete) y a todo mtodo dentro del paquete. Package: El campo es accesible a todos los mtodos dentro del paquete. Es el acceso por defecto.
NIVELES DE ACCESO CLASE private X protected X public X default X SUBCLASE PAQUETE X X X X X OTROS
Clases : Sintaxis
Sintaxis : [modificador*] class <nombreDeClase> [extends <nombreDeClase>] [implements <nombreDeInterface*>] { ... } Modificadores : Abstract: No se pueden instanciar objetos. Solamente una clase abstracta puede declarar mtodos abstractos. Final: No permite subclases. Public: Acceso general.
Variables
Sintaxis :
[modificador] <nombreDeTipo> <nombreDeVariable> [= <inicializador>]; Adicionalmente a las declaraciones de Acceso, las variables pueden ser declaradas como:
Static .Final .Variable de clase.(Solo existe un copia por clase con acceso compartido entre todas las instancias de la misma.) Declara la variable como constante.
En caso de que sea una variable de tipo primitivo indica que el valor no podr ser cambiado. Para objetos, la referencia del mismo no podr apuntar a un nuevo objeto, pero el objeto aun es capaz de ser modificado.
Tipos Primitivos :
Precisin
8 bits 16 bits 32 bits 64 bits 16 bits 32 bits 64 bits -
Mtodos
Sintaxis : [modificador*] <nombreDeTipo> <nombreDeMetodo> ([<args*>]) [throws <nombreDeExcepcion*>] { ... } | ; Adicionalmente a las declaraciones de Acceso, las variables pueden ser declaradas como: Static Mtodo de clase. No requiere de un objeto de la clase para su ejecucin. Solo tiene acceso a campos y Mtodos Static. Abstract No implementa cdigo dentro de si, sus subclases deben de implementarlo o declararse como abstact. Final No puede ser sobreescrito. Native Declara una referencia para un cdigo implementado fuera del java.
Constructores
Es un tipo especial de mtodo que se ejecuta al crear una nueva instancia de una clase. Sintaxis : [modificador*] <nombreDeClase> ([<args*>]) [throws <nombreDeExcepcion*>] {...} Si ningn constructor es creado, uno por defecto es elaborado por el compilador, sin argumentos y llamando al constructor por defecto de la superclase super(). Si se especifica un constructor no ya no se crea el constructor por defecto.
Constructores
Un constructor debe de tener el mismo nombre que la clase y no debe especificar un tipo de retorno, si es especificado, el compilador ya no lo reconoce como un constructor. Para toda clase definida , la primer instruccin de todos los constructores es una llamada a otro constructor. Esta llamada puede ser la invocacin por defecto de super() , o puede ser: Una invocacin a otro constructor presente en la clase: this(<parametros*>); Una invocacin a un constructor de la superclase: super(<parametros*>);
Expresiones y Bloques
Una expresin es una serie de variable, operadores y llamadas de mtodos (implementadas de acuerdo al lenguaje) que evala y da como resultado un nico valor.
Expresiones
Bloque
Operadores
Operadores :
++ -+= -= *= /= %= && ||
incremento decremento adicin sustraccin multiplicacin divisin modulo AND Lgico OR Lgico
(a=a+b es equivalente a a+=b) (a=a-b es equivalente a a-=b ) (a=a*b es equivalente a a*=b ) (a=a/b es equivalente a a/=b ) (a=a*b es equivalente a a*=b )
Comentarios
Los comentarios de documentacin, colocados inmediatamente antes de una declaracin (de variable o funcin), indican que ese comentario ha de ser colocado en la documentacin que se genera automticamente cuando se utiliza la herramienta de Java, javadoc.
// comentarios para una sola lnea /* comentarios de una o ms lneas */ /** comentario de documentacin, de una o ms lneas */
PALABRAS CLAVES while do - while for if - else switch - case try - catch - finally throw break continue label: return
try { sentencias; ............. } catch (Excepcion e0) { sentencias; ............. } catch (Excepcion e1) { .............. } finally { sentencias; }
Estructura if - else
if (boolean) { ... { else if (boolean) { ... } else { ... } * Al contrario del C, en Java solo se puede evaluar una expresin booleana en una sentencia if.
Estructura switch
Switch (expresion) { case Costante1: ... break; case Constante2: ... break; . . . default: ... break; }
Estructura for
for ( expresion ; boolean ; expresion) { ... }
A diferencia del C, el Java permite inicializar la variable dentro de la sentencia for, por ejemplo: for (int x = 0; x < 20; x++) La variable x solamente ser valida dentro del cuerpo del bucle.
Paquetes
Un paquetes es un conjunto de clases e interfaces relacionadas que proporcionan proteccin y administracin en el acceso a ellas. Para declararlas se usa la palabra reservada package Esto se coloca al inicio de todo programa fuente. Para acceder a un paquete utilizamos la notacin del punto.
paquete1.paquete2.miClase;
Referencias
this Hace referencia al mismo objeto, se puede invocar a atributos o metodos de la clase. super Hace referencia al objeto padre, se puede invocar a atributos o metodos de la clase padre.
Herencia
Es la capacidad de crear una nueva clase a partir de otra. La clase creada puede utilizar las propiedades y los mtodos de la anterior, as como los propios que haya creado. La clase padre se denomina superclase y la hija, subclase. En Java la herencia es lineal (slo existe un superclase para una subclase) y se Utiliza la palabra clave extends. Se heredan los mtodos permitidos, a menos que se sobreescriba alguno.
Interfaces (Multiherencia)
Una interfaz es simplemente un archivo que establece un tipo de objeto y los mtodos necesarios para su empleo, sin implementarlos. Sintaxis : [modificador*] <nombreDeInterfaz> [extends <nombreDeInterfaz>] {...} Cuando una clase implementa una interfaz necesariamente debe implementar los mtodos establecidos en ella.
Sobreescritura de Mtodos
Para sobrescribir un mtodo debemos de tener en cuenta algunas condiciones:
Debemos revisar el nivel de accesibilidad para comprobar que podemos sobreescribir el mtodo. El mtodo debe tener la misma firma que el de la clase padre. Desde el mtodo hijo podemos ejecutar el mtodo padre si es necesario.
Principio de Sustitucin
El Principio de Sustitucin de Liskow afirma que: Debe ser posible utilizar cualquier objeto instancia de una subclase en el lugar de cualquier objeto instancia de su superclase sin que la semntica del programa escrito en los trminos de la superclase se vea afectado.
Principio de Sustitucin
Dado que los programadores pueden introducir cdigo en las subclases redefiniendo las operaciones, es posible introducir involuntaria-mente incoherencias que violen el principio de sustitucin El polimorfismo que veremos a continuacin no debera implementarse sin este principio
Polimorfismo
El trmino polimorfismo se refiere a que una caracterstica de una clase puede tomar varias formas El polimorfismo representa en nuestro caso la posibilidad de desencadenar operaciones distintas en respuesta a un mismo mensaje Cada subclase hereda las operaciones pero tiene la posibilidad de modificar localmente el comportamiento de estas operaciones
Polimorfismo
Ejemplo: todo animal duerme, pero cada clase lo hace de forma distinta
Animal dormir()
?
dormir
?
Len Oso Tigre
Polimorfismo
Animal dormir()
Dormir() { }
Len dormir()
Dormir() { sobre el vientre }
Oso dormir()
Tigre dormir()
Dormir() { en un rbol }
Polimorfismo
La bsqueda automtica del cdigo que en cada momento se va a ejecutar es fruto del enlace dinmico El cumplimiento del Principio de Sustitucin permite obtener un comportamiento y diseo coherente
Sobrecarga y Sobreescritura
Sobrecarga(Overloading) .
Mltiples mtodos declarados en la misma clase con el mismo nombre, pero con diferente tipo y numero de argumentos. Ejemplo :
Sobrescritura(Overriding) .
Un mtodo declarado en una subclase con el mismo nombre y tipo de argumentos que su superclase
Excepciones y su gestin
Una excepcin es un objeto que avisa que ha ocurrido alguna condicin inusual. Java tiene muchos objetos de excepcin predefinidos y tambin podemos crear los nuestros propios para gestionar personalizadamente su tratamiento. Para utilizar excepciones, tenemos que hacer cuatro cosas: Intentar: crear un bloque alrededor de la instruccin donde puedan ocurrir excepciones y precederlas con la palabra clave try Capturar: colocar a continuacin de la instruccin try otro bloque precedido por la palabra catch
Excepciones y su gestin
Lanzar: si no se trata la excepcin, sta pasar automticamente al mtodo llamador; si la capturamos y la tratamos parcialmente, podemos de todas formas pasarla con una instruccin throw. Declarar: mencionar en la declaracin del mtodo qu excepciones se devolvern al mtodo llamador. try{ }catch( ){ }finally{ }
Excepciones - Ejemplo
public void leeArchivo(String nombre) throws IOException { BufferedReader fin = new BufferedReader(new FileReader(nombre)); try { while(true) { cadena = fin.readLine(); System.out.println(cadena); } } catch (EOFException e) { System.out.println("Fin del archivo"); } }
Aserciones
Una asercin es una instruccin que contiene una expresin booleana de la que el programador sabe que en un momento dado de la ejecucin del programa este debe ser verdadero. Su uso esta centrado en la fase de desarrollo y con ellos podemos verificar que el programa se ejecuta dentro de los lmites que el programador le marca reduciendo la posibilidad de errores. Para declarar un aserto en una clase Java, se usa la palabra clave assert: assert Expresion1; assert Expresin1:Expresin2;
Aserciones
En cualquiera de los dos casos Expresin1 tiene que ser una expresin booleana o se producir un error de compilacin. Cuando se evala un aserto que solo tenga Expresin1, se comprueba la veracidad de la expresin y si es verdadera se contina la ejecucin del programa, pero si es falsa, se lanza una excepcin de tipo AssertionError. Si el aserto contiene adems una Expresin2 y Expresin1 es falsa, se evala Expresion2 y se le pasa como parmetro al constructor del AssertionError (Si Expresion1 se evala como cierto, la segunda expresin no se evala). Para usar en Netbeans las Aserciones se debe especificar su uso en Propiedades del Proyecto, Categora Run en la opcin: VM Options: -ea
Qu es Deprecated?.
Deprecated es un warning diciendo que el soporte de esos mtodos ser retirado del ncleo del JVM, y que existen clases mas apropiadas, o nuevas formas de realizar la labor deseada. A pesar de ello, el fuente java es pre-compilado a un class y aun es posible ejecutarlo. El Java recibe modificaciones constantemente; nuevas clases, nuevas interfaces, nuevos mtodos mas verstiles, son desarrollados y publicados frecuentemente, as como libreras son anexadas al sistema ( caso SWING).
Base de Datos
Arquitectura de Software Escalable
Agenda
Objetivos
Reconocer los objetos para trabajar con bases de datos. Desarrollar aplicaciones que trabajen con bases de datos.
JDBC
Existen 4 formas de usar JDBC para conexin con la BD: El puente JDBC-ODBC (ODBC de Microsoft) Driver de Java parcialmente nativo (Drivers Nativos) Driver JDBC de Java puro ( Conexin directa) Driver de protocolo de Java puro ( Driver en Java)
El puente JDBC-ODBC
Drivers de terceros
http://developers.sun.com/product/jdbc/drivers
Procedimientos almacenados
PreparedStatement ps = cn.prepareStatement(Select * from alumno where codigo=?); ps.setString(1, 123); ResultSet rs = ps.executeQuery();
Cursores y SP
createStatement(int resultSetType, int resultSetConcurrency); ResultSet.TYPE_FORWARD_ONLY ResultSet.TYPE_SCROLL_INSENSITIVE ResultSet.TYPE_SCROLL_SENSITIVE
Procedimientos almacenados
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet uprs = stmt.executeQuery("SELECT * FROM COFFEES"); //Insertando un registro uprs.moveToInsertRow(); uprs.updateString("COF_NAME", "Kona"); uprs.updateInt("SUP_ID", 150); uprs.updateFloat("PRICE", 10.99); uprs.insertRow();
Procedimientos almacenados
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet uprs = stmt.executeQuery("SELECT * FROM COFFEES"); //Actualizando un registro uprs.last(); uprs.updateFloat("PRICE", 10.99); uprs.updateRow();
Procedimientos almacenados
Create Procedure sp_Promedio @alumno varchar(30), @promedio real Output As Declare @suma real Select @suma= (Select nota1+nota2+nota3 From notas Where alumno=@alumno) Select @promedio= @suma/3
Procedimientos almacenados
DELIMITER // CREATE PROCEDURE GetOfficeByCountry (IN countryName VARCHAR(255)) BEGIN SELECT city, phone FROM offices WHERE country = countryName; END // DELIMITER ;
Procedimientos almacenados
DELIMITER $$ CREATE PROCEDURE CountOrderByStatus ( IN orderStatus VARCHAR(25), OUT total INT) BEGIN SELECT count(orderNumber) INTO total FROM orders WHERE status = orderStatus; END$$ DELIMITER ;
Procedimientos almacenados
Statement st = cn.createStatement(); ResultSet rs = st.executeQuery({call sp_listaAlumnos}); -------------------------------------------------------------------------CallableStatement cs = cn.prepareCall({call sp_promedio(?,?)}); cs.setString(1, codigo); cs.registerOutParameter(2, java.sql.Types.DOUBLE); cs.execute(); double pro = cs.getDouble(2);
Aplicaciones en Capas
Arquitectura de Software Escalable
Capas en Aplicaciones
Nuevas plataformas de hardware para clientes y servidores a menos costo. El avance de las tecnologas de redes. Centralizacin de Procesos en Servidores Especializados. Automatizacin de las empresas.
Capas en Aplicaciones
UNA CAPA Un solo programa se encarga de generar desde la interfaz grafica, pasando por el proceso de la informacin y el control de su almacenamiento. Un programa hecho en C que lea los datos de un archivo de texto los ordene y los muestre por pantalla.
Capas en Aplicaciones
DOS CAPAS El objetivo es facilitar el trabajo de las PC Clientes y centralizar ciertos procesos, este esquema podra aumenta el trafico de la red si se generan mltiples peticiones Un sistema Visual Basic que se conecta a una Base de Datos Oracle
Capas en Aplicaciones
Aplicacin Aplicacin
Capas en Aplicaciones
TRES CAPAS La aplicacin se divide en tres capas lgicas distintas, cada una de estas con una interfaces perfectamente definidas, comnmente se definen de la siguiente manera: - Presentacin - Lgica - Datos
Capas en Aplicaciones
Interfaz de Usuario
Tres Capas
Lgica de Aplicacin
DB
Documentos XML
Capas en Aplicaciones
N CAPAS En una arquitectura de N niveles, la lgica del negocio esta lgicamente dividida por funciones (no necesariamente divisiones fsicas). No hay un modo preciso para definir las capas, el arquitecto de software las definir de acuerdo al requerimiento.
Capas en Aplicaciones
Interfaz de Usuario
N Capas
Generador de Presentacin
Lgica de Aplicacin
Acceso a Datos
DB
Documentos XML
Gracias