Sei sulla pagina 1di 168

Desarrollo de Sistemas utilizando JAVA

Jess M. Olivares Ceja


www.jesusolivares.com
mail@jesusolivares.com

AGENDA
Historia de JAVA Iniciando el uso de JAVA Modelacin de la Realidad (Abstraccin) Elementos de Programacin Orientada a Objetos Elementos del Lenguaje JAVA Aplicaciones usando JAVA
GUI usando Swing Applets Threads cliente/servidor JDBC (base de datos) Servlets JSP

Presentacin

Historia de Java

Breve historia de Java


En 1990 James Gosling inicia el desarroll el lenguaje OaK como una variante de C++ en la empresa SUN (Stanford University Network) con la intencin de operar cualquier mecanismo informtico (como licuadoras, lavaplatos, microondas, etc.) mediante un programas sencillos y simples que se distribuyen a travs de una red

Breve historia de Java


En 1994 se tuvo una versin del lenguaje que sera Java y se pretenda abandonar por falta de un enfoque apropiado y para cerrarlo el equipo de desarrollo se reuni con Scott McNealy (presidente ejecutivo de SUN) quien vio un gran potencial en el nuevo lenguaje y lo apoy personalmente hasta su lanzamiento al mercado, para esto le cambi el nombre a Java y con el propsito de utilizarlo como plataforma para desarrollos en Internet. En mayo de 1995 se hizo la presentacin en pblico de Java incluyndolo en el navegador Netscape generando as millones de copias en poco tiempo. Actualmente es uno de los lenguajes ms difundidos para desarrollo de aplicaciones multiplataformas que aprovechan la infraestructura de Internet

Caractersticas de Java
.java .java .java

compilacin
.class .class .class

carga
Mquina Virtual de Java java.exe java appletviewer

ejecucin
UNIX Windows Solaris Linux

Hardware

Java es un lenguaje Orientado a Objetos basado en Clases, usa herencia simple, es multiplataforma e interpretado (mediante la JVM, Maquina Virtual de Java, Java Virtual Machine), tiene diferentes tipos de programas: consola, applets, servlets y beans; los applets y servlets se usan directamente en Internet

Iniciando el Uso de JAVA

Recursos para Utilizar Java


Kit de desarrollo (Software Development Kit, SDK), que incluye el compilador y la mquina virtual de Java, se obtiene del sitio de SUN

java.sun.com
el archivo: j2sdk-1_4_2-windows-i586.exe para Win98, 2000 jdk-1_5_0-windows-i586.exe para WinXP 1.5 o superior API (Application Program Interface, Interfase del Programador de Aplicaciones) de Java:

java.sun.com/api
Editar e invocador del compilador, se sugiere el uso de JCreator del sitio:

www.jcreator.com

Referencias de Java
Almanaque de Java www.javaalmanac.com El Libro electrnico Thinking in Java (Bruce Eckel)

www.mindview.net/Books/TIJ
Tutorial de Java (SUN) java.sun.com/docs/books/tutorial Sitio de Oscar Gonzlez www.cic.ipn.mx/ute/ogonzalez Tutorial de Java www.ulpgc.es/otros/tutoriales/java Sitio de Jess Olivares www.jesusolivares.com/java El libro 1001 Tips para programar en Java de Mark C. Chang

Instalacin del Compilador y del Editor


La instalacin del Compilador en Windows requiere dar doble click al archivo :

j2sdk-1_4_2-windows-i586.exe
o

jdk-1_5_0-windows-i586.exe
(durante la instalacin se sugiere dar las opciones por omisin)

La instalacin del Editor JCreator en Windows, se hace despus de instalar el compilador, requiere dar doble click al archivo:

setup.exe
(durante la instalacin se sugiere dar las opciones por omisin)

Primer programa de Java


Hola

class Hola { public static void main(String args[]) { System.out.println("hola amigos"); } }

public static void main(String [])

versin 2.5 El editor JCreator se activa mediante el icono:

versin 3.5

La compilacin se hace presionando el cono:

La ejecucin se hace mediante el cono:

Descripcin de la clase Hola


class indica que Hola es una clase. public indica que el mtodo main es visible desde la Maquina Virtual de Java (JVM, Java Virtual Machine) static se utiliza para generar mtodos de clase que NO requieren de un objeto para su ejecucin void se coloca para indicar que el mtodo main NO devuelve valores String [] indica que el mtodo main recibe argumentos (de la lnea de comando al ejecutarse) System.out.println( ) tiene la sintaxis CLASE.OBJETO.METODO y se utiliza para desplegar objetos String

Entrada/Salida de la Consola
import java.io.*; class Hola { public static void main(String args[])throws IOException { BufferedReader consola = new BufferedReader( new InputStreamReader(System.in)); // DESPLEGA UN INDICADOR PARA LEER UN DATO System.out.print("Dato> ");

// LEE UNA cadena DE LA CONSOLA String cadena = consola.readLine(); // DESPLEGA LA cadena LEIDA System.out.println("Hola " + cadena);
} }

Suma de dos nmeros


