Vous êtes sur la page 1sur 101

Calidad que se acredita internacionalmente

ASIGNATURA TCNICAS DE PROGRAMACIN


(TEXTO UNIVERSITARIO)

Asignatura: Tcnicas de Programacin

VISIN
Ser una de las 10 mejores universidades privadas del Per al ao 2020, reconocidos por nuestra excelencia acadmica y vocacin de servicio, lderes en formacin integral, con perspectiva global; promoviendo la competitividad del pas.

MISIN
Somos una universidad privada, innovadora y comprometida con el desarrollo del Per, que se dedica a formar personas competentes, ntegras y emprendedoras, con visin internacional; para que se conviertan en ciudadanos responsables e impulsen el desarrollo de sus comunidades, impartiendo experiencias de aprendizaje vivificantes e inspiradoras; y generando una alta valoracin mutua entre todos los grupos de inters.

Material publicado con fines de estudio Segunda Edicin Huancayo, 2011

Pg. 2

Asignatura: Tcnicas de Programacin

PRESENTACIN

Tcnicas de Programacin, es una asignatura orientada a la Programacin Orientada a Objetos (P.O.O.) para proporcionar al estudiante una herramienta portable y extensible para generar un aprendizaje del lenguaje Java en su carrera profesional. Java es toda una tecnologa orientada al desarrollo de software con el cual podemos realizar cualquier tipo de programa. Hoy en da, la tecnologa Java ha cobrado mucha importancia en el mbito de Internet gracias a su plataforma J2EE. Pero Java no se queda ah, ya que en la industria para dispositivos mviles tambin hay una gran acogida para este lenguaje. En general, los contenidos propuestas en el material de estudio, se dividen en tres unidades: Introduccin a la P.O.O., Caractersticas Fundamentales de la P.O.O., Implementacin de interfaces de usuario y Acceso a Datos, recopilados cuidadosamente del los libros: Tcnicas de Programacin (Jos Gallego, Editorial McGraw-Hill, 1998 2003) y Java 2: Manual de usuario y tutorial (Agustn Frouge, Alfaomega, 2000). Es recomendable que el estudiante desarrolle en forma permanente la realizacin de los diversos programas y aplicaciones con interfaz de usuario y el acceso a datos que se basarn en un Lenguaje de Programacin Orientada a Objetos. El contenido del material se complementar con las lecciones presenciales e investigacin usando la tecnologa de internet. Agradezco a los alumnos quienes con sus inquietudes y sugerencias han han contribuido a mejorar la presente edicin.

Katia Montero

Pg. 3

Asignatura: Tcnicas de Programacin

NDICE
Pg.

PRESENTACIN NDICE PRIMERA UNIDAD: Introduccin a la Programacin Orientada a Objetos Tema N 1: Trabajar con programas y metodologa de la programacin 1.1 Trabajar con programas y realizacin de programas 1.2 Conceptos bsicos de la metodologa de la programacin Tema N 2: Introduccin a la Programacin Orientada a Objetos 2.1 Programacin Orientada a Objetos 2.2 Conceptos bsicos de Programacin Orientada a Objetos Tema N 3: Lenguaje de Programacin Orientada a Objetos 3.1 Comentarios, Identificadores, Separadores, Operadores, Variables, Expresiones, Strings 3.2 Controles de Flujo selectivos 3.3 Controles de Flujo Repetitivos 3.4 Arrays SEGUNDA UNIDAD: Caractersticas Fundamentales de la Programacin Orientada a Objetos Tema N 4: Conceptos Bsicos en Lenguaje de Programacin Orientada a Objetos 4.1 Clases, Objetos, Control de acceso, Constructores, Mensajes 4.2 Herencia, Subclases, Polimorfismo y Encapsulamiento 4.2 Clase Object, Clases Abstractas, Interfaces y Paquetes. TERCERA UNIDAD: Interfaz Grfica y manejo de Datos Tema N 5: Programas Bsicos en Lenguaje de Programacin Orientada a Objetos 5.1 El visor de Applets 5.2 Escribir Applets Java 5.3 La aplicacin Fecha 5.4 Clases Java 5.5 Excepciones

3 4

6 6 7 10 10 12 15 15 25 29 32

36 36 46 52

57 57 59 62 62 64

Pg. 4

Asignatura: Tcnicas de Programacin

Tema N 6: Delegacin de eventos y AWT 6.1 Delegacin de eventos 6.2 AWT: Interfaz de Usuario, Estructura del AWT, Componentes 6.3 Contenedores y Layouts Tema N 7: SWING: Borders, Etiquetas, Botones, Grupos y botones Tema N 8: SWING: Listas y cajas combinadas, texto, tooltips, Iconos Tema N 9: SWING: Menus, Menus popup Tema N 11: JDBC Referencias Bibliogrficas

65 65 69 82 85 90 93 97 101

Pg. 5

Asignatura: Tcnicas de Programacin

PRIMERA UNIDAD Introduccin a la Programacin Orientada a Objetos

Tema N 1: Trabajar con programas y metodologa de la programacin 1.1 Trabajar con programas y realizacin de programas
Antes de iniciar con el proceso de programacin, es conveniente tener claro algunos conceptos preliminares respecto a la organizacin de los programas en la memoria del procesador. Por otro lado, tambin es importante reconocer las diferentes representaciones de los lenguajes de programacin, as como, su denominacin en marcas de reconocido prestigio. PROGRAMA, PROGRAMACION Y LENGUAJES DE PROGRAMACION Desde el punto de vista del Procesador: Un programa es un conjunto de instrucciones o proposiciones bien definidas que le dicen lo que tiene quehacer. Cada instruccin le indica: - qu operacin realizar a continuacin - de dnde obtendr los datos que necesita para realizarla - dnde guardar los resultados de la operacin. Desde el punto de vista del usuario: Un programa, son las especificaciones de un conjunto de operaciones que debe llevar a cabo el computador para lograr resolver una determinada tarea. Un programa se escribe en un lenguaje de programacin, estos lenguajes permiten simplificar la creacin de programas debido a su fcil descripcin de las instrucciones que ha de ejecutar el procesador; en algunos casos, agrupando varias instrucciones y dando un solo nombre al conjunto, de tal forma que la lista de operaciones se reduce considerablemente, resultando fcil la comprensin y resolucin de programas. Tambin varios cientos de instrucciones simples se pueden expresar con una lista de unas cuantas lneas. Finalmente, a la accin de realizar un programa se le conoce como programacin.

Pg. 6

Asignatura: Tcnicas de Programacin En conclusin, reuniendo estos tres conceptos podemos decir: Un programa se escribe en un lenguaje de programacin y a la actividad de expresar un algoritmo en forma de programa se le denomina programacin. A menudo, el lenguaje de programacin se denomina software de programacin cuando se emplea un trmino genrico, a fin de distinguirlo del hardware.

1.2 Conceptos bsicos de la metodologa de la programacin Estructura de un programa


METODO MAIN Un programa esta constituido por una coleccin de clases que interactuan entre si, las cuales contienen un mtodo. El equivalente en java a una funcin o procedimientos es el mtodo esttico. Se puede llamar al mtodo esttico main con argumentos en la lnea de comandos. Es obligatorio que los tipos de los parmetros de main y el tipo de resultados (void ) sean. public static void main (String [] args) Programa en java. // Mi primera Aplicacin /* autor Alumno semestre V */ public class programa1 { public static void main (String [] args){ System.out.println (Hola mi primer programa); } } El archivo debe guardarse como programa1 respetando las maysculas y minsculas, necesitamos compilar el programa para obtener un archivo con le mismo nombre con extensin class, Nota: El lenguaje Java es sensible a las maysculas y minsculas

Tcnicas de programacin
Las tcnicas de programacin constituyen parte fundamental en el proceso de desarrollo e Ingeniera del Software dentro del mbito informtico. Cada tcnica tiene sus propias caractersticas, y distintos mtodos de resolucin de problemas, as como la implementacin de estndares de ciertas compaas o instituciones, y es de gran importancia aprender a implementarlas a la hora de adentrarse en la evolucin de cualquier proyecto de desarrollo de software. A continuacin tenemos las principales clasificaciones de las Tcnicas de Programacin:

Programacin Modular. Programacin Estructurada. Programacin Orientada a Objetos.


Pg. 7

Asignatura: Tcnicas de Programacin a) Programacin Modular Uno de los mtodos ms conocidos para resolver un problema es dividirlo en problemas ms pequeos, llamados subproblemas. De esta manera, en lugar de resolver una tarea compleja y tediosa, resolvemos otras ms sencillas y a partir de ellas llegamos a la solucin. Esta tcnica se usa mucho en programacin ya que programar no es ms que resolver problemas, y se le suele llamar diseo descendente, metodologa del divide y vencers o programacin top-down. b) Programacin Estructurada La programacin estructurada es una teoria de programacin que consiste en construir programas de facil comprension. La programacin estructurada es especialmente util, cuando se necesitan realizar correciones o modificaciones despues de haber concluido un programa o aplicacion. Al haberse utilizado la programacin estructurada, es mucho ms sencillo entender la codificacion del programa, que se habra hecho en diferentes secciones. La programacin estructurada se basa en una metodologi de desarrollo de programas llamda refinamiento sucesivos: Se plantea una operacion como un todo y se divide en segmentos ms sencillos o de menor complejidad. Una vez terminado todos los segmentos del programa, se procede a unificar las aplicaciones realizadas por el pool de programadores. Si se ha utilizado adecuadamente la programacin estructurada, esta integracion debe ser sencilla y no presentar problemas al integrar la misma y de presentar algun problema, sera rapidamente detectable para su correccion. La representacion grafica de la programacin estructurada se realiza a traves de diagramas de flujo o flow chart, el cual representa el programa con sus entradas, procesos y salidas. c) Programacin Orientada a Objetos La programacin orientada a objetos, intenta simular el mundo real a traves del significado de objetos que contiene caracteristicas y funciones. Los lenguajes orientados a objetos se clasifican como lenguajes de quinta generacion. Como su mismo nombre indica, la programacin orientada a objetos se basa en la idea de un objeto, que es una combinacion de variables locales y procedimientos llamados metodos que juntos conforman una entidad de programacin. El termino encapsulacion se usa para describir la combinacion de estructuras de datos y de metodos que son manipulados por el objeto. La llamada a un objeto es lo que se denomina pasar un "aviso" a un objeto. En la programacin orientada a objetos, encapsular significa, reunir y controlar el grupo resultante como un todo y no individualmente. En la programacin orientada a objetos la abstraccion es un termino externo al objeto, que controla la forma en que es visto por los demas.

Pg. 8

Asignatura: Tcnicas de Programacin En la programacin orientada a objetos la modularidad se considera de la siguiente manera: Un programa grande siempre sera ms complicado que la suma de varios programas pequeos, con lo que se considera ventajoso dividir un gran sistema en diversos modulos. En la programacin orientada a objetos tenemos la jerarquia, la cual consiste en la clasificacion y organizacion de las abstracciones segun su naturaleza. El ms claro ejemplo de jerarquia es la herencia. En la programacin orientada a objetos se define la herencia como una jerarquia de extracciones, y la relacion entre clases, donde se comparte la estructura y el comportamiento de una o ms clase considerada como clases superiores o una superclase, con lo cual se resume que la herencia es una unidad independiente por si misma heredada de una abstraccion o superclase. Un ejemplo cotidiano lo encontramos en las aplicaciones que existen cactualmente en el mercado, donde un formulario cualquiera hereda las caracteristicas de uan ventana del sistema operativo Windows (Maximizar, Minimizar, Cerrar) A continuacin mostramos los distintos conceptos que definen este tipo de filosofa de programacin: Objetos. Son las entidades bsicas en un sistema orientado a objetos. Cada objeto representa una abstraccin de un elemento del mundo real. Clases. Una clase es una coleccin de objetos de un tipo similar. Una vez definida una clase, se puede instanciar para crear un objeto a partir de la clase. Abstraccin de Datos. Significa representar propiedades esenciales sin incluir los detalles o la implementacin de las mismas. Encapsulacin de Datos. Es guardar atributos y funciones en una clase. No se puede acceder a los datos desde fuera de la clase y slo los mtodos de dentro de la clase pueden acceder a ellos. Herencia. Es el proceso en el que un objeto puede utilizar (heredar) mtodos y atributos de otra clase definida como su clase padre. Poliformismo. Sn los distintos comportamientos que puede tener una operacin segn los parmetros que reciba. En el presente material nos adentraremos Programacin Orientada a Objetos que son aplicadas actualmente con mayor frecuencia.

Pg. 9

Asignatura: Tcnicas de Programacin

Tema N 2: Introduccin a la Programacin Orientada a Objetos

2.1 Programacin Orientada a Objetos


La programacin orientada a objetos o POO (OOP segn sus siglas en ingls) es un paradigma de programacin que usa objetos y sus interacciones para disear aplicaciones y programas de ordenador. Est basado en varias tcnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se populariz a principios de la dcada de 1990. Actualmente son muchos los lenguajes de programacin que soportan la orientacin a objetos. La programacin orientada a objetos tom posicin como el estilo de programacin dominante a mediados de los aos ochenta, en gran parte debido a la influencia de C++, una extensin del lenguaje de programacin C. Su dominacin fue consolidada gracias al auge de las Interfaces grficas de usuario, para las cuales la programacin orientada a objetos est particularmente bien adaptada. En este caso, se habla tambin de programacin dirigida por eventos. Las caractersticas de orientacin a objetos fueron agregadas a muchos lenguajes existentes durante ese tiempo, incluyendo Ada, BASIC, Lisp, Pascal, entre otros. La adicin de estas caractersticas a los lenguajes que no fueron diseados inicialmente para ellas condujo a menudo a problemas de compatibilidad y en la capacidad de mantenimiento del cdigo. Los lenguajes orientados a objetos "puros", por otra parte, carecan de las caractersticas de las cuales muchos programadores haban venido a depender. Para saltar este obstculo, se hicieron muchas tentativas para crear nuevos lenguajes basados en mtodos orientados a objetos, pero permitiendo algunas caractersticas imperativas de maneras "seguras". El Eiffel de Bertrand Meyer fue un temprano y moderadamente acertado lenguaje con esos objetivos pero ahora ha sido esencialmente reemplazado por Java, en gran parte debido a la aparicin de Internet, y a la implementacin de la mquina virtual de Java en la mayora de navegadores. PHP en su versin 5 se ha ido modificando y soporta una orientacin completa a objetos, cumpliendo todas las caractersticas propias de la orientacin a objetos. QU ES JAVA? Java es un lenguaje de programacin orientado a objetos, desarrollado por Sun Microsystems a principios de los aos 90. El lenguaje en s mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos ms simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulacin directa de punteros o memoria. Entre diciembre de 2006 y mayo de 2007, Sun Microsystems liber la mayor parte de sus tecnologas Java bajo la licencia GNU GPL, de acuerdo con las especificaciones del Java Community Process, de tal forma que prcticamente todo el Java de Sun es ahora software libre (aunque la biblioteca de clases que se requiere para ejecutar los programas Java an no lo es).
Pg. 10

Asignatura: Tcnicas de Programacin Acctualmente Oracle compr a Sun Microsystems es sabido que a Oracle lo nico que le import o al menos en mayor medida para adquirir era Java, a tal punto de restarle importancia a otros productos de Sun. Versiones

JDK 1.0 (23 de enero de 1996) Primer lanzamiento: comunicado de prensa JDK 1.1 (19 de febrero de 1997) Principales adiciones incluidas: comunicado de prensa. J2SE 1.2 (8 de diciembre de 1998) J2SE 1.3 (8 de mayo de 2000) J2SE 1.4 (6 de febrero de 2002) J2SE 5.0 (30 de septiembre de 2004) Java SE 6 (11 de diciembre de 2006) Nombre clave Mustang. Estuvo en desarrollo bajo la JSR 270. En esta versin, Sun cambi el nombre "J2SE" por Java SE y elimin el ".0" del nmero de versin. Java SE 7 Nombre clave Dolphin. En el ao 2006 an se encontraba en las primeras etapas de planificacin. Se espera que su desarrollo d comienzo en la primavera de 2006, y se estima su lanzamiento para finales de 2010.

Ediciones

J2SE (Standard Edition): Aplicaciones y applets J2EE (Enterprise Edition): Servidores de aplicaciones J2ME (Micro Edition): Aplicaciones para dispositivos mviles

Plataforma de Java

La mquina virtual Java (JVM: Java Virtual Machine) Imprescindible para poder ejecutar aplicaciones Java. Las bibliotecas estndar de Java (Java Application Programming Interface = Java API) Amplia coleccin de componentes. El lenguaje de programacin Java
Pg. 11

Asignatura: Tcnicas de Programacin Para escribir aplicaciones.

Mquina Virtual de Java

El compilador de Java genera un cdigo intermedio independiente de la plataforma (bytecodes).

Los bytecodes pueden considerarse como el lenguaje mquina de una mquina virtual, la Mquina Virtual Java (JVM). Cuando queremos ejecutar una aplicacin Java, al cargar el programa en memoria, podemos a) Interpretar los bytecodes instruccin por instruccin b) Compilar los bytecodes para obtener el cdigo mquina necesario para ejecutar la aplicacin en el ordenador (compilador JIT [Just In Time]). De esta forma, podemos ejecutar un programa escrito en Javasobre distintos sistemas operativos (Windows, Solares, Linux) sin tener que recompilarlo, como sucedera con programas escritos en lenguajes como C. Entorno de Desarrollo Integrado Gratuitos Eclipse (http://www.eclipse.org) NetBeans (http://netbeans.org) De pago Borland JBuilder IBM Visual Age for Java Sybase PowerJ Metrowerks CodeWarrior

2.2 Conceptos bsicos de Programacin Orientada a Objetos


Qu son los objetos? En informtica, un OBJETO es un conjunto de variables y de los mtodos relacionados con esas variables. Un poco ms sencillo: un objeto contiene en s mismo la informacin y los mtodos o funciones necesarios para manipular esa informacin. Lo ms importante de los objetos es que permiten tener un control total sobre 'quin' o 'qu' puede acceder a sus miembros, es decir, los objetos pueden tener miembros pblicos a los
Pg. 12

Asignatura: Tcnicas de Programacin que podrn acceder otros objetos o miembros privados a los que slo puede acceder l. Estos miembros pueden ser tanto variables como funciones. El gran beneficio de todo esto es la encapsulacin, el cdigo fuente de un objeto puede escribirse y mantenerse de forma independiente a los otros objetos contenidos en la aplicacin. Qu son las clases? Una CLASE es un proyecto, o prototipo, que define las variables y los mtodos comunes a un cierto tipo de objetos. Un poco ms sencillo: las clases son las matrices de las que luego se pueden crear mltiples objetos del mismo tipo. La clase define las variables y los mtodos comunes a los objetos de ese tipo, pero luego, cada objeto tendr sus propios valores y compartirn las mismas funciones. Primero deberemos crear una clase antes de poder crear objetos o ejemplares de esa clase. Qu son los mensajes? Para poder crear una aplicacin necesitars ms de un objeto, y estos objetos no pueden estar aislados unos de otros, pues bien, para comunicarse esos objetos se envan mensajes. Los mensajes son simples llamadas a las funciones o mtodos del objeto con el se quiere comunicar para decirle que haga cualquier cosa. Qu es la herencia? Qu significa esto la herencia, quen hereda qu; bueno tranquilo, esto slo significa que puedes crear una clase partiendo de otra que ya exista. Es decir, puedes crear una clase a travs de una clase existente, y esta clase tendr todas las variables y los mtodos de su 'superclase', y adems se le podrn aadir otras variables y mtodos propios. Se llama 'Superclase' a la clase de la que desciende una clase, puedes ver ms sobre la declaracin de clases en la pgina Declarar Clases. Definicin de Polimorfismo Una de las caractersticas fundamentales de la OOP es el polimorfsmo, que no es otra cosa que la posibilidad de construir varios mtodos con el mismo nombre, pero con relacin a la clase a la que pertenece cada uno, con comportamientos diferentes. Esto conlleva la habilidad de enviar un mismo mensaje a objetos de clases diferentes. Estos objetos recibiran el mismo mensaje global pero responderan a l de formas diferentes; por ejemplo, un mensaje "+" a un objeto ENTERO significara suma, mientras que para un objeto STRING significara concatenacin ("pegar" strings uno seguido al otro) Qu es encapsulamiento? Cada objeto es una estructura compleja en cuyo interior hay datos y programas, todos ellos relacionados entre s, como si estuvieran encerrados conjuntamente en una cpsula. Esta propiedad (encapsulamiento), es una de las caractersticas fundamentales en la OOP. Los objetos son inaccesibles, e impiden que otros objetos, los usuarios, o incluso los programadores conozcan cmo est distribuda la informacin o qu informacin hay disponible. Esta propiedad de los objetos se denomina ocultacin de la informacin. Esto no quiere decir, sin embargo, que sea imposible conocer lo necesario respecto a un objeto y a lo que contiene. Si as fuera no se podra hacer gran cosa con l. Lo que sucede es que las peticiones de informacin a un objeto. Deben realizarse a travs de mensajes dirigidos a l, con la orden de realizar la operacin pertinente. La respuesta a estas rdenes
Pg. 13

Asignatura: Tcnicas de Programacin ser la informacin requerida, siempre que el objeto considere que quien enva el mensaje est autorizado para obtenerla. El hecho de que cada objeto sea una cpsula facilita enormemente que un objeto determinado pueda ser transportado a otro punto de la organizacin, o incluso a otra organizacin totalmente diferente que precise de l. Si el objeto ha sido bien construdo, sus mtodos seguirn funcionando en el nuevo entorno sin problemas. Esta cualidad hace que la POO sea muy apta para la reutilizacin de programas.

2.2 Caractersticas de la Programacin Orientada a Objetos (Java)


Simple Es un lenguaje sencillo de aprender. Su sintaxis es la de C++ simplificada. Los creadores de Java partieron de la sintaxis de C++ y trataron de eliminar de este todo lo que resultase complicado o fuente de errores en este lenguaje. Orientado a Objetos Posiblemente sea el lenguaje ms orientado a objetos de todos los existentes; en Java todo, a excepcin de los tipos fundamentales de variables (int, char, long...) es un objeto. Distribuido Java est muy orientado al trabajo en red, soportando protocolos como TCP/IP, UDP, HTTP y FTP. Por otro lado el uso de estos protocolos es bastante sencillo comparandolo con otros lenguajes que los soportan. Robusto El compilador Java detecta muchos errores que otros compiladores solo detectaran en tiempo de ejecucin o incluso nunca. (ej: if(a=b) then ... el compilador Java no nos dejara compilar este cdigo. Seguro Sobre todo un tipo de desarrollo: los Applet. Estos son programas diseados para ser ejecutados en una pgina web. Java garantiza que ningn Applet puede escribir o leer de nuestro disco o mandar informacin del usuario que accede a la pgina a travs de la red (como, por ejemplo, la direccin de correo electrnico). En general no permite realizar cualquier accin que pudiera daar la mquina o violar la intimidad del que visita la pgina web. Portable En Java no hay aspectos dependientes de la implementacin, todas las implementaciones de Java siguen los mismos estndares en cuanto a tamao y almacenamiento de los datos. Esto no ocurre as en C++, por ejemplo. En ste un entero, por ejemplo, puede tener un tamao de 16, 32 o ms bits, siendo lo nica limitacin que el entero sea mayor que un short y menor que un long int. Arquitectura Neutral El cdigo generado por el compilador Java es independiente de la arquitectura: podra ejecutarse en un entorno UNIX, Mac o Windows. El motivo de esto es que el que realmente ejecuta el cdigo generado por el compilador no es el procesador del ordenador directamente, sino que este se ejecuta mediante una mquina virtual. Esto permite que los Applets de una web pueda ejecutarlos cualquier mquina que se conecte a ella independientemente de que sistema operativo emplee (siempre y cuando el ordenador en cuestin tenga instalada una mquina virtual de Java).

Pg. 14

Asignatura: Tcnicas de Programacin

Tema N 3: Lenguaje de Programacin Orientada a Objetos

3.1 Comentarios, Identificadores, Separadores, Operadores, Variables, Expresiones, Strings


COMENTARIOS EN JAVA Los comentarios en java se puede escribir en tres forma: // comentario de una sola lnea /* Comentario de una a mas lneas*/ /** Comentario para documentacin */ IDENTIFICADORES Los identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el programador necesite identificar o usar. En Java, un identificador comienza con una letra, un subrayado (_) o un smbolo de dlar ($). Los siguientes caracteres pueden ser letras o dgitos. Se distinguen las maysculas de las minsculas y no hay longitud mxima. Seran identificadores vlidos: identificador nombre_usuario Nombre_Usuario _variable_del_sistema $transaccion y su uso sera, por ejemplo: int contador_principal; char _lista_de_ficheros; float $cantidad_en_Ptas;

Palabras clave Las siguientes son las palabras clave que estn definidas en Java y que no se pueden utilizar como indentificadores: abstract continue for new switch boolean default goto null synchronized break do if package this byte double implements private threadsafe
Pg. 15

Asignatura: Tcnicas de Programacin byvalue case catch char class const else import protected throw extends instanceof public transient false int return true final interface short try finally long static void float native super while

Palabras Reservadas Adems, el lenguaje se reserva unas cuantas palabras ms, pero que hasta ahora no tienen un cometido especfico. Son: cast future operator outer SEPARADORES Slo hay un par de secuencias con otros caracteres que pueden aparecer en el cdigo Java; son los separadores simples, que van a definir la forma y funcin del cdigo. Los separadores admitidos en Java son: ( ) - parntesis. Para contener listas de parmetros en la definicin y llamada a mtodos. Tambin se utiliza para definir precedencia en expresiones, contener expresiones para control de flujo y rodear las conversiones de tipo. { } - llaves. Para contener los valores de matrices inicializadas automticamente. Tambin se utiliza para definir un bloque de cdigo, para clases, mtodos y mbitos locales. [] - corchetes. Para declarar tipos matriz. Tambin se utiliza cuando se referencian valores de matriz. ; - punto y coma. Separa sentencias. , - coma. Separa identificadores consecutivos en una declaracin de variables. Tambin se utiliza para encadenar sentencias dentro de una sentencia for. . - punto. Para separar nombres de paquete de subpaquetes y clases. Tambin se utiliza para separar una variable o mtodo de una variable de referencia. OPERADORES Operadores Aritmticos El lenguaje Java soporta varios operadores aritticos - incluyendo + (suma), - (resta), * (multiplicacin), / (divisin), y % (mdulo)-- en todos los nmeros enteros y de coma flotante. Por ejemplo, puedes utilizar este cdigo Java para sumar dos nmeros: sumaEsto + aEsto. O este cdigo para calcular el resto de una divisin: divideEsto % porEsto generic rest inner var

Pg. 16

Asignatura: Tcnicas de Programacin Esta tabla sumariza todas las operaciones aritmticas binarias en Java.
Operador + * / % Uso op1 + op2 op1 - op2 op1 * op2 op1 / op2 op1 % op2 Descripcin Suma op1 y op2 Resta op2 de op1 Multiplica op1 y op2 Divide op1 por op2 Obtiene el resto de dividir op1 por op2

Realizando la operacin aritmtica de divisin: Operacin 7/3 7 / 3.0f 5.0 / 2 7.0 / 0.0 0.0 / 0.0 Tipo int float double double double Resultado 2 2.333333333f 2.5 +Infinity NaN

Nota: El lenguaje Java extiende la definicin del operador + para incluir la concatenacin de cadenas. Los operadores + y - tienen versiones unarias que seleccionan el signo del operando.
Operador + Uso + op - op Descripcin Indica un valor positivo Niega el operando

Adems, existen dos operadores de atajos aritmticos, ++ que incrementa en uno su operando, y -- que decrementa en uno el valor de su operando.

Operador Uso ++ ++ ---

Descripcin

op ++ Incrementa op en 1; evala el valor antes de incrementar ++ op Incrementa op en 1; evala el valor despus de incrementar op --- op Decrementa op en 1; evala el valor antes de decrementar Decrementa op en 1; evala el valor despus de decrementar

Pg. 17

Asignatura: Tcnicas de Programacin Operadores Relacionales Los valores relacionales comparan dos valores y determinan la relacin entre ellos. Por ejemplo, != devuelve true si los dos operandos son distintos. Esta tabla sumariza los operadores relacionales de Java. Operador
== !=

Significado
Igual Distinto

Uso
op1 == op2 op1 != op2

Devuelve true si
op1 y op2 son iguales op1 y op2 son distintos

Operadores Condicionales Aqu tienes tres operadores condicionales. Operador


&& || ! ^

Significado
AND OR NOT XOR

Uso
op1 == op2 op1 != op2

Devuelve true si
op1 y op2 son iguales op1 y op2 son distintos

Tablas de Verdad X frue false A V F F F B V V F F False true A&&B V F F F A||B V V V F A^B F V V F !X

El operador & se puede utilizar como un sinnimo de && si ambos operadores son booleanos. Similarmente, | es un sinonimo de || si ambos operandos son booleanos. Operadores de Asignacin i = i + 2; Puedes ordenar esta sentencia utilizando el operador +=. i += 2; Las dos lneas de cdigo anteriores son equivalentes. Esta tabla lista los operadores de asignacin y sus equivalentes.
Operador += -= *= /= %= &= |= ^= Uso op1 += op2 op1 -= op2 op1 *= op2 op1 /= op2 op1 %= op2 op1 &= op2 op1 |= op2 op1 ^= op2 Equivale a op1 = op1 + op2 op1 = op1 - op2 op1 = op1 * op2 op1 = op1 / op2 op1 = op1 % op2 op1 = op1 & op2 op1 = op1 | op2 op1 = op1 ^ op2 Pg. 18

Asignatura: Tcnicas de Programacin

TIPOS DE DATOS: Nmero Clasificacin Tipo de Dato byte short int long float double Espacio en memoria 8 bits 16 bits 32 bits 64 bits 32 bits 64 bits Rango -128 127 -32768 a 32767 -2147483648 a 2147483647 -9223372036854775808 9223372036854775807 1.4 x 10-45 a 3.4 x 1038 4.9 x 10-324 a 1.8 x 10308

Entero

Reales

Carcter, Booleano y String Clasificacin Carcter Booleano Clase String VARIABLES Las variables se utilizan en la programacin Java para almacenar datos que varan durante la ejecucin del programa. Para usar una variable, hay que indicarle al compilador el tipo y nombre de esa variable, declaracin de la variable. El tipo de la variable determinar el conjunto de valores que se podrn almacenar en la variable y el tipo de operaciones que se podrn realizar con ella. Ejemplo: . int num; double precio; String nombre; Char opc; Tipo de Dato char bool String Espacio memoria 16 bits 1 bit en Ejemplo A, a, @, etc. True y False Katia Montero, Continental

Universidad

Convenciones Los identificadores deben ser descriptivos: deben hacer referencia al significado de aquello a lo que se refieren. int n1, n2; // MAL int anchura, altura; // BIEN Los identificadores asociados a las variables se suelen poner en minsculas. int CoNTaDoR; // MAL int contador; // BIEN Cuando el identificador est formado por varias palabras, la primera palabra va en minsculas y el resto de palabras se inician con una letra mayscula.

Pg. 19

Asignatura: Tcnicas de Programacin int mayorvalor; // MAL int mayor_valor; // ACEPTABLE int mayorValor; // MEJOR Inicializacin de las variables En una declaracin, las variables se pueden inicializar: int i = 0; float pi = 3.1415927f; double x = 1.0, y = 1.0; EXPRESIONES Una expresin es una determinada combinacin de operadores y operandos que se evalan para obtener un resultado particular. Los operandos pueden ser variables, constantes o llamadas a mtodos. Una llamada a un mtodo evala el valor devuelto por el mtodo y el tipo de una llamada a un mtodo es el tipo devuelto por ese mtodo. Constantes: Java soporta constantes con nombre y se caracteriza porque el valor no puede modificarse y la forma de crearlas es: final float PI = 3.14159; Esta lnea de cdigo produce un valor que se puede referenciar en el programa, pero no puede ser modificado. La palabra clave final es la que evita que esto suceda. STRINGS Un String o cadena se considera a toda secuencia de caracteres almacenados en memoria y accesibles como una unidad. C/C++ no soportan un tipo String, sino que simplemente disponen de un formato de almacenamiento de caracteres que se puede tratar como un String. Sin embargo, Java implementa cadenas a travs de las clases String y StringBuffer, a las que se dedicar un amplio estudio. Concatenacin La concatenacin de texto se denomina a la unin de trozos o fragmentos de textos y comnmente se utiliza la conversin de nmeros o de objetos a su representacin en texto, Java convierte automticamente los tipos de datos bsicos a texto antes de unirlos y llama por cada objeto al mtodo especial toString() para realizar la conversin de objetos

Pg. 20

Asignatura: Tcnicas de Programacin Veamos un ejemplo:

1.public class SumaSimple { 2. public static void main(String[] args) { 3. int a=1; 4. System.out.println("el valor de a="+a); 5. a=a+10; 6. System.out.println("ahora sumndole 10 es a="+a); 7. } 8.} public class ejemplo6 { public static void main(String[] args) { double a,b,c,d; a=b=c=d=25; a*=20; b+=45; c%=35; d/=2; System.out.println("a = : " + a); System.out.println("b = : " + b); System.out.println("c = : " + c); System.out.println("d= : " + d); } }

Concatenacin de un valor numerico para que se imprima en pantalla

Conversin de cadenas de texto en datos del tipo adecuado

Clase Math En Java existe una clase (fichero/archivo) llamado Math, esta contiene muchas funciones predefinidas y disponibles de forma inmediata para su uso. Todas estas funciones estn relacionadas con matemticas y nos permiten calcular valores de trigonometra, potencias, valores absolutos y nmeros aleatorios, entre otros. Aqu hay una pequea lista de esas funciones:
Funcin Math.sin ( x) Math.cos( x) Math.tan( x) Math.log( x) Math.exp( x) Operacin que realiza (Valor que devuelve) Devuelve el seno del valor x, x:angulo en radianes Devuelve el coseno del valor x, x:angulo en radianes Devuelve la tangente del valor x, x:angulo en radianes Devuelve el logaritmo natural del valor: log(x ) Devuelve: ex Pg. 21

Asignatura: Tcnicas de Programacin


Math.pow( a, b) Math.sqrt( x) Math.abs( x) Math.PI ceil(x), floor(x) Devuelve la potencia: ab Devuelve la raz cuadrada: x Devuelve el valor absoluto: | x | Devuelve la constante (pi). Redondeo por arriba y por abajo

Ejemplo: public class Programa01 { public static void main(String[] args) { int = 90, j=2; System.out.println("Cos i : " + Math.cos(i)); System.out.println("Sin i : " + Math.sin(i)); System.out.println("j^i : " + Math.pow(j,3)); } }

LEER DATOS DESDE EL TECLADO Para el ingreso de datos desde el teclado se tiene que tener en cuenta lo siguiente: Ejemplo : Este programa se encarga de pedir el ingreso de un nmero, para luego mostrarlo en pantalla.

//import java.io.*;

Librera para el ingreso de datos desde /* 1) */ import java.io.*; el teclado /* 2) */ public class Suma /* 3) */ { /* 4) */ public static void main(String [] args) throws IOException /* 5) */ { /* 6) */ BufferedReader xobj = new BufferedReader(new InputStreamReader(System.in)); /* 7) */ int num; /* 8) */ System.out.print("Ingrese numero : "); /* 9) */ num = Integer.parseInt(xobj.readLine( )); /* 10) */ System.out.println("Ud ingreso el numero : " + num ); /* 11) */ } /* 12) */ } Ejemplo : El siguiente programa Java pide al usuario que teclee 2 nmeros y muestra su suma por pantalla: import java.io.*; public class Suma1 {public static void main(String Arg[ ]) throws IOException {BufferedReader xobj = new BufferedReader(new InputStreamReader(System.in)); int n1,n2,s; System.out.print("Ingrese numero 1 : "); n1 = Integer.parseInt(xobj.readLine( )); System.out.print("Ingrese numero 2: "); n2=Integer.parseInt(xobj.readLine()); s=n1+n2; System.out.println("La suma es: " + s ); } }
Pg. 22

Asignatura: Tcnicas de Programacin

E/S con interfaces grficas de usuario (GUIs): JOptionPane La biblioteca de clases estndar de Java incluye una amplia gama de componentes para la construccin de interfaces grficas de usuario. El componente javax.swing.JOptionPane datos de entrada y mostrar mensajes de salida: a) Entrada de datos con showInputDialog String entrada; entrada = JOptionPane.showInputDialog( "Introduzca un valor" ); se puede emplear para obtener

entrada = JOptionPane.showInputDialog ( null, "Introduzca un valor", "Mi programa en Java", JOptionPane.QUESTION_MESSAGE );

entrada = JOptionPane.showInputDialog ( null, "Introduzca un valor", "Otro programa en Java", JOptionPane.INFORMATION_MESSAGE);

b) Salida de datos con showMessageDialog JOptionPane.showMessageDialog ( null, Bienvenido a Java! );

Pg. 23

Asignatura: Tcnicas de Programacin

JOptionPane.showMessageDialog ( null, Bienvenido a Java!, Programa de ejemplo, JOptionPane.INFORMATION_MESSAGE );

JOptionPane.showMessageDialog (null,Bienvenido a Java!, Programa de ejemplo, JOptionPane.WARNING_MESSAGE );

JOptionPane.showMessageDialog ( null, Bienvenido a Java!, Programa de ejemplo, JOptionPane.ERROR_MESSAGE );