import java.io.*; class Hola { public static void main(String args[]) throws IOException { BufferedReader consola = new BufferedReader( new InputStreamReader(System.in)); int a, b ; // LEE EL dato A System.out.print("Dato A> "); String cadena = consola.readLine();

a = Integer.parseInt(cadena);
// LEE EL dato B System.out.print("Dato B> "); String cadena = consola.readLine();

b = Integer.parseInt(cadena);
// DESPLEGA LA SUMA System.out.println( + a + + + b + = + } }

(a+b));

Modelacin de la Realidad

Abstraccin

REALIDAD

MODELO

La Abstraccin es una operacin mental que permite colocar en el plano de la mente, los detalles relevantes, de una parte de la realidad que interesa modelar (abstraer es simplificar)

Modelo

REALIDAD

MODELO

Un Modelo es una representacin abstracta de una parte de la realidad Se utiliza para conocer, entender, predecir, simular o explicar la realidad modelada

Modelacin
Datos

REALIDAD

MODELO

Acciones

Los Modelos Informticos generalmente contienen:

Datos
y

(nmeros, letreros, fotos, msica)

Acciones (procesos, rutinas, mtodos, procedimientos, reglas)

Sistema de Informacin

Datos Entrada

Procesos Salida

Estructura

Un Sistema de Informacin es un modelo informtico con: entrada(s), salida(s), datos, procesos y la estructura

Dos Sistemas de Informacin

5 * 8+4

5 *(8+ 4)

Datos:

5 8 4 Procesos: * +

Estructura: es el orden en que aplican los procesos sobre los datos (representado con las lneas continuas)

Cmo encontramos los Datos, Procesos y la Estructura de un Sistema?

Programacin Dirigida por Sintaxis (PDS)


El sistema tiene

La PDS* es un mtodo que se utiliza para encontrar los elementos de un Sistema de Informacin a partir del lenguaje del usuario.
Se buscan datos, procesos y estructuras
* autor: Fernando Galindo Soria

Elementos de un Sistema de Informacin

Los elementos de informacin encontrados son datos y acciones.

Elementos de un Sistema de Informacin

Los elementos de informacin encontrados son datos y acciones.


Estos elementos se agrupan cuando estn relacionados en estructuras

Encapsulacin

Se llama Encapsulacin cuando se colocan juntos propiedades y mtodos en una unidad. Se adicionan mtodos (lneas punteadas) que permiten asignar o recuperar valores de las propiedades A partir de esta encapsulacin se genera el concepto de clase

Clase: Pila de datos

push(dato)

pop()

Con la Encapsulacin se pretende que las propiedades queden ocultas para el usuario de la clase. Para manejar un objeto de la clase Pila se usan los mtodos push(dato) para almacenar y pop() para recuperar

Clase

Elementos de una Clase Propiedad


nombre

Una Propiedad es un dato de Tipo Primitivo (TDP) o un objeto. Por ejemplo, una variable x, nombrePersona, imagen, archivo. Grficamente representamos a una propiedad como un rectngulo su nombre generalmente se escribe con minsculas,si aparece ms de una palabra, al inicio de cada una se escribe letra mayscula

Elementos de una Clase Mtodo

despliega()

Un Mtodo es un proceso abstracto y contiene un conjunto finito de instrucciones. Grficamente representamos a un mtodo con un crculo, su nombre es similar al de las propiedades y termina con parntesis donde van los parmetros. Al conjunto de mtodos de una clase se le llama la Interfase de la Clase. Las clases y mtodos de Java se encuentran descritos en la API (Application Program Interface) java.sun.com/api

Clase
Figura x y

despliega()

mueve()

Una Clase es una descripcin abstracta de una entidad de la realidad en trminos de propiedades (datos) y mtodos (procesos) encapsulados en una unidad.

Grficamente se representa con un cuadro con puntas redondeadas, su nombre generalmente se escribe con una letra inicial mayscula y las restantes minsculas, si aparece ms de una palabra, el inicio de cada una se escribe con una mayscula, por ejemplo: Persona, Figura, AnimalAcuatico

Clase Automovil
class Automovil { // PROPIEDADES String color ; int velocidadMaxima ; // MTODOS void asignaColor(String _color) { color = _color; } String indicaColor() { return color; } }

Interfase

Interfase
Runnable

run()

stop()

Una Interfase es un conjunto de mtodos SIN propiedades que indica Cuales son las acciones que se deben llevar a cabo pero SIN desarrollar cada Una de esas acciones. Se coloca con la palabra reservada de Java: implements

Interfase Runnable

interface Runnable { void run(); void start(String cadena); }

Objeto

Objeto
circulo x y

despliega()

mueve()

Un Objeto es una instancia (caso particular) de una clase. El nombre de un objeto es una referencia hacia las propiedades y mtodos. Un objeto apunta hacia propiedades y mtodos y es relocalizable, esto significa que No apunta hacia una direccin de memoria especfica. Grficamente se representa de forma similar que una clase la diferencia es que generalmente el nombre de un objeto se inicia con minsculas.

Objeto
circulo

despliega()

mueve()

Un Objeto debe utilizarse sin hacer referencia a las propiedades que lo forman. El acceso a sus propiedades y la recuperacin de valores debe hacerse a travs de sus mtodos nicamente.
(aunque SI es posible accesar sus propiedades directamente precedidas del nombre del objeto)

Objetos de la Clase Automovil


class Agencia { public static void main(String args[]) { // OBJETOS Automovil autoDeportivo = new Automovil(); Automovil camioneta = new Automovil();

// INVOCACIN DE MTODOS autoDeportivo.asignaColor("azul"); camioneta.asignaColor("rojo"); System.out.println("autoDeportivo color " + autoDeportivo.indicaColor()); System.out.println("camioneta color " + camioneta.indicaColor());
} }

Constructor

Constructor
Figura

Figura()
Un Constructor es un mtodo pblico que lleva el mismo nombre de la clase a la que pertenece. Se ejecuta automticamente cuando se crea una instancia de la clase (objeto), generalmente el desarrollador lo utiliza para asignar valores iniciales a las propiedades del objeto. En Java automticamente cada clase tiene un constructor con el mismo nombre de la clase sin argumentos de entrada. Si el usuario escribe su propio constructor entonces debe utilizarlo.

Clase Automovil con un Constructor


class Automovil { String color ; Automovil(String _color) { color = _color; } void asignaColor(String _color) { color = _color; } String indicaColor() { return color; } } class Autos { public static void main(String args[]) { // OBJETOS DE LA CLASE Automovil USANDO EL CONSTRUCTOR Automovil autoDeportivo = new Automovil("azul"); Automovil camioneta = new Automovil("rojo"); System.out.println("autoDeportivo color " + AutoDeportivo.indicaColor()); System.out.println("camioneta color " + Camioneta.indicaColor()); } }

Sobrecarga de Mtodos

Sobrecarga de mtodos
Figura

Figura()

Figura(String)

La Sobrecarga se da cuando se usa en una misma clase, el mismo nombre de un mtodo pero con diferentes argumentos. Las operaciones de los mtodos, generalmente, son diferentes. Cualquier mtodo en una clase es posible sobrecargarlo, tanto los constructores como los mtodos de clase o de instancia

Sobrecarga de mtodos
class Automovil { String color ;

Automovil() { color = "blanco"; } Automovil(String _color) { color = _color; }


void asignaColor(String _color) { color = _color; } String indicaColor() { return color; } } class Autos { public static void main(String args[]) { Automovil autoDeportivo = new Automovil("azul"); Automovil camioneta = new Automovil(); System.out.println("autoDeportivo color " + AutoDeportivo.indicaColor()); System.out.println("camioneta color " + Camioneta.indicaColor()); } }

Propiedades y Mtodos de Clase

Propiedades y Mtodos de Clase


Automovil static cuenta

color
Automovil() static Contador() asignaColor() indicaColor()

Las Propiedades y Mtodos de Clase se crean una sola vez en cada clase y los comparten los objetos (instancias) de esa clase.

Se identifican porque los precede la palabra reservada static.

Propiedades y Mtodos de Clase en Ejecucin


camioneta

color Automovil() Automovil asignaColor() indicaColor()

static cuenta static Contador()

autoDeportivo

color Automovil() asignaColor()

indicaColor()

Mtodos y Propiedades de Clase


class Automovil { String color ; // PROPIEDAD DE OBJETO static int cuenta; // PROPIEDAD DE CLASE // CONSTRUCTORES Automovil() { color = "blanco"; cuenta++; } Automovil(String _color) { color = _color; cuenta++; } // METODOS DE INSTANCIA void asignaColor(String _color) { color = _color; } String indicaColor() { return color; } // METODO DE CLASE static void contador() { System.out.println("Creadas " + cuenta + " instancias"); } } class Autos { public static void main(String args[]) { // SE INVOCA AL METODO DE CLASE SIN CREAR OBJETO Automovil.contador(); Automovil.cuenta = 8; Automovil autoDeportivo = new Automovil(); // EL METODO DE CLASE INVOCADO DESDE UN OBJETO autoDeportivo.contador(); Automovil camioneta = new Automovil("rojo"); camioneta.contador(); System.out.println("autoDeportivo color " + autoDeportivo.indicaColor()); System.out.println("camioneta color " + camioneta.indicaColor()); Automovil.contador(); } }

Clonacin de Objetos

Clonacin
Circulo circulo = new Circulo();
circulo
x y

clonCirculo
x y

despliega()

mueve()

despliega()

mueve()

apuntadorCirculo

// CLONACIN Circulo clonCirculo = circulo.clone();

// COPIA DE REFERENCIA
Circulo apuntadorCirculo = circulo;

La Clonacin de un objeto consiste en generar una copia del mismo en otra localidad de memoria,
en vez de solamente referenciarlo mediante otra variable.

Clonacin de un objeto
class Persona implements Cloneable { String nombre ; String direccion ; public Persona(String _nombre ,String _direccion) { nombre = _nombre; direccion = _direccion; } public Object clone() { Cloneable clon = new Persona(nombre ,direccion); return clon; } void asignaDireccion(String _direccion) { direccion = _direccion; } void despliega() { System.out.println("Nombre: " + nombre + " Direccin: " + direccion); } }

Clonacin de un objeto
class Clon { public static void main(String arg[]) { Persona juan = new Persona("Juan" ,"Lomas"); // SE CREA EL OBJETO juan juan.despliega(); // SE DESPLIEGAN LOS DATOS DE juan System.out.println("Clonando a Juan"); Persona copiaJuan = (Persona)juan.clone(); // SE CLONA EL OBJETO juan Persona otroApuntadorJuan = juan; // OTRO OBJETO APUNTA A juan copiaJuan.asignaDireccion("Iztapalapa"); // CAMBIO DE DIRECCION AL CLON juan.despliega(); // DESPLIEGA LOS DATOS DE juan copiaJuan.despliega(); // DESPLIEGA LOS DATOS DEL CLON otroApuntadorJuan.despliega(); // DESPLIEGA LOS DATOS DEL OTRO APUNTADOR otroApuntadorJuan.asignaDireccion("C.U."); // CAMBIO DE DIRECCION A juan juan.despliega(); // DESPLIEGA LOS DATOS DE juan otroApuntadorJuan.despliega(); // DESPLIEGA LOS DATOS DEL OTRO APUNTADOR } }

Liberacin de Memoria

Se hace automticamente mediante el Recolector de Basura (Garbage Collector) cuando a un objeto nadie lo apunta A diferencia de C++, JAVA no cuenta con mtodos Destructor en las clases, esto se hace automticamente

Relaciones entre clases

Relaciones entre Clases: Herencia Composicin

Agregacin
Asociacin
Las relaciones entre clases permiten la reutilizacin de cdigo

Herencia
Persona

Alumno

Profesor

La Herencia es una relacin entre clases en donde la subclase clase hereda las propiedades y mtodos de la superclase. Se representa mediante relaciones es_un con una flecha con punta hueca dirigida de la clase derivada a la superclase.

Obtencin de las relaciones de herencia

Las Relaciones de Herencia se obtienen mediante la generalizacin y la especializacin. La Generalizacin se hace a partir de un conjunto de clases y se bsca una clase que las generaliza (agrupa) La Especializacin se genera cuando a partir de una clase genrica se obtienen clases que son casos particulares de la misma

Herencia de Persona a Alumno


class Persona { String nombre ; Persona(String _nombre) { nombre = _nombre; } String indicaNombre() { return nombre; } } class Alumno extends Persona { int calificacion ; Alumno(String _nombre) { super(_nombre); calificacion = 0; } void asignaCalificacion(int _calificacion) { calificacion = _calificacion; } String indicaDatos() { return "Alumno: " + super.indicaNombre() + " calificacion: " + calificacion; } }

Sobreescritura
Figura
pinta()

Circulo
pinta()

Triangulo

Se le llama Sobreescritura cudndo un mtodo existente en una superclase se declara en una subclase y ambos tienen el mismo nombre, en este caso el mtodo de la clase derivada sobreescribe a la superclase. En este ejemplo el mtodo pinta() de Circulo sobrescribe al de Figura mientras que Triangulo utiliza el mtodo pinta() que hereda de Figura

Sobreescritura del mtodo indicaNombre()


class Persona { String nombre ; Persona(String _nombre) { nombre = _nombre; } String indicaNombre() { return nombre; } } class Alumno extends Persona { int calificacion ;

Alumno(String _nombre) { super(_nombre); } String indicaNombre() { return Alumno + nombre; } void asignaCalificacion(int _calificacion) { calificacion = _calificacion; } String indicaDatos() { return "Alumno: " + super.indicaNombre() + " calificacion: " + calificacion; }
}

Polimorfismo
Figura x y color pinta()

Circulo radio pinta()

Triangulo

Cuadrado lado pinta()

Isoceles base altura pinta()

El Polimorfismo se da cuando un mtodo aparece en dos clases diferentes con el mismo nombre y argumentos. El comportamiento generalmente es diferente

Polimorfismo
// DECLARA EL ARREGLO DE OBJETOS Figura arreglo[] = new Figura[6];

// DETERMINA QUE OBJETO SE ALMACENA EN CADA ELEMENTO arreglo[0] = new Circulo(20,30,10 ,Color.blue); arreglo[1] = new Triangulo(50,220,Color.red); arreglo[2] = new Circulo(200,100,40 ,Color.cyan); arreglo[3] = new Cuadrado(120,40,30,Color.green); arreglo[4] = new Triangulo(250,70,Color.gray); arreglo[5] = new Isoceles(173 ,204 ,50 ,66 ,new Color(0100 ,150 ,0xFF));
// LLAMA AL METODO pinta PARA CADA ELEMENTO APLICANDO POLIMORFISMO for(int i=0; i < arreglo.length; i++) arreglo[i].pinta();

Composicin
Automovil

Chasis

Motor

Llanta

Composicin
Motor

Automovil

Chasis

Llanta

La Composicin consiste en incluir (o formar) una clase a otra(s) como una propiedad para crear clases complejas. En este caso se reutiliza la interfase de las clases componente. Las clases estn unidas mediante la relacin parte_de con una flecha con punta de rombo. Los objetos que lo componen son privados

Composicin
class Automovil { String marca ; Motor motor ; Chasis chasis ; Llanta llanta[] = new Llanta[4]; ; Automovil(String _marca) { marca = _marca; motor = new Motor(4); chasis = new Chasis(azul); for( int i = 0; i < llanta.length; i++ ) llanta[i] = new Llanta(deportiva); } void asignaMotor(Motor _motor) { motor = _motor; } }

Agregacin

Bosque

Arbol

La Agregacin es una relacin que permite crear clases complejas mediante la agrupacin de una coleccin de una clase existente (es una forma ms dbil que la composicin). Las clases estn unidas mediante la relacin parte_de con una flecha con punta de rombo hueca. En Java las implementaciones de Collection son ejemplos de esta relacin

Asociacin

Cuantificacin de las Relaciones

Paquetes

Paquetes
Escuela
Alumno Materia

Profesor

Salon

Un Paquete agrupa a un conjunto de clases se indica en un programa con la palabra reservada import subdirectorio1.subdirectorio2.clase En la variable de ambiente CLASSPATH debe estar la ruta de la ubicacin de las clases que forman al paquete subdirectorio1\subdirectorio2

Paquetes definidos por el usuario


package

Accesibilidad

Accesibilidad
Accesibilidad public protected friendly" private protected private Clases si si si si si La misma clase llama al mtodo La subclase llama al mtodo Las clases del mismo paquete llaman al mtodo Cualquier clase llama al mtodo si Subclases si si Paquete si si si Todas si

La Accesibilidad se indica con el calificador public, private, protected o abstract en las propiedades y mtodos de una clase.

Elementos del Lenguaje JAVA

Comentarios

Comentarios
En Java existen tres tipos de comentarios: De Resto de Lnea:

while( x < 5 ) // COMENTARIO


De Varias Lneas: /* COMENTARIO QUE OCUPA VARIAS LINEAS */ De Documentacin:

/** programa.java ESTE ES UN COMENTARIO DE DOCUMENTACION, UTILIZADO POR EL PROGRAMA javadoc */

Palabras Reservadas

Palabras reservadas
abstract catch default final *generic *inner native package short this *var boolean char do finally *goto new protected static throw void break class double float if null public super throws volatile byte *const else for interface *operator *rest switch case continue extends *future long *outer return

implements import

instanceof int

synchronize d *transient try while

Las Palabras Reservadas son aquellas que tienen un uso especfico en el lenguaje Java y No deben utilizarse como identificadores de usuario. Las que llevan asterisco (*) en la tabla estn reservadas para uso futuro

Identificadores de Usuario

Identificadores de usuario
X y $temporal _auxiliar UnaClase
Los Identificadores de Usuario se usan para nombrar variables (tipos primitivos, u objetos), mtodos o clases. Se escriben con una inicial que puede ser letra mayscula o minscula, subraya (_) o el signo de pesos ($) seguidos por una secuencia de letras, nmeros o subraya. Letra significa cualquier smbolo unicode que represente una letra en cualquier idioma, es un valor entre cero y 65536. La longitud mxima de un identificador es de 64 caracteres y no deben existir espacios entre los smbolos que lo forman

Tipos de Datos Primitivos

Tipos de Datos Primitivos


TIPO ESPACIO
long int short byte boolean char double float void
Los Tipos de Datos Primitivos (TDP) son variables que se utilizan directamente con los operadores del lenguaje Java (en vez de utilizar mtodos como ocurre con los objetos). En la tabla se indican los TDP de Java con el espacio que ocupan en memoria y ejemplos

64 bits 32 bits 16 bits 8 bits 1 bit 16 bits 64 bits 32 bits

-9,233372,036854,775808 a 9,233372,036854,775807 -2147,483648 a 2147,483647 -32768 a 32767 -128 a 127 true (verdadero), false (falso) unicode 0 a 65535 1.79769313486231570e308 (15 digitos significativos) 3.40282347e38 (7 digitos significativos)

RANGO

Literales
TIPO
enteras largas (long) enteras hexadecimales octales carcter string flotantes doble precisin flotante booleanas objeto 5L, 125328000293687 3452, 16 0x3f42, 0x18 0725, 01713 'L', '\u0000' "una cadena" 3.1416F, 8.5F 2.718281828459D, 3.1416, 2.5 true, false { <literal>, <literal>, ...}

EJEMPLO

Una Literal es un valor constante. En la tabla se indican los tipos de literales de Java y algunos ejemplos

Operadores de Java

Operadores
PRECEDENCIA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 . ++ * + << < == & ^ | && || ? : = , [ ] -/ >> > !=

OPERADORES
( ) ! % >>> <=

new instanceof ~

>=

op=

Los Operadores son smbolos (o grupos de smbolos) que representan acciones que se aplican sobre literales o variables de Java. En la tabla se muestran los operadores de Java con su precedencia los de precedencia menor se ejecutan primero de izquierda a derecha

Los operadores son representaciones con una bolita y varias lneas que entran dependiendo del nmero de parmetros que requieren. Ejemplo:

Ejemplo:

5 + 4 + 3 + 8 = 20
5

3
8

20

EJEMPLO DE PROCEDENCIA DE OPERADORES


Sea la expresin: x = 5 * 8 3 / 2 + 6 > 40

En esta se colocan debajo de cada operador su precedencia x = 5 * 8 - 3 / 2 + 6 > 40


3 4 3 4 6

como la precedencia va de izquierda a derecha y de mayor a menor las operaciones se ejecutan como sigue: 5 * 8 - 3 / 2 + 6 > 40

La precedencia se cambia con parntesis. Ejemplo:


5*8+4
3 4

5 * (8 + 4)
3 1 4

5*8+4

5 * (8 + 4)

Promocin
Si se tiene:

int x ; double y , PI = 3.1416; x = 5; y = x + PI;


en este caso se promociona x al tipo double antes de hacer la suma, la promocin es automtica
La Promocin se hace automticamente en Java cuando se aplica algn operador, se asigna el tipo ms grande a los operadores que aparecen en la expresin, por ejemplo se estn sumando un int con un float, la suma se efectua promoviendo el int a float y de esta forma el resultado es float

Disfraz (casting)
Si se tiene:

int x ; double y , PI = 3.1416; x = (int) PI;


en este caso disfraza a PI de tipo int para asignarle valor a X aunque se pierde precisin (los decimales se pierden en este caso) Si fuera al revs de un int a un float no se pierde precisin y no es necesario hacer el casting porque se hace una promocin

Un Casting se utiliza cuando se quiere cambiar el tipo de un resultado diferente al que se obtiene normalmente, por ejemplo int cuando el resultado es float. El tipo de dato del casting se escribe entre parntesis

Disfraz (casting)
Si se tiene un Vector, para recuperar un elemento se hace un casting:

Cliente juan ; Vector clientes = new Vector(); juan = (Cliente)clientes.get(2);


clientes.get(2) me devuelve el Object de la posicin 2 del vector. Vector es un arreglo dinmico de objetos numerados desde cero hasta n 1. El tamao del vector se conoce con el mtodo size().

Un Casting se utiliza en Vector para reasignar la clase de un Objeto que tiene almacenado

Bsqueda de un dato en un Vector


Si se tiene un Vector, para recuperar un elemento se hace un casting: String busco = juan ; Vector clientes = new Vector(9843); int i ; for( i = 0; i < clientes.size(); i++ ) { Cliente cte = (Cliente)clientes.get(i); if( cte.getNombre().equals(busco) == true) break; } if( i < clientes.size() ) System.out.println(ENCONTRE AL CLIENTE + busco);

Bsqueda de un dato en un Vector


Si se tiene un Vector, para recuperar un elemento se hace un casting: String busco = juan ; Vector clientes = new Vector(9843); int i ; for( i = 0; i < clientes.size(); i++ ) { if( ((Cliente)clientes.get(i)).getNombre().equals(busco) ) break; } if( i < clientes.size() ) System.out.println(ENCONTRE AL CLIENTE + busco);

Bsqueda de un dato en un Vector


Si se tiene un Vector, para recuperar un elemento se hace un casting: String busco = juan ; Vector clientes = new Vector(9843); int i ; for( i = 0; i < clientes.size(); i++ ) { Cliente cte = (Cliente)clientes.get(i); String nombre = cte.getNombre(); if( nombre.equals(busco) == true) break; } if( i < clientes.size() ) System.out.println(ENCONTRE AL CLIENTE + busco);

Flujo de Control

Estructuras de Control
Secuencia
c A B

Decisin
e

A1

A2

A3

if v=inicial actualiza v A

switch

Iteracin
A c

Recursin
A c do-while A

while

for

Las Estructuras de Control se utilizan para controlar el flujo de ejecucin de las instrucciones en los mtodos de Java.

Estructuras de Paralelismo y Concurrencia

Excepciones

Excepcin
try { } catch( Exception nombre) { } finally { }
Una Excepcin es una alteracin en el flujo normal de control, Las excepciones en Java se detectan dentro de un bloque try {} y si ocurre entre las llaves una excepcin se atrapa ejecutando el bloque catch(){} siempre y cuando la excepcin sea la indicada entre parntesis. Se pueden atrapar varias excepciones en bloques catch consecutivos. El bloque finally {} se ejecuta en ambos casos

Jerarqua de Java de Excepciones


Exception

IOException

ClassNotFoundException

Las Excepciones se organizan en una Jerarqua, donde la clase Exception es la de nivel superior, por lo que es comn para atrapar cualquier excepcin colocar Exception dentro del catch

Excepciones Definidas por el Usuario


Exception

MiExcepcion

Una Excepcin Definida por el Usuario se hace con una clase derivada de Exceptionen este ejemplo MiExcepcion se utiliza como culquier excepcin

Interfaz Grfica de Usuario (GUI)

GUI
Sencillos
JLabel JTextField JButton JTextArea
JTable JTree

Componentes
Complejos FlowLayout

Interfase Grfica de Usuario


(Graphical User Interface)

Distribucin

GridLayout BorderLayout null JFrame

Contenedores

JApplet Canvas

ActionListener

Eventos

MouseListener KeyListener

Interfase Hombre-Mquina
AWT (Abstract Window Toolkit): clase Frame Swing: clase JFrame
Las Interfases Grficas de Usuario (GUI) se implementan en Java con las clases AWT y Swing Es mejor usar Swing porque sustituye a la AWT desde la versin 1.1 Generalmente los programas de consola GUI se derivan de la clase Frame o JFrame

Ejemplos 03-GUI

En los ejemplos que acompaan esta presentacin hay ejemplos en la carpeta 03-GUI donde se encuentran componentes y eventos; tanto de AWT como de Swing

Interfase Hombre-Mquina
AWT: clase Applet Swing: clase JApplet

Las Interfases Grficas de Usuario (GUI) que se ejecutan en un Navegador de Internet se derivan de la clase Applet o JApplet

Eventos

Eventos
KeyListener MouseListener MouseMoveListener

Applets

Ejemplos 04-Applet

Los ejemplos de Applets se encuentran en la carpeta 04-Applet tanto de AWT como de Swing

Applet

Se sugiere que los Applets sean pequeos por el tiempo de transferencia y carga que emplean antes de su ejecucin

Graficacin 2D, 3D y dimensin Fractal

06-2D 07-3D 05-ecuacion


Los ejemplos de Graficacin en 2D, 3D y dimensin Fractal se encuentran en las carpetas 06-2D, 07-3D y 05-ecuacion en los Ejemplos que acompaan a esta presentacin

Paralelismo y Concurrencia

Paralelismo y Concurrencia
Thread

Los ejemplos de Paralelismo y Concurrencia en Java se encuentran en la carpeta 08-hebra en los Ejemplos que acompaan a esta presentacin. Se tiene paralelismo real cuando se cuenta con varios procesadores

Hilo (Thread)

El diagrama de flujo representa un proceso. Un Hilo (thread) es el flujo de ejecucin de un proceso. Las lneas de colores representan diferentes hilos (threads) del proceso.

Proceso Multihilo (Multithread) main()

run()

Es cuando de un mismo proceso se encuentran en ejecucin varios hilos (threads) simultneamente (paralelismo)

Redes

Redes
ServerSocket Socket DataInputStream PrintStream
Los ejemplos de Redes se encuentran en la carpeta 09-red que acompaan a esta presentacin

Arquitectura cliente/servidor Conectores fsicos


SERVIDOR
RJ45 RJ45

CLIENTE
RED

Conectores lgicos
1 puerto
Varios puertos lgicos

fsico

RED

1 puerto fsico

Varios puertos lgicos

Hay puertos lgicos reservados, por ejemplo 80 (http) 25 (email) Se recomienda el uso de los puertos 5000h en adelante. En un cliente, el nmero de puerto lgico se asigna automticamente.

Arquitectura cliente/servidor
SERVIDOR ServerSocket servidor CLIENTE

Socket servicio servicio=servidor.accept()

Socket cliente

Al establecer la comunicacin se dice que se estrechan las manos (handshaking)

PrintStream

DataInputStream

Nota: accept detiene la ejecucin hasta que se conecta un cliente

Arquitectura cliente/servidor
SERVIDOR ServerSocket servicio CLIENTE
Servidor IP puerto

Socket
Servidor IP puerto Cliente IP puerto

Socket
Servidor IP puerto Cliente IP puerto

PrintStream salida

DataInputStream entrada PrintStream salida

DataInputStream entrada

LECTURA String dato = entrada.readline(); ESCRITURA salida.println(mensaje);


Nota: si se usa Printstream, cada mensaje debe terminar con \n

SECUENCIAS DE COMUNICACIN

SERVIDOR
no no si si

CLIENTE

Comunicacin Cliente/Servidor
En la comunicacin cliente/servidor existen tres etapas:
DECLARACIN Se establecen los sockets y los flujos de entrada y salida

CONEXIN Se hace en dos partes: servidor que espera cliente que enlaza

INTERACCIN

Se usan los flujos de entrada y salida para leer y escribir

Cliente/Servidor Multithread
SERVIDOR Server Socket CLIENTE

Escucha run () enviar ()

recibe () enviar () enviar ()

Base de Datos con Java (JDBC)

Acceso a Base de Datos (JDBC)


Class DriverManager Connection Statement ResultSet
Los ejemplos de Acceso a Base de Datos con JDBC se encuentran en la carpeta 10-bd en los Ejemplos que acompaan a esta presentacin

BASE DE DATOS CON JAVA


Una base de datos es una coleccin de datos interrelacionados donde se tiene una mnima redundancia y se garantiza la integridad y seguridad. Se considera formada por un conjunto de tablas y de ndices. Cada tabla est formada por varios atributos y registros llamados tuplas. Los nombres de tablas con sus atributos dan origen al llamado Esquema de la BD. Mediante los ndices se logra un acceso ms rpido a la informacin que una bsqueda secuencial.

BD Persona rfc

Pasatiempo

TABLAS
Persona
RFC Nombre Direccin Lugar

Pasatiempo
Clave Descripcin Lugar

Esquema de la BD (Diccionario de datos)


Persona Rfc Nombre Direccin Telfono A A A A 20 50 50 30 registro Federal de Causantes nombre de la persona direccin donde vive su telfono

Pasatiempo Clave A 3 Descripcin A 30 Lugar A 20

clave del pasatiempo descripcin del pasatiempo lugar en que se lleva a cabo

Sistema Manejador de Base de Datos


escribe lee

Ejemplo: Access Oracle Informix MySQL Postgress

BD

Esquema de la BD

ARQUITECTURA DE ACCESO A UNA BD USANDO JAVA JDBC (Java Database Connectivity)

Aplicacin

Driver Manager odbc:jdbc

JAVA

SMBD
BD

Esquema de la BD

Aplicacin
JAVA

Driver Manager
odbc:jdbc

SMBD Access

SMBD MySQL

SMBD ORACLE

ESQUEMA DE LA BD
Con el puente obdc:jdbc se accesan diferentes SMBD con el mismo esquema de la BD sin cambios en el cdigo JAVA

SQL
Instrucciones de Actualizacin a una BD

INSERT DELETE UPDATE SET


Instruccin de consulta de una BD

SELECT FROM WHERE


Instrucciones de Manejo del Esquema CREATE TABLE DROP TABLE

Class for Name.- Carga el Driver Manager que se encarga de manejar el puente odbc:jdbc Connection.- Crea el objeto conexin que se comunica con el driver especfico para manejar la Base de Datos (SMBD), por ejemplo, Access, MySQL, Oracle, Postgress, Informix Statement.- Crea un objeto para enviar consultas en lenguaje SQL al SMBD

ResultSet.- Es un objeto que contiene el resultado de una consulta a la Base de Datos.


Los tuplas (renglones) de un ResultSet se recuperan en un ciclo while. Cada campo de una tupla se toma con getstring (nombre columna)

Base de Datos Remota

BASE DE DATOS REMOTA

SERVIDOR

SERVIDOR

Driver Manager

HTML

BD

odbc:jdbc

SMBD

SMBD MySQL

SMBD ORACLE

cliente html applet

Access

INTERNET

ESQUEMA DE LA BD

Servlets

Servlets

SERVIDOR
invocacin y parmetros
SERVIDOR Servlets
Servlet

CLIENTE
navegador

INTERNET
HTML

navegador

navegador Navegador: Netscape, IExplorer, Firefox

Un Servlet es un programa Java que simplifica el modelo Cliente/Servidor.


Se invoca desde un navegador de Internet mediante un archivo HTML, se ejecuta en el servidor y genera una salida en formato HTML.

SERVLETS
CLIENTE
Navegador <a href> <FORM action> </FORM> Invocacin y parmetros Servlet html Mtodos de invocacin GET POST

SERVIDOR

Un Servlet se invoca con una liga <a href> o con un botn en una estructura <form> </form> de HTML. Existen dos Mtodos de Invocacin de un Servlet: GET y POST. Con GET los parmetros son visibles en la lnea de direccin y ocupan un mximo de 1024 bytes. Con POST los parmetros se pasan por un socket interno y tienen mayor capacidad

Servidor de Servlets
CLIENTE
html SERVIDOR

html
html

Tomcat

html

Un servidor de Servlets atiende las solicitudes de los clientes a trves de un navegador usando un puerto determinado http://localhost:8080

protocolo

IP

puerto

Ejemplo de un Servlet

Lectura de parmetros

Proceso

Resultados

Base de Datos con Servlets


CLIENTE html html html html html html
SMBD Access SMBD MySQL SMBD ORACLE

SERVIDOR

Tomcat

Driver Manager
Servlet odbc:jdbc

ESQUEMA DE LA BD

SESIONES
Session

Un objeto sesin (de la clase Session) se almacena en el servidor para mantener la informacin del navegador durante la comunicacin Cliente/Servidor

SESIONES

Session

HTTP

HTTP
NAVEGADOR

HTTP

Un Objeto Session (Sesin) almacena datos compartidos entre diferentes pginas HTML. Este objeto se almacena en el navegador y su periodo de vida es: Page (pgina), Session (Sesin), Application

Se recomienda consultar http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/index.html

JSP

ARQUITECTURA JSP

(JAVA SERVER PAGES)


CLIENTE
navegador SERVIDOR WEB navegador
B E A

SERVIDOR

INTERNET

Aplicacin HTML + JSP

N S

navegador

Navegador: Netscape, Iexplorer, Firefox

JSP

Los JSP se utilizan para generar pginas HTML dinmicas mediante la incrustacin de cdigo fuente JAVA en una pgina HTML.

Al ejecutar el JSP se sustituye el cdigo JAVA por su resultado quedando solamente una pgina HTML.

JSP
Pgina html Servidor WEB Compilacin (La primera vez)

navegador

JSP
html

1.- El navegador enva una pgina html

2.- El JSP lee los parmetros del archivo html (si es la primera vez que se invoca se compila)
3.- Se procesa el archivo JSP y se genera la respuesta en otro archivo html 4.- El navegador despliega el archivo html que tiene la respuesta

Bean

get

get

set

Se llama Bean a una clase que cuenta con mtodos get y set para cada uno de las propiedades de la clase, adems de otros mtodos.

JSP que suma dos nmeros

Acceso a Base de Datos con JSP

BEAN
Un Bean es un componente software que tiene la particularidad de ser reutilizable y as evitar la tediosa tarea de programar los distintos componentes uno a uno. Se puede decir que existen con la finalidad de ahorrarnos tiempo al programar. Es el caso de la mayora de componentes que manejan los editores visuales ms comunes. Los que hayan utilizado Visual Studio, Eclipse o Delphi por ejemplo, ya estarn familizarizados con ellos. Bean viene del ingls "frijol", y su idea principal es que se reaprovechan "frijoles" que ya han sido creados por otros desarrolladores. Sabiendo esto, un Bean puede representar desde un botn, un grid de resultados, un panel contenedor o un simple campo de texto, hasta otras soluciones mucho ms complejas como conexiones a bases de datos, etc. Son bastante conocidas las EJB (Enterprise JavaBeans) que ofrecen numerosos Beans para Java.

Referencias sobre BEAN


Define que son los JAVA BEANS http://www.sc.ehu.es/sbweb/fisica/cursoJava/applets/javaBeans/intro.htm Describe los EJB http://java.sun.com/products/ejb/ Diferencia entre Bean y EJB http://www.osmosislatina.com/java/ejb.htm Interface Serializable http://www.chuidiang.com/java/rmi/rmiParametros.html#PAR%C1METROS_Serializ able Tutorial en Castellano http://www.programacion.com/java/tutorial/beans/8/

Procesos Abstractos Datos Abstractos

Abstraccin de Procesos
B

B
return

Con la Abstraccin de procesos se cambian los bloques de cdigo (B) repetidos por el llamado a una rutina (proceso, funcin o mtodo)
Se simplifica el programa

Abstraccin de Procesos

lee r t1 = r * r a = t1 * 3.1416 desplega a

float areaCirculo(float r) { t1 = r * r a = t1 * 3.1416 regresa a }

Una Rutina se crea asignndole un nombre a un grupo de instrucciones Cuando se invoca se usa solamente el nombre con sus parmetros

Reutilizacin de Cdigo

B
B

B B

Con los procesos abstractos es posible la Reutilizacin de Cdigo en varios Programas o Sistemas al utilizarlos como una unidad probada

Abstraccin de Datos
x = Pop() Push(elefante)

3.1415926 A

Con la abstraccin de datos se ocultan los datos accesndolos mediante procesos abstractos
Por ejemplo, en una Pila (stack), se aplican las procesos Push() o Pop() sin ocuparnos del tipo de dato del argumento

Evolucin de la Realidad

Evolucin de las Plataformas de Desarrollo de Sistemas


# usuarios

COBOL

Lenguaje C

C++, Java
1960 1970 1980 1990 2000

Evolucin de los Paradigmas de Programacin


PROGRAMACIN FUNCIONAL
Lisp Scheme

PROGRAMACIN LGICA
Prolog Parlog

PROGRAMACIN ESTRUCTURADA
Algol C

PROGRAMACIN ORIENTADA A OBJETOS


C++

Java PROGRAMACIN ORIENTADA A AGENTES


en desarrollo

Evolucin de la Realidad
evolucin
REALIDAD REALIDAD

evolucin
REALIDAD

modelacin
MODELO

modelacin

modelacin

MODELO

remodelacin

remodelacin

MODELO

La Realidad est cambiando, por lo que en un modelo hay un costo de modelacin (verde) y otro de remodelacin (naranja)

Construyamos Sistemas Evolutivos


REALIDAD REALIDAD
REALIDAD

Sistema Evolutivo

Un Sistema Evolutivo es capaz de percibir la realidad para generar y mantener un modelo de la realidad en forma automtica

Proyecto Final

Conclusiones
El lenguaje Java es muy amplio en su funcionalidad y actualmente continua su desarrollo Como se mencion antes, an estn en desarrollo otros paradigmas As como el universo evoluciona, as estn evolucionando las herramientas y paradigmas de programacin Es posible que el siguiente paradigma est en tu pensamiento

PROPONLO!

Tendencias: Sistemas Conscientes

PROCESOS DATOS

Estructura

Un Sistema Consciente es aquel que en sus datos tiene la informacin de lo que el mismo realiza

tlazokamati
gracias a ti por leer este documento

www.jesusolivares.com

Clase Hola Amigos


Calculadora Hola

acumulador limpia() suma(double) resta(double) por(double) divide(double) muestra()


Main es public porque debe ser visible desde afuera de la clase

public static main(String)

Diagrama de clases rbol binario


rbol binario O inserta O busca Nodo O nodo

rbol

Potrebbero piacerti anche