Ejemplo
import javax.swing.JOptionPane; public class Ejemplo01 { public static void main (String args[ ]) { double num1, num2, suma; String entrada; // variable auxiliar
Pg. 24

Asignatura: Tcnicas de Programacin // Entrada de datos entrada = JOptionPane.showInputDialog ("Ingrese nmero 1: "); num1 = Double.parseDouble(entrada); entrada = JOptionPane.showInputDialog ("Ingrese nmero 2:"); num2 = Double.parseDouble(entrada); // Clculo de la suma suma = num1+ num2; // Resultado JOptionPane.showMessageDialog (null, "La suma es "+suma); System.exit(0); // para terminar la ejecucin del programa } }

3.2 Controles de Flujo selectivos


SENTENCIAS DE SALTO if/else if( expresin-booleana ) { sentencias; } [else { sentencias; }]

if else - if
if (comparacin) { Accin_1_de_verdad; Accin_2_de_verdad; } else if (comparacin) { Accin_1_de_verdad; Accin_2_de_verdad; } else if (comparacin) { Accin_1_de_verdad;
Pg. 25

Asignatura: Tcnicas de Programacin Accin_2_de_verdad; } else {

Accin_1_de_falsedad; Accin_2_de_falsedad;

} En el ejemplo Ejemplo01.java, se utilizan varias sentencias if-else para determinar en qu estacin del ao se encuentra un mes determinado. class Ejemplo01 { public static void main( String args[] ) { int mes = 8; String estacion; if( mes == 12 || mes == 1 || mes == 2 ) { estacion = "el invierno"; } else if( mes == 3 || mes == 4 || mes == 5 ) { estacion = "la primavera"; } else if( mes == 6 || mes == 7 || mes == 8 ) { estacion = "el verano"; } else if( mes == 9 || mes == 10 || mes == 11 ) { estacion = "el otoo"; } else { estacion = "Mes falso"; } System.out.println( "Agosto esta en " + estacion + "." ); } } Switch switch (variable) { case valor1 : accin1; break; case valor2 : accin2; break; case valor3 : accin3; break; case valor4 : accin4; break; case valor5 : accin5; break; // ... [default: accinX;] } Ejemplo: El Ejemplo02.java es el mismo ejemplo que se cre en la seccin if-else, reescrito para utilizar switch. class Ejemplo02 { public static void main( String args[] ) {
Pg. 26

Asignatura: Tcnicas de Programacin int mes = 8; String estacion; switch( mes ) { case 12: // Contina case 1: // Contina case 2: estacion = "el invierno"; break; case 3: // Contina case 4: // Contina case 5: estacion = "la primavera"; break; case 6: // Contina case 7: // Contina case 8: estacion = "el verano"; break; case 9: // Contina case 10: // Contina case 11: estacion = "el otoo"; break; default: estacion = "Mes falso"; } System.out.println( "Agosto esta en " + estacion + "." ); } } Ejemplo: Realizar un programa que correspondiente al nmero de da (1-7) imprima el nombre del da de la semana

public class Ejemplo03 { public static void main(String[] args) { int ndia; ndia=3; System.out.println("ndia = "+ndia); switch (ndia) { case 1: System.out.println("LUNES"); break; case 2: System.out.println("MARTES");break; case 3: System.out.println("MIERCOLES");break; case 4: System.out.println("JUEVES");break; case 5: System.out.println("VIERNES");break; case 6: System.out.println("SABADO");break; case 7: System.out.println("DOMINGO");break; default : System.out.println("DESCONOCIDO");break; } } }

Pg. 27

Asignatura: Tcnicas de Programacin

Ejemplo: Realizar un programa que muestre mn mensaje segn el rango de nota Rango
>= 9 >= 7 y <9 >= 5 y <7 <5

Mensaje
"Sobresaliente" "Notable" "Aprobado"; Suspenso";

import javax.swing.JOptionPane; public class Ejemplo04 { public static void main( String args[] ) { String entrada; String resultado; float nota; entrada = JOptionPane.showInputDialog ( "Calificacin numrica:" ); nota = Float.parseFloat( entrada ); if ( nota >= 9 ) resultado = "Sobresaliente"; else if ( nota >= 7 ) resultado = "Notable"; else if ( nota >= 5 ) resultado = "Aprobado"; else resultado = "Suspenso"; JOptionPane.showMessageDialog ( null, resultado, "Calificacin final",JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); } }

El if encadenado anterior
import javax.swing.JOptionPane; public class Ejemplo05 { public static void main( String args[] ) { String entrada; String resultado; float nota; entrada = JOptionPane.showInputDialog( "Calificacin numrica:" ); nota = Float.parseFloat( entrada ); resultado = ""; if ( nota >= 9 ) resultado = "Sobresaliente"; if ( (nota>=7) && (nota<9) ) resultado = "Notable"; if ( (nota>=5) && (nota<7) ) resultado = "Aprobado"; if ( nota < 5 ) resultado = "Suspenso";
Pg. 28

Asignatura: Tcnicas de Programacin JOptionPane.showMessageDialog( null, resultado,"Calificacin final", JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); } }

Anidamiento de if Ejemplo: Resolucin de una ecuacin de primer grado ax+b=0


import javax.swing.JOptionPane; public class Ejemplo06 { public static void main( String args[] ) { String entrada; String resultado; float a,b,x; entrada = JOptionPane.showInputDialog("Coeficiente a"); a = Float.parseFloat( entrada ); entrada = JOptionPane.showInputDialog("Coeficiente b"); b = Float.parseFloat( entrada ); if (a!=0) { x = -b/a; resultado = "La solucin es " + x; } else { if (b!=0) { resultado = "No tiene solucin."; } else { resultado = "Solucin indeterminada."; } } JOptionPane.showMessageDialog( null, resultado,"Solucin de la ecuacin de primer grado",JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); } }

3.3 Controles de Flujo Repetitivos


SENTENCIAS DE BUCLE Bucles for for( inicializacin; terminacin; iteracin ) { sentencias; }

Pg. 29

Asignatura: Tcnicas de Programacin Ejemplo: Programa que imprime los 20 primeros nmeros naturales public class Ejemplo07 { public static void main(String args[]) { int num; System.out.println("Los 20 primeros nmeros naturales:"); for(num=1;num<=20;num++) System.out.println(num); } } Bucles while [inicializacin;] while( terminacin-expresin-booleana ) { sentencias; [iteracin;] } Ejemplo: Programa que imprime los 20 primeros nmeros naturales public class Ejemplo08 { public static void main(String args[]) { int num=1; System.out.println("Los 20 primeros nmeros naturales:"); while (num<=20) { System.out.println(num); num++; } } } Bucles do/while [inicializacin;] do { sentencias; [iteracin;] }while( terminacin-expresin-booleana ); Ejemplo: Programa que imprime los 20 primeros nmeros naturales public class Ejemplo09 { public static void main(String[] args) { int num; System.out.println("Los 20 primeros nmeros naturales:"); num=1; do { System.out.println(num); num++; } while (num<=20);
Pg. 30

Asignatura: Tcnicas de Programacin

} }

Ejemplos varios Ejemplo: Tabla de multiplicar de un nmero


public class While1 { public static void main( String args[] ) { int n; // Nmero int i; // Contador n = Integer.parseInt( args[0] ); i = 0; while (i<=10) { System.out.println (n+" x "+i+" = "+(n*i)); i++; } } }

Ejemplo: Divisores de un nmero


public class While2 { public static void main( String args[] ) { int n; int divisor; n = Integer.parseInt( args[0] ); System.out.println("Los divisores son:"); divisor = n; while (divisor>0) { if ((n%divisor) == 0) System.out.println(divisor); divisor--; } } }

Ejemplo: Sumar una serie de nmeros hasta que el usuario introduzca un cero
import javax.swing.JOptionPane; public class While3 { public static void main( String args[] ) { float valor; float suma; suma = 0; valor = leerValor(); while (valor!=0) {
Pg. 31

Asignatura: Tcnicas de Programacin suma += valor; valor = leerValor(); } mostrarValor("Suma de los datos", suma); System.exit(0); } private static float leerValor () { String entrada; entrada = JOptionPane.showInputDialog ( "Introduzca un dato:" ); return Float.parseFloat(entrada); } private static void mostrarValor(String mensaje, float valor) { JOptionPane.showMessageDialog ( null, valor, mensaje, JOptionPane.INFORMATION_MESSAGE ); } }

3.4 Arrays
Como otras variables, antes de poder utilizar un array primero se debe declarar. De nuevo, al igual que otras variables, la declaracin de un array tiene dos componentes primarios: el tipo del array y su nombre. Un tipo de array incluye el tipo de dato de los elementos que va contener el array. Por ejemplo, el tipo de dato para un array que slo va a contener elementos enteros es un array de enteros. No puede existir un array de tipo de datos genrico en el que el tipo de sus elementos est indefinido cuando se declara el array.

ARRAYS UNIDIMENSIONALES:
En Java podemos declarar un vector de dos maneras: Tipo_de_dato nomb_vector [ ]; Tipo_de_dato [ ] nomb_vector; Char letras[ ]; //array_De_Char
int numeros[ ] ; //array De Enteros

De cualquiera de las dos formas obtendramos un vector de tamao no definido, sin embargo la declaracin no asegura un buen uso de los elementos del vector; por lo que debe definir su tamao asignado en memoria suficiente para todos sus elementos y as asignar valores a los elementos y recuperar sus valores nom_array = new tipo_dato [tamao_array]; Ahora s tendramos un vector preparado para aceptar tanto elemento segn el tamao indicado del tipo de datos que se haya elegido Ejemplo: int enteros [ ]; //declaracin del arreglo enteros = new int[20]; //asignacin de memoria para 20 enteros

Pg. 32

Asignatura: Tcnicas de Programacin Ejemplo:Java permite una manera fcil de crear con valores iniciales: String nombres [ ] = {Erick, Yuri, Jamil, Athina}; La lnea anterior es similar a: String nombres[]; nombres = new String [4]; nombres[0] = Erick; nombres[1] = Yuri; nombres[2] = Jamil; nombres[3] = Athina; String nombres [ ] = new String [4]

Control de tamao de Array El tamao de un arreglo puede ser determinado en tiempo de ejecucin usando la variable miembro length por ejemplo: for (int j = 0; j < numeros.length; j ++) { numeros[j] = j; System.out.println("[j] = " + numeros[j]); } THIS En algunos momentos puede resultar til tener una referencia a la instancia actual, aquella que se est ejecutando. This ---- (yo mismo, asimismo)

public Persona(String ID, String Nombre, String Fono) { this.ID=ID; this.Nombre=Nombre; this.Fono=Fono; } Ejemplo: Ingrese 4 nmeros y almacnalos y luego imprimir su correspondiente promedio //Programa que Ingresa 5 nmeros enteros y almacnalos //y luego imprimir su correspondiente promedio import java.io.*; public class Ejemplo1 { public static void main(String[] args) throws IOException { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int numeros []=new int[5]; int x,num; double sum,prom; System.out.println("Ingrese 5 nmeros enteros: \n"); sum=0; for (x=0;x<numeros.length;x++) {
Pg. 33

Asignatura: Tcnicas de Programacin System.out.print("Numero "+x+": "); num=Integer.parseInt(br.readLine()) ; numeros[x]=num; sum=sum+num; } prom=sum/(numeros.length); System.out.print("Los nmeros ingresados son:"); for (x=0; x<numeros.length;x++) { System.out.print("\n Numero "+x+": "+numeros[x]); } System.out.print("\n El promedio es: "+prom); } }

Ejemplo: Realice un programa para que ingrese la lista de estudiantes y luego los muestre //Programa que Ingresa la lista de estudiantes import java.io.*; public class Ejemplo2 { public static void main(String[] args)throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String nombres[]=new String[5]; int x; String nom; System.out.println("Ingrese los nombres:\n"); for (x=0;x<nombres.length;x++) { nom=br.readLine(); nombres[x]=nom; } System.out.println("Los nombres ingresados son:"); for (x=0;x<nombres.length;x++) { System.out.println(nombres[x]); } } }

ARRAYS BIDIMENSIONALES
Los arrays bidimensionales en java se tiene que construir uniendo dos arrays bidimensional para declarar un array bidimensional es de la siguiente forma tipo_dato nomb_matriz [ ][ ]; Los vectores en Java son en realidad objetos (como casi todo) y por lo tanto se inicializan llamando a un constructor con new, con lo cual se logra un asignamiento suficiente de memoria (instanciamiento) para que el vector funcione correctamente

char c[][] Integer numeros[][] Donde:


Pg. 34

Asignatura: Tcnicas de Programacin el primer corchete con las filas y el segundo las columnas: Integer M[][] = new Int[4][5]

Ejemplo: Declarando e instanciando una matriz de nmeros de 30 filas por 10 columnas //Primera forma int numeros[][]; numeros=new int[30][10]; //Segunda forma int numeros[][] = new int[30][10]; Ejemplo: Realice un programa de manera que muestre una matriz de nxn en donde la diagonal 1.0 y los dmas elementos 0.0 import java.io.*; public class Ejemplo1 { public static void main(String[] args) throws IOException {BufferedReader br= new BufferedReader (new InputStreamReader (System.in)); int i,j,n; double matA[][] =new double[100][100]; System.out.print("Ingrese dimensin de la matriz :"); n=Integer.parseInt(br.readLine()); //rellenando sus elementos de la matriz for (i=1; i<=n;i++) { for(j=1;j<=n;j++) { if (i==j) matA[i][j]=1.0; else matA[i][j]=0.0; } } //mostrando la matriz System.out.println("La matriz generada es :"); for (i=1; i<=n;i++) { for(j=1;j<=n;j++) System.out.print(matA[i][j]+"\t"); System.out.println(""); } } }
Pg. 35

Asignatura: Tcnicas de Programacin

SEGUNDA UNIDAD Caractersticas Fundamentales de la Programacin Orientada a Objetos

Tema N 4: Conceptos Bsicos en Lenguaje de Programacin Orientada a Objetos

4.1 Clases, Objetos, Control de acceso, Constructores, Mensajes CLASES:


Una clase es como una plantilla de la cual se pueden crear varios objetos con las mismas caractersticas y funciones.

clase

objetos

Una clase es un modelo(diseo) de objeto Define los atributos y operaciones o mtodos del objeto La clase usan el encapsulamiento para forzar la abstraccin

Mtodo: Se implementa en una clase de objetos y determina cmo tiene que actuar el objeto cuando recibe el mensaje vinculado con ese mtodo. Atributos (propiedades): Son definidas en la clase permitirn almacenar informacin para dicho objeto.

Pg. 36

Asignatura: Tcnicas de Programacin

OBJETOS:
Un Objeto es una entidad que tiene atributos particulares, las propiedades y unas formas reoperar sobre ellos, los mtodos Objetos tienen las siguientes cualidades (identidad los objetos se distinguen del uno del otro, comportamiento pueden realizar tareas, estado almacena informacin que varia a travs del tiempo)

EJEMPLO: Clase Empleado


Empleado -Nombre -Apellido -Edad Nombre de la clase

Atributos

Mtodos()

+ registrar() + mostrar()

Notacion UML : -El nombre de toda Clase debe comenzar con Maysculas -El nombre de los objetos con MinsculasNOTACIN UML Y JAVA
Eventos

Empleado Nombre Apellido Edad public class Empleado{ private String Nombre; private String Apellido; private int Edad;; public void registrar(){ } public void mostrar(){ } }

registrar() mostrar()

CODIFICACIN DE LA CLASE EMPLEADO

Empleado.java
Nombre del

public class Empleado Archivo { private String Nombre; private String Apellido; private int Edad; public void Registrar(String Nombre, String Apellido, int Edad)
Pg. 37

Asignatura: Tcnicas de Programacin { this.Nombre = Nombre; this.Apellido= Apellido; this.Edad = Edad; } public void Mostrar() { System.out.println("Nombre "+ Nombre); System.out.println("Apellido"+ Apellido); System.out.println("Edad"+ Edad); }

}
Principal.java

public class Principal { public static void main(String[] args) { Empleado A1= new Empleado(); A1.Registrar("Juan","Hurtado", 22); A1.Mostrar(); } }

Nombre del Archivo

Nota: Java nos permite tambien crear clases y el programa principal en uno solo archivo como se muestra en el siguiente lineas Empleadoprin1.java

class Empleado { private String Nombre; private String Apellido; private int Edad; public void Registrar(String Nombre, String Apellido, int Edad) { this.Nombre = Nombre; this.Apellido= Apellido; this.Edad = Edad; } public void Mostrar() { System.out.println("Nombre "+ Nombre); Para este programa se tiene System.out.println("Apellido"+ Apellido); que tener en cuenta que todo System.out.println("Edad"+ Edad); el programa esta realizado en } un solo archivo o nombre del } programa para este ejemplo el public class Empleadoprin1 { public static void main(String[] args) nombre del programa es { Empleado A1= new Empleado(); Empleadoprin1 A1.Registrar("Juan","Hurtado", 22); A1.Mostrar(); } }

Pg. 38

Asignatura: Tcnicas de Programacin VARIABLES Y CONSTANTES Variables Miembro Una clase en Java puede contener variables y mtodos. Las variables pueden ser tipos primitivos como int, char, etc. Los mtodos son funciones. Por ejemplo, en el siguiente trozo de cdigo podemos observarlo: public class MiClase { int i; public MiClase() { i = 10; } public void Suma_a_i( int j ) { int suma; suma = i + j; } } La clase MiClase contiene una variable (i) y dos mtodos, MiClase() que es el constructor de la clase y Suma_a_i( int j ). La declaracin de una variable miembro aparece dentro del cuerpo de la clase, pero fuera del cuerpo de cualquier mtodo de esa clase. Si se declara dentro de un mtodos, ser una variable local del mtodo y no una variable miembro de la clase. En el ejemplo anterior, i es una variable miembro de la clase y suma es una variable local del mtodo Suma_ a_i(). Constantes En Java, se utiliza la palabra clave final para indicar que una variable debe comportarse como si fuese constante, significando con esto que no se permite su modificacin una vez que haya sido declarada e inicializada. Como es una constante, se le ha de proporcionar un valor en el momento en que se declare, por ejemplo: class Elipse { final float PI = 3.14159; ... } MTODOS Los mtodos son funciones que pueden ser llamadas dentro de la clase o por otras clases. La implementacin de un mtodo consta de dos partes, una declaracin y un cuerpo. La declaracin en Java de un mtodo se puede expresar esquemticamente como: tipoRetorno nombreMetodo( [lista_de_argumentos] ) { cuerpoMetodo }
Pg. 39

Asignatura: Tcnicas de Programacin Mtodo para ingresar datos utilizando en una clase Para ello se tiene que Disear un clase leer Se Disea clase Alumno con atributo cdigo y nombre y los datos sena ingresado por teclado, para ello se utilizar tres clases

//Clase leer

Clase leer Clase alumno Clase principal

import java.io.*; public class leer { public static String lectura() { String Dato=""; try { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader flujo = new BufferedReader(isr); Dato = flujo.readLine(); } catch(IOException e) { } return Dato; } }
//clase alumno

public class alumno { private int codigo; private String nombre; public void registrar() { System.out.print("Ingrese Codigo:"); codigo = Integer.parseInt(leer.lectura()); System.out.print("Ingrese Nombre:"); nombre = leer.lectura(); } public void consultar() { System.out.println("Codigo del Alumno: "+codigo); System.out.println("Nombre del Alumno: "+nombre); } }
// programa principal

public class ejem06 { public static void main(String args[]) {


Pg. 40

Asignatura: Tcnicas de Programacin alumno a1 = new alumno(); System.out.println("INGRESO DE DATOS DE ALUMNO"); System.out.println("----------------\n"); a1.registrar(); System.out.println("CONSULTA DE DATOS DE ALUMNO"); System.out.println("----------------\n"); a1.consultar(); } }

PARMETROS DE CLASES En el paso de parmetros a funciones hay dos aproximaciones clsicas: el paso por valor y paso por referencia.
PARMETROS VALOR

Se realiza una copia de los valores que se pasan, trabajando dentro de la funcin con la copia. Es por ello que cualquier cambio que sufran dentro, no repercute fuera de la funcin.
PARMETROS POR REFERENCIA

No se realiza dicha copia, por lo que las modificaciones de dentro de las funciones afectan a los parmetros y esos cambios permanecen al final de la funcin. En Java el paso por parmetro es por valor, aunque los efectos son de paso por referencia cuando los argumentos son objetos. cmo sucede eso? Pues es muy fcil, si una funcin tiene como argumento un tipo primitivo (int, float, etc...), en Java se realiza una copia para la funcin y cualquier cambio a dicho argumento no afecta a la variable original. Este paso de parmetros en Java est orientado a utilizar el valor de la variable para otros clculos. Ejemplo: En la siguiente clase existe tres parmetros: Nombre, Apellido, Edad. Parmetros public void Registrar(String Nombre, String Apellido, int Edad){ this.Nombre = Nombre; this.Apellido= Apellido; this.Edad = Edad;

Ejemplo Disee una clase Estudiante; que tenga sus atributos propios: N de orden y Edad, con Mtodo u operaciones de ingresar e imprimir; Primera Forma
CLASE ESTUDIANTE

public class estudiante { private int nro1; private int edad1; public void ingresar(int nro,int edad ) {

El archivo debe llamarse estudiante

Existe dos parmetros que son de tipo entero

Pg. 41

Asignatura: Tcnicas de Programacin this.nro1 = nro; this.edad1 = edad; } public void imprimir() { System.out.println("El numero de orden es " + nro1); System.out.println("La edad del estudiante " + edad1); } }
CLASE PRINCIPAL O PROGRAMA PRINCIPAL

public class Ejemplo01 { public static void main(String[] args) { System.out.println("Paso de parmetro "); estudiante e1 = new estudiante (); e1.ingresar(1,22); e1.imprimir(); } }

El archivo debe llamarse Ejemplo01

Segunda Forma Tamben se puede realizar la implementacin en un programa creando en un solo archivo o file
class estudiante { private int nro1; private int edad1; public void ingresar(int nro,int edad ) { //this.nro1 = nro; nro1 = nro; edad1 = edad;

Cuando esta en un solo file o archivo ya no es necesario que se utilice

} public void imprimir() { System.out.println("El numero de orden es " + nro1); System.out.println("La edad del estudiante " + edad1); } } Todo el archivo debe public class Ejemplo01 llamarse { public static void main(String[] args) Ejemplo01 { System.out.println("Paso de parmetro "); estudiante e1 = new estudiante (); e1.ingresar(1,22); e1.imprimir(); } }

this

Ejemplo: Disear una clase persona que incluya los siguientes datos: nombre y edad. Como atributos de la clase incluya los mtodo o funciones siguientes: public void ingresar() public void imprimir() //Registra el ingreso de nombre y edad //Imprime el nombre y la edad ingresada
Pg. 42

Asignatura: Tcnicas de Programacin public int calcula_dvividos() //Devuelve la cantidad de dias vividos

persona.java import java.io.*; public class persona { private int edad; private String nombre; private int ndiasv; public void ingresar() { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); try { System.out.print("Ingrese su nombre :"); nombre=br.readLine(); System.out.print("Ingrese su edad :"); edad=Integer.parseInt(br.readLine()); } catch (Exception e) { System.out.println(e); } } public int calcula_dvividos() { ndiasv=edad*365; return ndiasv; } public void imprimir() { System.out.println("Nombre :"+nombre); System.out.println("Edad :"+edad); } } Ejemplo04.java public class Ejemplo04 { public static void main(String [] args) { persona p1= new persona (); System.out.println("Calculo de dias vividos"); p1.ingresar(); p1.imprimir(); System.out.println("cantidad de dias vividos :"+p1.calcula_dvividos()+" dias");

} }

CONTRUCTORES
Todas las clases Java tienen mtodos especiales llamados Constructores que se utilizan para inicializar un objeto nuevo de ese tipo. Los contructores tienen el mismo nombre que la clase --el nombre del constructor de la clase Rectangle es Rectangle(), el nombre del constructor de la clase Cliente es Cliente (), etc... Java soporta la sobrecarga de los nombres de mtodos, por lo que una clase puede tener cualquier nmero de constructores, todos los cuales tienen el mismo nombre. Al igual que otros mtodos sobrecargados, los constructores se diferencian unos de otros en el nmero y tipo de sus argumentos. Ejemplo de un constructor en un Programa: Ejemplo01 /** Calcula el rea de un rectangulo*/ public class Rectangulo { private float x1,y1,x2,y2;
Pg. 43

Asignatura: Tcnicas de Programacin public Rectangulo(float ex1, float ey1, float ex2, float ey2) { this.x1 = ex1; this.x2 = ex2; this.y1 = ey1; this.y2 = ey2; } public float calcularArea() { return (x2-x1) * (y2-y1); } } // Clase General public class Programa1{ public static void main(String[] args) { Rectangulo prueba = new Rectangulo(1,4,7,6); System.out.println(prueba.calcularArea()); } } Ejemplo 02 Realice un programa para mostrar los fechas ingresadas y asignar dentro de un constructor si parmetro, tambin con paso de parmetro. public class Date { // Atributos private int month; private int day; private int year; // Constructor con cero parmetros public Date() { month = 2; day = 1; year = 1998; } // Constructor con tres parmetros public Date(int theMonth, int theDay, int theYear) { month = theMonth; day = theDay; year = theYear; } // Conversin a String public String toString() { return month + "/" + day + "/" + year; } } public class EjemploConstructor2 { public static void main(String [] args) { Date d1 = new Date(); Date d2 = new Date(1,1,1998); Date d3 = new Date(1,1,1999); System.out.println("Date 1: "+d1); System.out.println("Date 2: "+d2); System.out.println("Date 3: "+d3);
Pg. 44

Asignatura: Tcnicas de Programacin

} } Ejemplo03 Disear la clase empresa productora con: ruc, nombre y produccin total, con los mtodos: public Empresa(int Ruc, String Nombre, float Prod) public float retprod() public String consultar() Disear la clase Industria que contenga el Ruc, Nombre , produccin de una empresa y las funciones respectivamente: public Industria(String Nombre, int Ruc1, String Nombre1, float Prod1) constructor public String consultar( ) public String totprod( ) Clase Empresa public class Empresa { private int Ruc; private String Nombre; private float Prod;

public Empresa(int Ruc, String Nombre, float Prod) this.Ruc = Ruc; this.Nombre = Nombre; this.Prod = Prod; } public float retprod() { return Prod; } public String consultar() { return "Ruc" + Ruc +"Nombre: " + Nombre + " Produccin: " + Prod + "\n"; } { } Clase Industria public class Industria { private String NombreIndustria; private Empresa emp1; public Industria(String Nombre, int Ruc1, String Nombre1, float Prod1) { this.NombreIndustria=Nombre; emp1=new Empresa(Ruc1, Nombre1, Prod1); } public String consultar( ) { String Datos; Datos = emp1.consultar(); return " los datos de la Empresa es "+Datos; } public String totprod( ) { double total=0; total = emp1.retprod(); return "Produccion de la industria: " + total; }
Pg. 45

Asignatura: Tcnicas de Programacin } Clase Principal public class Principal { public static void main(String[] args) { // TODO code application logic here Industria ind = new Industria ("calzados", 131324254, "Rojas", 255444f); System.out.println(ind.consultar() + ind.totprod()); } }

MENSAJES
Una comunicacin dirigida a un objeto, que le ordena que ejecute uno de sus mtodos con ciertos parmetros asociados al evento que lo gener

4.2 Herencia, Subclases, Polimorfismo y Encapsulamiento HERENCIA Y SUBCLASES Herencia


La herencia es uno de los conceptos ms cruciales en la POO. La herencia bsicamente consiste en que una clase puede heredar sus variables y mtodos a varias subclases (la clase que hereda es llamada superclase o clase padre). Esto significa que una subclase, aparte de los atributos y mtodos propios, tiene incorporados los atributos y mtodos heredados de la superclase. De esta manera se crea una jerarqua de herencia. Subclases Como ya se ha indicado en mltiples ocasiones en esta seccin, cuando se puede crear nuevas clases por herencia de clases ya existentes, las nuevas clases se llaman subclases, mientras que las clases de donde hereda se llaman superclases. Cualquier objeto de la subclase contiene todas las variables y todos los mtodos de la superclase y sus antecesores. La orientacin a objetos de Java, y en particular la caracterstica de herencia, nos permite definir nuevas clases derivadas a partir de otra ya existente, que la especializan de alguna manera, extendindola. As logramos definir una jerarqua

Pg. 46

Asignatura: Tcnicas de Programacin Ejemplo 1: public class Electrodomestico { private double tension; private double comsumo; public void conectar() { <implementacin> } public void desconecctar() { <implementacin> }
}

public class Lavadora extends Electrodomestico { public int capacidad() { <implementacin> }

public class Televisor extends Electrodomestico { public int numCanales() { <implementacin>

public class PLancha extends Electrodomestico { public int vapor() { <implementacin> }

} } }

En todo lenguaje orientado a objetos existe una jerarqua de clases relacionadas en base a trminos de herencia. En Java, el punto ms alto de la jerarqua es la clase Object de la cual derivan en ltima instancia todas las dems clases. Esta clase aporta una serie de funciones bsicas comunes a todas las clases. Si al definir una nueva clase, no aparece la clasula extends, Java considera que dicha clase desciende directamente de Object. Ejemplo 2: Desarrolle un programa para la clase Persona que ser sper clase(Padre) y Cliente sub clase(Hijo). //clase persona public class Persona { private String ID; private String Nombre; private String Fono; public Persona(String ID, String Nombre, String Fono) { this.ID=ID; this.Nombre=Nombre; this.Fono=Fono; } public Persona(String Nombre, String Fono) { this.ID="conti"; //Se autogenera this.Nombre=Nombre; this.Fono=Fono; }
Pg. 47

Asignatura: Tcnicas de Programacin public String Imprimir() { return ID + "\t" + Nombre + "\t" + Fono; }
//clase cliente public class Cliente extends Persona { private String RUC; public Cliente(String ID, String Nombre, String Fono, String RUC) { super(ID, Nombre, Fono); this.RUC=RUC; } public String Imprimir() { return super.Imprimir() + "\t" + RUC; } } //Programa Principal public class Prueba { public static void main(String[] args) { Persona p = new Persona("1", "Miguel","212121"); Persona amigo = new Persona("Pepe", "234920"); Cliente c1 = new Cliente("2", "Luis", "242425","10200325471"); System.out.println(p.Imprimir()); System.out.println(amigo.Imprimir()); System.out.println(c1.Imprimir()); } }

Ejemplo 3: Se desea disear una clase alumno que puede ser estudiante universitario o tal vez estudiante del instituto.
class alumno { private int codigo; private String nombre; public void registrar(int n_codigo, String n_nombre) { codigo = n_codigo; nombre = n_nombre; } public void consultar() { System.out.println("Codigo: " + codigo); System.out.println("Nombre: " + nombre); } } class alumno_univ extends alumno { private String facultad; public void regDatos (int n_codigo,String n_nombre,String n_facultad) { super.registrar(n_codigo,n_nombre); facultad = n_facultad; } public void conDatos() { super.consultar(); System.out.println("Facultad: "+facultad+"\n"); } } class alumno_inst extends alumno { private String espec; public void regDatos(int n_codigo,String n_nombre,String n_espec) { super.registrar(n_codigo,n_nombre); espec = n_espec; } Pg. 48

Asignatura: Tcnicas de Programacin


public void conDatos() { super.consultar(); System.out.println("Especialidad:"+espec+"\n"); } } public class EstudiPricipal { public static void main(String args[]) { alumno_inst a1 = new alumno_inst(); a1.regDatos(1,"Jejo","MKT"); alumno_univ a2 = new alumno_univ(); a2.regDatos(2,"Manuel","Ing Informtica"); System.out.println("Consulta de Datos"); a1.conDatos(); a2.conDatos(); } }

Ejemplo 4: Desarrolle el ejemplo anterior con ingreso de datos empleando la siguiente clase leer
import java.io.*; class leer { public static String lectura() { String vdato=""; try { InputStreamReader isr =new InputStreamReader(System.in); BufferedReader br=new BufferedReader(isr); vdato=br.readLine(); } catch(IOException e) { } return vdato; } }

Solucin: import java.io.*; class leer { public static String lectura() { String vdato=""; try { InputStreamReader isr =new InputStreamReader(System.in); BufferedReader br=new BufferedReader(isr); vdato=br.readLine(); } catch(IOException e) { } return vdato; } } class alumno { private int codigo; private String nombre; public void registrar() { System.out.print("Ingrese Codigo : "); codigo=Integer.parseInt(leer.lectura()); System.out.print("Ingrese Nombre : ");
Pg. 49

Asignatura: Tcnicas de Programacin nombre=leer.lectura(); } public void consultar() { System.out.println("Codigo: " + codigo); System.out.println("Nombre: " + nombre); } } class alumno_univ extends alumno { private String facultad; public void regDatos () { super.registrar(); System.out.print("Ingrese Facultad : "); facultad=leer.lectura(); } public void conDatos() { super.consultar(); System.out.println("Facultad: "+facultad+"\n"); } } class alumno_inst extends alumno { private String espec; public void regDatos() { super.registrar(); System.out.print("Ingrese Especialidad : "); espec=leer.lectura(); } public void conDatos() { super.consultar(); System.out.println("Especialidad:"+espec+"\n"); } } public class Ejemplo4 { public static void main(String args[]) { alumno_inst a1 = new alumno_inst(); System.out.println("UTILIZANDO LA CLASE ALUMNO_INST"); a1.regDatos(); alumno_univ a2 = new alumno_univ(); System.out.println("\nUTILIZANDO LA CLASE ALUMNO_UNIV"); a2.regDatos(); System.out.println("\nCONSULTA DE DATOS"); a1.conDatos(); a2.conDatos(); } } POLMORFISMO Java soporta la sobrecarga de funciones, esto es, distintas funciones que comparten el mismo nombre, basta para ello con tener distintos argumentos de llamada. Ejemplo 1: Realizar una clase en, en el cual soporte la sobrecarga de funciones

Pg. 50

Asignatura: Tcnicas de Programacin


unaclase.java public class unaclase { public void escribe(int i) { System.out.println("LLamada con entero"); } public void escribe(float i) { System.out.println("LLamada con float"); } public void escribe(double i) { System.out.println("LLamada con double"); } }// ejemplo1.java public class ejemplo1 { public static void main(String arg[]) { unaclase uc; uc = new unaclase(); uc.escribe(1); uc.escribe(1.0F); uc.escribe(1.0); } }

Sobrecarga de mtodos Mtodo escribe

Nota importante: Una forma de polimorfismo es Sobrecargar funciones Ejemplo 2: Se Tiene una clase producto con codigo y descripcin como datos miembros o atributos y que tenga los siguientes metodos: public void registrar () - que permita registrar los datos public void consultar () - que visualice los datos del producto.
import java.io.*; class leer { public static String lectura() { String vdato=""; try { InputStreamReader isr =new InputStreamReader(System.in); BufferedReader br=new BufferedReader(isr); vdato=br.readLine(); } catch(IOException e) { } return vdato; } } class producto { private int codigo; private String descrip; public void registrar() { System.out.print("Ingrese Codigo:"); codigo=Integer.parseInt(leer.lectura()); System.out.print("Ingrese Descrip.:"); descrip=leer.lectura(); } Pg. 51

Asignatura: Tcnicas de Programacin


public void registrar(int n_codigo, String n_descrip) { codigo = n_codigo; descrip = n_descrip; } public void consultar() { System.out.println("Codigo:" + codigo); System.out.println("Descrip.:" + descrip+ "\n"); } } public class prrincipal { public static void main(String args[]) { producto prod1 = new producto(); producto prod2 = new producto(); // Dos formas de registrar los datos prod1.registrar(); prod2.registrar(2,"Cuaderno 100 hojas"); System.out.println("\nConsulta de Datos"); System.out.println("-----------------"); prod1.consultar(); prod2.consultar(); } }

ENCAPSULAMIENTO:
El encapsulamiento consiste en ocultar los detalles de la implementacin de un objeto, a la vez que se provee una interfaz publica por medio de sus mtodos permitidos. Tambin se define como la propiedad de los objetos de permitir acceso a su estado nicamente a travs de su interfaz o de relaciones preestablecidas con otros objetos.

4.3 Clase Object, Clases Abstractas, Interfaces y Paquetes. CLASE OBJECT


La clase Object, como ya se ha indicado anteriormente, es la clase raz de todo el rbol de la jerarqua de clases Java, y proporciona un cierto nmero de mtodos de utilidad general que pueden utilizar todos los objetos. La lista completa se puede ver en la documentacin del API de Java, aqu solamente se tratarn algunos de ellos; por ejemplo, Object proporciona:

Un mtodo por el que un objeto se puede comparar con otro objeto Un mtodo para convertir un objeto a una cadena Un mtodo para esperar a que ocurra una determinada condicin Un mtodo para notificar a otros objetos que una condicin ha cambiado Un mtodo para devolver la clase de un objeto

CLASES ABSTRACTAS
Una de las caractersticas ms tiles de cualquier lenguaje orientado a objetos es la posibilidad de declarar clases que definen como se utiliza solamente, sin tener que implementar mtodos, son las clases abstractas. Mediante una clase abstracta se intenta fijar un conjunto mnimo de mtodos (el comportamiento) y de atributos, que permitan modelar un cierto concepto, que ser refinado y especializado mediante el mecanismo de la herencia. Como consecuencia, la implementacin de la mayora de los mtodos de una clase abstracta podra no tener significado. Para resolver esto, Java proporciona los mtodos abstractos. Estos mtodos se encuentran incompletos, slo cuentan con la declaracin y no poseen cuerpo de definicin. Esto es muy til cuando la implementacin es
Pg. 52

Asignatura: Tcnicas de Programacin especfica para cada usuario, pero todos los usuarios tienen que utilizar los mismos mtodos. Un ejemplo de clase abstracta en Java es la clase Graphics: public abstract class Graphics { public abstract void drawLine( int x1,int y1,int x2,int y2 ); public abstract void drawOval( int x,int y,int width,int height ); public abstract void drawArc( int x,int y,int width, int height,int startAngle,int arcAngle ); ... } Los mtodos se declaran en la clase Graphics, pero el cdigo que ejecutar el mtodo est en algn otro sitio: public class MiClase extends Graphics { public void drawLine( int x1,int y1,int x2,int y2 ) { <cdigo para pintar lneas -especfico de la arquitectura-> } } Cuando una clase contiene un mtodo abstracto tiene que declararse abstracta. No obstante, no todos los mtodos de una clase abstracta tienen que ser abstractos. Las clases abstractas no pueden tener mtodos privados (no se podran implementar) ni tampoco estticos. Una clase abstracta tiene que derivarse obligatoriamente, no se puede hacer un new de una clase abstracta.

INTERFACES
Los mtodos abstractos son tiles cuando se quiere que cada implementacin de la clase parezca y funcione igual, pero necesita que se cree una nueva clase para utilizar los mtodos abstractos. Los interfaces proporcionan un mecanismo para abstraer los mtodos a un nivel superior, lo que permite simular la herencia mltiple de otros lenguajes. La principal diferencia entre interface y abstract es que un interfaz proporciona un mecanismo de encapsulacin de los protocolos de los mtodos sin forzar al usuario a utilizar la herencia. Una interfaz es una clase completamente abstracta (una clase sin implementacin). Los interfaces se declaran con la palabra reservada de interface En la declaracin de una interfaz solamente puede ir las declaraciones de los mtodos (su nombre y asignatura sin su implementacin) y definiciones de constantes simblicas. Una interfaz no encapsula los datos, solo define cuales son los mtodos que implementarn los objetos de aquellos clases que se implementa la interfaz.
Ejemplo Implementacin del grfico //clase Figura; public interface Figura { public double area(); } //Clase Cuadrado public class Cuadrado implements Figura { private double lado; public Cuadrado( double lado) { this.lado=lado; } public double area() { return lado*lado; Pg. 53

Asignatura: Tcnicas de Programacin


} } // clase circulo public class Circulos implements Figura { private double Radio; public Circulos( double Radio){ this.Radio=Radio; } public double area(){ return (Math.PI)*Radio*Radio; } } //Programa Principal public class programa1 { public static void main(String[] args) { // TODO code application logic here Circulos c1= new Circulos(4.00); Cuadrado Cu2 = new Cuadrado(5.00); System.out.println("area del circulo"+c1.area()); System.out.println("area del cuadrado"+Cu2.area()); } }

PAQUETES
Para explicar el tema de los paquetes imaginarse una ciudad en la cual hay varios bloques de apartamentos propiedad de una nica empresa inmobiliaria. Esta empresa dispone adems de comercios, zonas de recreo y almacenes. Se puede pensar en la empresa como una lista de referencias a cada una de sus propiedades; es decir, la inmobiliaria sabe exactamente donde est un apartamento determinado y puede hacer uso de l en el momento en que lo necesite. Si ahora se mira lo anterior en trminos de Java, la empresa inmobiliaria es el paquete. Los paquetes agrupan a libreras de clases, como las libreras que contienen informacin sobre distintas propiedades comerciales. Un paquete ser, pues, la mayor unidad lgica de objetos en Java. Declaracin de Paquetes Los paquetes se declaran utilizando la palabra package seguida del nombre del paquete. Esto debe estar al comienzo del fichero fuente, en concreto, debe ser la primera sentencia ejecutable del cdigo Java, excluyendo, claro est, los comentarios y espacios en blanco. Por ejemplo: package mamiferos; class Ballena { ... } Java tambin soporta el concepto de jeraqua de paquetes. Esto es parecido a la jerarqua de directorios de la mayora de los sitemas operativos. Se consigue especificando mmtiples nombres en la sentencia package, separados por puntos. Por ejemplo, en las sentencias siguientes, la clase Ballena pertenece al paquete mamiferos que cae dentro de la jerarqua del paquete animales. package animales.mamiferos;

Pg. 54

Asignatura: Tcnicas de Programacin class Ballena { ... } Esto permite agrupar clases relacionadas en un solo paquete, y agrupar paquetes relacionados en un paquete ms grande. Para referenciar a un miembro de otro paquete, se debe colocar el nombre del paquete antes del nombre de la clase. La siguiente sentencia es un ejemplo de llamada al mtodo obtenerNombre() de la clase Ballena que pertenece al subpaquete mamiferos del paquete animales: animales.mamiferos.Ballena.obtenerNombre(); La analoga con la jerarqua de directorios se ve reforzada por el intrprete Java, ya que ste requiere que los ficheros .class se encuentren fsicamente localizados en subdirectorios que coincidan con el nombre del subpaquete. En el ejemplo anterior, si se encontrase en una mquina Unix, la clase Ballena debera estar situada en el camino siguiente: animales/mamiferos/Ballena.class Acceso a Otros Paquetes Se deca que se pueden referenciar paquetes precediendo con su nombre la clase que se quiere usar. Tambin se puede emplear la palabra clave import, si se van a colocar mltiples referencias a un mismo paquete, o si el nombre del paquete es muy largo o complicado. La sentencia import se utiliza para incluir una lista de paquetes en los que buscar una clase determinada, y su sintaxis es: import nombre_paquete; Esta sentencia, o grupo de ellas, deben aparecer antes de cualquier declaracin de clase en el cdigo fuente. Por ejemplo: import animales.mamiferos.Ballena; En este ejemplo, todos los miembros (variables, mtodos) de la clase Ballena estn accesibles especificando simplemente su nombre, sin tener que precederlo del nombre completo del paquete. Esta forma de abreviar tienes sus ventajas y sus desventajas. La ventaja principal es que el cdigo no se vuelve demasiado difcil de leer y adems es ms rpido de teclear. La desventaja fundamental es que resulta ms complicado el saber exactamente a qu paquete pertenece un determinado miembro; y esto es especialmente complicado cuando hay muchos paquetes importados. En la sentencia import tambin se admite la presencia del carcter *, asterisco. Cuando se emplea, se indica que toda la jerarqua de clases localizada a partir del punto en que se encuentre, debe ser importada, en lugar de indicar solamente una determinada clase. Por ejemplo, la siguiente sentencia indicara que todas la clases del subpaquete animales.mamiferos, deben ser importadas: import animales.mamiferos.*; Esta es una forma simple y sencilla de tener acceso a todas las clases de un determinado paquete. Aunque el uso del asterisco debe hacerse con cautela, porque al ya de por s lento compilador, si se pone un asterisco, se cargarn todos los paquetes, lo que har todava ms lenta la compilacin. No obstante, el asterisco no tiene impacto alguno a la hora de la ejecucin, solamente en tiempo de compilacin.

Pg. 55

Asignatura: Tcnicas de Programacin La sentencia import se utiliza en casi todos los ejemplos del Tutorial, fundamentalmente para acceder a las distintas partes del API de Java. Por defecto, el conjunto de clases bajo java.lang.* se importan siempre; las otras libreras deben ser importadas explcitamente. Por ejemplo, las siguientes lneas de cdigo premiten el acceso a las clases correspondientes a las libreras de manipulacion de imgenes y grficos: import java.awt.Image; import java.awt.Graphics; PAQUETES DE JAVA El lenguaje Java proporciona una serie de paquetes que incluyen ventanas, utilidades, un sistema de entrada/salida general, herramientas y comunicaciones. En la versin actual del JDK, algunos de los paquetes Java que se incluyen son los que se muestran a continuacin, que no es una lista exhaustiva, sino para que el lector pueda tener una idea aproximada de lo que contienen los paquetes ms importantes que proporciona el JDK de Sun. Posteriormente, en el desarrollo de otros apartados del Tutorial, se introducirn otros paquetes que tambin forman parte del JDK y que, incorporan caractersticas a Java que hacen de l un lenguaje mucho ms potente y verstil, como son los paquetes Java2D o Swing, que han entrado a formar parte oficial del JDK en la versin JDK 1.2. java.applet Este paquete contiene clases diseadas para usar con applets. Hay la clase Applet y tres interfaces: AppletContext, AppletStub y AudioClip. java.awt El paquete Abstract Windowing Toolkit (awt) contiene clases para generar widgets y componentes GUI (Interfaz Grfico de Usuario), de manipulacin de imgenes, impresin, fuentes de caracteres, cursores, etc.. Incluye las clases Button, Checkbox, Choice, Component, Graphics, Menu, Panel, TextArea, TextField... java.io El paquete de entrada/salida contiene las clases de acceso a ficheros, de filtrado de informacin, serializacin de objetos, etc.: FileInputStream, FileOutputStream, FileReader, FileWriter. Tambin contiene los interfaces que facilitan la utilizacin de las clases: DataInput, DataOutput, Externalizable, FileFilter, FilenameFilter, ObjectInput, ObjectOutput, Serializable... java.lang Este paquete incluye las clases del lenguaje Java propiamente dicho: Object, Thread, Exception, System, Integer, Float, Math, String, Package, Process, Runtime, etc. java.sql Este paquete incluye todos los interfaces que dan acceso a Bases de Datos a travs de JDBC, Java DataBase Connectivity, como son: Array, Blob, Connection, Driver, Ref, ResultSet, SQLData, SQLInput, SQLOutput, Statement, Struct; y algunas clases especficas: Date, DriveManager, Time, Types...

Pg. 56

Asignatura: Tcnicas de Programacin

TERCERA UNIDAD Interfaz Grfica y manejo de datos

Tema N 5: Programas Bsicos en Lenguaje de Programacin Orientada a Objetos 5.1 El visor de Applets y escribir Applets Java
EL VISOR DE APPLETS El visor de applets (appletviewer) es una aplicacin que permite ver en funcionamiento applets, sin necesidad de la utilizacin de un navegador World-Wide-Web como HotJava, Microsoft Explorer o Nescape. En adelante, se recurrir muchas veces a l, ya que el objetivo de este Tutorial es el lenguaje Java, y es la forma ms sencilla y econmica de poder ver un applet en ejecucin. Applet La definicin ms extendida de applet, muy bien resumida por Patrick Naughton, indica que un applet es "una pequea aplicacin accesible en un servidor Internet, que se transporta por la red, se instala automticamente y se ejecuta in situ como parte de un documento web". Claro que as la definicin establece el entorno (Internet, Web, etc.). En realidad, un applet es una aplicacin pretendidamente corta (nada impide que ocupe ms de un gigabyte, a no ser el pensamiento de que se va a transportar por la red y una mente sensata) basada en un formato grfico sin representacin indepediente: es decir, se trata de un elemento a embeber en otras aplicaciones; es un componente en su sentido estricto. Llamadas a Applets con appletviewer <HTML> <APPLET CODE=HolaMundo.class WIDTH=300 HEIGHT=100> </APPLET> </HTML> El appletviewer crear un espacio de navegacin, incluyendo un rea grfica, donde se ejecutar el applet, entonces llamar a la clase applet apropiada. En el ejemplo anterior, el appletviewer cargar una clase de nombre HolaMundo y le permitir trabajar en su espacio grfico.

Pg. 57

Asignatura: Tcnicas de Programacin

Arquitectura de appletviewer

ESCRIBIR APPLETS JAVA


Para escribir applets Java. Hay que utilizar una serie de mtodos. Incluso para el applet ms sencillo. Son los que se usan para arrancar (start) y detener (stop) la ejecucin del applet, para pintar (paint) y actualizar(update) la pantalla y para capturar la informacin que se pasa al applet desde el archivo html a travs de la marca APPLET. init() Esta funcin miembro es llamada al crearse el applet. Es llamada slo una vez. La clase Applet no hace nada en init(). Las clases derivadas deben sobrecargar este mtodo para cambiar el tamao durante su inicializacin, y cualquier otra inicializacin de los datos que solamente deba realizarse una vez. Deberan realizarse al menos las siguientes acciones:

Carga de imgenes y sonido El resize del applet para que tenga su tamao correcto Asignacin de valores a las variables globales

public void init() { resize(500,500); } resize( int width,int height ) El mtodo init() debera llamar a esta funcin miembro para establecer el tamao del applet. Puede utilizar las variables ancho y alto, pero no es necesario. Cambiar el tamao en otro sitio que no sea init() produce un reformateo de todo el documento y no se recomienda.

Pg. 58

Asignatura: Tcnicas de Programacin En el navegador Netscape, el tamao del applet es el que se indica en la marca APPLET del HTML, no hace caso a lo que se indique desde el cdigo Java del applet. paint( Graphics g ) Se llama cada vez que se necesita refrescar el rea de dibujo del applet. La clase Applet simplemente dibuja una caja con sombreado de tres dimensiones en el rea. Obviamente, la clase derivada debera sobrecargar este mtodo para representar algo inteligente en la pantalla. Podemos utilizar paint() para imprimir nuestro mensaje de bienvenida: void public paint( Graphics g ) { g.drawString( "Hola Java!",25,25 ); // Dibujaremos la imgenes que necesitemos }

5.2 CLASE GRAPHICS


La clase Graphics describe el contexto grfico y proporciona un conjunto de funciones para dibujar las siguientes figuras

Lneas Crculos y elipses Rectngulos y polgones Imgenes Texto

El sistema de coordenadas que se usa en Java es similar a Windows. El rea de trabajo del applet est compuesta por una matriz bidimensional de puntos o pixels. Decimos que un punto tiene de coordendas (x, y) cuando est en la columna x medida desde la izquierda, y est en la fila y, medida desde arriba. La esquina superior izquierda es el origen (0, 0). Mtodo resize, setSize: Permite cambiar el tamao del applet resize (int ancho, int alto) resize(500,500); setSize(500,500); Mtodo getSize: La funcin getSize nos devuelve un objeto de la clase Dimension cuyos miembros width y height nos suministran la anchura y altura del componenete. int ancho=getSize().width; int alto=getSize().heigth; Mtodo drawString: Permite escribir un texto en la pantalla g.drawString("Holasssss!!", 50, 60 ); Mtodo Color: Color C1 = new Color(255,0,0); El color negro es el color por defecto del contexto grfico. Para establecer otro color, como veremos en la pgina siguiente, se utiliza la funcin setColor, y se le pasa un color predefinido o definido por el usuario.
Pg. 59

Asignatura: Tcnicas de Programacin g.setColor(C1); Los colores primarios son el rojo, el verde y el azul. Java utiliza un modelo de color denominado RGB, que significa que cualquier color se puede describir dando las cantidades de rojo (Red), verde (Green), y azul (Blue). Estas cantidades son nmeros enteros comprendidos entre 0 y 255, o bien, nmeros reales comprendidos entre 0.0 y 1.0. La siguiente tabla nos proporciona los colores ms comunes y sus valores RGB.
Nombre white lightGray gray drakGray black red pink orange yellow green magenta cyan blue Red (rojo) 255 192 128 64 0 255 255 255 255 0 255 0 0 Green (verde) 255 192 128 64 0 0 175 200 255 255 0 255 0 Blue (azul) 255 192 128 64 0 0 175 0 0 0 255 255 255

Para crear un objeto de la clase Color, se pasan tres nmeros a su constructor que indican la cantidad de rojo, verde y azul. Color colorRosa=new Color(255, 175, 175); Mediante la funcin setColor, cambiamos color con el que dibujamos una lnea, un texto o rellenamos una figura cerrada en el contexto grfico g. g.setColor(colorRosa); No es necesario tener a mano la tabla de las componentes RGB de cada color. La clase Color nos proporciona un conjunto de colores predefinidos en forma de miembros estticos de dicha clase. Podemos escribir alternativamente g.setColor(Color.pink); Los colores predefinidos son los siguientes
Color.white Color.lightGray Color.gray Color.darkGray Color.blue Color.black Color.red Color.pink Color.orange Color.yellow Color.green Color.magenta Color.cyan

Mtodos De La Clase Graphics


drawLine(x1,y1,x2,y2): La funcin drawLine, le pasamos el punto inicial (x1,y1) y el punto final (x2,y2). Para dibujar una lnea diagonal desde el origen (0, 0) o esquina superior izquierda, hasta la esquina inferior derecha, obtenemos las dimensiones del applet mediante la funcin getSize, que devuelve un objeto de la clase Dimension. El miembro width nos proporciona la anchura y el miembro height la altura. g.drawLine(0, 0, getSize().width-1, getSize().height-1); drawRect (x, y, ancho, alto): La funcin drawRect dibuja el contorno de un rectangulo g.drawRect (x,y, anchura,altura);
Pg. 60

Asignatura: Tcnicas de Programacin

fillRect(x, y, ancho, alto) Dbuja el rectngulo pintando su interior del color seleccionado, en este caso de color rojo. g.setColor(Color.red); g.fillRect(50, 150, 50, 60); drawRoundRect (x,y, ancho, alto,ancho Arco, alto Arco ) Permite dibujar un rectngulo con los bordes redondeados g.drawRoundRect(3,3, 200, 100,25,25 ); drawOval (x, y, ancho, alto) fillOval (x, y, ancho, alto) Una elipse de dibuja mediante drawOval o fillOval, con los mismos parmetros que el rectngulo fillArc(x, y, ancho, alto, ang_inicial, ang_final) drawArc(x, y, ancho, alto, ang_inicial, ang_final) Un arco requiere dos parmetros ms el ngulo inical y el ngulo final. Las sentencias que vienen a continuacin, dibujan un arco en el interior del rectngulo cuyo origen es el punto 10, 10, cuya anchura es 150, y cuya altura es 100. El ngulo inicial es 0 y el final es 270, expresado en grados. g.setColor(Color.cyan); g.fillArc(10, 10, 150, 100, 0, 270); g.setColor(Color.black); g.drawArc(10, 10, 150, 100, 0, 270); Ejemplo 1: Creacin de un Applet
import java.awt.*; import java.applet.*; public class Ejercicio1 extends Applet { public void init() { resize(600,400); } public void paint(Graphics g) { g.drawString("Holasssss!!", 50, 60 ); Color c1= new Color (255,0,0);//definiendo el color rojo g.setColor(c1);//activando el color rojo g.drawString("pruebita ps!!", 50,80 ); g.drawLine(50,100,210,120); Color c2=new Color(0,255,0);//verde g.setColor(c2); g.drawRect(50,130,25,25 ); Color c3=new Color(255,175,175);//rosado g.setColor(c3); g.fillRect(50,160,100,20 ); g.drawRoundRect(200,160,100,50, 15,15 ); g.setColor(c1); g.fillArc(50,180,120,60,0,50); } } Pg. 61

Asignatura: Tcnicas de Programacin

5.3 La aplicacin Fecha


import java.util.Date; class FechaApp { public static void main( String args[] ) { Date hoy = new Date(); System.out.println( hoy ); } } Esta aplicacin es una versin modificada de HolaMundoApp de la que difiere porque se importa la clase Date, la aplicacin se llama ahora FechaApp en vez de HolaMundoApp, se crea un objeto Date y el mensaje de salida a pantalla es diferente. Esta nueva aplicacin se almacenar en el fichero fuente Java, FechaApp.java.

5.4 Clases Java


LA CLASE MATH La clase Math representa la librera matemtica de Java. Funciones Matemticas Si se importa la clase, se tiene acceso al conjunto de funciones matemticas estndar: Math.abs( x ) Math.sin( double a ) Math.cos( double a ) Math.tan( double a ) Math.asin( double r ) Math.acos( double r ) Math.atan( double r ) Math.atan2(double a,double b) Math.exp( double x ) Math.log( double x ) Math.sqrt( double x ) Math.ceil( double a ) Math.floor( double a ) Math.rint( double a ) Math.pow( double x,double y ) Math.round( x ) Math.random() Math.max( a,b ) Math.min( a,b ) Math.E Math.PI para int, long, float y double devuelve el seno del ngulo a en radianes devuelve el coseno del ngulo a en radianes devuelve la tangente del ngulo a en radianes devuelve el ngulo cuyo seno es r devuelve el ngulo cuyo coseno es r devuelve el ngulo cuya tangente es r devuelve el ngulo cuya tangente es a/b devuelve e elevado a x devuelve el logaritmo natural de x devuelve la raz cuadrada de x devuelve el nmero completo ms pequeo mayor o igual que a devuelve el nmero completo ms grande menor o igual que a devuelve el valor double truncado de a devuelve y elevado a x para double y float devuelve un double para int, long, float y double para int, long, float y double para la base exponencial, aproximadamente 2.72 para PI, aproximadamente 3.14

El ejemplo java800.java, muestra la utilizacin de algunas de las funciones de la clase Math:

Pg. 62

Asignatura: Tcnicas de Programacin class java800 { public static void main( String args[] ) { int x; double rand,y,z; float max; rand = Math.random(); x = Math.abs( -123 ); y = Math.round( 123.567 ); z = Math.pow( 2,4 ); max = Math.max( (float)1e10,(float)3e9 ); System.out.println( rand ); System.out.println( x ); System.out.println( y ); System.out.println( z ); System.out.println( max ); } LA CLASE CHARACTER Declaraciones La primera sentencia crear una variable carcter y la segunda un objeto Character: char c; Character C; Comprobaciones booleanas Character.isLowerCase( char ) Character.isUpperCase( char ) Character.isDigit( char ) Character.isSpace( char ) devuelve true si el carcter es una letra minscula devuelve true si el carcter es una letra mayscula devuelve true para caracteres numricos devuelve true para espacios en blanco

En este caso, si tuvisemos un objeto Character C , no se podra hacer C.isLowerCase(), porque no se ha hecho un new de Character. Estas funciones son estticas y no conocen al objeto, por eso hay que crearlo antes. Traslaciones de Caracteres Character.toLowerCase( char ) Character.toUpperCase( char ) LA CLASE DATE La clase Date se utiliza para representar una fecha y una hora. Se pueden manipular el da, mes, ao, da de la semana, horas minutos y segundos. Constructores convierte entre mayscula y minscula convierte entre minscula y mayscula

Pg. 63

Asignatura: Tcnicas de Programacin Hay varios constructores para objetos Date, que ofrecen ms o menos nivel de especificidad para la precisin que se desea para la hora. Date() Inicializa el objeto con la fecha y hora actual Establecer la hora a las 00:00:00 (medianoche) del da especificado Establecer la fecha y hora, dejando los segundos a 0

Date( ao,mes,da )

Date( ao,mes,da,horas,minutos )

Date( ao,mes,da,horas,minutos,segundos ) Establecer la hora exacta Date( String ) Este constructor de Date, analizar una representacin tipo cadena con la fecha y hora y la convertir en objeto. Date convierte muchos formatos de fecha tipo cadena, pero debera seguirse la sintaxis de fecha de tipo: Date( "Fri Oct 3 21:23:45 GMT 1997" Establece la hora exacta a partir del numero de milisegundos que han pasado desde el 1 de Enero de 1970, a las 00:00:00 GMT

Date( long )

5.5 Excepciones
A continuacin se muestra cmo se utilizan las excepciones, reconvirtiendo en primer lugar el applet de saludo a partir de la versin iterativa de HolaIte.java: import java.awt.*; import java.applet.Applet; public class HolaIte extends Applet { private int i = 0; private String Saludos[] = { "Hola Mundo!", "HOLA Mundo!", "HOLA MUNDO!!" }; public void paint( Graphics g ) { g.drawString( Saludos[i],25,25 ); i++; } } Normalmente, un programa termina con un mensaje de error cuando se lanza una excepcin. Sin embargo, Java tiene mecanismos para excepciones que permiten ver qu excepcin se ha producido e intentar recuperarse de ella.
Pg. 64

Asignatura: Tcnicas de Programacin Vamos a reescribir el mtodo paint() de esa versin iterativa del saludo: public void paint( Graphics g ) { try { g.drawString( Saludos[i],25,25 ); } catch( ArrayIndexOutOfBoundsException e ) { g.drawString( "Saludos desbordado",25,25 ); } catch( Exception e ) { // Cualquier otra excepcin System.out.println( e.toString() ); } finally { System.out.println( "Esto se imprime siempre!" ); } i++; } La palabra clave finally define un bloque de cdigo que se quiere que sea ejecutado siempre, de acuerdo a si se captur la excepcin o no. En el ejemplo anterior, la salida en la consola, con i=4 sera: C:\>java HolaIte Saludos desbordado Esto se imprime siempre!

Tema N 6: Delegacin de eventos y AWT


6.1 Delegacin de eventos MODELO DE DELEGACIN DE EVENTOS Los eventos ahora estn organizados en jerarquas de clases de eventos. El nuevo modelo hace uso de fuentes de eventos (Source) y receptores de eventos (Listener). Una fuente de eventos es un objeto que tiene la capacidad de detectar eventos y notificar a los receptores de eventos que se han producido esos eventos. Aunque el programador puede establecer el entorno en que se producen esas notificaciones, siempre hay un escenario por defecto. Algunas clases de eventos, como los de ratn, involucran a un determinado conjunto de eventos diferentes. Una clase receptor que implemente el interfaz que recoja estos eventos debe sobreescribir todos los mtodos declarados en el interfaz. Para prevenir esto, de forma que no sea tan tedioso y no haya que sobreescribir mtodos que no se van a utilizar, se han definido un conjunto de clases intermedias, conocidas como Adaptadores (Adapter). import java.awt.*; import java.awt.event.*;

// Este es un paquete nuevo del JDK 1.1

Pg. 65

Asignatura: Tcnicas de Programacin public class java1101 { public static void main( String args[] ) { // Aqui se instancia un objeto de tipo Interfaz Hombre-Maquina IHM ihm = new IHM(); } }

// Esta clase se utiliza para instaciar un objeto de tipo interfaz de // usuario, para que permita instanciar a su vez dos objetos Listener // y registrarlos para que reciban notificacion cuando se producen // eventos en una Ventana class IHM { // Constructor de la clase public IHM() { // Se crea un objeto Frame Frame ventana = new Frame(); // El metodo setSize() reemplaza al metodo resize() del JDK 1.0 ventana.setSize( 300,200 ); ventana.setTitle( "Tutorial de Java, Eventos" ); // El metodo setVisible() reemplaza al metodo show() del JDK 1.0 ventana.setVisible( true ); // Se instancian dos objetos receptores que procesaran los // eventos de la ventana Proceso1 ventanaProceso1 = new Proceso1( ventana ); Proceso2 ventanaProceso2 = new Proceso2(); // Se registran los dos objetos receptores para que sean // notificados de los evetnos que genere la ventana, que es el // objeto origen de los eventos ventana.addWindowListener( ventanaProceso1 ); ventana.addWindowListener( ventanaProceso2 ); } }

// Las dos clases siguientes se pueden utilizar para instanciar los // objetos receptor. Esta clase implementa el interfaz WindowListener, // lo cual requiere que todos los metodos que estan declarados en el // interfaz sean definidos en la clase. // La clase define todos esos metodos y presenta un mensaje // descriptivo cada vez que se invoca a uno de ellos. class Proceso1 implements WindowListener { // Variable utilizada para guardar una referencia al objeto Frame Frame ventanaRef; // Constructor que guarda la referencia al objeto Frame Proceso1( Frame vent ){ this.ventanaRef = vent; } public void windowClosed( WindowEvent evt ) { System.out.println( "Metodo windowClosed de Proceso1" );
Pg. 66

Asignatura: Tcnicas de Programacin } public void windowIconified( WindowEvent evt ) { System.out.println( "Metodo windowIconified de Proceso1" ); } public void windowOpened( WindowEvent evt ) { System.out.println( "Metodo windowOpened de Proceso1" ); } public void windowClosing( WindowEvent evt ) { System.out.println( "Metodo windowClosing de Proceso1" ); // Se oculta la ventana ventanaRef.setVisible( false ); } public void windowDeiconified( WindowEvent evt ) { System.out.println( "Metodo windowDeiconified Proceso1" ); } public void windowActivated( WindowEvent evt ) { System.out.println( "Metodo windowActivated de Proceso1" ); } public void windowDeactivated( WindowEvent evt ) { System.out.println( "Metodo windowDeactivated de Proceso1" ); } } // Esta clase y la anterior se pueden utilizar para instanciar // objetos Listener. En esta clase, se extiende la clase Adapter // obvienado el requerimiento de tener que definir todos los // metodos del receptor de eventos WindowListener. El objeto // Adapter, WindowAdapter extiende a WindowListener y define // todos los metodos con codigo vacio, que pueden ser sobreescritos // siempre que se desee. En este clase concreta, solamente se // sobreescriben dos de los metodos declarados en el interfaz, y // presenta un mensaje cada vez que se invoca a uno de ellos class Proceso2 extends WindowAdapter { public void windowIconified( WindowEvent evt ) { System.out.println( "--- Metodo windowIconified de Proceso2" ); } public void windowDeiconified( WindowEvent evt ) { System.out.println( "---Metodo windowDeiconified de Proceso2" ); } } El AWT define un conjunto determinado de eventos, aunque el programador tambin puede definir sus propios tipos de eventos, derivando de EventObject, o desde una de las clases de eventos del AWT. El AWT proporciona dos tipos conceptuales de eventos: de bajo nivel y semnticos, que:

Pg. 67

Asignatura: Tcnicas de Programacin java.util.EventObject java.awt.AWTEvent java.awt.event.ComponentEvent Componente redimensionado, desplazado java.awt.event.FocusEvent Prdida, ganancia del focus por un Componente java.awt.event.InputEvent java.awt.event.KeyEvent El Componente recoge una pulsacin de teclado java.awt.event.MouseEvent El Componente recoge movimientos del ratn, pulsacin de botones java.awt.event.ContainerEvent java.awt.event.WindowEvent Como ya se ha indicado, algunas clases de eventos engloban a varios tipos distintos de eventos. Normalmente, hay un interfaz correspondiente a cada clase de evento y hay mtodos del interfaz para cada tipo distinto de evento en cada clase de evento. Un evento semntico es un evento que se define a alto nivel y encapsula una accin de un componente del interfaz de usuario. Algunos eventos de este tipo son: java.util.EventObject java.awt.AWTEvent java.awt.event.ActionEvent Ejecucin de un comando java.awt.event.AdjustmentEvent Ajuste de un valor java.awt.event.ItemEvent Cambio de estado de un item java.awt.event.TextEvent Cambio de valor de un texto RECEPTORES DE EVENTOS Un interfaz EventListener tendr un mtodo especfico para cada tipo de evento distinto que trate la clase de evento. Por ejemplo, el interfaz FocusEventListener define los mtodos focusGained() y focusLost(), uno para cada tipo de evento que trata la clase FocusEvent. Los interfaces de bajo nivel que define la versin del JDK 1.2 son los siguientes: java.util.EventListener java.awt.event.ComponentListener java.awt.event.ContainerListener java.awt.event.FocusListener java.awt.event.KeyListener java.awt.event.MouseListener java.awt.event.MouseMotionListener java.awt.event.WindowListener Los interfaces de nivel semntico que define el AWT en la versin del JDK 1.2 son: java.util.EventListener java.awt.event.ActionListener java.awt.event.AdjustmentListener java.awt.event.ItemListener java.awt.event.TextListener

Fuentes de Eventos

Pg. 68

Asignatura: Tcnicas de Programacin Todas las fuentes de eventos del AWT soportan el multienvo a receptores. Esto significa que se pueden aadir o quitar mltiples receptores de una sola fuente; en otras palabras, la notificacin de que se ha producido un mismo evento se puede enviar a uno o ms objetos receptores simultneamente. java.awt.Component addComponentListener addFocusListener addKeyListener addMouseListener addMouseMotionListener java.awt.Container addContainerListener java.awt.Dialog addWindowListener java.awt.Frame addWindowListener Los receptores de eventos que se pueden registrar de tipo semntico sobre objetos fuentes, generadores de eventos, en el JDK 1.2 son: java.awt.Button addActionListener java.awt.Choice addItemListener java.awt.Checkbox addItemListener java.awt.CheckboxMenuItem addItemListener java.awt.List addActionListener addItemListener java.awt.MenuItem addActionListener java.awt.Scrollbar addAdjustmentListener java.awt.TextArea addTextListener java.awt.TextField addActionListener addTextListener

6.2 AWT: Interfaz de Usuario, Estructura del AWT, Componentes


AWT AWT es el acrnimo del X Window Toolkit para Java, donde X puede ser cualquier cosa: Abstract, Alternative, Awkward, Another o Asqueroso; aunque parece que Sun se decanta por Abstracto, seriedad por encima de todo. Se trata de una biblioteca de clases Java para el desarrollo de Interfaces de Usuario Grficas. La versin del AWT que Sun proporciona con el JDK se desarroll en slo dos meses y es la parte ms dbil de todo lo que representa Java como lenguaje. El entorno que ofrece es demasiado simple, no se han tenido en cuenta las ideas de entornos grficos novedosos. Quiz la presin de tener que lanzar algo al mercado haya tenido mucho que ver en la pobreza de AWT.
Pg. 69

Asignatura: Tcnicas de Programacin INTERFAZ DE USUARIO El interfaz de usuario es la parte del programa que permite a ste interactuar con el usuario. Las interfaces de usuario pueden adoptar muchas formas, que van desde la simple lnea de comandos hasta las interfaces grficas que proporcionan las aplicaciones ms modernas. El interfaz de usuario es el aspecto ms importante de cualquier aplicacin. Una aplicacin sin un interfaz fcil, impide que los usuarios saquen el mximo rendimiento del programa. Java proporciona los elementos bsicos para construir decentes interfaces de usuario a travs del AWT, y opciones para mejorarlas mediante Swing, que s permite la creacin de interfaces de usuario de gran impacto y sin demasiados quebraderos de cabeza por parte del programador.

ESTRUCTURA DEL AWT


La estructura bsica del AWT se basa en Componentes y Contenedores. Estos ltimos contienen Componentes posicionados a su respecto y son Componentes a su vez, de forma que los eventos pueden tratarse tanto en Contenedores como en Componentes, corriendo por cuenta del programador (todava no hay herramientas de composicin visual) el encaje de todas las piezas, as como la seguridad de tratamiento de los eventos adecuados. Con Swing se va un paso ms all, ya que todos los JComponentes son subclases de Container, lo que hace posible que widgets Swing puedan contener otros componentes, tanto de AWT como de Swing, lo que hace prever interesantes posibilidades. COMPONENTES Component es una clase abstracta que representa todo lo que tiene una posicin, un tamao, puede ser pintado en pantalla y puede recibir eventos. No tiene constructores pblicos, ni puede ser instanciada. Sin embargo, desde el JDK 1.1 puede ser extendida para proporcionar una nueva caracterstica incorporada a Java, conocida como componentes Lightweight.

Los Objetos derivados de la clase Component que se incluyen en el Abstract Window Toolkit son los que aparecen a continuacin:

Button Canvas Checkbox Choice


Pg. 70

Asignatura: Tcnicas de Programacin

Container o Panel o Window o Dialog o Frame Label List Scrollbar TextComponent o TextArea o TextField

Jerarquia de clases (ver grafico)

Botones de Pulsacin: BUTTON La clase Button es una clase que produce un componente de tipo botn con un ttulo. El constructor ms utilizado es el que permite pasarle como parmetro una cadena, que ser la que aparezca como ttulo e identificador del botn en el interfaz de usuario. //EjemploButtonApplet.java import java.awt.*; public class EjemploButtonApplet extends java.applet.Applet { public void init() { Label etiqueta1 = new Label("Label1"); Button boton1 = new Button("Boton 1"); Button boton2 = new Button("Boton 2"); add(boton1); add(etiqueta1); add(boton2); } } Botones de Seleccin: CHOICE Los botones de seleccin (Choice) permiten el rpido acceso a una lista de elementos, presentndose como ttulo el item que se encuentre seleccionado.
Pg. 71

Asignatura: Tcnicas de Programacin

Choice c = new Choice(); // crea el menu desplegable c.addItem("Naranja"); c.addItem("Manzana"); c.addItem("Pera"); add(c); // aade el menu al panel ... Metodos utiles: getItem(int n) devuelve el string de la opcion n-esima getSelectedIndex() devuelve el indice de la opcion seleccionada //Este tipo de menus solo permiten seleccionar una opcion. Para multiples opciones, usar una lista Botones de Comprobacin: CHECKBOX, CHECKBOXGROUP La clase CheckBox extiende la clase Component e implementa el interfaz ItemSelectable, que es el interfaz que contiene un conjunto de items entre los que puede haber o no alguno seleccionado. Los botones de comprobacin (Checkbox) se pueden agrupar para formar un interfaz de botn de radio (CheckboxGroup), que son agrupaciones de botones de comprobacin de exclusin mltiple, es decir, en las que siempre hay un nico botn activo. EJEMPLO: Muestra la lIsta de del deporte que desee

import java.awt.*; import java.applet.*; Pg. 72

Asignatura: Tcnicas de Programacin


public class Ejemplo17 extends Applet { Checkbox chkMusica, chkDeporte, chkAventura; TextArea txtS; public void init() { // anula distribucion por defecto de los objetos setLayout(null); // crear y ubicar los objetos de la GUI chkMusica = new Checkbox("Musica"); chkMusica.setBounds(10,10,100,25); add(chkMusica); chkDeporte = new Checkbox("Deporte"); chkDeporte.setBounds(10,45,100,25); add(chkDeporte); chkAventura = new Checkbox("Aventura"); chkAventura.setBounds(10,80,100,25); add(chkAventura); txtS = new TextArea(); txtS.setBounds(120,10,300,150); add(txtS); } public boolean action(Event e, Object o) { // programar la accion de los checks String eleccion="Ud. eligi: "; if (chkMusica.getState()==true) eleccion += "musica,"; if (chkDeporte.getState()==true) eleccion += "deporte,"; if (chkAventura.getState()==true) eleccion += "aventura,"; // muestra la eleccin txtS.setText(eleccion); return true; } }

import java.awt.*; import java.applet.*; import java.awt.event.*;

Pg. 73

Asignatura: Tcnicas de Programacin public class Ejemplo4 extends Applet { //Declarando los objetos de la interfaz grfica Checkbox chkMusica, chkDeporte, chkAventura; CheckboxGroup bgrHobby ; TextArea txtS; public void init() { setLayout(null); bgrHobby= new CheckboxGroup(); chkMusica= new Checkbox (" Msica",bgrHobby,false); chkMusica.setBounds(10,10,100,25); add(chkMusica); chkDeporte= new Checkbox (" Deporte",bgrHobby,true); chkDeporte.setBounds(10,40,100,25); add(chkDeporte); chkAventura= new Checkbox("Aventura",bgrHobby,false); chkAventura.setBounds(10,70,100,25); add(chkAventura); txtS= new TextArea(); txtS.setBounds(120,10,300,150); add(txtS); } public boolean action (Event e, Object o) { //programando la accion de los checks String aux="Ud. eligi: "; if(chkMusica.getState()==true) aux+= " msica,"; if(chkDeporte.getState()==true) aux+= " deporte,"; if(chkAventura.getState()==true) aux+=" aventura,"; //imprime la eleccin txtS.setText(aux); return true; } } Listas: LIST Las listas (List) aparecen en los interfaces de usuario para facilitar a los operadores la manipulacin de muchos elementos. Se crean utilizando mtodos similares a los de los botones Choice. La lista es visible todo el tiempo, utilizndose una barra de desplazamiento para visualizar los elementos que no caben en el rea de la lista que aparece en la pantalla.

GUI

Pg. 74

Asignatura: Tcnicas de Programacin

Son menus, pero no desplegables Es una lista de items en la que se puede elegir uno o varios Si el numero de items es mayor que la longitud de la lista, aparecen barras de deslizamiento

List lista = new List(5, true); // crea una lista que tendra 5 lineas, y que permitira // seleccion multiple (valor 'true') lista.addItem("Afrodita"); lista.addItem("Apolo"); lista.addItem("Ares"); lista.addItem("Hades"); lista.addItem("Zeus"); // si se aade un sexto elemento, se creara automaticamente // una barra deslizante add(lista);

Metodos utiles: getSelectedIndex() // devuelve el indice del item seleccionado, si no se permite seleccion mult. getSlectedIndexes() // devuelve un array de indices de los items seleccionados getSelectedItem() // devuelve el item seleccionado getSlectedItems() // idem varios items select(int) // fuerza a que est seleccionado el item de la posicion dada etc... Campos de Texto: TEXTFIELD Para la entrada directa de datos se suelen utilizar los campos de texto, que aparecen en pantalla como pequeas cajas que permiten al usuario la entrada por teclado de una lnea de caracteres.

Pg. 75

Asignatura: Tcnicas de Programacin ... add(new Label("Nombre completo")); add(new TextField("-esciba aqui su nombre-")); add(new Label("Telefono")); add(new TextField(12)); add(new Label("Password")); TextField t = new TextField(20); t.setEchoCharacter('*'); add(t); ...

Metodos utiles: setEditable(boolean) define si el testo es editable o no select(int, int) selecciona el texto entre las dos posiciones (origen = 0) etc... Areas de Texto: TEXTAREA

Es un componente similar a TextField. TextField es mas conveniente para pequeos textos, idealmente de una sola linea. No tiene barras de deslizamiento TextArea en mas conveniente para textos largos, de mas de una linea. Por defecto, tiene barras de deslizamiento

String texto = "Erase una vez un pais en el que vivian tres cerditos que eran\n" + "hermanos. Decidieron construirse una casa, y uno el primero de\n" + "ellos se la hizo de paja, el segundo de madera y el tercero de ladrillo\n" + "Un buen dia aparecio por alli el lobo y blablabla..."; // el caracter \n es para forzr el retorno de linea add(new TextArea(texto, 10, 60));

Metodos utiles: insertText(String, int) // inserta texto en la posicion indicada replaceText(String, int,int) // reepmplaza el texto entre las posiciones dadas etc... Etiquetas: LABEL Una etiqueta (Label) proporciona una forma de colocar texto esttico en un panel, para mostrar informacin fija, que no vara (normalmente), al usuario.

Pg. 76

Asignatura: Tcnicas de Programacin

La clase Label extiende la clase Component y dispone de varias constantes que permiten especificar la alineacin del texto sobre el objeto Label. // EjemploLabelApplet.java import java.awt.*; public class EjemploLabelApplet extends java.applet.Applet { public void init() { Label etiqueta1 = new Label("Label1"); Label etiqueta2 = new Label("Label2"); Label etiqueta3 = new Label("Label3"); add(etiqueta1); add(etiqueta2); add(etiqueta3); } } Ejemplo: Sumar dos nmeros en un applet

import java.awt.*; import java.applet.*; import java.awt.event.*; public class Ejemplo11 extends Applet { private TextField tValor1,tValor2,tResul; private Button btnSumar,btnRestar; public void init() { setLayout(null); Pg. 77

Asignatura: Tcnicas de Programacin


resize(400,200); tValor1 = new TextField(20); tValor1.setBounds(10,10,100,25); tValor2 = new TextField(20); tValor2.setBounds(10,45,100,25); btnSumar = new Button("Sumar"); btnSumar.setBounds(10,80,100,25); btnRestar = new Button("Restar"); btnRestar.setBounds(100,80,100,25); tResul = new TextField(20); tResul.setBounds(10,150,100,25); add(tValor1); add(tValor2); add(btnSumar); add(btnRestar); add(tResul); } public boolean action(Event e,Object o) { int aux=0; if (e.target == btnSumar) { aux = Integer.parseInt(tValor1.getText()) + Integer.parseInt(tValor2.getText()); } if (e.target == btnRestar) { aux = Integer.parseInt(tValor1.getText())-Integer.parseInt(tValor2.getText()); } //showStatus("Resultado:" + aux); return true; } }

Canvas

Un componente Canvas es un objeto que permite dibujar en l. No hace nada por si mismo. Esta pensado para ser extendido por herencia. Canvas can = new Canvas(); add(can);

Ejemplos varios: EJEMPLO 01: Realice un programa para ralizar las 4 operaciones y limpiar el texfield

import java.awt.*; import java.applet.*;

Pg. 78

Asignatura: Tcnicas de Programacin


public class Ejemplo18 extends Applet { private TextField tValor1,tValor2; private Choice chOperaciones; public void init() { tValor1 = new TextField(20); tValor2 = new TextField(20); chOperaciones = new Choice(); chOperaciones.addItem("sumar"); chOperaciones.addItem("restar"); chOperaciones.addItem("multiplicar"); add(tValor1); add(tValor2); add(chOperaciones); } public boolean action(Event e,Object o) { int aux=0; if (chOperaciones.getSelectedIndex()==0) { aux = Integer.parseInt(tValor1.getText()) + Integer.parseInt(tValor2.getText()); } if (chOperaciones.getSelectedIndex()==1) { aux = Integer.parseInt(tValor1.getText())- Integer.parseInt(tValor2.getText()); } if (chOperaciones.getSelectedIndex()==2) { aux = Integer.parseInt(tValor1.getText()) *Integer.parseInt(tValor2.getText()); } showStatus("Resultado:" + aux); return true; } }

EJEMPLO 02:

import java.awt.*; import java.awt.event.*; import java.applet.*; public class Ejemplo5 extends Applet { Choice choColorFondo; Button btnRestablecer; public void init() { setLayout(null);
Pg. 79

Asignatura: Tcnicas de Programacin resize(400,400); //creando el choice choColorFondo=new Choice(); //establce las coordenadas choColorFondo.setBounds(10,10,150,25); //agregando los items choColorFondo.add("ColordeFondo"); choColorFondo.add("Fondo Gris"); choColorFondo.add("Fondo Azul"); choColorFondo.add("Fondo Rojo"); choColorFondo.add("Fondo Naranja"); //agrega a lalista de choice que tendran accin //choColorFondo.addItemListener(this); //agrega como componente del applet add(choColorFondo); //creando el botn y agregando el botn btnRestablecer = new Button("restabecer"); btnRestablecer.setBounds(170,10,80,25); add(btnRestablecer); } public boolean action(Event e, Object o) { //programando la accin del choice int color = choColorFondo.getSelectedIndex(); switch(color) { case 1: setBackground(Color.lightGray); break; case 2: setBackground(Color.blue); break; case 3: setBackground(Color.red); break; case 4: setBackground(Color.orange); break; } //mostrando el item seleccionado en la linea de estado showStatus(choColorFondo.getSelectedItem()); if(e.target==btnRestablecer) { setBackground(Color.white); //vuelve la lnea a su estado original showStatus("Empezando el programa ..."); //enfoca al primer item del objeto choice choColorFondo.select(0); } return true; } }

EJEMPLO 03:

Pg. 80

Asignatura: Tcnicas de Programacin

import java.awt.*; import java.applet.*; public class Ejemplo6 extends Applet { Label lblR = new Label("R"); Label lblG =new Label ("G"); Label lblB = new Label ("B"); Choice choR= new Choice(); Choice choG= new Choice(); Choice choB=new Choice(); Button btnCombinar= new Button("Combinar"); TextField txtColor= new TextField(20); public void init() { setLayout(null); resize(400,200); setBackground(Color.lightGray); lblR.setBounds(10,10,50,20); add(lblR); lblG.setBounds(10,40,50,20); add(lblG); lblB.setBounds(10,70,50,20); add(lblB); //agregando los items al choice int x; for(x=0;x<=255;x++) { choR.add(""+x); choG.add(""+x); choB.add(""+x); }
Pg. 81

Asignatura: Tcnicas de Programacin //ubicando y agregando al applet el choice choR.setBounds(70,10,50,20); add(choR); choG.setBounds(70,40,50,20); add(choG); choB.setBounds(70,70,50,20); add(choB); //ubicando y agregando el botn de comando btnCombinar.setBounds(10,100,100,20); add(btnCombinar); //ubicando y agregando el botn de comando txtColor.setBounds(130,10,200,100); add(txtColor); } public boolean action(Event e, Object o) { //programando la accin del botn if(e.target==btnCombinar) { int r=choR.getSelectedIndex(); int g=choG.getSelectedIndex(); int b=choB.getSelectedIndex(); //estableciendo el color de fondo personalizado txtColor.setBackground(new Color(r,g,b)); } return true; } } 6.3 Contenedores y Layouts CONTENEDORES La clase Container es una clase abstracta derivada de Component, que representa a cualquier componente que pueda contener otros componentes. Se trata, en esencia, de aadir a la clase Component la funcionalidad de adicin, sustraccin, recuperacin, control y organizacin de otros Componentes. El AWT proporciona varias clases de Contenedores:

Panel
o Applet ScrollPane o Window o Dialog FileDialog o Frame

Pg. 82

Asignatura: Tcnicas de Programacin Aunque los que se pueden considerar como verdaderos Contenedores con Window, Frame, Dialog y Panel, porque los dems son subtipos con algunas caractersticas determinadas y solamente tiles en circunstancias muy concretas. Window Es una superficie de pantalla de alto nivel (una ventana). Una instancia de la clase Window no puede estar enlazada o embebida en otro Contenedor. El controlador de posicionamiento de Componentes por defecto, sobre un objeto Window, es el BorderLayout. Una instancia de esta clase no tiene ni ttulo ni borde, as que es un poco difcil de justificar su uso para la construccin directa de un interfaz grfico, porque es mucho ms sencillo utilizar objetos de tipo Frame o Dialog. Dispone de varios mtodos para alterar el tamao y ttulo de la ventana, o los cursores y barrar de mens. Frame y Dialog Frame es una superficie de pantalla de alto nivel (una ventana) con borde y ttulo. Una instancia de la clase Frame puede tener una barra de men. Una instancia de esta clase es mucho ms aparente y ms semejante a lo que se entiende por ventana. La clase Window de AWT permite crear ventanas independientes del navegador que contiene al applet. Frame es mas potente que Dialog El LayoutManager por defectserio o para Frame es BorderLayout Los Dialog son ventanas emergentes pensadas para mensajes no permanentes, como ADVERTENCIA, peticion de informacion especifica, etc..., que u na vez presentados al usuario pueden desaparecer (p.ej.: Se va a proceder a la instalacion de HyperQuake V. Confirmar?) Se puede forzar a que sean no redimensionables o modales Un Dialog modal es aquel que impide usar otra ventana hasta que no se lleve a cabo la accion de la presente ventana (p.ej.: Es necesario que introduzca la clave de acceso para continuar la ejecucion) A su vez existen dos clases de Dialog: o Dialog (a secas!) o FileDialog: Presenta los ficheros del directorio, abrir, cancelar, etc.. Debido a las restricciones de los applets, tiene muchas mas funcionalidades si se emplea en una aplicacion Java // Ejemplo de utilizacion de Frame Frame ventanaFrame = new Frame("Mi ventana FRAME"); ventanaFrame.setLayout(new FlowLayout()); //por defecto es BorderLayout ventanaFrame.add(new Button("Opcion 1")); ventanaFrame.add(new Button("Opcion 2")); ventanaFrame.add(new Button("Opcion 3")); ventanaFrame.resize(100,150); //define el tamao de la ventana Point dim = location(); //devuelve la posicion de este componente, como la esquina sup-izda //medida respecto al componente padre ventanaFrame.move(dim.x + 50, dim.y + 50); ventanaFrame.show(); //cuando se crea la ventana, es invisible. Para ocultarla, hide() // Ejemplo de utilizacion de Dialog // Ejemplo de utilizacion de FileDialog
Pg. 83

Asignatura: Tcnicas de Programacin Panel La clase Panel es un Contenedor genrico de Componentes. Una instancia de la clase Panel, simplemente proporciona un Contenedor al que ir aadiendo Componentes.

import java.awt.*; import java.awt.event.*; public class java1315 { public static void main( String args[] ) { IHM ihm = new IHM(); } } class IHM { public IHM() { // Se construyen tres Paneles con fondos de color diferente // y sin contener ningun elemento activo Panel panelIzqdo = new Panel(); panelIzqdo.setBackground( Color.yellow ); panelIzqdo.add( new TextField( "Panel Izquierdo -> amarillo" ) ); Panel panelCentral = new Panel(); panelCentral.setBackground( Color.red ); panelCentral.add( new Label( "Panel Central -> rojo" ) ); Panel panelDrcho = new Panel(); panelDrcho.setBackground( Color.blue ); panelDrcho.add( new Button( "Panel Derecho -> azul" ) ); // Se instancia un objeto Frame utilizando un FlowLayout y // se colocan los tres objetos Panel sobre el Frame Frame miFrame = new Frame( "Tutorial de Java, AWT" ); miFrame.setLayout( new FlowLayout() ); miFrame.add( panelIzqdo ); miFrame.add( panelCentral ); miFrame.add( panelDrcho ); miFrame.setSize( 500,200 ); miFrame.setVisible( true ); miFrame.addWindowListener( new Conclusion() );
Pg. 84

Asignatura: Tcnicas de Programacin } } class Conclusion extends WindowAdapter { public void windowClosing( WindowEvent evt ) { // Concluye la aplicacion cuando el usuario cierra la ventana System.exit( 0 ); } }

LAYOUTSLos layout managers o manejadores de composicin, en traduccin literal, ayudan a adaptar los diversos Componentes que se desean incorporar a un Panel, es decir, especifican la apariencia que tendrn los Componentes a la hora de colocarlos sobre un Contenedor, controlando tamao y posicin (layout) automticamente. Java dispone de varios, en la actual versin, tal como se muestra en la imagen:

Tema N 7: SWING: Borders, Etiquetas, Botones, Grupos y botones

7.1 SWING Cuando se empieza a utilizar Swing, se observa que JavaSoft ha dado un gran paso adelante respecto al AWT. Ahora los Componentes del interfaz grfico son Beans y utilizan el nuevo modelo de Delegacin de Eventos de Java. Swing proporciona un conjunto completo de Componentes, todos ellos lightweight, es decir, ya no se usan componentes "peer" dependientes del sistema operativo, y adems, Swing est totalmente escrito en Java. Todo ello redunda en una mayor funcionalidad en manos del programador, y en la posibilidad de mejorar en gran medida la cosmtica de los interfaces grficos de usuario 7.2 Border La clase JComponent tambin contiene un mtodo llamado setBorder(), que permite colocar diferentes bordes a un componente visible. El ejemplo java1402.java genera los diferentes tipos de borde que estn disponibles y que se reproducen en la figura siguiente.

Pg. 85

Asignatura: Tcnicas de Programacin

7.3 Etiquetas Las etiquetas, junto con los botones y las cajas de seleccin, son uno de los componentes ms bsicos de todo interfaz de usuario, independientemente de que se hayan visto otros hasta ahora, o el lector difiera de esta clasificacin. Y el ms simple de todos ellos es la etiqueta, que se limita a presentar textos en pantalla. Swing introduce la clase JLabel para presentar estos textos en pantalla; sin embargo, es mucho ms verstil que la clase correspondiente del AWT. En Swing, al derivar de JComponent, la clase JLabel implementa todas las caractersticas inherentes a los componentes Swing, como pueden ser los aceleradores de teclado, bordes, y dems.

7.4 Botones Swing aade varios tipos de botones y cambia la componentes: todos los botones, cajas de seleccin, opcin de un men deben derivar de AbstractButton. los diferentes tipos de botones que estn disponibles Swing. organizacin de la seleccin de botones de seleccin y cualquier El ejemplo java1404.java, muestra ante el programador a travs de

Pg. 86

Asignatura: Tcnicas de Programacin

package ejemplo1; import java.awt.*;//libreria AWT import java.awt.event.*;//eventos de programacin import java.applet.*;//clase awt import javax.swing.JButton; import java.awt.Rectangle; import javax.swing.JMenuBar; import javax.swing.ImageIcon; import javax.swing.*;//libreria SWING AGREGAMOS /** * <p>Title: </p> * * <p>Description: </p> * * <p>Copyright: Copyright (c) 2009</p> * * <p>Company: </p> * * @author not attributable * @version 1.0 */

public class Applet1 extends Applet { boolean isStandalone = false; BorderLayout borderLayout1 = new BorderLayout(); JButton btnRojo = new JButton(); JButton btnAzul = new JButton();
Pg. 87

Asignatura: Tcnicas de Programacin JButton btnBlanco = new JButton(); //CREANDO LOSICONOS DE LOS BOTONES private ImageIcon iconRojo; private ImageIcon iconAzul; private ImageIcon iconBlanco; //Get a parameter value public String getParameter(String key, String def) { return isStandalone ? System.getProperty(key, def) : (getParameter(key) != null ? getParameter(key) : def); } //Construct the applet public Applet1() { } //Initialize the applet public void init() { try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { this.setLayout(null); //CREANDO LOS ICONOS iconRojo= new ImageIcon(getClass().getResource("cuadrorojo.gif")); iconAzul=new ImageIcon(getClass().getResource("cuadroazul.gif")); iconBlanco=new ImageIcon(getClass().getResource("Help.gif")); btnRojo.setBounds(new Rectangle(81, 32, 139, 41)); btnRojo.setIcon(iconRojo); btnRojo.setText("Rojo"); btnRojo.addActionListener(new Applet1_btnRojo_actionAdapter(this)); btnAzul.setBounds(new Rectangle(84, 93, 137, 43)); btnAzul.setIcon(iconAzul); btnAzul.setText("Azul"); btnAzul.addActionListener(new Applet1_btnAzul_actionAdapter(this)); btnBlanco.setBounds(new Rectangle(85, 150, 134, 42)); btnBlanco.setToolTipText("Fondo Blanco"); btnBlanco.setIcon(iconBlanco); btnBlanco.addActionListener(new Applet1_btnBlanco_actionAdapter(this)); this.add(btnRojo); this.add(btnAzul); this.add(btnBlanco); } //Get Applet information public String getAppletInfo() { return "Applet Information"; } //Get parameter info
Pg. 88

Asignatura: Tcnicas de Programacin public String[][] getParameterInfo() { return null; } public void btnRojo_actionPerformed(ActionEvent e) { this.setBackground(Color.red); } public void btnAzul_actionPerformed(ActionEvent e) { this.setBackground(Color.blue); } public void btnBlanco_actionPerformed(ActionEvent e) { this.setBackground(Color.white); } }

class Applet1_btnBlanco_actionAdapter implements ActionListener { private Applet1 adaptee; Applet1_btnBlanco_actionAdapter(Applet1 adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.btnBlanco_actionPerformed(e); } }

class Applet1_btnAzul_actionAdapter implements ActionListener { private Applet1 adaptee; Applet1_btnAzul_actionAdapter(Applet1 adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.btnAzul_actionPerformed(e); } }

class Applet1_btnRojo_actionAdapter implements ActionListener { private Applet1 adaptee; Applet1_btnRojo_actionAdapter(Applet1 adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.btnRojo_actionPerformed(e); } }

7.5 Grupos de Botones


Pg. 89

Asignatura: Tcnicas de Programacin Si se quieren botones de seleccin nica, los conocidos como botones radio, que tienen la particularidad de que solamente puede haber uno seleccionado, hay que crearse un grupo de botones, aadiendo botones a ese grupo uno a uno. Pero, Swing permite que cualquier AbstractButton pueda ser aadido a un ButtonGroup.La figura siguiente muestra los grupos de botones con la apariencia correspondiente a Swing, segn se obtiene la ventana tras la ejecucin del ejemplo java1406.java, que crea varios paneles de botones.

Tema N 8: SWING: Listas y cajas combinadas, texto, tooltips, Iconos

8.1 Listas y cajas combinadas Las lista y cajas "combo" en Swing funcionan del mismo modo que lo hacan en el AWT, aunque tienen incrementada la funcionalidad a travs de algunas funciones de conveniencia que se han incorporado. Por ejemplo, JList tiene un constructor al que se puede pasar un array de objetos String para que los presente. El ejemplo java1407.java, muestra el uso bsico de estos dos componentes. import java.awt.*; import java.awt.event.*; import com.sun.java.swing.*; public class java1407 extends JPanel { public java1407() { setLayout( new GridLayout( 2,1 ) ); JList lista = new JList( java1406.ids ); add( new JScrollPane( lista ) );
Pg. 90

Asignatura: Tcnicas de Programacin

JComboBox combo = new JComboBox(); for( int i=0; i < 100; i++ ) combo.addItem( Integer.toString( i ) ); add( combo ); } public static void main( String args[] ) { java1407 lista = new java1407(); JFrame ventana = new JFrame(); ventana.getContentPane().add( lista,BorderLayout.CENTER ); ventana.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent evt ) { System.exit( 0 ); } } ); ventana.setSize( 200,200 ); ventana.setTitle( "Tutorial de Java, Swing" ); ventana.setVisible( true ); } } La imagen siguiente es el resultado que se obtiene en pantalla tras la ejecucin del ejemplo, y despus de haber seleccionado uno de los elementos en la caja combo y abrirla para proseguir la seleccin de otra de las opciones o elementos que se permite elegir. 8.2 Texto: JTextArea, JTextField Swing tambin introduce nuevos componentes dentro de la manipulacin de textos. As la clase JTextArea acta como sustituto de la clase TextArea del AWT, la clase JTextField sustituye TextField del AWT y se incorporan las clases JPasswordField que viene a ser equivalente al uso de JTextField junto con el mtodo setEchoChar(), y la clase JTextPane que permite que se presente el texto con diferentes fuentes de caracteres, colores, tamaos, etc.

Pg. 91

Asignatura: Tcnicas de Programacin 8.3 Tool Tips Casi todas las clases que se usan para crear los interfaces de usuario se derivan de JComponent. Esta clase contiene un mtodo llamado setToolTipText( String ). As que se puede indicar un texto de informacin virtualmente en cualquier lugar y lo nico que se necesita es invocar a este mtodo, indicando el texto correspondiente al mensaje. Por ejemplo, el programa anterior se incorporaron dos mensajes de informacin de este tipo, uno a cada uno de los botones del ejemplo: ... boton1.addActionListener( al ); boton1.setToolTipText( "Soy el JBoton 1" ); add( boton1 ); boton2.addActionListener( al ); boton2.setToolTipText( "Soy el JBoton 2" ); add( boton2 ); texto.setToolTipText( "Soy el JCampoDeTexto" ); add( texto ); ... 8.4 Iconos Se puede utilizar un objeto Icon dentro de un objeto JLabel, o cualquier objeto que derive de AbstractButton; incluyendo JButton, JCheckBox, JRadioButton y los diferentes tipos de JMenuItem. El uso de iconos con etiquetas Swing es muy simple, tal como ya se mostraba en el ejemplo java1401.java y ahora en el ejemplo java1410.java, en donde se exploran todas las formas en las que se pueden emplear los iconos con los botones y sus descendientes. La figura reproduce la captura de la ejecucin de este ltimo programa, cuando el ratn llevaba varios segundos sobre la imagen correspondiente al botn, con lo cual el mensaje incorporado como ToolTip al botn que contiene el icono, aparece en pantalla.

Se puede utilizar cualquier fichero gif. Para abrir ese fichero y convertirlo en imagen, simplemente se crea un objeto ImageIcon indicndole el nombre del fichero, y ya se puede utilizar en el cdigo el objeto Icon resultante.

Pg. 92

Asignatura: Tcnicas de Programacin

Tema N 9: SWING: Menus

9.1 Menus MEN 1. primero se tiene que un proyecto 2. luego una aplicacin (cuando se crea la aplicacin se crea una clase principal 1 un Jframe1) 3. A continuacin se crea un Frame1, que por defecto se incluye en el mismo proyecto y en el mismo paquete (package) Ejemplo: En el ejemplo ya tenemos la aplicacin principal Frame1, Frame2

4. Ahora vamos crear el men para ello se debe tener en cuenta los siguiente tab o pestaa

Source : para que se muestra el codigo Design : para que se muestre el diseo cuando seleccionamos a Frame1 4.1 Ubicarse en en la Ficha diseo del Frame1
Pg. 93

Asignatura: Tcnicas de Programacin Para ello en el panel (formulario) 4.2 En el panel de estructura> this > content Pane >en propiedades en Layout seleccionar null 4.3 Ahora en el controles o clases en java seleccionar Swing containers

Y hacer clic en JMenuBAr y arrastar hacia el panel (formulario) Y luego en en el tab MENU

Disear el men La barra del diseador del men contiene lo siguiente:

Como desea

Pg. 94

Asignatura: Tcnicas de Programacin

Y para utilizar el evento se tiene que seleccionar el sub men

Al costado en propiedades existe el tab o pestaa Event

Se activa los eventos que deseo Ahora seleccionar el evento inicial ActionPerform - para poder activar con un clic Para ello de be hacer doble clic

Entonces entraremos al codigo fuente por defecto es decir

Pg. 95

Asignatura: Tcnicas de Programacin Para LLAMAR AL otro FRame2 Debemos crear un objeto del FRAme2 como se ve en la figura y luego mostrar con SetVisible. Frame2 f2= new Frame2(); f2.setVisible(true); para salir es simplemente

System.exit(0); Ojo En el frame2 Se debe tener en cuenta que se debe incrementar los cdigos del tamao y del titulo que no se incrementa En el grafico se incremento el tamao y el titulo en el mtodo inicio del Frame2 Como se ve, en caso no se incrementa, nos mostrara el frame2 minimizado private void jbInit() throws Exception { getContentPane().setLayout(null); this.setSize(400,400); this.setTitle("Fomulario uno"); }

Al final ejecutamos y tendremos

Pg. 96

Asignatura: Tcnicas de Programacin

Tema N 10: JDBC

10.1 JDBC JDBC (Java DataBase Connectivity) es un API de Java que permite al programador ejecutar instrucciones en lenguaje estndar de acceso a Bases de Datos, SQL (Structured Query Language, lenguaje estructurado de consultas), que es un lenguaje de muy alto nivel que permite crear, examinar, manipular y gestionar Bases de Datos relacionales. Para que una aplicacin pueda hacer operaciones en una Base de Datos, ha de tener una conexin con ella, que se establece a travs de un driver, que convierte el lenguaje de alto nivel a sentencias de Base de Datos. Es decir, las tres acciones principales que realizar JDBC son las de establecer la conexin a una base de datos, ya sea remota o no; enviar sentencias SQL a esa base de datos y, en tercer lugar, procesar los resultados obtenidos de la base de datos. 10.2 Base de Datos Una Base de Datos es una serie de tablas que contienen informacin ordenada en alguna estructura que facilita el acceso a esas tablas, ordenarlas y seleccionar filas de las tablas segn criterios especficos. Las bases de datos generalmente tienen ndices asociados a alguna de sus columnas, de forma que el acceso sea lo ms rpido posible. Las Bases de Datos son, sin lugar a dudas, las estructuras ms utilizadas en ordenadores; ya que son el corazn de sistemas tan complejos como el censo de una nacin, la nmina de empleados de una empresa, el sistema de facturacin de una multinacional, o el medio por el que nos expiden el billete para las prximas vacaciones. En el caso, por ejemplo, del registro de trabajadores de una empresa, se puede imaginar una tabla con los nombres de los empleados y direcciones, y sueldos, retenciones y beneficios. Para organizar esta informacin, se puede empezar con una tabla que contenga los nombres de los empleados, su direccin y su nmero de telfono. Tambin se podra incluir la informacin relativa a su sueldo, categora, ltima subida de salario, etc.
Pg. 97

Asignatura: Tcnicas de Programacin Desde que los PC se han convertido en una herramienta presente en la mayor parte de las oficinas, se han desarrollado un gran nmero de bases de datos para ejecutarse en ese tipo de plataformas; desde bases de datos muy elementales como Microsoft Works, hasta otras ya bastante sofisticadas como Approach, dBase, Paradox, Access y Foxbase. Otra categora ya ms seria de bases de datos para PC son aquellas que usan la plataforma PC como cliente para acceder a un servidor. Estas bases de datos son IBM DB/2, Microsoft SQL Server, Oracle, Sybase, SQLBase, Informix, XDB y Postgres. Todas estas bases de datos soportan varios dialectos similares de SQL, y todas parecen, a primera vista, intercambiables. La razn de que no sean intercambiables, por supuesto, es que cada una est diseada con unas caractersticas de rendimiento distintas, con un interfaz de usuario y programacin diferente. Aunque todas ellas soportan SQL y la programacin es similar, cada base de datos tiene su propia forma de recibir las consultas SQL y su propio modo de devolver los resultados. Aqu es donde aparece el siguiente nivel de estandarizacin, de la mano de ODBC (Open DataBase Conectivity). 10.3 Conectividad JDBC Para la gente del mundo Windows, JDBC es para Java lo que ODBC es para Windows. Windows en general no sabe nada acerca de las bases de datos, pero define el estndar ODBC consistente en un conjunto de primitivas que cualquier driver o fuente ODBC debe ser capaz de entender y manipular. Los programadores que a su vez deseen escribir programas para manejar bases de datos genricas en Windows utilizan las llamadas ODBC. Con JDBC ocurre exactamente lo mismo: JDBC es una especificacin de un conjunto de clases y mtodos de operacin que permiten a cualquier programa Java acceder a sistemas de bases de datos de forma homognea. Lgicamente, al igual que ODBC, la aplicacin de Java debe tener acceso a un driver JDBC adecuado. Este driver es el que implementa la funcionalidad de todas las clases de acceso a datos y proporciona la comunicacin entre el API JDBC y la base de datos real. La necesidad de JDBC, a pesar de la existencia de ODBC, viene dada porque ODBC es un interfaz escrito en lenguaje C, que al no ser un lenguaje portable, hara que las aplicaciones Java tambin perdiesen la portabilidad. Y adems, ODBC tiene el inconveniente de que se ha de instalar manualmente en cada mquina; al contrario que los drivers JDBC, que al estar escritos en Java son automticamente instalables, portables y seguros.

Pg. 98

Asignatura: Tcnicas de Programacin Toda la conectividad de bases de datos de Java se basa en sentencias SQL, por lo que se hace imprescindible un conocimiento adecuado de SQL para realizar cualquier clase de operacin de bases de datos. Aunque, afortunadamente, casi todos los entornos de desarrollo Java ofrecen componentes visuales que proporcionan una funcionalidad suficientemente potente sin necesidad de que sea necesario utilizar SQL, aunque para usar directamente el JDK se haga imprescindible. La especificacin JDBC requiere que cualquier driver JDBC sea compatible con al menos el nivel de entrada de ANSI SQL 92 ( ANSI SQL 92 Entry Level). 10.4 Modelo de dos capas Este modelo se basa en que la conexin entre la aplicacin Java o el applet que se ejecuta en el navegador, se conectan directamente a la base de datos.

Esto significa que el driver JDBC especfico para conectarse con la base de datos, debe residir en el sistema local. La base de datos puede estar en cualquier otra mquina y se accede a ella mediante la red. Esta es la configuracin de tpica Cliente/Servidor: el programa cliente enva instrucciones SQL a la base de datos, sta las procesa y enva los resultados de vuelta a la aplicacin 10.5 Modelo de tres capas En este modelo de acceso a las bases de datos, las instrucciones son enviadas a una capa intermedia entre Cliente y Servidor, que es la que se encarga de enviar las sentencias SQL a la base de datos y recoger el resultado desde la base de datos. En este caso el usuario no tiene contacto directo, ni a travs de la red, con la mquina donde reside la base de datos.

Pg. 99

Asignatura: Tcnicas de Programacin

Este modelo presenta la ventaja de que el nivel intermedio mantiene en todo momento el control del tipo de operaciones que se realizan contra la base de datos, y adems, est la ventaja adicional de que los drivers JDBC no tienen que residir en la mquina cliente, lo cual libera al usuario de la instalacin de cualquier tipo de driver. 11.6 Puente JDBC-ODBC La primera categora de drivers es la utilizada por Sun inicialmente para popularizar JDBC y consiste en aprovechar todo lo existente, estableciendo un puente entre JDBC y ODBC. Este driver convierte todas las llamadas JDBC a llamadas ODBC y realiza la conversin correspondiente de los resultados.

La ventaja de este driver, que se proporciona con el JDK, es que Java dispone de acceso inmediato a todas las fuentes posibles de bases de datos y no hay que hacer ninguna configuracin adicional aparte de la ya existente. No obstante, tiene dos desventajas muy importantes; por un lado, la mayora de los drivers ODBC a su vez convierten sus llamadas a llamadas a una librera nativa del fabricante DBMS, con lo cual la lentitud del driver JDBCODBC puede ser exasperante, al llevar dos capas adicionales que no aaden funcionalidad alguna; y por otra parte, el puente JDBC-ODBC requiere una instalacin ODBC ya existente y configurada.

Pg. 100

Asignatura: Tcnicas de Programacin

REFERENCIAS BIBLIOGRFICAS

Juan Carlos Lpez Rodrguez, Tcnicas de Programacin, CENGAGE LEARNING ARG, 2000. Santos, Manuel / Patio, Ismael / Carrasco, RalJos Gallego, Fundamentos de Programacin, Alfaomega, 2006 UBICACIN: Biblioteca UCCI: 005 S21 2006 Agustn Froufe Quinta, Java 2: Manual de usuario y tutorial, Alfaomega Grupo Editor (Mxico)Ra-Ma, 2008 Romn Leobardo , Metodologa de la programacin orientada a objetos, Alfaomega, 2006 UBICACIN: Biblioteca UCCI: Cod. 005 L88 2006 Harvey M. Deitel, Cmo programar en C/C++ y Java, Pearson Educacin, 2004 UBICACIN: Biblioteca UCCI: 005.1 D46 2004 Silvia Campos, Aprenda ya: programacin orientada a objetos, Universidad Ricardo Palma, 2006 UBICACIN: Biblioteca UCCI: Cod. 005 C24 2006 Alfonso Vidal Romero Elizondo, Como programar en Java, Pearson/Educaci n, 2004 Arnold, Ken / Gosling, James / Holmes David, El Lenguaje de Programacin Java, Pearson Educacin, 2001 Luis JOYANES Aguilar, Fundamentos de programacin, algoritmos, estructuras de datos y objetos, Mc Graw-Hill. 2003 GRIFFITH, Steven W. / CHAN, Mark C. / ISAI, Anthony F, Tips para programar con Java: La gua ms completa para programadores de Java y Visual J++, Editorial Mc Graw-Hill. 2003 ALCALDE Lancharro, Eduardo / Garca Lpez, Miguel, Metodologa de la programacin, Editorial: Mc Graw Hill. 2000 Descargar de JAVA PLATAFORM JDK; 2011 (acceso 14/02/20011). Disponible en: http://www.oracle.com/technetwork/java/javase/downloads/index.html Descarga de IDE NETBEANS; 2011 - (acceso: 14/02/20011). Disponible en: http://netbeans.org/downloads/index.html Ejercicios en Java Disponible en: http://foro.elhacker.net/java/ejercicios_java_teoriaejemplos-t34891.0.html. Manual de Java: http://www.tecnun.es/asignaturas/Informat1/ayudainf/aprendainf/Java/Java2.pdf,

Pg. 101

Vous aimerez peut-être aussi