Está en la página 1de 231

0

SUBSECRETARA DE EDUCACIN SUPERIOR


DIRECCIN GENERAL DE EDUCACIN SUPERIOR
TECNOLGICA

INSTITUTO TECNOLGICO
DE MORELIA

INSTITUTO TECNOLGICO DE MORELIA


DIVISIN DE ESTUDIOS PROFESIONALES
DEPARTAMENTO DE SISTEMAS
COMPUTACIONALES

LIBROS DE TEXTO O PROTOTIPOS


DIDCTICO

PROGRAMACIN II

QUE PARA OBTENER EL TTULO DE:


INGENIERO EN SISTEMAS COMPUTACIONALES

PRESENTA:
SAL CHVEZ VELZQUEZ

ASESOR:
RAYMUNDO GUZMN MARINES

MORELIA, MICHOACN

20/06/09

Agradecimientos

Agradezco todo el apoyo de mi Asesor Raymundo Guzmn Marines sin el cual


no habra sido posible la culminacin de este trabajo. Gracias por todo su
tiempo, su comprensin, sus consejos y su trabajo
A mis padres, por todo su apoyo, sin l no podra haber llegado a este punto
Y a quienes debo lo bueno que haya en mi.
A Vernica, por su ayuda, por el soporte que siempre me ha brindado, siempre
puedo contar con ella. Gracias por todo!
A mi abuelita Angelina, quien siempre me ha servido como ejemplo de trabajo y
esfuerzo. Una persona admirable, si todos tuviramos la mitad de su energa,
entusiasmo y amor por hacer las cosas bien seguramente el mundo estara
lleno de gente exitosa.
Al Tecnolgico de Morelia y a todos mis profesores, realmente me siento
orgulloso de ser egresado de esta institucin, gracias a ellos aprend algo que
considero muy importante, siempre estar aprendiendo cosas nuevas y por uno
mismo, siempre dar ms de lo necesario, aunque en su momento no
agradeca precisamente las noches de desvelo trabajando para esos
proyectos semestrales ahora que formo parte de productiva de la sociedad
agradezco mucho todo lo que aprend tanto en las aulas, como en las
incontables horas de trabajo fuera de la institucin.

Dedico este trabajo a mi familia.

INTRODUCCIN
En el siguiente material se estudian los temas de la asignatura de
Programacin II del plan 2004 de la licenciatura en Informtica.
Todos los temas se desarrollan utilizando el lenguaje de programacin Java;
pero, debido a la temtica que se debe contemplar para respetar el programa,
algunos de los temas deben explicarse con otras herramientas como Visual
Basic. Sin embargo se hace una pequea comparacin entre lo que pide el
programa y el equivalente en lenguaje java.
El material comienza desde lo ms bsico del lenguaje: comentarios,
declaraciones, sintaxis, etc. Y avanza hasta el punto de almacenamiento en
bases de datos.
El flujo de trabajo es el siguiente: se comienza a trabajar en modo consola, con
algoritmos sencillos y almacenamiento en memoria, a partir del final de la
primera unidad se comienzan a analizar objetos grficos y en la segunda
unidad se trabaja absolutamente en ambiente grfico, an utilizando como
modo de almacenamiento la memoria de la PC. Despus, a partir de la tercera
unidad, el modo de almacenamiento cambia a Archivos y se pide al
estudiante, programe aplicaciones grficas almacenando y extrayendo
informacin de archivos de texto plano. Finalmente, el modo de
almacenamiento cambia a Bases de Datos y se analizan ejemplos sencillos
con bases de datos muy simples. Al final del material y a modo de informacin
extra se analiza cmo crear tus propios controles ActiveX con Visual Basic.
Los ejercicios propuestos para cada unidad pretenden reforzar los temas vistos
en cada una de las mismas y estn diseados de tal manera que el alumno
siga la lnea de aprendizaje descrita en el prrafo anterior procurando siempre
que inculcar en el alumno la necesidad de investigar ms y profundizar ms en
los temas que se analizan. Los ejemplos siguen la misma lnea de aprendizaje,
todos los ejemplos estn relacionados con una aplicacin y situacin inicial a la
cual se le va agregando funcionalidad de acuerdo al avance en el temario de la
materia.
Finalmente, se incluye un glosario de trminos que ayude al estudiante a
disipar dudas sobre tecnicismos que desconozca y se provee de una completa
bibliografa, describiendo en las ligas de internet el tipo de material que se
puede localizar en cada una. Cabe mencionar que dicha bibliografa se revis
recientemente para confirmar la existencia actual de las mismas.

ITM INDICE GENERAL


INDICE
INTRODUCCION

UNIDAD I. FUNDAMENTOS DEL LENGUAJE


1.1 Programacin orientada a eventos. . .
1.1.1 Objetos. . . . . . . .
1.1.2 Eventos. . . . . . . .
1.1.3 Mtodos. . . . . . . .
1.1.4 Propiedades. . . . . . .
1.2 Entorno integrado de desarrollo. . . .
1.3 Ventanas (proyecto, propiedades, ayuda).
1.4 Tipos de proyectos. . . . . . .
1.4.1 Configuracin.
. . . .
23
1.5 Comentarios. . . . . . . . .
1.6 Constantes.
. . . . . . . .
1.7 Tipos de datos. . . . . . . . .
1.8 Variables. . . . . . . . . .
1.9 Operadores.
. . . . . . . .
1.10 Sentencias. . . . . . . . .
1.11 Matrices. . . . . . . . . .
1.12 Procedimientos y funciones.. . . .
1.13 Estructuras de control. . . . . .
1.14 Controles bsicos y sus propiedades.
Ejercicios Propuestos.
. . . . . .
Proyectos integrales. . . . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

2
2
6
10
13
15
18
23
. .

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

24
25
26
32
36
45
46
49
55
64
72
75

.
.

77
. .

.
.
.
.
.
.

93
94
97
101
105
107

.
.
.
.
.

111
115
122
130
133

UNIDAD 2. CONTROLES, EVENTOS, MTODOS Y COMPONENTES


2.1 Controles estndar. . . . . . . . . . . . . .
2.2 Eventos del formulario.
. . . . . . . . . . .
87
2.3 Cajas de dilogo.
. . . . . . . . . . . . .
2.3.1 Modales y no modales.
. . . . . . . . .
2.3.2 Predefinidas. . . . . . . . . . . . . .
2.4 Componentes estndar. . . . . . . . . . . . .
Ejercicios Propuestos. . . . . . . . . . . . . . .
Proyecto integral . . . . . . . . . . . . . . .
UNIDAD 3. SISTEMAS DE ARCHIVOS
3.1 Acceso secuencial.
. . . . . .
3.2 Acceso directo. . . . . . . . .
3.3 Manejo de archivos. . . . . . .
3.4 Controlar errores en tiempo de ejecucin.
Ejercicios Propuestos. . . . . . . .

Instituto Tecnolgico de Morelia.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

Pgina i

ITM INDICE GENERAL


Proyecto integral

135

UNIDAD 4. ACCESO A DATOS


4.1 Introduccin. . . . . . .
4.2 Control de datos ADO. . . . .
4.3 Objetos ADO. . . . . . .
4.4 Herramientas de acceso a datos.
4.4.1 ADO.NET
. .
4.4.2 JDBC . . . .
4.4.3 ODBC . . . .
4.4.2 DAO . . . .
Ejercicios Propuestos.
. . . .
Proyecto integral . . . . . .

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

138
154
156
164
165
165
165
166
172
173

UNIDAD 5. COMPONENTES Y CONTROLES DEFINIDOS POR EL USUARIO


5.1 Modelo de componentes.
. . . . . . . . . . . . 175
5.2 Crear un componente Active X. . . . . . . . . . . . 175
5.3 Crear un Control Active X. . . . . . . . . . . . . 177
Ejercicios Propuestos.
. . . . . . . . . . . . . . 187
Proyecto integral . . . . . . . . . . . . . . . . 187
Apndice 1 Instalacin de Net Beans. . . .

187

Apndice 2 Introduccin a MySQL. . .


Conclusiones.
Bibliografa. .

191

. .

202

204

. .

209

Glosario de Trminos.

Instituto Tecnolgico de Morelia.

Pgina ii

ITM INDICE GENERAL


INDICE DE FIGURAS

UNIDAD I. FUNDAMENTOS DEL LENGUAJE


1.1 Ejemplo de cmo identificar Objetos.
.
.
1.2 Ejemplo de cmo identificar Objetos, Misma Clase.
1.3 Ejemplo utilizando JOptionPane.
. . . . .
1.4 Ejemplo usando ventanas para entrada de datos. .
1.5 Objeto en NetBeans. . . . . . . . . .
1.6 Botn con texto editado. . . . . . . . .
1.7 Pantalla principal de NetBeans 6.0. . . . . .
1.8 Ventana de Proyectos.. . . . . . . . .
1.9 Ventana elegir nombre y ubicacin. . . . . .
1.10 Hola Mundo en Java. . . . . . . . .
1.11 Ventana Propiedades.
. . . . . . .
1.12 Ventana Help. . . . . . . . . . .
1.13 Bsqueda en Ayuda. . . . . . . . .
1.14 Ventana Proyectos. . . . . . . . . .
1.15 Ejemplo de una etiqueta. . . . . . . .
1.16 Ejemplo de ScrollBar no a la vista. . . . .
1.17 Ejemplo de ScrollBar a la vista. . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

3
3
9
9
13
14
16
18
19
20
21
21
22
24
65
70
71

UNIDAD 2. CONTROLES, EVENTOS, MTODOS Y COMPONENTES


2.1 Ventana Nuevo Proyecto. . . . . . . . . . . .
2.2 Ventana de configuracin de proyecto.
. . . . . . .
2.3 rea de trabajo de NetBeans.
. . . . . . . . .
2.4 Aplicacin de escritorio vaca.
. . . . . . . . .
2.5 Paleta de controles. . . . . . . . . . . . . .
2.6 Programa en ejecucin con botones de ejemplo. . . . . .
2.7 Ventana Propiedades. . . . . . . . . . . . . .
2.8 Cambio de propiedades de un objeto. . . . . . . . .
2.9 Cambio de propiedad name.
. . . . . . . . . .
2.10 Programa en ejecucin con caja de texto.
. . . . .
2.11 Cambio de Propiedades de un objeto Textfield. . . . . .
2.12 Cambio de Propiedades de objetos CheckBox. . . . . .
2.13 Aplicacin con botones de opcin.
. . . . .
. .
2.14 Lista de eventos. . . . . . . . . . . . . . .
2.15 Ejemplo en ejecucin. . . . . . . . . . . . .
2.16 Programa en ejecucin.
. . . . . . . . . . .
2.17 Aplicacin en ejecucin. . . . . . . . . . . .
2.18 Aplicacin en ejecucin. . . . . . . . . . . .
2.19 Ventana New File crear caja de dilogo.
. . .. . .
2.20 Nuevo formulario para caja de dilogo vacio. . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

77
78
78
79
79
80
81
82
83
83
84
85
87
88
89
90
92
93
95
95

Instituto Tecnolgico de Morelia.

.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Pgina iii

ITM INDICE GENERAL


2.21
2.22
2.23
2.24
2.25
2.26
2.27

Aplicacin en ejecucin. . . . . . . . .
Cmo ver la lista de cuadros de dilogo predefinidos.
Error por no importar librera. . . . . . . .
Herramienta til para corregir errores sencillos. . .
Programa en ejecucin.
. . . . . . . .
Programa en ejecucin.
. . . . . . . .
Componentes Swing y AWT. . . . . . . .

UNIDAD 3. SISTEMAS DE ARCHIVOS


3.1 Programa en ejecucin. . . .
3.2 Programa en ejecucin. . . .
3.3 Ejemplo con RandomAccessFile.
3.4 Ejemplo usando JFileChooser. .
3.5 Selector de apertura. . . . .
3.6 Selector personalizado. . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

UNIDAD 4. ACCESO A DATOS


4.1 Ventana: elegir nombre de pgina y puerto. . . .
4.2 Ventana: configuracin de MySQL. . . . . . .
4.3 Iniciar ambos servidores. . . . . . . . . .
4.4 Pantalla principal del servidor Apache.
. . . .
4.5 Pantalla principal de phpMyAdmin. . . . . . .
4.6 Cmo acceder a la tabla de Usuarios?. . . . .
4.7 Consulta de la tabla user de MySQL. . . . . .
4.8 Datos a llenar para dar de alta otro usuario.
. .
144
4.9 Cmo agregar el driver para conectar?.
. .
145
4.10 Ventana: agregar driver JDBC. . . . . . . .
4.11 Opcin para conectar la base de datos. . . . .
4.12 Agregar los datos a la Base de datos.
. . . .
4.13 Conectar NetBeans con MySQL. . . . . . .
4.14 Ventana: Conexin establecida. . . . . . .
4.15 Ejemplo de bot que invoca una conexin.
. .
4.16 Opcin necesaria para crear una Base de Datos. .
4.17 Crear tablas de la base de datos. . . . . . .
4.18 Ingresar datos de la tabla. . . . . . . . .
4.19 Ingresar datos de cada campo de la tabla.
. .
152
4.20 Vista de las tablas de nuestra nueva base de datos.
4.21 Programa en ejecucin.
. . . . . . . .
4.22 Contenido de la base de datos.
. . . . . .

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

96
98
98
99
100
101
102

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

113
115
119
123
123
125

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

140
140
141
141
142
143
143
. .

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

145
146
146
147
147
149
150
151
151
. .

.
.
.

.
.
.

.
.
.

.
.
.

152
154
154

.
.
.
.
.

UNIDAD 5. COMPONENTES Y CONTROLES DEFINIDOS POR EL USUARIO


5.1 Tipos de proyectos en Visual Basic. . . . . . . . . . . 178
5.2 Propiedades del Proyecto. . . . . . . . . . . . . 179

Instituto Tecnolgico de Morelia.

Pgina iv

ITM INDICE GENERAL


5.3 Evento resize del control ActiveX. . . . . . .
5.4 Ventana para activar el asistente de configuracin. .
5.5 Ventana: Seleccionar miembros de la interfaz. . .
5.6 Ventana: Agregar miembros personalizados. . . .
5.7 Ventana crear miembros personalizados de la interfaz.
5.8 Ventana: establecer atributos de los miembros. . .
5.9 Utilizacin de nuestro control.. . . . . . . .
5.10 Objeto Active X. . . . . . . . . . . .

Instituto Tecnolgico de Morelia.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

180
180
181
181
182
182
184
186

Pgina v

Unidad 1. Fundamentos del


Lenguaje.
Conceptos bsicos.

ITM Unidad I Fundamentos del Lenguaje

1.1 Programacin Orientada A Eventos


1.1.1 Objetos
Un objeto es una entidad provista de un conjunto de propiedades o atributos
(datos) y de comportamiento o funcionalidad (mtodos). Corresponden a los
objetos reales del mundo que nos rodea, o a objetos internos del sistema (del
programa). Es una instancia de una clase.
Los objetos son entidades que combinan estado, comportamiento e identidad.
El estado est compuesto de datos, y el comportamiento por procedimientos o
mtodos. La identidad es una propiedad de un objeto que lo diferencia del
resto. La programacin orientada a objetos expresa un programa como un
conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto
permite hacer los programas y mdulos ms fciles de escribir, mantener y
reutilizar.
De esta forma, un objeto contiene toda la informacin que permite definirlo e
identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente
a objetos de una misma clase, al poder tener valores bien diferenciados en sus
atributos. A su vez, los objetos disponen de mecanismos de interaccin
llamados mtodos que favorecen la comunicacin entre ellos. Esta
comunicacin favorece a su vez el cambio de estado en los propios objetos.
Esta caracterstica lleva a tratarlos como unidades indivisibles, en las que no se
separan ni deben separarse el estado y el comportamiento.
Identificando objetos

Los objetos pueden ser fsicos o conceptuales.


 Una cuenta de cliente es un ejemplo de un objeto conceptual
porque no se puede tocar fsicamente. Un cajero automtico es
algo que mucha gente toca todos los das y es un ejemplo de un
objeto fsico.

Los objetos tienen atributos (caractersticas).


 Tal como tamao, nombre, color, forma, etc. Los valores de los
atributos son referidos como el estado actual del objeto. Por
ejemplo, un objeto puede tener un atributo color con el valor de
rojo.

Los objetos tienen operaciones (las cosas que pueden hacer).

Instituto Tecnolgico de Morelia.

Pgina 2

ITM Unidad I Fundamentos del Lenguaje


 Tal como asignar un valor, desplegar una pantalla, o incrementar
rapidez. Las operaciones usualmente afectan los atributos de los
objetos.

Figura 1.1: Ejemplo de cmo Identificar Objetos.

Otro ejemplo seria una puerta Sus atributos serian el color, tamao, material,
etc. Sus operaciones o mtodos serian cerrar_puerta(), abrir_puerta().
El identificar objetos ayuda a disear las clases (o plantillas) para cada tipo de
objetos en un sistema. En la Programacin Orientada a Objetos (POO) cada
objeto de una clase es llamada una instancia de clase y tiene valores distintos
en sus atributos, pero son los mismos atributos y las mismas operaciones.

Figura 1.2: Ejemplo Diferentes Objetos, Misma Clase.

Para declarar un objeto, primero debemos declarar la clase, la sintaxis en Java


es la siguiente:
Declaracin de clases:
En Java la declaracin de clases toma la siguiente forma:
<modificador>* class <nombre_clase> {
<declarer_atributos>*
<declarar_constructor>*
<declarar_mtodos>*

Instituto Tecnolgico de Morelia.

Pgina 3

ITM Unidad I Fundamentos del Lenguaje


}
Ejemplo: En el archivo MiClase.class
package javaApplication1;
public class MiClase{
String mensaje;
}
Declaracin de objetos:
Para declarar un objeto se sigue la siguiente sintaxis:
<nombre_clase> <nombre_objeto> = new <nombre_clase>();
Ejemplo: En el archivo Main.class
package javaApplication1;
public class Main {
public static void main(String[] args) {
//variable usada para explicar la herencia.
int i=0;
//Aqu se crea el objeto
MiClase imprimir=new MiClase();
imprimir.mensaje=Hola a todos;
System.out.println("El mensaje es:
imprimir.mensaje);

" +

}
}
Si corremos el archivo MiClase.class, la salida ser: El mensaje es: Hola a
todos. Ambos archivos debern contenerse en una aplicacin creada dentro
de NetBeans, este proceso se explicara con detalle posteriormente. A grandes
rasgos, deber ir al men file, seleccionar New Project aparecer la
ventana de las diferentes categoras, seleccionamos la categora Java y
dentro de ella la opcin Java Application el nombre del archivo Main.class
dentro del proyecto.
Una vez que tenemos nuestro proyecto, iremos al men file, seleccionamos
la opcin New File, en el campo Categories seleccionamos Java y en el
campo File Types seleccionamos Java Class en el caso del ejemplo la
clase se llama MiClase, debido a ello as se llama el archivo. Con esto
tendremos nuestros dos archivos creados y listos para introducir nuestro
cdigo.
Proyecto: Durante el desarrollo de esta unidad se irn planteando ejercicios,
todos los ejercicios sern parte de un proyecto en el cual se tendr como
resultado el uso de todas las herramientas que se analizarn durante el
desarrollo de la Unidad I.

Instituto Tecnolgico de Morelia.

Pgina 4

ITM Unidad I Fundamentos del Lenguaje

Ejercicio 1.1: Inicie un proyecto en NetBeans, una aplicacin normal (No de


escritorio) Esto crear a su clase principal. Ahora declare una clase, esta clase
ser nuestra clase base en el proyecto y se llamar Operaciones, si lo desea
puede poner el nombre que desee pero posteriormente estaremos referencia a
esta clase con el nombre aqu propuesto, la clase Operaciones deber
contener una variable para almacenar los resultados de las operaciones.
Herencia
La herencia es uno de los aspectos de la programacin orientada a objetos que
se ha definido formalmente. Utilizando la herencia, se puede derivar una nueva
clase a partir de una antigua. La clase nueva se llama clase derivada y la clase
original, clase base. La idea es aadir lo que se quiera a la nueva clase para
darle ms funcionalidad a la clase base.
La herencia es el mecanismo por el que se crean nuevos objetos definidos en
trminos de objetos ya existentes. Por ejemplo, si se tiene la clase Ave, se
puede crear la subclase Pato, que es una especializacin de Ave.
class Pato extends Ave {
int numero_de_patas;
}
La palabra clave extends se usa para generar una subclase (especializacin)
de un objeto. Un Pato es una subclase de Ave. Cualquier cosa que contenga la
definicin de Ave ser copiada a la clase Pato. Adems, en Pato se pueden
definir sus propios mtodos y variables de instancia. Se dice que Pato deriva o
hereda de Ave.
La sintaxis para declarar una clase derivada es similar a la de una clase
normal, nicamente debemos agregar la palabra reservada extends seguida
del nombre de la clase base.
<modificador>* class <nombre_clase> extends <nombre_clase_base>{
<declarer_atributos>*
<declarar_constructor>*
<declarar_mtodos>*
}
Adems, se pueden sustituir los mtodos proporcionados por la clase base.
Utilizando nuestro el ejemplo de MiClase, aqu hay un ejemplo de una clase
derivada aumentando a la funcin Suma_a_i():

Instituto Tecnolgico de Morelia.

Pgina 5

ITM Unidad I Fundamentos del Lenguaje


import MiClase;
public class MiNuevaClase extends MiClase {
public void Suma_a_i( int j ) {
i = i + ( j/2 );
}
}

Ahora cuando se crea una instancia de MiNuevaClase, esta contendr todas


las caractersticas de la clase MiClase y adems podr utilizar el mtodo
Suma_a_i(), de ah que podamos utilizar la variable i sin haberla declarado
aqu. Debido a que se esta heredando de MiClase, MiNuevaClase puede hacer
uso de ella.
En Java no se puede hacer herencia mltiple. Por ejemplo, de la clase aparato
con motor y de la clase animal no se puede derivar nada, sera como obtener el
objeto toro mecnico a partir de una mquina motorizada (aparato con motor) y
un toro (animal). En realidad, lo que se pretende es copiar los mtodos, es
decir, pasar la funcionalidad del toro de verdad al toro mecnico, con lo cual no
sera necesaria la herencia mltiple sino simplemente la comparticin de
funcionalidad que se encuentra implementada en Java a travs de interfaces.
Ejercicio 1.2: Defina cuatro clases que hereden las caractersticas de la clase
Operaciones. Las nuevas clases sern Suma, Resta, Multiplica y Divide. Hasta
este momento ninguna de nuestras clases posee mtodos o propiedades.

1.1.2 Eventos
Un evento es un suceso en el sistema (tal como una interaccin del usuario con
la mquina, o un mensaje enviado por un objeto). El sistema maneja el evento
enviando el mensaje adecuado al objeto pertinente. Tambin se puede definir
como evento, a la reaccin que puede desencadenar un objeto, es decir, la
accin que genera.
Los lenguajes visuales orientados a eventos y con manejo de componentes
dan al usuario que no cuenta con mucha experiencia en desarrollo, la
posibilidad de construir sus propias aplicaciones utilizando interfaces grficas
sobre la base de ocurrencia de eventos.
Para soportar este tipo de desarrollo interactan dos tipos de herramientas, una
que permite realizar diseos grficos (En nuestro caso NetBeans) y, un
lenguaje de alto nivel que permite codificar los eventos (Java). Con dichas
herramientas es posible desarrollar cualquier tipo de aplicaciones basadas en
el entorno.
Java es uno de los lenguajes de programacin que ms entusiasmo despiertan
entre los programadores, tanto expertos como novatos. En el caso de los
programadores expertos por la facilidad con la que desarrollan aplicaciones

Instituto Tecnolgico de Morelia.

Pgina 6

ITM Unidad I Fundamentos del Lenguaje


complejas en poqusimo tiempo. En el caso de los programadores novatos por
el hecho de ver de lo que son capaces a los pocos minutos de empezar su
aprendizaje.
Java es tambin un lenguaje orientado a objetos. La diferencia con un lenguaje
no orientado a objetos y uno basado en objetos es que el segundo utiliza
objetos con propiedades y mtodos, pero carece de los mecanismos de
herencia y polimorfismo propios de los verdaderos lenguajes orientados a
objetos como Java.
Existen distintos tipos de programas. Al inicio de la historia de la programacin
los programas eran de tipo secuencial (tambin llamados tipo batch). Un
programa secuencial es un programa que se arranca, lee los datos que
necesita, realiza los clculos e imprime o guarda en el disco los resultados.
Mientras un programa secuencial est ejecutndose no necesita ninguna
intervencin del usuario. A este tipo de programas se les llama tambin
programas basados u orientados a procedimientos o a algoritmos (procedural
languages). Este tipo de programas siguen utilizndose ampliamente en la
actualidad, pero la difusin de las PCs ha puesto de actualidad otros tipos de
programacin.
Los programas interactivos exigen la intervencin del usuario en tiempo de
ejecucin, ya sea para suministrar datos, o bien para indicar al programa lo
que debe hacer por medio de mens. Los programas interactivos limitan y
orientan la accin del usuario.
Por su parte los programas orientados a eventos son los programas tpicos de
Windows, tales como Netscape, Word, Excel, PowerPoint y otros. Cuando uno
de estos programas ha arrancado, lo nico que hace es quedarse a la espera
de las acciones del usuario, que en este caso son llamadas eventos.
El usuario dice si quiere abrir y modificar un archivo existente, o bien comenzar
a crear un archivo desde el principio. Estos programas pasan la mayor parte de
su tiempo esperando las acciones del usuario (eventos) y respondiendo a ellas.
Las acciones que el usuario puede realizar en un momento determinado son
variadsimas, y exigen un tipo especial de programacin: la programacin
orientada a eventos. Este tipo de programacin es sensiblemente ms
complicada que la secuencial y la interactiva, pero con los lenguajes visuales
de hoy, se hace sencilla y agradable.
Ya se ha dicho que las acciones del usuario sobre el programa se llaman
eventos. Son eventos tpicos el clic sobre un botn, el hacer doble clic sobre el
nombre de un archivo para abrirlo, el arrastrar un icono, el pulsar una tecla o
combinacin de teclas, el elegir una opcin de un men, el escribir en una caja
de texto, o simplemente mover el ratn.
Cada vez que se produce un evento sobre un determinado tipo de control,
NetBeans arranca una determinada funcin o procedimiento que realiza la
accin programada por el usuario para ese evento concreto. Estos

Instituto Tecnolgico de Morelia.

Pgina 7

ITM Unidad I Fundamentos del Lenguaje


procedimientos se llaman con un nombre que se forma a partir del nombre del
objeto y el nombre del evento como se muestra a continuacin:
private void botonAbrirMouseClicked
(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
}
Como se puede observar, el evento que se programar es el clic sobre el
objeto botonAbrir, cabe mencionar que al utilizar NetBeans, todo este cdigo se
generar automticamente. Lo nico que tendremos que hacer ser
seleccionar el objeto que deseamos, seleccionar un evento de la pestaa de
eventos y dar doble clic. El programa incluso coloca comentarios en el cdigo
para guiarnos. Por ejemplo en el evento anterior, se nos indica donde podemos
colocar nuestro cdigo. Este proceso se explica con mayor detalle adelante.
Para comprender ms sobre los eventos tenemos el siguiente ejemplo. Solo se
muestra un mensaje de confirmacin. Para ello se utiliza la clase JOptionPane,
esta clase se analiza a fondo en la unidad II.
Ejemplo: Hacer un pequeo ejemplo en el cual se muestre un pequeo
mensaje de bienvenida. El cdigo es el siguiente:
package proyecto;
import javax.swing.JOptionPane;
/**
*
* @author saul.chavez
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
JOptionPane.showMessageDialog(null,
"Bienvenido al lenguaje Java");
System.Out.Println(Bienvenido al lenguaje Java
}
}
El cdigo anterior es tal cual un nuevo proyecto en NetBeans. Para el ejemplo
anterior no se tuvo ms que crear nuevo proyecto y agregar las lneas en
negrita que se encarga de mostrar el mensaje deseado, que es todo lo que
hace el programa. Con JOptionPane se crea una ventana como la que se

Instituto Tecnolgico de Morelia.

Pgina 8

ITM Unidad I Fundamentos del Lenguaje


muestra en la Figura 1.3. Con System.Out.Println(); el mensaje se
muestra en modo texto.

Figura 1.3 Ejemplo utilizando JOptionPane.

Hay otro tipo de ventana de dilogo predefinida que necesitaremos conocer en


este momento para los ejercicios propuestos. Esta ventana nos servir para
introducir datos grficamente y se utiliza de la siguiente manera:
package proyecto;
import javax.swing.JOptionPane;
public static void main(String[] args) {
JOptionPane.showMessageDialog(null,
"Bienvenido al lenguaje Java");
int Valor = Integer.parseInt
(JOptionPane.showInputDialog(null, "Introduce un valor"));
}
}
Lo que se est haciendo en la lnea en negritas es declarar una variable entera,
mostrar una venta de dilogo que pide un valor y asignarlo a la variable. La
instruccin sola que muestra la ventana deseada es:
JOptionPane.showInputDialog(null, "Introduce un valor")
Pero esto nos regresa una cadena, no un entero. Por ello utilizamos el mtodo
Integer.ParseInt(); que transforma la cadena que reciba en un valor entero. Si
se recibe como parmetro una cadena que no representa a un valor entero
(como hola en lugar de 200) se producir un error en al mtodo ParseInt().

Figura 1.4 Ejemplo usando ventanas de dilogo para entrada de datos.

1.1.3 Mtodos
Instituto Tecnolgico de Morelia.

Pgina 9

ITM Unidad I Fundamentos del Lenguaje

Los mtodos son funciones de una clase. Generalmente los mtodos se


dividen en aquellos que se usan internamente en la clase, llamados mtodos
privados (private), los que se usan fuera de la clase, llamados mtodos
pblicos (public) y los que son usados por la clase y sus derivadas, llamados
mtodos protegidos (protected).
Los mtodos privados son generalmente llamados en el interior del objeto por
otras partes del mismo.
Una vez que se tiene un objeto que soporta mtodos, se pueden usar los
mtodos de esos objetos. En el ejemplo siguiente se usa el mtodo calcular
para trabajar con los valores de operando1 y operando2 y almacenar el
resultado en la variable resultado.
//Suponiendo que ya creamos esta clase
Calculadora objeto = new Calculadora();
double resultado = objeto.calcular(operando1, operando2);
//Suponiendo

que

el

mtodo

calcular

tambin

fue

programado.

Java soporta dos tipos de mtodos: mtodos de clase y mtodos de instancia.


Los mtodos de instancia, como en el ejemplo calcular, son invocados en
objetos (es decir, los objetos son instancias de una clase). Los mtodos de
clase, por otro lado, son invocados en una clase. Por ejemplo, la clase
java.lang.Math tiene un mtodo de clase llamado sqrt que calcula una raz
cuadrada y se puede usar como sigue (no es necesario un objeto):
public class MiClase{
public static void main (String [] args)
double valor = 4, raiz;
raiz = Math.sqrt(valor);
System.out.println(La raz cuadrada de +
valor + = + sqrt);
}
}
La salida de este cdigo es:
La raz cuadrada de 4.0 = 2.0
Ejercicio 1.3: Defina en cada una de las clases de su proyecto, un mtodo que
realice la operacin a la que su nombre hace referencia (Ej. En la clase Suma
un mtodo que sume). Cada mtodo trabajar nicamente con dos operadores,
los cuales se recibirn como parmetros cuando una instancia de la clase los

Instituto Tecnolgico de Morelia.

Pgina 10

ITM Unidad I Fundamentos del Lenguaje


requiera. Utilice la clase JOptionPane ejemplificada anteriormente para obtener
los valores.
Mtodo main
Es un mtodo especial que java reconoce como el punto inicial para que un
programa se ejecute desde la lnea de comando. Su sintaxis es:
public static
//Cdigo}

void

main

(String

args[]){

Siempre debe tener dos modificadores de acceso: public y static. El mtodo


main no regresa ningn valor. Acepta cero o ms objetos de tipo String.
Accesando miembros del objeto
 El operador punto (.) permite accesar a atributos y mtodos no privados
de una clase como se muestra en los ejemplos anteriores.
 Dentro de un mtodo no se necesita usar esta notacin para accesar
miembros locales del mtodo.
 Generalmente se crean mtodos set() y get() para accesar a miembros
de un objeto que no es local.

Polimorfismo
El polimorfismo se logra mediante la sobrecarga de mtodos. Consiste en crear
mtodos que se comporten de manera distinta dependiendo de los parmetros
con los que trabaje. Por ejemplo, si usted crea una clase cualquiera y en ella
define el mtodo Suma, el cual realiza la suma de dos operadores, pero usted
tiene la necesidad de sumar ahora tres operadores No necesita crear un
nuevo mtodo para realizar dicha accin, para eso sirve la sobrecarga de
mtodos.
La sobrecarga de mtodos permite definir diferentes versiones de un mtodo,
todos con el mismo nombre pero con diferentes listas de parmetros. Cuando
se utiliza un mtodo sobrecargado, el compilador de java sabe cual se desea
utilizar por el nmero y/o tipo de parmetros que se le pasen.
Para sobrecargar un mtodo, slo hay que definirlo ms de una vez,
especificando una nueva lista de parmetros en cada una de ellas. Cada lista
de parmetros debe ser diferente de cualquier otra de alguna forma, el nmero
de parmetros o el tipo de uno o ms de ellos.
Ejemplo: Sobrecargaremos el mtodo Suma de la clase Calculadora

Instituto Tecnolgico de Morelia.

Pgina 11

ITM Unidad I Fundamentos del Lenguaje


//Clase original sin sobrecarga.
class Calculadora
{
int Suma(int op1, int op2)
{
return op1 + op2;
}
}

class Calculadora
{
//mtodo Suma que
int Suma(int op1,
{
return op1 +
}
//mtodo Suma que
int Suma(int op1,
{
return op1 +
}
}

trabaja con dos operadores


int op2)
op2;
trabaja con tres operadores
int op2, int op3)
op2 + op3;

Para utilizar la clase anterior el cdigo es el siguiente.


public class MiClase{
public static void main(String [] args){
Calculadora calc = new Calculadora();
System.out.println(Suma 2 ms 2 = +
calc.Suma(2,2));
System.out.println(Suma 2 ms 2 ms 2 = +
calc.Suma(2,2,2));
}
}
Como puede ver, la sobrecarga proporciona una tcnica potente, con ella
podemos evitar problemas clsicos de desorden de cdigo como la declaracin
de varios mtodos con nombres como: Suma2, Suma3 o SumaDosOp,
SumaTresOp, etc.
Ejercicio 1.4: Sobrecargue cada uno de los mtodos que contienen las clases
Suma, Resta, Multiplica y Divide para que trabajen con tres operadores de la
siguiente manera:
*Suma: Se sumarn los tres operadores.
*Resta: el tercer parmetro indicara cuantas veces se desea que se reste el
segundo parmetro al primero.

Instituto Tecnolgico de Morelia.

Pgina 12

ITM Unidad I Fundamentos del Lenguaje


*Multiplica: Se multiplicarn los tres parmetros entre s.
*Divide: El tercer parmetro indicar cuantas veces se desea que se divida el
primer parmetro entre el segundo.
Los resultados de las operaciones debern ser manipulados o almacenados en
la variable que contiene la clase Operaciones para que la herencia tenga algn
sentido y mostrados al usuario por medio de ventanas de dilogo (Utilice la
clase JOptionPane para esto).

1.1.4 Propiedades
Una propiedad es una asignacin que describe algo sobre un objeto como un
formulario, un botn, una lista, etc. Dependiendo de la propiedad, se le puede
asignar en tiempo de diseo usando la ventana Propiedades y/o en tiempo de
ejecucin al programar.
Los objetos que ya existen en NetBeans como los botones, listas, formularios,
etc. Tienen propiedades definidas ya en el lenguaje, por ejemplo:

Figura 1.5 Objeto en NetBeans

Un botn en NetBeans como este posee propiedades como:


Font: describe el tipo de letra que contiene el botn.
Background: indica el color del fondo del botn.
Name: nombre del objeto asignado por el usuario.
Como estas propiedades, cada objeto en NetBeans posee sus propiedades
especficas, estas propiedades pueden ser modificadas dentro del ambiente
grafico de NetBeans en la ventana de propiedades (Los aspectos relacionados
con el funcionamiento grfico sern analizados a profundidad posteriormente) o
en el cdigo escribiendo el nombre del objeto seguido de un punto.
(<Nombre_objeto>.<Propiedad>), al escribir el punto (.) NetBeans nos mostrar
una lista de las propiedades y los mtodos del objeto.
Ejemplo: si queremos cambiar el texto jButton1 que se encuentra en el botn,
utilizamos el mtodo setText(String).
jButton1.setText(Hola);

Figura 1.6 Botn con texto editado.

En caso de que se trate de objetos creados por nosotros mismos como se


mostr en la parte 1.1.1 Objetos de este libro, las propiedades son descritas

Instituto Tecnolgico de Morelia.

Pgina 13

ITM Unidad I Fundamentos del Lenguaje


por los atributos. En Java, los atributos son representados usando variables
(estas a su vez son el mecanismo para guardar datos)
Declaracin de atributos
<modificador>* <tipo> <nombre> [=<valor_inicial>];
Ejemplo:
public class MiClase{
int x;
private float y = 10000.0F;
public String name = Sal Chvez;

La palabra private indica que el atributo solo es accesible por los mtodos
dentro de la clase. El tipo puede ser primitivo o de cualquier clase.
Por ltimo, al igual que para los atributos de los objetos de NetBeans, para
accesar a las propiedades de un objeto se utiliza el operador punto (.).
Ejemplo:
MiClase objeto1 = new MiClase(); //Declaramos el objeto
objeto1.x=30;
//asignamos un valor al atributo x del objeto
Modificadores de acceso
Los modificadores de acceso permiten al diseador de una clase determinar
quien accede a los datos y mtodos miembros de una clase.
Los modificadores de acceso preceden a la declaracin de un elemento de la
clase (ya sea dato o mtodo), de la siguiente forma:
[modificadores]
[modificadores]

tipo_variable nombre;
tipo_devuelto nombre_Metodo ( lista_Argumentos );

Existen los siguientes modificadores de acceso:


public - Todo el mundo puede acceder al elemento. Si es un dato, todo
el mundo puede ver el elemento, es decir, usarlo y asignarlo. Si es un
mtodo todo el mundo puede invocarlo.

private - Slo se puede acceder al elemento desde mtodos de la clase,


o slo puede invocarse el mtodo desde otro mtodo de la clase.

Instituto Tecnolgico de Morelia.

Pgina 14

ITM Unidad I Fundamentos del Lenguaje

protected Es ms accesible que prvate debido a que permite el uso a


todos los elementos de la clase o clases derivadas. Se explicar mas a
detalle en el tema de la herencia.

sin modificador - Se puede acceder al elemento desde cualquier clase


del package donde se define la clase.

Pueden utilizarse estos modificadores para cualquier tipo de miembros de la


clase, incluidos los constructores (con lo que se puede limitar quien puede
crear instancias de la clase).
1.2 Entorno Integrado De Desarrollo
Un entorno de desarrollo integrado o en ingls Integrated Development
Environment (IDE1) es un programa compuesto por un conjunto de
herramientas para un programador.
Puede dedicarse en exclusiva a un slo lenguaje de programacin o bien,
poder utilizarse para varios.
Un IDE es un entorno de programacin que ha sido empaquetado como un
programa de aplicacin, es decir, consiste en un editor de cdigo, un
compilador, un depurador y un constructor de interfaz grfica GUI2. Los IDEs
pueden ser aplicaciones por si solas o pueden ser parte de aplicaciones
existentes. El lenguaje Visual Basic por ejemplo puede ser usado dentro de las
aplicaciones de Microsoft Office, lo que hace posible escribir sentencias Visual
Basic en forma de macros para Microsoft Word.
Los IDEs proveen un marco de trabajo amigable para la mayora de los
lenguajes de programacin tales como C++, Java, C#, Delphi, Visual Basic,
etc. Es posible que un mismo IDE pueda funcionar con varios lenguajes de
programacin. Para conocer el proceso de instalacin de NetBeans (que es el
IDE que se utilizar en esta obra) y algunos otros IDEs consulte el Anexo 1.

NetBeans

Entorno Integrado de Desarrollo. Programa como NetBeans que proporciona herramientas que facilitan la programacin.

Graphical User Interface. Interfaz Grfica de Usuario. (Lo vemos al momento de disear grficamente
nuestras aplicaciones grficas arrastrando botones o cambiando tamao de los elementos con jalar una
esquina, etc.)

Instituto Tecnolgico de Morelia.

Pgina 15

ITM Unidad I Fundamentos del Lenguaje

Figura 1.7 Pantalla principal de NetBeans

NetBeans se refiere a una plataforma para el desarrollo de aplicaciones de


escritorio usando Java y a un entorno de desarrollo integrado (IDE)
desarrollado usando la Plataforma NetBeans.
La plataforma NetBeans permite que las aplicaciones sean desarrolladas a
partir de un conjunto de componentes de software llamados mdulos. Un
mdulo es un archivo Java que contiene clases de java escritas para
interactuar con las APIs de NetBeans y un archivo especial (manifest file) que
lo identifica como mdulo. Las aplicaciones construidas a partir de mdulos
pueden ser extendidas agregndole nuevos mdulos.
Debido a que los mdulos pueden ser desarrollados independientemente, las
aplicaciones basadas en la plataforma NetBeans pueden ser extendidas
fcilmente por otros desarrolladores de software.
NetBeans es un proyecto de cdigo abierto de gran xito con una gran base de
usuarios, una comunidad en constante crecimiento. Sun MicroSystems3 fund
el proyecto de cdigo abierto NetBeans en junio 2000 y contina siendo el
patrocinador principal de los proyectos.

La Plataforma NetBeans es una base modular y extensible usada como una


estructura de integracin para crear aplicaciones de escritorio grandes.
Empresas independientes asociadas, especializadas en desarrollo de software,
proporcionan extensiones adicionales que se integran fcilmente en la
plataforma y que pueden tambin utilizarse para desarrollar sus propias
herramientas y soluciones.

Sun Microsystems es una empresa informtica de Silicon Valley, fabricante de semiconductores y software.

Instituto Tecnolgico de Morelia.

Pgina 16

ITM Unidad I Fundamentos del Lenguaje


La plataforma ofrece servicios comunes a las aplicaciones de escritorio,
permitindole al desarrollador enfocarse en la lgica especfica de su
aplicacin. Entre las caractersticas de la plataforma estn:

Administracin de las interfaces de usuario (ej. mens y barras de


herramientas).

Administracin de las configuraciones del usuario.

Administracin del almacenamiento (guardando y cargando cualquier


tipo de dato).

Administracin de ventanas.

Framework basado en asistentes (dilogo paso a paso).

Est escrito en Java y existe adems un nmero importante de mdulos para


extender el IDE NetBeans. El IDE NetBeans es un producto libre y gratuito sin
restricciones de uso.
Paquetes adicionales de NetBeans.
Pack de Movilidad de NetBeans
El Pack de Movilidad de NetBeans es una herramienta para desarrollar
aplicaciones que se ejecutan en telfonos mviles. El Pack de Movilidad puede
ser usado para escribir, probar, y depurar aplicaciones para la plataforma Java
ME4, tecnologa existente en dispositivos mviles.
Profiler de NetBeans
El Profiler de NetBeans es una herramienta para la optimizacin de
aplicaciones Java: Ayuda a encontrar cuellos de botella en la memoria y a
optimizar la velocidad de las aplicaciones.
El C/C++ Native Development Module
Soporta proyectos de C/C++. Ms informacin:
http://www.netbeans.org/kb/55/1/cnd-index.html

Java ME: Java Micro Edition Herramienta para crear programas para celulares y otras tecnologas moviles.

Instituto Tecnolgico de Morelia.

Pgina 17

ITM Unidad I Fundamentos del Lenguaje

1.3 Ventanas (proyecto, propiedades, ayuda).


Ventana de proyectos

Figura 1.8 Ventana de Proyectos

Esta es la ventana de proyectos de NetBeans, para accesar a ella deber dar


clic sobre el men File (Archivo) y a continuacin en New Project (Nuevo
Proyecto). Podr seleccionar entre los distintos tipos de proyectos, desde
aplicaciones de consola, pasando por aplicaciones de escritorio, hasta
aplicaciones para celulares o pginas web. Los tipos de proyectos sern
analizados en el siguiente tema. (1.4 Tipos de proyectos), por ahora solo se
analizan los componentes de las ventanas en cuestin.
Como puede observar, esta ventana es muy sencilla, nicamente debe
seleccionar la categora del proyecto que quiere crear y el tipo de proyecto
dentro de la categora que eligi. Si no est seguro que tipo de proyecto debe
crear, esta ventana muestra una breve explicacin de lo que har en cada
caso en el campo Description, bastar con que usted seleccione una
categora y un tipo de proyecto para que se muestre la descripcin del mismo
en dicho campo.
Por ejemplo, podemos ver que se encuentra seleccionada la categora Java y
el tipo de proyecto Java Desktop Application y debajo nos dice:
Crea un esqueleto de una aplicacin de escritorio basada en la Swing
Application Framework. Este template provee infraestructura bsica para
aplicaciones como barras de men, persistencia de estado de ventana, y
barras de estado. Con este template, puedes adems generar cdigo para

Instituto Tecnolgico de Morelia.

Pgina 18

ITM Unidad I Fundamentos del Lenguaje


crear una interfaz GUI (Interfaz Grfica de Usuario) para una tabla de base de
datos.
Ejemplo: Crearemos un Hola Mundo en una aplicacin Java. (Java
Application).
1. Seleccione la categora Java y el proyecto Java Application.
2. De clic sobre el botn Next
3. Nos aparece la ventana de Nombre y Localizacin, esto se refiere
al nombre que tendr nuestra aplicacin y el lugar donde sern
guardados los archivos que se generen.

Figura 1.9 Ventana elegir nombre u ubicacin.

4. Especificamos un nombre, en este caso HolaMundo. Este ser el


nombre de nuestra clase principal y el archivo. Como se explic
anteriormente, dentro de nuestro programa debe existir el mtodo
main. NetBeans lo generar automticamente.
5. Damos clic en Finish.
6. Como puede observar, se cre el mtodo Main automticamente,
incluso tenemos comentarios importantes acerca del cdigo.
Habr ocasiones en la que no podr modificar el cdigo generado
automticamente

debido

puede

provocar

un

mal

funcionamiento. Bueno, pasamos a nuestro mtodo main y

Instituto Tecnolgico de Morelia.

Pgina 19

ITM Unidad I Fundamentos del Lenguaje


escribimos System.out.println("Hola Mundo"); donde se indica
que debemos colocar nuestro cdigo.
7. Damos clic sobre el botn de correr proyecto o presionamos f6 y
veremos que sucede.
Botn para correr el proyecto

Aqu ponemos el cdigo

Aqu se muestra la salida

Figura 1.10 Hola Mundo en java.

Como puede ver, tenemos una pequea ventana con el nombre de Projects,
esta nos muestra el proyecto en el que estamos trabajando y los archivos que
necesitamos. Entre esos archivos se encuentran las libreras que incluimos.
Ventana Propiedades
Para abrir la ventana de propiedades, damos clic sobre el men Window y a
continuacin en Properties.
Con esto se mostrar la ventana de propiedades de nuestra aplicacin.
NetBeans lo conoce como Main.java aunque si lo buscamos en el directorio
que se creo, la clase principal se llamar HolaMundo.class.
En esta ventana podemos observar informacin como el nombre, el directorio
donde se encuentran los archivos, la hora a la que se modificaron y el directorio
donde se crean los archivos de clases que conforman a nuestro proyecto. Por
ejemplo el archivo HolaMundo.class.
Instituto Tecnolgico de Morelia.

Pgina 20

ITM Unidad I Fundamentos del Lenguaje

Figura 1.11 Ventana propiedades.

Ventana de Ayuda
Para abrir la ventana de ayuda debe dar clic sobre el men Help y a
continuacin en Help Contents.

Figura 1.12 Ventana Help

Instituto Tecnolgico de Morelia.

Pgina 21

ITM Unidad I Fundamentos del Lenguaje


En esta ventana, podremos buscar informacin relacionada con temas
especficos listados del lado izquierdo en la ventana de contenido Contents o
buscar informacin dentro del contenido mediante algn criterio de bsqueda
en la pestaa de Search (esta es la ms recomendada).
No hay ningn grado de dificultad en el uso de esta ventana. Si desea ver la
informacin de los temas listados, nicamente de clic sobre el tema que le
interesa, o si le interesa saber algo de algn tema especifico y no sabe en qu
tema pueda encontrarlo, utilice la bsqueda. Para ello nicamente debe
ingresar una palabra o palabras relacionadas con la informacin que usted
necesita y a continuacin se le mostrar un listado de archivos en los que se
localiz el criterio de bsqueda. Por ejemplo, buscaremos la informacin
relacionada con un botn.
Cabe mencionar que NetBeans le permite ingresar su criterio de bsqueda en
el idioma requerido o no obtendr resultados.
Buscar: Button

Figura 1.13 Bsqueda en Ayuda.

En la figura 1.13 se muestra el resultado de la bsqueda.

1.4 Tipos De Proyectos.


1.4.1 Configuracin
Instituto Tecnolgico de Morelia.

Pgina 22

ITM Unidad I Fundamentos del Lenguaje

Como ya se mencion, Se pueden crear muchos tipos de proyectos de cada


categora en NetBeans, de entre los cuales:
Categora Java
Java Application: crea una aplicacin en un proyecto estndar de la IDE. Puede
generarse la clase main en el proyecto. El proyecto que creamos en esta
primera unidad es de este tipo.
Java Desktop Application: crea un esqueleto de una aplicacin de escritorio
basada en la Swing Application Framework (JSR 296). Este template provee
infraestructura bsica para aplicaciones como barras de men, persistencia de
estado de ventana, y barras de estado. Con este template, puedes adems
generar cdigo para crear una interfaz GUI (Interfaz Grfica de Usuario) para
una tabla de base de datos.
Java Class Library: Crea una librera Java SE (Standard Edition) en un
proyecto estndar IDE (Entorno Integrado de Desarrollo). No contiene clase
main.
Java Project with Existing Sources: importa una aplicacin existente de java
para crear un proyecto estndar IDE. La aplicacin de java se puede importar
de mltiples folders.
Categora Web
Web Application: Crea una aplicacin web vaca en un proyecto IDE estndar.
Web Application with Existing Sources: importa una aplicacin web existente
para crear un proyecto IDE estndar.
Como existen muchos proyectos posibles, no se explicar cada uno pero en la
ventana de nuevo proyecto existe una pequea parte, en la cual se describe
qu clase de proyecto se crear de acuerdo a la opcin y la categora
seleccionadas.

Instituto Tecnolgico de Morelia.

Pgina 23

ITM Unidad I Fundamentos del Lenguaje

Figura 1.14 Ventana de Proyectos.

1.5 Comentarios
En muchas ocasiones, es necesario incluir notas en el cdigo para documentar
un poco y recordar posteriormente para que se utiliza una funcin u
alguna lnea de cdigo, para poder hacer esto existen los comentarios:
Comentarios de una sola lnea.
Comentarios de una o ms lneas.
Ejemplos:
// Comentarios para una sola lnea (doble diagonal).

/* Comentarios de una o ms lneas, (diagonal-asterisco


para iniciar le comentario, asterisco-diagonal para
terminarlo.*/
/** Comentario de documentacin, de una o ms lneas,
(diagonal-asterisco-asterisco para iniciarlo, asteriscodiagonal para terminarlo. */

Los dos primeros tipos de comentarios son los que todo programador conoce y
se utilizan del mismo modo. Los comentarios de documentacin, colocados

Instituto Tecnolgico de Morelia.

Pgina 24

ITM Unidad I Fundamentos del Lenguaje


inmediatamente antes de una declaracin (de variable o funcin), indican que
ese comentario ha de ser colocado en la documentacin que se genera
automticamente cuando se utiliza la herramienta de Java, javadoc. Dichos
comentarios sirven como descripcin del elemento declarado permitiendo
generar una documentacin de nuestras clases escrita al mismo tiempo que se
genera el cdigo.
Convenciones de nombres
SUN recomienda un estilo de codificacin que es seguido en el API5 de Java y
en este material que consiste en:

Utilizar nombres descriptivos para las clases, evitando los nombres muy
largos.

Para los nombres de clases poner la primera letra en maysculas y las


dems en minsculas. Por ejemplo: Empleado o MiClase.

Si el nombre tiene varias palabras ponerlas todas juntas (sin separar con
- o _) y poner la primera letra de cada palabra en maysculas. Por
ejemplo: InstrumentoMusical.

Para los nombres de miembros (datos y mtodos) seguir la misma


norma, pero con la primera letra de la primera palabra en minsculas.
Por ejemplo: registrarOyente.

Para las constantes (datos con el modificador final) usar nombres en


maysculas, separando las palabras con _

1.6 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:

(del ingls Application Programming Interface - Interfaz de Programacin de Aplicaciones) es el conjunto de funciones y
procedimientos

Instituto Tecnolgico de Morelia.

Pgina 25

ITM Unidad I Fundamentos del Lenguaje


class Elipse {
final float PI = 3.14159;
. . .
}
Si se intenta modificar el valor de una variable final desde el cdigo de la
aplicacin, se generar un error de compilacin.
Si se usa la palabra clave final con una variable o clase esttica, se pueden
crear constantes de clase, haciendo un uso altamente eficiente de la memoria,
porque no se necesitaran mltiples copias de las constantes.
La palabra clave final tambin se puede aplicar a mtodos, significando en este
caso que los mtodos no pueden ser sobrescritos.

1.7 Tipos De Datos


Los tipos de datos en Java pueden dividirse en dos categoras: simples y
compuestos. Los simples son tipos nucleares que no se derivan de otros tipos,
como los enteros, de punto flotante, booleanos y de carcter. Los tipos
compuestos se basan en los tipos simples, e incluyen las cadenas, las
matrices, etc.
Cada tipo de datos simple soporta un conjunto de literales que le pueden ser
asignados, para darles valor. En este apartado se explican los tipos de datos
simples (o primitivos) que presenta Java, as como los literales que soporta
(sintaxis de los valores que se les puede asignar).
Tipos de datos simples
Es uno de los conceptos fundamentales de cualquier lenguaje de
programacin. Estos definen los mtodos de almacenamiento disponibles para
representar informacin, junto con la manera en que dicha informacin ha de
ser interpretada.
Para crear una variable (de un tipo simple) en memoria debe declararse
indicando su tipo de variable y su identificador.
Sintaxis: para la declaracin de variables de tipo de dato simple.
Tipo nombre [ = valor] [, nombre [ = valor]];
Tipos de datos enteros
Se usan para representar nmeros enteros con signo. Hay cuatro tipos: byte,
short, int y long.
Tipo
byte

Instituto Tecnolgico de Morelia.

Tamao
1Byte (8 bits)

Pgina 26

ITM Unidad I Fundamentos del Lenguaje


short

2 Bytes (16 bits)

int

4 Bytes (32 bits)

long

8 Bytes (64 bits)


Tabla 1.2 Tipos de datos enteros

Literales enteros
Son bsicos en la programacin en Java y presentan tres formatos:

Decimal: Los literales decimales aparecen como nmeros ordinarios sin


ninguna notacin especial.

Hexadecimal: Los hexadecimales (base 16) aparecen con un 0x 0X


inicial, notacin similar a la utilizada en C y C++.

Octal: Los octales aparecen con un 0 inicial delante de los dgitos.

Por ejemplo, un literal entero para el nmero decimal 12 se representa en Java


como 12 en decimal, como 0xC en hexadecimal y como 014 en octal.
Los literales enteros se almacenan por defecto en el tipo int, (4 bytes con
signo), o si se trabaja con nmeros muy grandes, con el tipo long, (8 bytes con
signo), aadiendo una L l al final del nmero.
La declaracin de variables enteras es muy sencilla. Un ejemplo de ello sera:
long numeroLargo = 0xC; // Por defecto vale 12
Tipos de datos en punto flotante
Se usan para representar nmeros con partes fraccionarias (o con decimales
como los conocemos normalmente). Hay dos tipos de punto flotante: float y
double. El primero reserva almacenamiento para un nmero de precisin
simple de 4 bytes y el segundo lo hace para un nmero de precisin doble de 8
bytes.
Tipo

Tamao

float

4 Bytes (32 bits)

double

8 Bytes (64 bits)

Tabla 1.3 Tipos de datos numricos en punto flotante

Instituto Tecnolgico de Morelia.

Pgina 27

ITM Unidad I Fundamentos del Lenguaje

Literales en punto flotante


Representan nmeros decimales con partes fraccionarias.
representarse con notacin estndar (563.84) o cientfica (5.6384e2).

Pueden

De forma predeterminada son del tipo double (8 bytes). Existe la opcin de usar
un tipo ms corto (el tipo float de 4 bytes), especificndolo con una F f al final
del nmero.
La declaracin de variables de punto flotante es muy similar a la de las
variables enteras.
Por ejemplo: declaracin de variables punto flotante.
double valorDePi = 314.16e-2 ;
float temperatura = (float)36.6

Se realiza un enmascaramiento a temperatura, porque todos los literales con


decimales por defecto se consideran double.
Tipo de datos boolean
Se usa para almacenar variables que presenten dos estados, que sern
representados por los valores true y false.
Normalmente estamos acostumbrados a utilizar variables enteras como
banderas en el cdigo, desperdiciando as mucha memoria, este desperdicio
crece conforme vamos creando banderas sobre la marcha, este vicio de
programacin se arrastra debido a que la mayora de los programadores
aprendieron a programar en lenguajes como C, en cuya estructura no existe un
tipo de dato lgico y se tena que recurrir a los datos tipo entero. Aqu hay una
buena opcin para disminuir drsticamente este desperdicio.
Literales Booleanos
Java utiliza dos palabras clave para los estados: true (para verdadero) y false
(para falso). Este tipo de literales es nuevo respecto a C/C++, lenguajes en los
que el valor de falso se representa por un 0 numrico, y verdadero cualquier
nmero que no fuese el 0.
Sintaxis: para declarar un dato del tipo booleano se utiliza la palabra reservada
boolean.
boolean reciboPagado = false;
Tipo de datos carcter

Instituto Tecnolgico de Morelia.

Pgina 28

ITM Unidad I Fundamentos del Lenguaje

Se usa para almacenar caracteres Unicode simples.


Java a diferencia de C/C++ distingue entre matrices de caracteres y cadenas.
Literales carcter
Representan un nico carcter (de la tabla de caracteres Unicode 1.1) y
aparecen dentro de un par de comillas simples. De forma similar que en C/C++.
Los caracteres especiales (de control y no imprimibles) se representan con una
barra invertida ('\') seguida del cdigo carcter.
Descripcin

Representacin

Valor Unicode

Caracter Unicode

\udddd

Numero octal

\ddd

Barra invertida

\\

\u005C

Continuacin

Retroceso

\b

\u0008

Retorno de carro

\r

\u000D

de \f

\u000C

Tabulacin horizontal

\t

\u0009

Lnea nueva

\n

\u000A

Comillas simples

\u0027

Comillas dobles

\"

\u0022

Nmeros arbigos ASCII

0-9

\u0030 a \u0039

Alimentacin
formularios

Alfabeto
ASCII
maysculas

en A.-Z

\u0041 a \u005A

Alfabeto
ASCII
minsculas

en a.-z

\u0061 a \u007A

Tabla1.4: Caracteres especiales Java

Sintaxis: Las variables de tipo char se declaran de la siguiente forma


char letraMayuscula = 'A';
// Observe la necesidad de los ' '
char letraV = '\u0056'; // Letra 'V'
La clase String

Instituto Tecnolgico de Morelia.

Pgina 29

ITM Unidad I Fundamentos del Lenguaje

En java las cadenas se gestionan como si fueran objetos. De ah que String no


es un tipo de dato. Se trata de una clase, una de las ventajas de esto es que
un objeto de tipo String tiene gran variedad de mtodos que se pueden usar.
En muchos lenguajes, las cadenas de texto son tipos de datos fundamentales
inherentes al lenguaje, pero en java, las cadenas son gestionadas con la clase
String.
El siguiente es un ejemplo en el que se crea una cadena y se visualiza
(observe cmo este cdigo hace la clase String como si fuera otro tipo de dato
sencillo).
Public class MiClase{
Public static void main (String [] args){
String cadena1= Hola Mundo!!;
System.out.println(cadena1);
}
}
La clase String es muy ponderosa, pues con los mtodos que proporciona
permite convertir la cadena en un arreglo de caracteres, convertir nmeros en
cadenas, buscar cadenas, crear sub-cadenas, cambiar la cadena de
maysculas a minsculas o viceversa, obtener la longitud de la cadena,
comparar cadenas y mucho mas.
Algunos de los mtodos de la clase String son los siguientes:
int lastIndexOf (int ch)

int lastIndexOf (int ch, int fromIndex)

int lastIndexOf (String str)


int lastIndexOf (String str, int fromIndex)
int length()
String replace (char oldChar, char
newChar)
boolean startsWith (String prefix)
boolean startsWith (String prefix, int
offset)

Instituto Tecnolgico de Morelia.

Devuelve el ndice, dentro de la


cadena, de la ltima ocurrencia del
carcter especificado.
Produce el ndice, dentro de la
cadena de la ltima ocurrencia del
carcter dado, buscando hacia atrs
desde el ndice especificado.
Devuelve el ndice, dentro de la
cadena, de la ocurrencia del String
dado.
Produce el ndice dentro de la
cadena de la ltima ocurrencia del
carcter dado.
Devuelve la longitud de la cadena
Produce
una
nueva
cadena
substituyendo todas las ocurrencias
de oldChar con newChar
Chequea si la cadena empieza con
el prefijo dado.
Chequea si la cadena empieza con
el prefijo dado, empezando en el
ndice dado.
Pgina 30

ITM Unidad I Fundamentos del Lenguaje


char[] to CharArray ()
String toLowerCase ()
String to UpperCase()

String trim()
Static String valueOf (boolean b)
Static String valueOf (char b)
Static String valueOf (char [] data)
Static String valueOf(char[] data, offset,
int count)
Static String valueOf (doubleb)
Static String valueOf (float b)
Static String valueOf (int b)
char charAt (int index)
int compareTo (Object o)
int compareToIgnoreCase(String
otraCadena)
int compareTo (String otraCadena)
String concat(String str)
Boolean endsWith (String sufijo)

Convierte una cadena en un arreglo


de caracteres.
Cambia todos los caracteres de la
cadena a su equivalente en
minsculas.
Cambia
los caracteres de una
cadena a su equivalente en
maysculas.
Elimina los espacios en blanco que
encuentre iniciando la bsqueda
desde ambos extremos de la
cadena.
Produce la representacin de la
cadena del argumento booleano.
Produce la representacin de la
cadena del argumento char
Produce la representacin de la
cadena del arreglo de caracteres.
Produce la representacin de la
cadena de un sub arreglo especfico
del argumento char array de enteros.
Produce la representacin String de
un double.
Produce la representacin String de
un float.
Produce la representacin String de
un int.
Proporciona el carcter del ndice
especificado.
Compara este objeto String con otro.
Compara dos cadenas ignorando
diferencias entre maysculas y
minsculas.
Compara que dos cadenas sean
exactamente iguales.
Concatena la cadena dada al final de
la cadena.
Verdadero si la cadena termina con
el sufijo dado.

Tabla 1.5 Mtodos de la clase String.

Conversin de tipos de datos


En Java es posible transformar el tipo de una variable u objeto en otro diferente
al original con el que fue declarado. Este proceso se denomina "conversin",
cast, enmascaramiento, "moldeado" o "tipado". La conversin se lleva a
cabo colocando el tipo destino entre parntesis, a la izquierda del valor que
queremos convertir de la forma siguiente:
char c = (char)System.in.read();
Instituto Tecnolgico de Morelia.

Pgina 31

ITM Unidad I Fundamentos del Lenguaje

La funcin read devuelve un valor int, que se convierte en un char debido a la


conversin (char), y el valor resultante se almacena en la variable de tipo
carcter c.
El tamao de los tipos que queremos convertir es muy importante. No todos los
tipos se convertirn de forma segura. Por ejemplo, al convertir un long en un
int, el compilador corta los 32 bits superiores del long (de 64 bits), de forma que
encajen en los 32 bits del int, con lo que si contienen informacin til, esta se
perder.
Por ello se establece la norma de que "en las conversiones el tipo destino
siempre debe ser igual o mayor que el tipo fuente":
Tipo Origen

Tipo Destino

byte

double, float, long, int, char,


short

short

double, float, long, int

char

double, float, long, int

int

double, float, long

long

double, float

float

Double
Tabla 1.6 Conversiones sin prdidas de informacin

1.8 Variables
Las variables pueden ser de diferentes tipos y actan como gestores de
memoria de datos. Los diferentes tipos tienen que ver con el formato de los
datos que almacenan en ellas, as como con la memoria que es necesaria para
gestionar ese dato. Por ejemplo, la variable de tipo entero (int), es de 4 bytes (o
32 bits) y se utiliza para almacenar valores enteros. Esto hace que un dato de
tipo int pueda tomar un rango de valores que van desde -2,147,483,648 hasta
2,147,483,647.
Antes de usar una variable en java, debe declararse especificando su tipo.
Sintaxis: como declarar una variable en Java.
Tipo nombre [ = valor] [, nombre [ = valor]];
Ejemplo: declaracin de una variable tipo int.

Instituto Tecnolgico de Morelia.

Pgina 32

ITM Unidad I Fundamentos del Lenguaje


public class MiClase{
public static void main (String[] args){
int dias;
dias = 365;
System.out.println("Nmero de das = " +
dias);
}
}
En este cdigo se reservan 32 bits de memoria y se etiqueta esa ubicacin de
forma que el compilador entienda la variable dias, luego recibe el valor 365 y
por ltimo, se visualiza en pantalla. Esta es la salida que se muestra en
pantalla:
Nmero de das = 365;
Como puede ver, hemos creado una variable para almacenar un valor y luego
visualizarlo. Una variable puede ser inicializada en el momento de declararla,
por ejemplo:
public class MiClase{
public static void main (String[] args){
int das = 365;
System.out.println("Nmero de das = " +
dias);
}
}
Los tipos primitivos para la declaracin de variables son:

Enteros: Estos tipos son byte, short, int y long, que guardan el signo y el
valor.

Nmeros en punto flotante: Estos tipos son float y double; almacenan


nmeros flotantes con signo.

Caracteres: char, en estas se guardan caracteres tanto alfabticos como


numricos.

Booleano: en este tipo se guardan nicamente dos valores: verdadero


(true) o falso (false).

boolean
byte
char

Almacenamiento en
bytes
1
1
2

double

Tipo de Variable

Instituto Tecnolgico de Morelia.

Rango de Valores
Verdadero, Falso
-128 a 127
N/A
-1.79769313486232E308 a
-94065645841247E-324

Pgina 33

ITM Unidad I Fundamentos del Lenguaje

Float

int

Long

Short

para valores negativos y


4.94065645841247E-324 a
1.79769313486232E308
para valores positivos.
-3.402823E38 a 1.401298E-45 para valores
negativos y 1.401298E-45
a 3.402823E38 para
valores positivos.
-2,147,483,648 a
2,147,483,647
9,223,372,036,854,775,808
a
9,223,372,036,854,775,807
-32,768 a 32,767

2
Tabla1.7 Tipos de variables.

La tabla 1.7 muestra los tipos de variables.


Strings
Como se mencion anteriormente, no existe un tipo de dato String, se trata de
una clase con mtodos y constructores. Entonces, la declaracin de una
variable String depender del constructor que se desea utilizar. La manera ms
sencilla es String nombre; y posteriormente asignas cualquier valor que
queramos. Sin embargo si usted tiene la necesidad de crearlas de una manera
distinta, aqu se muestran algunos de sus constructores.
Constructor
String ()

String (byte[] bytes)

String (byte[] bytes, int offset, int


length)

String (byte[] bytes bytes, int offset,


enc)

String (byte[] bytes, String enc)

Instituto Tecnolgico de Morelia.

Descripcin
Inicializa un nuevo objeto String para
gestionar una secuencia de caracteres
veca.
Construye un nuevo objeto String
convirtiendo el arreglo de bytes
mediante la codificacin de caracteres
que tiene la plataforma por defecto.
Construye un nuevo objeto String
convirtiendo el subarreglo de bytes
usando la codificacin de caracteres
por defecto.
Construye un Nuevo objeto String
convirtiendo el entero length y el
subarreglo de caracteres utilizando la
codificacin
de
caracteres
especificada.
Construye un nuevo objeto String
convirtiendo el arreglo de bytes
mediante la codificacin de caracteres

Pgina 34

ITM Unidad I Fundamentos del Lenguaje

String (char[] value)

que se especifica.
Aloca un nuevo objeto String para
representar
la
secuencia
de
caracteres.

Tabla 1.8 Constructores de la clase String.

La tabla 1.8 muestra la lista de constructores.


Ejemplos: Distintas formas de crear e inicializar cadenas.
Esta forma ya la hemos visto.
public class MiClase{
public static void main (String [] args){
String s1 = Hola Mundo!;
.
.
.
}
}
Declaramos una cadena y la inicializamos posteriormente.
public class MiClase{
public static void main (String [] args){
String s1 = Hola Mundo!;
String s2;
s2 = Hola!;
.
.
}
}
Creamos una cadena vaca y luego le asignamos datos.
public class MiClase{
public static void main (String [] args){
String s1 = Hola Mundo!;
String s2;
s2 = Hola!;
string s3 = new String();
s3 = Hola de nuevo!;
.
}
}

Utilizamos uno de los constructores de la clase String.

Instituto Tecnolgico de Morelia.

Pgina 35

ITM Unidad I Fundamentos del Lenguaje


public class MiClase{
public static void main (String [] args){
String s1 = Hola Mundo!;
String s2;
s2 = Hola!;
string s3 = new String();
s3 = Hola de nuevo!;
String
s4
Constructor!);
.
.
.
}

new

String(Usamos

1.9 Operadores
Los operadores son un tipo de tokens que indican una evaluacin o
computacin para ser realizada en objetos o datos, y en definitiva sobre
identificadores o constantes. Adems de realizar la operacin, un operador
devuelve un valor, ya que son parte fundamental de las expresiones.
El valor y tipo que devuelve depende del operador y del tipo de sus operandos.
Por ejemplo, los operadores aritmticos devuelven un nmero como resultado
de su operacin. Los operadores realizan alguna funcin sobre uno, dos o tres
operandos.
Los operadores que requieren un operando son llamados operadores unarios.
Por ejemplo, el operador "++" es un operador unario que incrementa el valor de
su operando en una unidad.
Los operadores unarios en Java pueden utilizar tanto la notacin prefija como
la posfija.
La notacin prefija indica que el operador aparece antes que su operando.
++contador; // Notacin prefija, se evala a: contador+1
La notacin posfija indica que el operador aparece despus de su operando:
contador++ // Notacin posfija, se evala a: contador
Los operadores que requieren dos operandos se llaman operadores binarios.
Por ejemplo el operador "=" es un operador binario que asigna el valor del
operando del lado derecho al operando del lado izquierdo.

Instituto Tecnolgico de Morelia.

Pgina 36

ITM Unidad I Fundamentos del Lenguaje


Todos los operadores binarios en Java utilizan notacin infija, lo cual indica que
el operador aparece entre sus operandos.
operando1 <operador> operando2
Por ltimo, los operadores ternarios son aquellos que requieren tres operandos.
El lenguaje Java tiene el operador ternario, "?", que es una sentencia similar a
la if-else.
Este operador ternario usa notacin infija; y cada parte del operador aparece
entre operandos:
expresin ? operacin1 : operacin2
Los operadores de Java se pueden dividir en las siguientes cuatro categoras:
Aritmticos.

De comparacin y condicionales.

A nivel de bits y lgicos.

De asignacin.

Operadores aritmticos
El lenguaje Java soporta varios operadores aritmticos para los nmeros
enteros y en punto flotante. Se incluye + (suma), - (resta), * (multiplicacin), /
(divisin), y % (mdulo, es decir, resto de una divisin entera). La tabla 1.9
muestra los operadores aritmticos.
Por ejemplo:
sumaEste + aEste; //Suma los dos enteros
divideEste % entreEste; //Calcula el resto de dividir 2
enteros
Operador
+
*
/

Uso
op1 + op2
op1 - op2
op1 * op2
op1 / op2

op1 % op2

Descripcin
Suma op1 y op2
Resta op2 de op1
Multiplica op1 por op2
Divide op1 entre op2
Calcula el resto de dividir op1 entre
op2

Tabla1.9 Operadores aritmticos binarios de Java

Instituto Tecnolgico de Morelia.

Pgina 37

ITM Unidad I Fundamentos del Lenguaje


El tipo de los datos devueltos por una operacin aritmtica depende del tipo de
sus operandos; si se suman dos enteros, se obtiene un entero. Estos
operadores se deben utilizar con operandos del mismo tipo, o si no realizar una
conversin de tipos de uno de los dos operandos al tipo del otro.
El lenguaje Java sobrecarga la definicin del operador + para incluir la
concatenacin de cadenas. El siguiente ejemplo utiliza + para concatenar la
cadena "Contados ", con el valor de la variable contador y la cadena "
caracteres.":
System.out.print("Contados" + contador + "caracteres.");
Esta operacin automticamente convierte el valor entero de contador a una
cadena de caracteres.
Los operadores + y - tienen versiones unarias que realizan las siguientes
operaciones:
Operador Uso
+

+op

-op

Descripcin
Convierte op a entero si es un byte, short o
char
Niega aritmticamente op

Tabla 1.10 Versiones unarias de los operadores "+" y "-"

El operador - realiza una negacin del nmero en complemento a 2, es decir,


cambiando de valor todos sus bits y sumando 1 al resultado final:
42 -> 00101010
-42 -> 11010110
Existen dos operadores aritmticos que funcionan como atajo de la
combinacin de otros: ++ que incrementa su operando en 1, y -- que
decrementa su operando en 1. Ambos operadores tienen una versin prefija, y
otra posfija. La utilizacin correcta es crtica en situaciones donde el valor de la
sentencia es utilizado en mitad de un clculo ms complejo, por ejemplo para
control de flujos.
Operador

Uso

++

op++

++

++op

--

op--

--

--op

Descripcin
Incrementa op en 1; se evala con valor anterior
incremento
Incrementa op en 1; se evala con valor posterior
incremento
Decrementa op en 1; se evala con valor anterior
incremento
Decrementa op en 1; se evala con valor posterior

Instituto Tecnolgico de Morelia.

al
al
al
al

Pgina 38

ITM Unidad I Fundamentos del Lenguaje


incremento
Tabla 1.11 Operaciones con "++" y "--"

Operadores de comparacin y condicionales


Un operador de comparacin compara dos valores y determina la relacin
existente entre ambos. Por ejemplo, el operador != devuelve verdadero (true)
si los dos operandos son distintos. La siguiente tabla resume los operadores de
comparacin de Java:
Operador
>
>=
<
<=
==
!=

Uso
op1 > op2
op1 >= op2
op1 < op2
op1 <= op2
op1 == op2
op1 != op2

Devuelve verdadero si
op1 es mayor que op2
op1 es mayor o igual que op2
op1 es menor que op2
op1 es menor o igual que op2
op1 y op2 son iguales
op1 y op2 son distintos

Tabla: Operadores de comparacin

Los operadores de comparacin suelen ser usados con los operadores


condicionales para construir expresiones complejas que sirvan para la toma de
decisiones. Un operador de este tipo es &&, el cual realiza la operacin
booleana and. Por ejemplo, se pueden utilizar dos operaciones diferentes de
comparacin con && para determinar si ambas relaciones son ciertas. La
siguiente lnea de cdigo utiliza esta tcnica para determinar si la variable index
de una matriz se encuentra entre dos lmites (mayor que cero y menor que la
constante NUMERO_ENTRADAS):
( 0 < index ) && ( index < NUMERO_ENTRADAS )
Se debe tener en cuenta que en algunos casos, el segundo operando de un
operador condicional puede no ser evaluado. En caso de que el primer
operando del operador && sea falso, Java no evaluar el operando de la
derecha:
(contador < NUMERO_ENTRADAS) && ( in.read() != -1 )
Si contador es mayor o igual que NUMERO_ENTRADAS, el valor de retorno de
&& puede ser determinado sin evaluar el operando de la parte derecha. En este
caso in.read no ser llamado y un carcter de la entrada estndar no ser
ledo.
Si el programador quiere que se evale la parte derecha, deber utilizar el
operador & en lugar de &&.
De la misma manera se relacionan los operadores || y | para la exclusin lgica
(OR).

Instituto Tecnolgico de Morelia.

Pgina 39

ITM Unidad I Fundamentos del Lenguaje


Java soporta cinco operadores condicionales, mostrados en la siguiente tabla:
Operador

Uso

&&

op1 && op2

&

op1 & op2

||

op1 || op2

|
!

op1 | op2
! op

Devuelve verdadero si...


op1 y op2 son ambos verdaderos, condicionalmente
evala op2
op1 y op2 son ambos verdaderos, siempre evala op1
y op2
op1 o op2 son verdaderos, condicionalmente evala
op2
op1 o op2 son verdaderos, siempre evala op1 y op2
op es falso
Tabla 1.12 Operadores condicionales

Adems Java soporta un operador ternario, el ?:, que se comporta como una
versin reducida de la sentencia if-else:
expresion ? <operacion1> : operacion2
El operador ?: evala la expresion y devuelve operacin1 si es cierta, o
devuelve operacin2 si expresion es falsa.
Operadores de bit
Un operador de bit permite realizar operaciones de bit sobre los datos. Existen
dos tipos: los que desplazan (mueven) bits, y operadores lgicos de bit.
Operadores de desplazamiento de bits
Operador
Uso
>>
op1 >> op2
<<
op1 << op2
>>>

op1 >>> op2

Operacin
Desplaza los bits de op1 a la derecha op2 veces
Desplaza los bits de op1 a la izquierda op2 veces
Desplaza los bits de op1 a la derecha op2 veces
(sin signo)

Tabla 1.13 Operadores de desplazamiento de bits

Los tres operadores de desplazamiento simplemente desplazan los bits del


operando de la parte izquierda el nmero de veces indicado por el operando de
la parte derecha. El desplazamiento ocurre en la direccin indicada por el
operador. Por ejemplo, la siguiente sentencia, desplaza los bits del entero 13 a
la derecha una posicin:
13 >> 1;
La representacin en binario del nmero 13 es 1101. El resultado de la
operacin de desplazamiento una posicin a la derecha es 110 o 6 en decimal.
Se debe tener en cuenta que el bit ms a la derecha se pierde en este caso.

Instituto Tecnolgico de Morelia.

Pgina 40

ITM Unidad I Fundamentos del Lenguaje


Un desplazamiento a la derecha una posicin es equivalente a dividir el
operando del lado izquierdo por 2, mientras que un desplazamiento a la
izquierda de una posicin equivale a multiplicar por 2, pero un desplazamiento
es ms eficiente computacionalmente hablando, que una divisin o
multiplicacin.
El desplazamiento sin signo >>> funciona de la siguiente manera:

Si se desplaza con signo el nmero -1 (1111), seguir valiendo -1, dado


que la extensin de signo sigue introduciendo unos en los bits ms
significativos.

Con el desplazamiento sin signo se consigue introducir ceros por la


izquierda, obteniendo el nmero 7 (0111).

Operadores de lgica a nivel de bits


La lgica de bits (lgica de Bool) se utiliza para modelar condiciones biestado y
trabajar con ellas (cierto/falso, true/false, 1/0). En Java hay cuatro operadores
de lgica de bits:
Operador
&
|
^
~

Uso
op1 & op2
op1 | op2
op1 ^ op2
~op2

Operacin
AND
OR
OR Exclusivo
Complemento

Tabla 1.14 Operadores de lgica a nivel de bits

El operador & realiza la operacin AND de bit. Aplica la funcin AND sobre
cada par de bits de igual peso de cada operando. La funcin AND es evaluada
a cierto si ambos operandos son ciertos. Por ejemplo vamos a aplicar la
operacin AND a los valores 12 y 13:
12 & 13
El resultado de esta operacin es 12. Por qu?. La representacin en binario
de 12 es 1100, y de 13 es 1101. La funcin AND pone el bit de resultado a uno
si los dos bits de los operandos son 1, sino, el bit de resultado es 0:
1100
& 1101
----------1100

Instituto Tecnolgico de Morelia.

Pgina 41

ITM Unidad I Fundamentos del Lenguaje


El operador | realiza la operacin OR de bit. Aplica la funcin OR sobre cada
par de bits de igual peso de cada operando. La funcin OR es evaluada a cierto
si alguno de los operandos es cierto. Entonces 12 | 13 genera el resultado 13.
El operador ^ realiza la operacin OR exclusivo de bit (XOR). Aplica la funcin
XOR sobre cada par de bits de igual peso de cada operando. La funcin XOR
es evaluada a cierto si alguno de los operandos es cierto, pero no los dos.
Entonces 12 ^ 13 genera el resultado 1.
Para finalizar, el operador de complemento invierte el valor de cada bit del
operando. Convierte el falso en cierto, y el cierto en falso. Entre otras cosas, la
manipulacin bit es til para gestionar indicadores booleanos (banderas).
Supongamos, por ejemplo, que se tienen varios indicadores booleanos en
nuestro programa, los cuales muestran el estado de varios componentes del
programa: esVisible, esArrastrable, etc... En lugar de definir una variable
booleana para cada indicador, se puede definir una nica variable para todos
ellos. Cada bit de dicha variable representar el estado vigente de uno de los
indicadores. Se debern utilizar entonces manipulaciones de bit para
establecer y leer cada indicador.
Primero, se deben preparar las constantes de cada indicador. Esos indicadores
deben ser diferentes unos de otros (en sus bits) para asegurar que el bit de
activacin no se solape con otro indicador. Despus se debe definir la variable
de banderas, cuyos bits deben de poder ser configurados segn el estado
vigente en cada indicador.
El siguiente ejemplo inicia la variable de banderas flags a 0, lo que significa que
todos los indicadores estn desactivados (ninguno de los bits es 1):
final int VISIBLE = 1;
final int ARRASTRABLE = 2;
final int SELECCIONABLE = 4;
final int MODIFICABLE = 8;
int flags = 0;

Para activar el indicador VISIBLE, se deber usar la sentencia:


flags = flags | VISIBLE;
Para comprobar la visibilidad se deber usar la sentencia:
if ( (flags & VISIBLE) == 1 )
Operadores de asignacin
Instituto Tecnolgico de Morelia.

Pgina 42

ITM Unidad I Fundamentos del Lenguaje

El operador de asignacin bsico es el =, que se utiliza para asignar un valor a


otro. Por ejemplo:
int contador = 0; //Inicia la variable contador con 0.

Java adems proporciona varios operadores de asignacin que permiten


realizar un atajo en la escritura de cdigo. Permiten realizar operaciones
aritmticas, lgicas, de bit y de asignacin con un nico operador.
Supongamos que necesitamos sumar un nmero a una variable y almacenar el
resultado en la misma variable, como a continuacin:
i = i + 2;
Se puede abreviar esta sentencia con el operador de atajo +=, de la siguiente
manera:
i += 2;
La siguiente tabla muestra algunos de los operadores de atajo de asignacin y
sus equivalentes largos:
Operador
Uso
Equivalente a
+=
op1 += op2
op1 = op1 + op2
-=
op1 -= op2
op1 = op1 - op2
*=
op1 *= op2
op1 = op1 * op2
/=
op1 /= op2
op1 = op1 / op2
%=
op1 %= op2
op1 = op1 % op2
&=
op1 &= op2
op1 = op1 & op2
Tabla 1.15 Operadores de atajo de asignacin
Precedencia de operadores
Cuando en una sentencia aparecen varios operadores el compilador deber de
elegir en qu orden aplica los operadores. A esto se le llama precedencia.
Los operadores con mayor precedencia son evaluados antes que los
operadores con una precedencia menor.
Cuando en una sentencia aparecen operadores con la misma precedencia:

Los operadores de asignacin son evaluados de derecha a izquierda.

Los operadores binarios, (menos los de asignacin) son evaluados de


izquierda a derecha.

Instituto Tecnolgico de Morelia.

Pgina 43

ITM Unidad I Fundamentos del Lenguaje

Se puede indicar explcitamente al compilador de Java cmo se desea que se


evale la expresin con parntesis balanceados ( ). Para hacer que el cdigo
sea ms fcil de leer y mantener, es preferible ser explcito e indicar con
parntesis que operadores deben ser evaluados primero.
La siguiente tabla muestra la precedencia asignada a los operadores de Java.
Los operadores de la tabla estn listados en orden de precedencia: cuanto ms
arriba aparezca un operador, mayor es su precedencia. Los operadores en la
misma lnea tienen la misma precedencia:
Tipo de operadores
Operadores posfijos
Operadores unarios
Creacin o conversin
Multiplicacin
Suma
Desplazamiento
Comparacin
Igualdad
AND a nivel de bit
OR a nivel de bit
XOR a nivel de bit
AND lgico
OR lgico
Condicional
Asignacin

Operadores de este tipo


[ ] . (parametros) expr++ expr-++expr --expr +expr -expr ~ !
new (tipo) expr
*/%
+<< >> >>>
< > <= >= instanceof
== !=
&
^
|
&&
||
?:
= += -= *= /= %= &= ^= |= <<= >>= >>>=

Tabla1.16 Precedencia de operadores

Por ejemplo, la siguiente expresin produce un resultado


dependiendo de si se realiza la suma o divisin en primer lugar:

diferente

x + y / 100
Si no se indica explcitamente al compilador el orden en que se quiere que se
realicen las operaciones, entonces el compilador decide basndose en la
precedencia asignada a los operadores. Como el operador de divisin tiene
mayor precedencia que el operador de suma el compilador evaluar y/100
primero. As:
x + y / 100
Es equivalente a:
x + (y / 100)

Instituto Tecnolgico de Morelia.

Pgina 44

ITM Unidad I Fundamentos del Lenguaje

1.10 Sentencias
La unidad bsica de ejecucin es una sentencia, Java determina el fin de una
sentencia mediante el ;. Un bloque es un conjunto de sentencias
comprendidas entre dos llaves ({ }). Es importante remarcar que los bloques
definen el alcance de las variables y que los bloques pueden anidarse.
Como la mayora de los lenguajes de programacin Java tiene sentencias
condicionales y de ciclo (ciclo). A continuacin se presentan breves ejemplos,
cada sentencia se explica con gran detalle en el punto 1.13 Estructuras de
control.
Condicionales
if(<condicin>){
<sentencia>*
}
if(<condicin>){
<sentencia>*
}else{
<sentencia>*
}
switch(<variable>){
case<valor>:
<sentencia>*
break;
case<valor>:
<sentencia>*
break;
default:
<sentencia>*
break;
}
Ciclos o Ciclos
for(<valor_inicial>;<condicin>;<incremento>){
<sentencia>*
}
while(<condicin>){
<sentencia>*
}
do{
<sentencia>*
} while(<condicin>);
Tabla 1.17 Sentencias condicionales y de ciclo.

Como los bloques se pueden anidar no hay problemas por definir una
sentencia de control dentro de otra:

Instituto Tecnolgico de Morelia.

Pgina 45

ITM Unidad I Fundamentos del Lenguaje


Las condiciones deben ser sentencias que forzosamente devuelven un
booleano (un valor cierto o falso), por lo tanto una asignacin i=34 no es una
condicin vlida, ni el 0 es equivalente a false o el 1 a true.
break: La palabra reservada break puede utilizarse para romper la secuencia
de ejecucin dentro de los ciclos.
continue: La palabra reservada continue funciona de forma similar a break con
la diferencia que no rompe el ciclo, sino que simplemente se salta una
iteracin.

1.11 Matrices
Se define como un conjunto de datos del mismo tipo organizados en dos o ms
columnas y uno o ms renglones, es decir es un arreglo bidimensional o una
tabla. Los arreglos con dos dimensiones se utilizan a menudo para representar
tablas de valores, que constan de informacin ordenada en filas y columnas.
Para identificar un elemento especifico de una tabla, se deben especificar los
ndices. Por convencin, el primer ndice indica la fila del elemento y el
segundo, su columna. En Java los arreglos bidimensionales son arreglos de
arreglos. Como era de esperarse, se parecen y actan como los arreglos
multidimensionales.
Las matrices se derivan de los arreglos (arrays), de hecho son arreglos
multidimensionales, debido a ello dar una breve explicacin sobre ellos.
Inicializacin de arreglos
Para inicializar los arreglos unidimensionales, nicamente hay que poner los
valores entre llaves, un valor detrs de otro, separados por comas, empezando
con el primer valor del arreglo.
Ejemplo: Declaracin e inicializacin de un arreglo.
public class MiClase{
public static void main (String [] args){
double cuentas[] = {345.6, 999.0, 0, 1000.5};
cuantas[3] = 1000.5;
System.out.println("La cuenta 3 debe $" +
cuentas[3]);
}
}
Declaracin de matrices
Se pueden declarar matrices de una manera muy similar a como se declaran
los arreglos, solo se incluyen un par de corchetes adicionales. Serian arreglos
multidimensionales. De hecho, se agrega un par de corchetes adicionales por

Instituto Tecnolgico de Morelia.

Pgina 46

ITM Unidad I Fundamentos del Lenguaje


cada dimensin, por ejemplo, para un arreglo, que es de una dimensin, se
incluye un par de corchetes, para uno bidimensional, se incluirn dos pares.
Tipo nombre [][].;
Sintaxis: Declaracin y creacin de una matriz de dos filas y 100 columnas
tipo nombreMatriz [][] = new tipo [filas][columnas];
tipo [][] nombreMatriz = new tipo [filas][columnas];
Ejemplo:
double accounts [][] = new double [2][100];
Podra incluso declarar arreglos de mas dimensiones.
Ejemplo: Declaracin de un arreglo de cuatro dimensiones.
double cuentas [][][][] = new double [2] [3] [4] [5];
Usted podra declarar nicamente una matriz y crearla posteriormente.
Ejemplo:
public class MiClase{
public static void main (String [] args){
double cuentas[][]; //declaracin de la matriz
//dems sentencias
cuentas = new double[2][4];//creacin de la matriz
cuentas[0][0] = 1000.5;
System.out.println("Valor en cuentas [0][0]"+
cuentas[0][0]);
}
}
Inicializacin de matrices
Las matrices se pueden inicializar cuando se les declara, de la misma forma
que inicializaron lo arreglos; basta con poner un par de corchetes para cada
dimensin y poner los valores con los que se quiere inicializar el arreglo dentro
de los mismos.
Ejemplo:
public class MiClase{
public static void main (String [] args){

Instituto Tecnolgico de Morelia.

Pgina 47

ITM Unidad I Fundamentos del Lenguaje


double cuentas[][] = {{10.1, 14.4, 5067.88,
7.7}, {345.67, 67.8, 678.890,
43.0}};
System.out.println("Valor en cuentas [0][3]"+
cuentas[0][3]);
}
}
Creacin de matrices
Como en otros lenguajes de programacin, en Java, las matrices, son arreglos
de arreglos. Esto quiere decir que se pueden construir arreglos como se quiera;
como en el ejemplo siguiente, en el que cada fila de un arreglo de dos
dimensiones tiene un diferente nmero de elementos.
Ejemplo:
public class MiClase{
public static void main (String [] args){
double matriz[][] = new double [5][];
matriz[0] = new double [500];
matriz[1] = new double [400];
matriz[2] = new double [300];
matriz[3] = new double [50];
matriz[4] = new double [5];
matriz[0][3] = 4567.886;
System.out.println("En matriz [0][3] "+
cuentas[0][3]);
}
}

Mostrar una matriz


Mostrar una matriz en la pantalla de texto es difcil, ya que Java no dispone de
una funcin que site el cursor de texto en una posicin de la pantalla, como lo
hace la funcin gotoxy disponible en los lenguajes C/C++. La nica alternativa
que queda es mostrar los elementos de una fila unos a continuacin de los
otros separados por un tabulador, despus otra fila y as hasta mostrar todos
los elementos de la matriz.
En el siguiente ejemplo se muestra en pantalla una matriz de 2 x 3; primero se
inicializa la matriz en la lnea int [][]a ={{1,2,3},{10,20,30}};. Se separan los
elementos de una fila mediante el carcter tabulador '\t', Cuando se acaba una
fila se inserta un retorno de carro '\n' y se continua con la siguiente fila, y as
sucesivamente.

Instituto Tecnolgico de Morelia.

Pgina 48

ITM Unidad I Fundamentos del Lenguaje


public class MiClase{
public static void main (String [] args){
int[][] matriz = {{1,2,3},{10,20,30}};
for (int fila=0; fila<2; fila++){
for(int columna=0; columna<3; columna++){
System.out.println(
matriz[fila][columna] +"\t");
}
System.out.println("\n");
}
}
}
Como inicializamos la matriz con dos grupos de nmeros, estos representarn
dos columnas, y como cada grupo de nmeros contiene tres nmeros, cada
uno de ellos es una fila, recomiendo que si es confuso identificar el nmero de
filas y de columnas al inicializar una matriz al momento de su declaracin,
crela de alguna de las otras maneras explicada anteriormente.
La salida es:
1
10

2
20

3
30

1.12 Procedimientos y funciones


Funciones
Supongamos que queremos depositar todo nuestro dinero ganado como
programadores. Hay dos bancos en los que podemos llevar a cabo un depsito
y ganar algunos intereses. El primero, lo llamamos "Banco A", nos ofrecen un
inters con una tasa mensual del 1 % mas una bonificacin final del 5%. El
segundo, el "Banco B", nos ofrece una tasa del 1.5 %.
Realizamos un algoritmo para obtener el mayor beneficio. El programa
calcular el monto obtenido en un perodo de 12 meses con un clculo de
inters compuesto. Para darnos una mejor idea de lo que tenemos que hacer
elaboramos el algoritmo principal.
double monto = 10000;
double meses = 12;
for ( int n = 1; n <= meses; n++){
monto = monto + monto * inters / 100;
}
Al monto inicial le sumamos las sucesivas capitalizaciones que ganamos mes a
mes, hasta llegar a un perodo de 12 meses.

Instituto Tecnolgico de Morelia.

Pgina 49

ITM Unidad I Fundamentos del Lenguaje


Con este algoritmo probado, codificamos el programa:
public class ShowMeTheMoney{
public static void main(String args[]){
int meses = 12;
float interesBanco1 = 1f;
float bonificBanco1 = 5f;
float interesBanco2 = 1.5f;
double monto = 10000;
double montoBanco1 = monto;
double montoBanco2 = monto;
for ( int n = 1; n <= meses; n++){
montoBanco1+=montoBanco1 * interesBanco1 / 100;
}
montoBanco1 += montoBanco1 * bonificBanco1 /100;
for ( int n = 1; n <= meses; n++){
montoBanco2+=montoBanco2 * interesBanco2 / 100;
}
System.out.println("Importe final del banco1 : " +
montoBanco1);
System.out.println("Importe final del banco2 : " +
montoBanco2);
}
}
Esto ocurrir cada vez que tengamos que realizar un clculo de intereses. Si la
eleccin se extendiera a, por ejemplo, cinco bancos, tendramos que copiar el
algoritmo para cada uno de ellos. Para no tener que repetir una y otra vez lo
mismo, podemos recurrir a una tcnica muy utilizada en programacin: dividir el
cdigo en funciones.
Una funcin es un conjunto de instrucciones que ejecutan una rutina y
devuelven un resultado. El resultado puede depender de parmetros de
entrada. Una funcin se construye de la siguiente manera:
tipo_resultado
nombre_funcin
nombre_parmetro, ... ) {
sentencia1;
sentencia2;
...
sentenciaN;
return unValor;
}

(tipo_parmetro

Se debe definir el tipo de dato del resultado y el nombre que identifica a la


funcin. Adems, opcionalmente se pueden definir parmetros de entrada con
el tipo de dato y su nombre.
Una funcin permite que reutilicemos un algoritmo. En el caso de nuestro
problema bancario, podemos reutilizar el clculo de inters aplicndolo a cada
banco. Veamos cmo se construye esta funcin:
Instituto Tecnolgico de Morelia.

Pgina 50

ITM Unidad I Fundamentos del Lenguaje

double interesCompuesto(double monto, float tasa, int


perodos){
for(int n = 1; n <= perodos; n++ ){
monto += monto * tasa / 100;
}
return monto;
}
Necesitamos definir ciertos datos de entrada para ejecutar el algoritmo. Vamos
a necesitar el monto inicial, la tasa de inters y el perodo. A su vez definimos
el tipo de datos del resultado. La funcin nos devuelve el monto final, entonces
el tipo de dato es double. Para identificar a la funcin le hemos puesto el
nombre de interesCompuesto.
Para utilizar la funcin en el programa la llamamos por su nombre. Como la
funcin devuelve un resultado, tendremos que almacenarlo en una variable que
tenga un tipo de dato compatible con el resultado.
double montoBanco2 = interesCompuesto(10000 , interesBanco2, meses);
Debemos pasar los parmetros como se han definido, en el mismo orden y con
el mismo tipo de dato.
Conociendo como se arma y se invoca una funcin, estamos listos para
utilizarla en nuestro programa.
public class ShowMeTheMoney2{
static double interesCompuesto(double monto, float tasa,
int perodos){
for(int n = 1; n <= perodos; n++ ){
monto += monto * tasa / 100;
}
return monto;
}
public static void main(String args[]){
int meses = 12;
float interesBanco1 = 1f;
float bonificBanco1 = 5f;
float interesBanco2 = 1.5f;
double monto = 10000;
double montoBanco1 = monto;
double montoBanco2 = monto;
montoBanco1 = interesCompuesto( montoBanco1,
interesBanco1, meses );
montoBanco1 += montoBanco1 * bonificBanco1 /100;
montoBanco2 = interesCompuesto( montoBanco2,
interesBanco2, meses );
System.out.println("Importe final del banco1 : " +
montoBanco1);
System.out.println("Importe final del banco2 : " +
Instituto Tecnolgico de Morelia.

Pgina 51

ITM Unidad I Fundamentos del Lenguaje


montoBanco2);
}
}
Ejercicio 1.5: Cree una funcin que muestre un men que le permita decidir qu
operacin realizar. Esto de acuerdo al proyecto que se ha venido
desarrollando. De acuerdo a cada opcin, el usuario deber ingresar un
nmero o una letra que identifique cada opcin.
Procedimientos
Los procedimientos son tambin funciones programadas por el usuario. Son
muy parecidos a los mtodos, de hecho muchas personas que publican
tutoriales o guas en la red, se refieren a los procedimientos como mtodos.
Los procedimientos son invocados escribiendo el nombre del objeto, seguido
del operador punto (.), y despus el nombre del procedimiento que ofrece la
clase y que describe sus atributos y comportamientos. Como cualquier rutina
los mtodos pueden incorporar argumentos.
Declaracin de procedimientos
Sintaxis.
<modificador>*<tipo_regresado><nombre>(<argumentos>*){
<cuerpo>*
}
Los modificadores pueden ser: public, protected , prvate.
El modificador de acceso pblico indica que el procedimiento puede ser
llamado desde otro cdigo.
Un procedimiento privado indica que solo puede ser llamado por otros
mtodos dentro de la clase.
Se pueden sobrecargar los procedimientos. (Procedimientos con el
mismo nombre pero que funcionan diferente de acuerdo a los
parmetros que reciben.)

Ejemplo: crear el procedimiento setPeso, esta funcin nos servir para


asignar un valor a este atributo del objeto y otro procedimiento que nos
regrese dicho valor. (getPeso)

Instituto Tecnolgico de Morelia.

Pgina 52

ITM Unidad I Fundamentos del Lenguaje


public class Perro{
private int peso;
public int getPeso(){
return peso;
}
public void setPeso(int nuevoPeso){
if(nuevoPeso > 0){
peso = nuevoPeso;
}
}
}
Para sobrecargar un procedimiento utilizaremos lo que se conoce como
polimorfismo. Esta funcin ya fue analizada y ejemplificada en la parte 1.1.1
Objetos, de cualquier forma he aqu una breve explicacin.
Para sobrecargar un procedimiento, slo hay que definirlo ms de una vez,
especificando una nueva lista de parmetros en cada una de ellas. Cada lista
de parmetros debe ser diferente de cualquier otra de alguna forma, el nmero
de parmetros o el tipo de uno o ms de ellos.
Ejemplo: Sobrecargaremos el mtodo setPeso del ejemplo anterior.
public class Perro{
private int peso;
public int getPeso(){
return peso;
}
public void setPeso(int nuevoPeso){
if(nuevoPeso > 0){
peso = nuevoPeso;
}
}
public void setPeso(int nuevoPeso, int viejoPeso){
if(nuevoPeso > 0 && viejoPeso<100){
peso = nuevoPeso;
}
}
}
La referencia this
En ocasiones es conveniente disponer de una referencia que apunte al propio
objeto que se est manipulando. Esto se consigue con la palabra reservada
this. this es una referencia implcita que tienen todos los objetos y que apunta a
s mismo. Por ejemplo:

Instituto Tecnolgico de Morelia.

Pgina 53

ITM Unidad I Fundamentos del Lenguaje


//Se ejemplifica el uso de this
public class Perro{
private int peso;
public void setPeso(int peso){
this.peso = peso;
}
public Perro elPesoMayor(Perro nuevo){
if( peso > nuevo.peso) return this;
else return nuevo;
}
}
/*En este ejemplo se compara el valor de la
variable peso de dos objetos, lo que se regresa
es el objeto cuyo valor en peso sea mayor.*/
El mtodo elPesoMayor devuelve una referencia al perro que tiene mayor peso,
comparando los pesos del Perro nuevo que se recibe como argumento y el
propio. En caso de que el propio resulte mayor el mtodo debe devolver una
referencia a s mismo. Esto se consigue con la expresin return this.
Al ir avanzando conocer mtodos en los cuales se debe enviar o recibir como
parmetro un objeto, en todos esos casos ser de mucha utilidad la referencia
this.
Ejercicio 1.6: Realice los cambios necesarios (disear clase, procedimientos o
funciones) para agregar funcionalidad a nuestra aplicacin. Agregue por lo
menos 3 habilidades nuevas a nuestra calculadora. Por ejemplo: sacar la raz
cuadrada, elevar un nmero a una potencia, etc. Obviamente estas nuevas
opciones debern aparecer en nuestro men por lo que deber modificar
algunas de sus funciones.

1.13 Estructuras de control


Durante un programa existen acciones que se han de repetir un nmero
determinado de veces. Por ejemplo, leer 3 caracteres de un flujo de entrada in
se codificara:
in.read();
in.read();
in.read();
Este cdigo adems de poco elegante sera inviable para una repeticin de
3000 lecturas. Por eso aparecen las estructuras de control, que facilitan que
determinadas acciones se realicen varias veces, mientras que una condicin se
Instituto Tecnolgico de Morelia.

Pgina 54

ITM Unidad I Fundamentos del Lenguaje


cumpla, y en definitiva, tomar decisiones de qu hacer en funcin de las
condiciones que se den en el programa en un momento dado de su ejecucin.
Ejemplo:
int contador=0;
for ( contador=0 ; contador < 3 ; contador++ )
in.read();
Donde bastara cambiar el 3 por cualquier otro nmero para que la lectura se
repitiese ese nmero de veces.
El lenguaje Java soporta las siguientes estructuras de control:
Sentencia
Toma de decisin
Ciclo
Diversas

Clave
if-else, switch-case
for, while, do-while
break, continue, label:, return

Tabla1.18 Estructuras de control

Las sentencias condicionales: if y switch


La sentencia if - else
La sentencia if-else de Java dota a los programas de la habilidad de ejecutar
distintos conjuntos de sentencias segn algn criterio.
Sintaxis: La sintaxis de la sentencia if-else es:
if ( condicin ){
// Cdigo a ejecutar si la condicin es cierta
}
else{
//Cdigo a ejecutar si la condicin es falsa
}
La parte del else es opcional, y un bloque de cdigo puede ser simplemente la
sentencia vaca; para representar que en ese caso no se ha de ejecutar nada.
Supongamos que un programa debe realizar diferentes acciones dependiendo
de si el valor de una variable es mayor o igual a cero, este valor lo escribimos
nosotros en un campo de texto que se llama campoDeTexto. Nuestro
programa puede realizar esto usando la sentencia if - else:
Instituto Tecnolgico de Morelia.

Pgina 55

ITM Unidad I Fundamentos del Lenguaje

int
variable=Integer.parseInt(campoDeTexto.getText());
if (variable >= 0) {
//que hacer si es mayor o igual a cero
System.out.println( "Entr a >= 0 " );
}
else {
//que hacer si no es mayor o igual que cero
System.out.println( "Entr a <0 " );
}

Se pueden anidar expresiones if-else, para poder implementar aquellos casos


con mltiples acciones. Esto es lo que se suele denominar como sentencias
else if.
Por ejemplo, supongamos que se desea escribir un programa que clasifique
segn el contenido de una variable valor, asigne una letra a una variable
clasificacin. A para un valor del 91-100, B de 81-90, C para 71-80 y F (Mtodo
de calificar de EUA) si no es ninguno de los anteriores:
int valor;
//leer valor
char clasificacion;
if (valor > 90){
clasificacion='A';
}
else
if (valor > 80){
clasificacion='B';
}
else
if (valor > 70){
clasificacion='C';
}
else{
clasificacion='F';
}
Se pueden escribir los if en las mismas lneas que los else. Este sistema de
programacin (else if) no es demasiado recomendable cuando crece la
cantidad de condiciones, por ello el lenguaje Java incluye la sentencia switch,
que veremos a continuacin, para dirigir el flujo de control de variables con
mltiples valores.
Instituto Tecnolgico de Morelia.

Pgina 56

ITM Unidad I Fundamentos del Lenguaje

La sentencia switch
Mediante la sentencia switch se puede seleccionar entre varias sentencias
segn el valor de cierta expresin.
Sintaxis: La forma general de switch es la siguiente
switch ( <expresionMultivalor> ) {
case valor1 : conjuntoDeSentencias; break;
case valor2 : conjuntoDeSentencias; break;
case valor3: conjuntoDeSentencias; break;
default: conjuntoDeSentencias; break;
}

La sentencia switch evala la expresinMultivalor y ejecuta el


conjuntoDeSentencias que aparece junto a la clusula case cuyo valor
corresponda con el de la expresinMultivalor.
Cada sentencia case debe ser nica y el valor que evala debe ser del mismo
tipo que el devuelto por la expresinMultivalor de la sentencia switch.
Las sentencias break que aparecen despus del conjuntoDeSentencias
provocan que el control salga del switch y contine con la siguiente instruccin
al switch. Las sentencias break son necesarias porque sin ellas se ejecutaran
secuencialmente las sentencias case siguientes. Existen ciertas situaciones en
las que se desea ejecutar secuencialmente algunas o todas las sentencias
case, para lo que habr que eliminar algunos break.
Finalmente, se puede usar la sentencia default para manejar los valores que no
son explcitamente contemplados por alguna de las sentencias case. Su uso es
altamente recomendado.
Por ejemplo, supongamos un programa con una variable entera meses cuyo
valor indica el mes actual, y se desea imprimir el nombre del mes en que
estemos. Se puede utilizar la sentencia switch para realizar esta operacin:
int mes;
//asignar un valor a mes
switch ( mes ){
case 1: System.out.println( "Enero" ); break;
case 2: System.out.println( "Febrero" ); break;
case 3: System.out.println( "Marzo" ); break;
//Dems meses

Instituto Tecnolgico de Morelia.

Pgina 57

ITM Unidad I Fundamentos del Lenguaje

case 12: System.out.println( "Diciembre" ); break;


default: System.out.println( "Mes no valido" ); break;
}
El decidir si usar la sentencia if o switch depende del criterio de cada caso. Se
puede decidir cul usar basndonos en la legibilidad, aunque se recomienda
utilizar switch para sentencias con ms de tres o cuatro posibilidades.
Ejercicio 1.7: Utilice las herramientas anteriores para crear dos maneras
distintas de mostrar el men de nuestra aplicacin. Al inicio, el usuario deber
elegir uno de los dos (Uno que use if else y el otro switch)
Sentencias de iteracin o ciclos: for, do, while
Ciclo while
El ciclo while es el ciclo bsico de iteracin. Sirve para realizar una accin
sucesivamente mientras se cumpla una determinada condicin.
La forma general del ciclo while es la siguiente:
while ( expresinBooleana )
{
sentencias;
};
Las sentencias se ejecutan mientras la expresinBooleana tenga un valor de
verdadero.
Se utiliza, por ejemplo para estar en un ciclo del que no hay que salir mientras
que no se cumpla una determinada condicin. Por ejemplo, multiplicar un
nmero por 2 hasta que sea mayor que 100:
int i = 1;
while ( i <= 100 )
{
i = i * 2;
}
Ciclo do-while
El ciclo do-while es similar al ciclo while, pero en el ciclo while la expresin se
evala al principio del ciclo y en el ciclo do-while la evaluacin se realiza al
final, es decir hasta que se cumpla una determinada condicin.
La forma general del ciclo do-while es la siguiente:

Instituto Tecnolgico de Morelia.

Pgina 58

ITM Unidad I Fundamentos del Lenguaje

do {
sentencias;
} while ( expresinBooleana );
La sentencia do-while debe utilizarse cuando el ciclo deba ser ejecutado por lo
menos una vez.
Por ejemplo, cuando se lee informacin de un archivo, se sabe que siempre se
debe leer por lo menos un carcter:
int c;
do {
c = System.in.read( );
// Sentencias para tratar el carcter c
} while ( c != -1 ); // No se puede leer ms
(Fin del archivo)
Ciclo for
La forma general de la sentencia for es la siguiente:
for ( iniciacin ; terminacin ; incremento ){
sentencias;
}
La iniciacin es una sentencia que se ejecuta una vez antes de entrar en el
ciclo.
La terminacin es una expresin que determina cundo se debe terminar el
ciclo. Esta expresin se evala al final de cada iteracin del ciclo. Cuando la
expresin se evala a falso, el ciclo termina.
El incremento es una expresin que es invocada en cada iteracin del ciclo. En
realidad puede ser una accin cualquiera, aunque se suele utilizar para
incrementar una variable contador:
for ( i = 0 ; i < 10 ; i++ )
Algunos (o todos) estos componentes pueden omitirse, pero los puntos y coma
siempre deben aparecer (aunque sea sin nada entre s).
Se debe utilizar el ciclo for cuando se conozcan las restricciones del ciclo (su
instruccin de iniciacin, criterio de terminacin e instruccin de incremento).
Por ejemplo, los ciclos for son utilizados comnmente para iterar sobre los
elementos de una matriz, o los caracteres de una cadena:
Instituto Tecnolgico de Morelia.

Pgina 59

ITM Unidad I Fundamentos del Lenguaje

// cad es una cadena (String)


for ( int i = 0; i < cad.length() ; i++){
// hacer algo con el elemento i-simo de cad
}
Un ciclo for, normalmente involucra a tres acciones en su ejecucin:
o Inicializacin de la variable de control (clausula inicio)
o

Comprobacin del valor de la variable de control en una expresin


condicional (clausula test)

Actualizacin de la variable de control (clausula incremento)

La clusula de inicio y la clusula de incremento pueden estar compuestas por


varias expresiones separadas mediante el operador coma (,).
for ( a=0,b=0; a < 7; a++,b+=2 )
El operador coma garantiza que el operando de su izquierda se ejecutar antes
que el operando de su derecha. Las expresiones de la clusula de inicio se
ejecutan una sola vez, cuando arranca el ciclo. Cualquier expresin legal se
puede emplear en esta clusula, aunque generalmente se utiliza para
inicializacin. Las variables se pueden declarar e inicializar al mismo tiempo en
esta sentencia:
for( int cnt=0; cnt < 2; cnt++ )
La segunda clusula, consiste en una expresin que debe evaluarse a false
para que el ciclo concluya. En Java, esta segunda expresin debe ser de tipo
booleano, de tal modo que se pueden utilizar nicamente expresiones
relacionales o expresiones relacionales y condicionales. El valor de esta
segunda clusula es comprobado cuando la sentencia comienza la ejecucin y
en cada una de las iteraciones posteriores.
Sentencias de salto: break, continue y return
Sentencia break
La sentencia break provoca que el flujo de control salte a la sentencia
inmediatamente posterior al bloque en curso. Ya se ha visto anteriormente la
sentencia break dentro de la sentencia switch.
Se puede etiquetar una sentencia poniendo un identificador Java vlido
seguido por dos puntos antes de la sentencia:
nombreSentencia: sentenciaEtiquetada
Instituto Tecnolgico de Morelia.

Pgina 60

ITM Unidad I Fundamentos del Lenguaje

La sentencia break se utiliza para salir de una sentencia etiquetada, llevando el


flujo del programa al final de la sentencia de programa que indique:
break nombreSentencia2;
Un ejemplo de esto sera el programa:
void gotoBreak() {
System.out.println("Ejemplo de break como 'goto' ");
a:

for ( int contadorUno=1; contadorUno <10; contadorUno++ ){


System.out.print("contadorUno ="+ contadorUno);
for( int contadorDos =1; contadorDos <10;
contadorDos++ ){
if (contadorDos ==5 )
break a; //Sale de los dos ciclos!!!
System.out.print("contadorDos ="+
contadorDos);
}
System.out.print("No llega aqu");
}

}
Al interpretar break a, no solo se rompe la ejecucin del ciclo interior (el de
contadorDos), sino que se salta al final del ciclo contadorUno, obtenindose:
contadorUno = 1 contadorDos = 1 contadorDos = 2 ontadorDos = 3
contadorDos = 4
No se aconseja esta forma de programacin, basada en goto, y con saltos de
flujo no controlados.
Sentencia continue
Del mismo modo que en un ciclo se puede desear romper la iteracin, tambin
se puede desear continuar con el ciclo, pero dejando pasar una determinada
iteracin.
Se puede usar la sentencia continue dentro de los ciclos para saltar a otra
sentencia, aunque no puede ser llamada fuera de un ciclo o ciclo.
Tras la invocacin a una sentencia continue se transfiere el control a la
condicin de terminacin del ciclo, que vuelve a ser evaluada en ese momento,
y el ciclo contina o no dependiendo del resultado de la evaluacin. En los
ciclos for adems en ese momento se ejecuta la clusula de incremento (antes
de la evaluacin). Por ejemplo el siguiente fragmento de cdigo imprime los
nmeros del 0 al 9 no divisibles entre 3:

Instituto Tecnolgico de Morelia.

Pgina 61

ITM Unidad I Fundamentos del Lenguaje

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


{
if ( ( cont % 3 ) == 0 )
continue;
System.out.print( " " + cont );
}
Del mismo modo que break, en las sentencias continue se puede indicar una
etiqueta de bloque al que hace referencia. Con ello podemos referirnos a un
bloque superior, si estamos en ciclos anidados. Si dicha etiqueta no es
indicada, se presupone que nos referimos al ciclo en el que la sentencia
continue aparece.
Por ejemplo, el siguiente fragmento de cdigo:
void gotoContinue( ) {
f: for ( int cont1=1; cont1 <5; cont1 ++ ) {
for ( int cont2 =1; cont2 <5; cont2 ++ ) {
if (cont2 > cont1 ) {
System.out.println(" ");
continue f;
}
System.out.print( " " + (cont1 * cont2) );
}
}
}
En este cdigo la sentencia continue termina el ciclo de cont2 y contina el flujo
en la siguiente iteracin de cont1. La salida es:
1
24
369
4 8 12 16
No se aconseja esta forma de programacin, basada en goto, y con saltos de
flujo no controlados.
Sentencia return
La ltima de las sentencias de salto es la sentencia return, que puede usar
para salir de la funcin, procedimiento o mtodo en curso y retornar a la
sentencia que realiz la llamada.
Para devolver un valor, simplemente se debe poner el valor (o una expresin
que calcule el valor) a continuacin de la palabra return. El valor devuelto por
return debe coincidir con el tipo declarado como valor de retorno del mtodo.

Instituto Tecnolgico de Morelia.

Pgina 62

ITM Unidad I Fundamentos del Lenguaje


Cuando un mtodo se declara como void se debe usar la forma de return sin
indicarle ningn valor. Ejemplo:
int contador;
boolean condicion;
int devuelveContadorIncrementado(){
return ++contador;
}
void metodoReturn(){
//Sentencias
if ( condicion == true )
return;
//Ms sentencias a ejecutar si condicin = true
}
Ejercicio 1.8: Hasta el momento, las herramientas que hemos utilizado
permiten que nuestra aplicacin se utilice una vez, eligiendo una de las
opciones y termine su ejecucin. Utilice ciclos (ciclos) para lograr que la
aplicacin se ejecute de manera indefinida hasta que se le presente la opcin
salir. Agregue la opcin salir.

1.14 Controles bsicos y sus propiedades.


Una Interfaz grfica de Usuario (GUI) presenta un mecanismo amigable al
usuario para interactuar con un programa.
Las GUI se crean a partir de componentes de la GUI (tambin conocidos como
controles [accesorios de ventana]). Un componente de la GUI es un objeto con
el cual interacta el usuario mediante el ratn, el teclado u otra forma de
entrada. Los componentes de la GUI en Java se encuentran en java.awt o en
javax.swing (existe una diferencia entre los .swing y los .awt pero se analizar a
profundidad posteriormente).
Los componentes de GUI son parte de la JFC6 (Java Foundation Classes), las
bibliotecas de Java para el desarrollo de GUIs para mltiples plataformas.
El Swing es una extensin de AWT as que a los mtodos o clases se les
antepuso la J para saber que era de Swing
AWT
Button
Label

SWING
JButton
JLabel

A continuacin, presentar por medio de ejemplos la manera como se crean


aplicaciones con controladores bsicos. Cabe mencionar que lo que est a
6

Java Foundation Classes; Clases de la fundacin java.

Instituto Tecnolgico de Morelia.

Pgina 63

ITM Unidad I Fundamentos del Lenguaje


punto de aprender, es hecho por NetBeans automticamente, de cualquier
manera, usted puede necesitar modificar el cdigo por lo que ser mejor
conocer su estructura bsica.
Etiquetas
// Nombre del archivo: PruebaEtiqueta.java
// Demostracin de la clase JLabel.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class PruebaEtiqueta extends JFrame {
private JLabel etiqueta1;
// crearemos la etiqueta en el constructor
public PruebaEtiqueta()
{
super( "Prueba de JLabel" );
//este texto sale en la ventana
//As se crea la ventana.
Container contenedor = getContentPane();
//Lnea anterior: Se crea el contenedor
contenedor.setLayout( new FlowLayout() );
//Lnea anterior: Forma de organizar los elementos.
// constructor de JLabel con un argumento cadena
etiqueta1 = new JLabel( "Etiqueta con texto" );
//este es el texto de la etiqueta
etiqueta1.setToolTipText( "Esta es la etiqueta1" );
//esto sale si dejas el cursor sobre ella.
contenedor.add( etiqueta1 );
//le agregamos al contenedor la etiqueta y ya est.
setSize( 275, 170 );
setVisible( true );
} // fin del constructor
public static void main( String args[] )
{
PruebaEtiqueta aplicacion = new PruebaEtiqueta();
aplicacion.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE );
}

Instituto Tecnolgico de Morelia.

Pgina 64

ITM Unidad I Fundamentos del Lenguaje


} // fin de la clase PruebaEtiqueta
La salida se muestra en la figura 1.15:

Figura 1.15 Ejemplo de una etiqueta.

Como se puede observar, el cdigo en si es muy autodocumentado, de ah los


estndares en los nombres de variables y clases. Con los comentarios la
comprensin del cdigo se incrementa an ms aunque no se recomienda
inundar tanto el cdigo con comentarios.
Campos de texto
En el ejemplo siguiente, se crean varios tipos de campos de texto, normales,
para passwords, editables, no editables, etc.
// Nombre del Archivo: PruebaCampoTexto.java
// Demostracin de la clase JTextField.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class PruebaCampoTexto extends JFrame {
private JTextField campoTexto1, campoTexto2;
private JPasswordField campoContrasenia;
// configurar GUI
public PruebaCampoTexto()
{
super( "Prueba de JTextField y JPasswordField" );
Container contenedor = getContentPane();
contenedor.setLayout( new FlowLayout() );
// crear campo de texto con tamao predeterminado
campoTexto1 = new JTextField( 10 );
contenedor.add( campoTexto1 );
// crear campo de texto con texto predeterminado
campoTexto2 = new JTextField( "Escriba el texto aqu" );
contenedor.add( campoTexto2 );
// crear campo de contrasea con texto
// predeterminado, se vern asteriscos
campoContrasenia = new JPasswordField( "Texto oculto" );

Instituto Tecnolgico de Morelia.

Pgina 65

ITM Unidad I Fundamentos del Lenguaje


contenedor.add( campoContrasenia );
// registrar manejadores de eventos
ManejadorCampoTexto manejador =
new ManejadorCampoTexto();
campoTexto1.addActionListener( manejador );
campoTexto2.addActionListener( manejador );
campoContrasenia.addActionListener( manejador );
setSize( 325, 100 );
setVisible( true );
} // fin del constructor de PruebaCampoTexto
public static void main( String args[] )
{
PruebaCampoTexto aplicacion = new PruebaCampoTexto();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE
);
}
//clase interna privada para el manejo de eventos,
//en este caso se usa para escuchar al teclado.
//Para que lo que escribamos se muestre en ese campo.
private class ManejadorCampoTexto implements ActionListener
{
// procesar eventos de campo de texto
public void actionPerformed( ActionEvent evento )
{
String cadena = "";
// el usuario oprimi Intro en objeto JTextField campoTexto1
if ( evento.getSource() == campoTexto1 )
cadena = "campoTexto1: " +
evento.getActionCommand();
// el usuario oprimi Intro en objeto JTextField campoTexto2
else if ( evento.getSource() == campoTexto2 )
cadena = "campoTexto2: " +
evento.getActionCommand();
// el usuario oprimi Intro en objeto JTextField
campoContrasenia
else if ( evento.getSource() == campoContrasenia ) {
cadena = "campoContrasenia: " +
new String( campoContrasenia.getPassword() );
}
JOptionPane.showMessageDialog( null, cadena );
} // fin del mtodo actionPerformed
} // fin de la clase interna privada ManejadorCampoTexto

Instituto Tecnolgico de Morelia.

Pgina 66

ITM Unidad I Fundamentos del Lenguaje

} // fin de la clase PruebaCampoTexto

Debido al tamao que tiene el cdigo de este ejemplo por s solo, se omitieron
comentarios de instrucciones que ya fueron explicadas anteriormente.

JTextArea
En el siguiente ejemplo, se utilizan objetos JTextArea. El ejemplo consiste
enmostrar como copiar texto seleccionado de un rea de texto a otra, usando
mtodos de la clase JTextArea.
package jtextarea_ej;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Main extends JFrame
{
private JTextArea areaTexto1, areaTexto2;
private JButton botonCopiar;
// configurar Interfaz grafica
public Main() {
super( "Ejemplo del uso de JTextArea" );
Box cuadro = Box.createHorizontalBox();
//Creamos la ventana
String cadena = "sta es una cadena de"+
"\ndemostracin para\nilustrar cmo copiar"+
"texto\nde un rea de texto a \n" +
"otra, utilizando un\nevento externo";
// establecer areaTexto1
areaTexto1 = new JTextArea( cadena, 10, 15 );
cuadro.add( new JScrollPane( areaTexto1 ) );
// Creamos el botn Copiar y le asignamos el
// ActionListener para el evento.
botonCopiar = new JButton( "Copiar" ); //Lo creamos
cuadro.add( botonCopiar ); //Le ponemos texto
botonCopiar.addActionListener(
new ActionListener() {

// clase interna annima

// Creamos un mtodo que copie el texto seleccionado


// de un campo a otro
//cuando detecte el evento sobre el botn.

Instituto Tecnolgico de Morelia.

Pgina 67

ITM Unidad I Fundamentos del Lenguaje


public void actionPerformed( ActionEvent evento ){
areaTexto2.append(
areaTexto1.getSelectedText()
);
}
} // fin de la clase interna annima
); // fin de la llamada a addActionListener
// establecer areaTexto2
areaTexto2 = new JTextArea( 10, 15 );
areaTexto2.setEditable( false );
cuadro.add( new JScrollPane( areaTexto2 ) );
// agregar cuadro al panel de contenido
Container contenedor = getContentPane();
contenedor.add( cuadro );
// colocar en in BorderLayout.CENTER
setSize( 425, 200 );
setVisible( true );
} // fin del constructor de Main (no se onfunda por el
public static void main( String args[] ){
Main aplicacion = new Main();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE
);
}
} // fin de la clase

JScrollPane
Esto es un ejemplo de cmo usar el JScrollPane. Para ello vamos a poner una
imagen dentro de un JLabel y esta a su vez dentro de un JScrollPane. Todo
ello dentro de un JFrame para visualizarlo.
El JFrame saldr con el tamao necesario para ver la imagen completa (la
lnea que dice ventana.pack() hace eso). Para que aparezcan las barras de
scroll hay que redimensionar la ventana, hacindola ms pequea que la
imagen. Tambin, en el cdigo, se podra usar el mtodo:
setVerticalScrollBarPolicy (JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

De JScrollPane para obligar a que salga siempre la barra vertical. Hay un mtodo
similar para la horizontal.
package pruebajscrollpane;
import javax.swing.*;
public class PruebaJScrollPane {

Instituto Tecnolgico de Morelia.

Pgina 68

ITM Unidad I Fundamentos del Lenguaje

/** Crea una instancia de PruebaJScrollPane */


public PruebaJScrollPane() {
// La ventana
JFrame ventana = new JFrame("Imagen");
// El panel de scroll
JScrollPane scroll = new JScrollPane();
// La etiqueta.
JLabel etiqueta = new JLabel();
// Se carga la imagen, con path absoluto para evitar
// problemas y debe ser un gif.
Icon imagen = new ImageIcon ("E:/ angelodemonio.gif);
// Se mete la imagen en el label
etiqueta.setIcon (imagen);
// Se mete el scroll en la ventana
ventana.getContentPane().add(scroll);
// Se mete el label en el scroll
scroll.setViewportView(etiqueta);
// Y se visualiza todo.
ventana.pack();
ventana.setVisible(true);
}
/**
* Programa principal. Instancia un PruebaJScrollPane
*/
public static void main(String[] args) {
new PruebaJScrollPane();
}
}

Instituto Tecnolgico de Morelia.

Pgina 69

ITM Unidad I Fundamentos del Lenguaje

Figura 1.16 Ejemplo de ScrollBar no a la vista.

Si la imagen no es .gif, no funciona. Para que aparezcan los scrolls debe hacer
la ventana ms pequea que la imagen, como se muestra a continuacin. Si
desea que aparezcan sin tener que modificar la imagen utilice el mtodo que se
mencion anteriormente.

Figura 1.17 Ejemplo de ScrollBar a la vista.

Instituto Tecnolgico de Morelia.

Pgina 70

ITM Unidad I Fundamentos del Lenguaje


EJERCICIO PROPUESTOS

1.1 En qu consiste la programacin orientada a eventos?


1.2 Defina que es un objeto, un evento, un mtodo y sus propiedades.
1.3 Qu es un entorno integrado de desarrollo?
1.4 Para qu sirven los comentarios dentro del cdigo de una aplicacin?
1.5 Qu tipos de comentarios existen?
1.6 Qu es una estructura de control?
1.7 Investigar la clase Exception de Java. Mencione sus mtodos ms
importantes.
1.8 Disee las clases que seran necesarias para crear un sistema de
inventarios para una tienda de ropa. A la tienda le interesa llevar un control
sobre sus empleados, sus productos, sus clientes y las ventas realizadas para
llevar un control contable, no es necesario programarlas.
1.9 Disee una clase llamada Factorial, su finalidad ser calcular el factorial de
un nmero, este nmero deber ser solicitado por el programa y el resultado
deber ser comunicado al usuario. Utilice una funcin recursiva para lograrlo.
Ejemplo:
public class RecursivaApp{
public static void main(String[] args){
System.out.println("Factorial de 5 "+factorial(5));
}
static long factorial(int n){
//funcin recursiva
//...
}
}

Variaciones:

Instituto Tecnolgico de Morelia.

Pgina 71

ITM Unidad I Fundamentos del Lenguaje


 Posteriormente utilice la herencia para crear una clase que calcule el
factorial de 2 nmeros dados (obviamente por separado).
 Utilice tambin el polimorfismo para que dependiendo de si se le enva 1
o 2 parmetros realice los clculos de cada uno.
1.10 Crear una clase en java que permita resolver ecuaciones de segundo
grado (forma: ax2 + bx + c = 0). Si en los resultados de una ecuacin dada
existe una raz compleja (raz de nmero negativo) deber mostrarse la
expresin que la represente.
1.11 Crear una clase que contenga un arreglo de nmeros enteros y cuyas
funciones miembro realicen las siguientes funciones:
 Encontrar el valor mayor.
 Encontrar el valor ms pequeo del arreglo.
 Calcular un promedio de los valores.
 Ordenar los numero del arreglo de mayor a menor.
Los resultados debern ser mostrados al usuario.
Variaciones:
 Crear una clase que pida n valores enteros para llenar un arreglo.
Posteriormente crear 4 clases que hereden de la anterior para utilizar su
mtodo de creacin del arreglo y realicen las 4 operaciones descritas.
1.12 Crear una clase que contenga las siguientes funciones:
 Calcular y mostrar el valor absoluto de un nmero entero.
 Determinar si un nmero dado por el usuario es primo o no.
Variacin:
 Utilizar el polimorfismo para lograr que una funcin realice las
operaciones anteriores dependiendo de si recibe un nmero entero
(calcular valor absoluto) o un numero entero y un carcter (determinar si
el valor dado es primo)
1.13 Llenar un arreglo de caracteres de n elementos y determinar:
 Cuntas letras maysculas existen.
 Cuntas letras minsculas existen.
 Cuntas vocales.

Instituto Tecnolgico de Morelia.

Pgina 72

ITM Unidad I Fundamentos del Lenguaje


Los caracteres que no entren en ninguna de estas clasificaciones debern
ser ignoradas y llenar el arreglo nicamente con letras maysculas y
minsculas.
1.14 Crear una clase que contenga un mtodo que liste los divisores de un
nmero dado.
1.15 Dada las siguientes variables:
int a = 8 , b = 3;
double suma = 10.241;
char letra = R;

Indique los resultados que imprimen las siguientes instrucciones:


 System.out.println(Este es el resultado de + a*a);
 System.out.println(a+ + 3 vale + (a+3) );
 System.out.println(Creo que voy a + letra+eprobar esta materia =(
!!!);
 System.out.println(letra);
 System.out.println(Este es el resultado de + a/suma);
 System.out.println(Este es el resultado de + b*suma);
 System.out.println(Este es el resultado de + b-suma);
1.16 Disear una clase que pida un nmero n al usuario y muestre los primeros
n nmeros de la serie fibonacci (Investigue como se calcula la serie fibonacci).

Instituto Tecnolgico de Morelia.

Pgina 73

ITM Unidad I Fundamentos del Lenguaje


PROYECTOS INTEGRLES.
Crear un proyecto en NetBeans como el que se desarrollo a lo largo de la
Unidad I. La funcionalidad ser la siguiente:
Proyecto 1:

Calcular las reas de distintas figuras geomtricas. Por ejemplo:


tringulos, rectngulos, etc.

Disee las clases necesarias, implemente herencia y polimorfismo.

Programe lo necesario para crear un men con las opciones


correspondientes.

Utilice objetos grficos como JOptionPane para ingresar los datos con
los que desea trabajar.

Proyecto 2:

Crear una agenda en memoria manejando arreglos para almacenar la


informacin. (Nombre, Telfono, Mail, Direccin)

Crear un men para la aplicacin que permita agregar a una nueva


persona, despus de ello, guardar su informacin personal. Utilice al
manejo de arreglos para almacenar la informacin como usted desee.
(Si conoce el manejo de listas de objetos ser ms eficiente).

El sistema deber ser capaz de realizar altas, bajas, modificaciones y


consultas de la informacin que se haya almacenado en dichos arreglos
o listas. Y el men obviamente deber contener dichas opciones.

Proyecto 3:

Desarrolle una aplicacin que realice operaciones con matrices


cuadradas.

Suma, resta y multiplicacin, sern las operaciones que se realicen. El


usuario deber especificar el tamao de las matrices. Posteriormente se

Instituto Tecnolgico de Morelia.

Pgina 74

ITM Unidad I Fundamentos del Lenguaje


llenarn con valores aleatorios de 1 a 9 y se presentaran en consola al
usuario.

Deber existir la opcin de generar matrices nuevas.

Por ltimo, el usuario especificar que operacin desea realizar con


ellas. Y se le presentarn los resultados.

Utilice arreglos bidimensionales, herencia, polimorfismo.

Instituto Tecnolgico de Morelia.

Pgina 75

Unidad 2. Controles, Eventos,


Mtodos y Componentes.
Aplicaciones grficas.

ITM Unidad II Controles, Eventos, Mtodos y Componentes

2.1 Controles Estndar.


Al hablar de controles estndar en NetBeans, hacemos referencia a los
botones, campos de texto, etiquetas y todas esas herramientas que ms
comnmente utilizamos en nuestras aplicaciones. A continuacin se describe el
proceso mediante el cual se crean o se modifican dichos controles.
Para ejemplificar todo el proceso, iremos desarrollando una aplicacin de
escritorio en la cual incorporaremos los controles estndar y daremos alguna
funcionalidad para conocer mejor su funcionamiento.
Primero crearemos una aplicacin de escritorio, para ello hay que crear un
proyecto en NetBeans de tipo Java Desktop Application. La manera de crear un
proyecto ya se explic anteriormente, debemos ir al men File (Archivo) y a
continuacin en New Project (Nuevo Proyecto). Podr seleccionar entre los
distintos tipos de proyectos, desde aplicaciones de consola, pasando por
aplicaciones de escritorio, hasta aplicaciones para celulares o pginas web, en
este caso debemos seleccionar la categora Java y el tipo de proyecto
mencionado y presionar Next.

Figura 2.1 Ventana Nuevo Proyecto

Aparece la ventana de Nombre y Localizacin, esto se refiere al nombre que


tendr nuestra aplicacin y el lugar donde sern guardados los archivos que se
generen.

Instituto Tecnolgico de Morelia.

Pgina 77

ITM Unidad II Controles, Eventos, Mtodos y Componentes

Figura 2.2 Ventana de configuracion de proyecto.

Especificamos un nombre, en este caso AplicacionDeEscritorio. Este ser el


nombre de nuestra clase principal. Como se explic anteriormente, dentro de
nuestro programa debe existir el mtodo main. NetBeans lo generar
automticamente.
Damos clic en Finish para que se cree el proyecto y a continuacin podremos
ver nuestra rea de trabajo con todas las herramientas necesarias.

Figura 2.3 rea de trabajo de NetBeans

Habr ocasiones en la que no podr modificar el cdigo generado


automticamente debido a puede provocar un mal funcionamiento.
Damos clic sobre el botn de correr proyecto o presionamos f6 y veremos que
sucede.
Instituto Tecnolgico de Morelia.

Pgina 78

ITM Unidad II Controles, Eventos, Mtodos y Componentes

Figura 2.4 Aplicacin de escritorio vaca. (Esto es lo que se muestra.)

Como puede observar, por default tenemos ya una pestaa de Archivo File y
una de ayuda Help, esto es debido a que es el template o esqueleto de
aplicacin de escritorio por default de NetBeans, tambin se tienen los conos
para ampliar la ventana, minimizarla o cerrarla. Si lo deseamos podremos
remover o cambiar lo que sea.
Una vez que tenemos nuestra aplicacin de escritorio podremos crear controles
y agregarlos a la misma de una manera tan sencilla como arrastrarlos al lugar
donde los necesitemos.
Para eso, tenemos la ventana del lado derecho de la pantalla con la leyenda
Palette, en ella podremos localizar los componentes comunes que
encontramos en una aplicacin.

Figura 2.5 Paleta de controles.

Botones.
Los botones proporcionan al usuario una forma rpida de iniciar alguna accin.
Hay que hacer clic sobre ellos. A los botones se les puede dar una inscripcin,
Instituto Tecnolgico de Morelia.

Pgina 79

ITM Unidad II Controles, Eventos, Mtodos y Componentes


como Presineme!. Cuando el usuario hace clic sobre un botn, el cdigo
recibe una notificacin.
Hay dos tipos de botones entre los cuales seleccionar.
El primero es el Button, este tipo de botn no permanece presionado, posee
dos estados:
Presionado: el momento en que se da clic al botn.
No presionado: el estado normal del botn.
A diferencia del Toggle Button que cambia de estado al ser presionado.
Tambin posee dos estados pero los maneja de una manera distinta al anterior.
Presionado: al dar clic sobre el botn, queda presionado, no regresa a
su estado anterior como el tipo de botn anterior.
No presionado: estado inicial del botn, para cambiar de un estado a
otro debemos dar clics.
Para crear un botn, nicamente tenemos que arrastrarlo de la Paleta de
componentes a nuestra ventana de aplicacin y ubicarlo en el lugar que
queramos. Presione f6 para observar que sucede.

Figura 2.6 Programa en ejecucin con dos botones de ejemplo.

En este momento los botones no tienen funcin alguna, el cmo agregar


funcin a estos elementos se analizar en el apartado siguiente 2.2 Eventos del
formulario. Recuerde que java es un lenguaje orientado a eventos y con ellos
se dar funcionalidad a los controles del formulario.
Modificar propiedades.
Instituto Tecnolgico de Morelia.

Pgina 80

ITM Unidad II Controles, Eventos, Mtodos y Componentes

Como puede observar, los botones tienen texto predeterminado, este texto se
almacena en una de las muchas propiedades de los objetos, veamos como
modificar algunas de estas propiedades.
Para modificar las propiedades de los objetos, basta con seleccionar la
propiedad deseada en la ventana de propiedades que se encuentra en la parte
derecha de la pantalla.

Figura 2.7 Ventana propiedades.

Puede cambiar el texto del botn, la fuente, el color de la letra, el color del
botn, el tamao, el nombre del botn, etc.
Algunas de las propiedades son las siguientes:
background: color del fondo del botn.
font: tipo de letra.
text: texto que se muestra sobre el botn.
enabled: propiedad que indica si el botn esta activado o no en el formulario.
margin: margen del texto del botn.
name: nombre del botn, con el har referencia al objeto para utilizarlo en el
cdigo. La propiedad nombre se modifica de manera distinta a las dems.
Posteriormente se explicar este proceso.
Ejemplo: Cambiar el texto de los botones del ejemplo a Hola Mundo! y Hola
Java!.
Para ello:
1. Seleccionamos la propiedad text.
2. Cambiamos el texto predeterminado por el texto deseado.
Instituto Tecnolgico de Morelia.

Pgina 81

ITM Unidad II Controles, Eventos, Mtodos y Componentes


3. Presione Enter.
4. Pruebe el resultado corriendo el programa con f6.

Ventana de propiedades

Corrida del programa.

Aqu selecciona la propiedad

Figura 2.8 Cambio de Propiedades de un objeto.

Para cambiar la propiedad name se describe a continuacin.


1. En la ventana de propiedades, seleccione la pestaa Code.
2. Seleccione la propiedad Variable Name.
3. Escriba el nombre con el cual desee referirse al objeto.
4. Presione Enter, automticamente ver el cambio en la propiedad
name

Es conveniente que asigne un nombre a cada componente que crea para


facilitarle la programacin.

Instituto Tecnolgico de Morelia.

Pgina 82

ITM Unidad II Controles, Eventos, Mtodos y Componentes

Figura 2.9 Cambio de la propiedad name

Campos de Texto.
Los cuadros de texto son componentes que soportan texto. Estos componentes
gestionan cadenas de texto de una dimensin; permiten visualizar el texto que
el usuario escribe, poner mscaras de texto cuando se introduce una clave
secreta, leer texto que el usuario ha incluido y mucho mas.
Para crear un campo de texto, llevamos a cabo el mismo proceso que en los
botones. nicamente tenemos que arrastrarlo de la Paleta de componentes a
nuestra ventana de aplicacin y ubicarlo en el lugar que queramos. Presione f6
para observar que sucede.

Figura 2.10 Programa en ejecucin con caja de texto de ejemplo.

En este momento la caja de texto no tienen funcin alguna (podemos editarlo


pero no tiene funcin alguna). Se preguntar, Qu funcionalidad?, pues que

Instituto Tecnolgico de Morelia.

Pgina 83

ITM Unidad II Controles, Eventos, Mtodos y Componentes


se lleve a cabo alguna accin cuando escriba algo, seleccionar la caja de texto,
etc.
Modificar propiedades.
Al igual que los botones tienen texto predeterminado, lo tiene la caja de texto,
este texto se almacena en una de las muchas propiedades de los objetos,
estas propiedades se modifican de la misma manera que se describi
anteriormente.
Puede cambiar el texto, la fuente, el color de la letra, el color del fondo, el
tamao, el nombre del objeto, cambiarlo de habilitado a deshabilitado, ocultar el
texto que se escribe, etc.
Ejemplo: Cambiar el texto predeterminado de la caja de texto y deshabilitarla.
Para ello:
1. Seleccionamos la propiedad text de la primera caja.
2. Cambiamos el texto predeterminado por el texto deseado.
3. Presione Enter.
4. Seleccione la propiedad editable de la segunda caja y
desactvela.
5. Pruebe el resultado corriendo el programa con f6.

Instituto Tecnolgico de Morelia.

Pgina 84

ITM Unidad II Controles, Eventos, Mtodos y Componentes

Ventana de propiedades

Corrida del programa.

En una cambiamos la propiedad


editable y en la otra la propiedad
text.
Figura 2.11 Cambio de Propiedades de un objeto TextField.

Casillas de activacin (Check Box)

Las casillas de activacin son como botones, salvo que tienen un doble estado,
es decir, pueden estar seleccionadas o no. Cuando se seleccionan, aparecen
con algn tipo de marca, como puede ser una marca de activacin o una X (el
tipo de indicacin visual depende del sistema operativo en que se haya
programado, que es una de las razones por la que Sun introdujo Swing, que
puede visualizar componentes con la misma forma independientemente del
sistema operativo). El usuario puede marcar una casilla de activacin para
seleccionar un tipo de opcin. Se usan las casillas de activacin para permitir al
usuario opciones de seleccin no exclusivas.
Ejemplo: Programa que tiene dos campos de texto, uno editable y otro no
editable. Agregar dos casillas de activacin al programa, cambie el texto
predeterminado de las casillas para describir lo que har cada una, en este
caso, una que diga maysculas y otra que copie el texto de una casilla a la
otra.
Para ello:
1. Coloque las dos casillas de activacin, arrastrndola de la paleta de
componentes, asignndoles un nombre en funcin de su propsito,
por ejemplo jCBcopiar (jCheckBoxcopiar).
2. Seleccione la propiedad text de ambas casillas y cmbielas por
Maysculas y Copiar.

Instituto Tecnolgico de Morelia.

Pgina 85

ITM Unidad II Controles, Eventos, Mtodos y Componentes

Ventana de propiedades

Corrida del programa.

Figura 2.12 Cambio de Propiedades de objetos CheckBox.

Botones de opcin (Radio Button) y Grupos de Botones (Button Group)


Los botones de opcin son un tipo especial de casilla de activacin, y se usan
en grupos. Slo un botn de opcin de un grupo puede ser seleccionado a la
vez; cuando el usuario selecciona un botn de opcin de un grupo, el resto del
grupo es automticamente desactivado.
Estas herramientas se utilizan cuando desea ejecutar acciones mutuamente
excluyentes.
Para crear un grupo de botones de opcin siga los siguientes pasos:
1. Arrastre los objetos Radio Button

de la paleta de objetos que

necesite y colquelos en el formulario en el sitio que guste. Para el


ejemplo siguiente se colocarn dos opciones distintas.

2. Una vez que orden los botones de opcin, arrastre un grupo de


botones (Button Group) al formulario. Como puede observar, este
objeto no se muestra en el formulario pero si se agrega a la lista de

Instituto Tecnolgico de Morelia.

Pgina 86

ITM Unidad II Controles, Eventos, Mtodos y Componentes


objetos en el inspector del formulario (lado izquierdo inferior de la
pantalla, pestaa Inspector).

3. Ahora seleccione los botones de opcin (Radio Button) y busque la


propiedad buttonGroup en la lista de propiedades como lo ha hecho
hasta ahora. Modifique esta propiedad seleccionando el grupo de
botones de opcin que creamos en el punto anterior. Por default tiene
de nombre ButtonGroup1. Con ello logramos que al seleccionar una
de las opciones se deseleccionen las otras.

NOTA: Si no agrega los botones de opcin a un grupo, estos funcionarn de


manera independiente. Y si selecciona alguno, los otros no se deseleccionarn.
Es decir, la propiedad primordial de estos objetos se desperdicia. En ese caso
ser mejor utilizar Check Box.
Ejemplo: Agregar dos botones de opcin al formulario y organizarlos en un
grupo de opcin. (Recuerde asignar un nombre a los componentes al momento
de crearlos)

Aqu selecciona el grupo al que desea que


pertenezcan los botones de opcin.

Figura 2.13 Aplicacin con botones de opcin.

2.2 Eventos del formulario.


Ya se ha dicho que las acciones del usuario sobre el programa se llaman
eventos. Son eventos tpicos el clic sobre un botn, el hacer doble clic sobre el
nombre de un archivo para abrirlo, el arrastrar un icono, el pulsar una tecla o
combinacin de teclas, el elegir una opcin de un men, el escribir en una caja
Instituto Tecnolgico de Morelia.

Pgina 87

ITM Unidad II Controles, Eventos, Mtodos y Componentes


de texto, o simplemente mover el ratn. Cada vez que se produce un evento
sobre un determinado tipo de control, Java arranca una determinada funcin o
procedimiento que realiza la accin programada por el usuario para ese evento
concreto. Estos procedimientos se llaman con un nombre que se forma a partir
del nombre del objeto y el nombre del evento, separados por el carcter (_), por
ejemplo:
private void Boton1MouseClicked(java.awt.event.MouseEvent
evt) {
// TODO add your handling code here:
}
Para ejemplificar como se programan los eventos en un formulario, ahora
haremos que nuestra aplicacin tenga funcionalidad. Analizaremos diferentes
eventos con los objetos del formulario.
Para crear un evento sobre algn objeto del formulario, seleccione el objeto
que desee y a continuacin busque el evento deseado en la pestaa Events
que se encuentra junto a la pestaa de propiedades.

Figura 2.14 Lista de eventos.

Campo de texto (Text Field).


Crearemos un evento sobre el campo de texto habilitado del ejemplo
campoTexto1, el evento que crearemos se llama KeyTyped, es decir, al
presionar una tecla se llevar a cabo alguna accin.
Los pasos para crear dicho evento son los siguientes:
1. Seleccione el campo de texto y despus busque el evento
KeyTyped en la lista de eventos de la pestaa Events y presione
enter.

Instituto Tecnolgico de Morelia.

Pgina 88

ITM Unidad II Controles, Eventos, Mtodos y Componentes


2. Con esto, se crea el esqueleto del evento en la parte correspondiente
del cdigo. Por si solo, este cdigo no realiza funcin alguna.
Debemos echar mano de los mtodos del objeto campoTexo1.
3. En este caso, haremos que se copie el texto que tecleemos en la
segunda ventana de texto (la que se encuentra deshabilitada,
(jTextField2). El cdigo est adelante.
4. campoTexto2.setText(), es un mtodo que sirve para asignar un valor
al campo de texto. campoTexto2.getText(), por el contrario, devuelve
el texto de un campo.

private void campoTexto1KeyTyped(java.awt.event.KeyEvent evt)


{
// TODO add your handling code here:
campoTexto2.setText(campoTexto1.getText());
//Aqu se toma el texto del campo1 y se copia en el
//campo2.
}

2.15 Ejemplo en ejecucin.

NOTA IMPORTANTE: Para facilitar la programacin, NetBeans posee una


herramienta muy importante. Si no recuerda como se llaman sus objetos o
desconoce los mtodos de un objeto, basta con escribir la primera letra del
nombre del objeto y luego presionar la combinacin de teclas Ctrl+espacio
para listar las posibles opciones, con ello, nicamente tendr que seleccionar el
nombre que desea. Aplica lo mismo para los mtodos.

Instituto Tecnolgico de Morelia.

Pgina 89

ITM Unidad II Controles, Eventos, Mtodos y Componentes


Para agregar ms funcionalidad debemos utilizar los mtodos de los objetos, a
continuacin se listan algunos de los mtodos de un campo de texto y su
funcionalidad.
Mtodo
Dimension getMinimumSize()
int getColumns()
Protected String paramString()
void removeActionListener(Action
Listener)
void setText(String)
String getString ()

Descripcin
Obtiene las dimensiones mnimas
para el cuadro de texto
Obtiene el nmero de columnas del
cuadro de texto.
Obtiene la representacin en cadena
del estado del cuadro de texto.
Elimina el action listener indicado,
para que no reciba eventos.
Asigna una cadena al objeto.
Devuelve en una cadena el contenido
de una caja de texto.

Tabla 2.1 Mtodos de algunos objetos.

Cabe mencionar que NetBeans proporciona una lista y una breve descripcin
del funcionamiento de cada mtodo. Basta con utilizar la herramienta de
NetBeans mencionada anteriormente.(Ctrl+Space)
Botones
Ahora crearemos un evento sobre el botn de nuestro ejemplo. Utilizaremos el
evento mouseClicked, es decir, algunas funciones se desencadenarn al dar
clic sobre nuestro botn.
Los pasos para crear el evento son los mismos, nicamente debe seleccionar
el evento indicado. Seleccione el botn y busque el evento apropiado en la
pestaa de eventos. mouseClicked para el ejemplo, adems es lo ms comn
con un botn.
Ejemplo: Programe el evento mouseClicked en el botn del ejemplo. Haga
que al dar clic sobre el mismo, se muestre cualquier frase en el campo de texto
deshabilitado.
El cdigo es el siguiente:
private
evt) {

void

Boton1MouseClicked(java.awt.event.MouseEvent

campoTexto1.setText("Programaste el evento clic");


//Entre comillas se pone lo que deseas que se
//muestre en la caja de texto
}

Instituto Tecnolgico de Morelia.

Pgina 90

ITM Unidad II Controles, Eventos, Mtodos y Componentes

Figura 2.16 Programa en ejecucin

Casillas de activacin (check box)


A continuacin trabajaremos con los check box, programaremos tambin el
evento mouseClicked.
Ejemplo: Programar el evento mouseClicked de las casillas de activacin (debe
hacerse en ambas). Al dar clic sobre una, deber revisar si se est activando o
desactivando, para llevar a cabo la accin especfica.
1. La primera casilla deber cambiar el texto del campo de texto habilitado
a maysculas al ser activada, y a minsculas al ser desactivada.
2. La segunda deber copiar el texto de la primera caja de texto a la
segunda al ser activada y quitar cualquier texto de dicha caja al ser
desactivada.
3. Busque el evento en cada una de las check box y programe lo anterior.
El cdigo es el siguiente:

Para el check_box 1
private void checkMayusculasMouseClicked(java.awt.event.
MouseEvent evt) {
if (checkMayusculas.isSelected() == true){
campoTexto1.setText(campoTexto1.getText().
toUpperCase());
}
else{
campoTexto1.setText(campoTexto1.getText().
toLowerCase());
}

Instituto Tecnolgico de Morelia.

Pgina 91

ITM Unidad II Controles, Eventos, Mtodos y Componentes


}

Para el check_box 2
private
void
checkCopiarMouseClicked(java.awt.event.MouseEvent evt) {
if (campoTexto2.isSelected()==true){
campoTexto2.setText(campoTexto1.getText());
}
else{
campoTexto2.setText("");
}
}

Como puede observar, la programacin cada vez involucra ms herramientas.


En este caso ya utilizamos el condicional if else, adems los mtodos
toLowerCase() y toUpperCase() que cambian una cadena de maysculas a
minsculas. Estos y ms mtodos ya se analizaron en la primera unidad 1.7
Tipos De Datos, en la clase String.
Tambin hay mtodos como campoTexto2.isSelected(), este nos regresa true
si la casilla de activacin esta activada, valga la redundancia, o false si esta
desactivada.
A continuacin, se presentan algunos mtodos relacionados con las check box
que pueden facilitar la programacin:
Mtodo
boolean isBackgroundSet()
boolean isBorderPainted()
boolean isEnabled()
boolean isSelected()
void setText (String text)
void setVisible (boolean aFlag)

Instituto Tecnolgico de Morelia.

Descripcin
Regresa true si el color de fondo del
componente se ha especificado, false si
no.
Regresa true si el borde del objeto est
pintado, regresa false de lo contrario.
Regresa true si el componente est
habilitado o false si no.
Regresa true si el componente est
seleccionado o false si no.
text Es una cadena que se pondr como
texto.
aFlag bandera true para hacer que este

Pgina 92

ITM Unidad II Controles, Eventos, Mtodos y Componentes

void setEnabled (boolean b)

componente sea visible, bandera false


para que no sea visible.
false para deshabilitar el componente,
true para habilitarlo.

Tabla 2.2 Mtodos de una check box.

Figura 2.17 Aplicacin en ejecucin.

Botones de Opcin (Radio Button).


Ahora crearemos un evento sobre los botones de opcin de la aplicacin.
Ejemplo: Para los botones de opcin programe el evento StateChanged para
lograr que al seleccionar uno, se coloque una frase en el campo de texto
habilitado y con el otro botn una frase distinta.
1. Seleccione cada uno de los botones de opcin e identifique el evento
StateChanged, pulse enter para crear el cdigo correspondiente.

El cdigo es el siguiente:
Cdigo para el botn de opcin 1:
private
void
opcion1StateChanged(javax.swing.event.ChangeEvent evt) {
if(opcion1.isSelected()==true){
campoTexto1.setText("Eligi la opcin 1");
}
}
Cdigo para el botn de opcin 2:

Instituto Tecnolgico de Morelia.

Pgina 93

ITM Unidad II Controles, Eventos, Mtodos y Componentes


private
void
opcion2StateChanged(javax.swing.event.ChangeEvent evt) {
if (opcion2.isSelected()==true){
campoTexto.setText("Eligi la opcin 2");
}
}
Como puede observar, estamos utilizando el mtodo isSelected(), es el
mismo que utilizamos en los check box. Esto se debe a que muchos de los
mtodos disponibles para los componentes estndar son iguales.

Figura 2.18 Aplicacin en ejecucin.

2.3 Cajas de dilogo.


Los programas de ventanas utilizan, con frecuencia, cuadros de dilogo para
que el usuario introduzca datos, como el nombre de un archivo que se desea
abrir, una clave o un color que se selecciona entre muchos otros. Al igual que
otros elementos visuales, los cuadros de dilogo son familiares para los
usuarios GUI (interfaz Grafica de Usuario). Se usan cuando se quiere que el
usuario introduzca informacin, pero no quiere usar un control dedicado, como
un cuadro de texto, todas la veces en la ventana principal. Es decir, los cuadros
de dilogo son ventanas temporales que se pueden llenar con controles para la
entrada de datos del usuario.

2.3.1 Modales y no modales.


Los formularios y los cuadros de dilogo pueden ser modales o no modales. Un
formulario o cuadro de dilogo modal debe cerrarse u ocultarse para que el
usuario pueda continuar trabajando con el resto de la aplicacin.

Instituto Tecnolgico de Morelia.

Pgina 94

ITM Unidad II Controles, Eventos, Mtodos y Componentes


Es conveniente que los cuadros de dilogo que muestran mensajes
importantes sean siempre modales. El cuadro de dilogo Acerca de es un
ejemplo de un cuadro de dilogo modal.
Los formularios no modales permiten alternar el foco entre dos formularios sin
necesidad de cerrar el formulario inicial. El usuario puede continuar trabajando
en otro lugar, en cualquier aplicacin, mientras se muestra el formulario.
Los formularios no modales son ms difciles de programar, porque el acceso
por parte de los usuarios se produce en un orden impredecible. Se ha de
mantener la aplicacin en un estado coherente con independencia de lo que
haga el usuario.
Con frecuencia, las ventanas de herramientas se muestran de forma no modal.
El cuadro de dilogo Buscar, disponible en muchas aplicaciones, es un
ejemplo de cuadro de dilogo no modal. Utilice formularios no modales para
mostrar comandos o informacin utilizados con frecuencia.
Para crear una caja de dialogo en java, usted debe crear una clase desde cero,
heredar de clases predefinidas y crear por medio de texto puro cada elemento
del nuevo formulario.
NetBeans provee herramientas que permiten la creacin de cajas de dialogo de
la misma manera que hemos creado nuestro formulario hasta ahora.
Para crear una caja de dialogo siga los pasos siguientes:
1. Vaya al men File (archivo) y seleccione New File.
2. Elija la categora Swing GUI Forms
3. Seleccione el tipo de archivo JDialog Form y presione Next.

Instituto Tecnolgico de Morelia.

Pgina 95

ITM Unidad II Controles, Eventos, Mtodos y Componentes

Figura 2.19 Ventana New File crear caja de dilogo.

4. Ahora debemos elegir el nombre de la clase de nuestro nuevo


formulario. Debe quedar claro, que este ser el nombre de la clase, mas
no del formulario. Por ltimo presione Finish
5. Como puede ver, se crea un nuevo formulario, usted puede arrastrar
componentes de la paleta de componentes y darle la forma que usted
quiera. Estos procesos se explicaron con detalle en el apartado anterior.
El nombre de la clase de nuestro nuevo cuadro de dilogo es
NewJDialog.

Figura 2.20 Nuevo formulario para caja de dialogo vacio.

Ejemplo: Ponga un par de botones y una caja de texto al cuadro de dilogo.


Y programa los eventos clic de cada botn para mostrar algn mensaje en
la caja de texto.

Instituto Tecnolgico de Morelia.

Pgina 96

ITM Unidad II Controles, Eventos, Mtodos y Componentes

Para el ejemplo anterior muestre el texto Hola a mi y Hola a Todos al


presionar el botn correspondiente a la frase.
Hasta este momento no puede ejecutar este cuadro de dilogo. Para ello
debe crear una instancia de su clase en nuestro formulario principal. Para
llamar el cuadro de dilogo que diseamos anteriormente en el formulario
principal, haga lo siguiente:
1. Para el ejemplo, llamaremos el cuadro de dilogo al dar clic sobre el
botn de nuestra aplicacin principal.
2. Una vez que nos ubicamos en el cdigo del evento correspondiente,
procedemos a declarar una instancia de la clase NewJDialog y la
mostramos. El cdigo es el siguiente:

private
evt) {

void

Boton1MouseClicked(java.awt.event.MouseEvent

campoTexto2.setText("Programaste el evento clic");


//Creamos el objeto.
NewJDialog cuadroDialogo =
new NewJDialog(getFrame(), false);
//Luego lo mostramos
cuadroDialogo.show();
}

Como puede observar, al declarar el objeto de tipo NewJDialog se llamar a


su constructor, el cual requiere como parmetros: el formulario padre, es decir,
el que lo invoca y una bandera en la que se especificar si la caja de dilogo
ser modal o no modal.
NewJDialog cuadroDialogo = new NewJDialog(getFrame(), false);
//Es en este momento que se decide si la caja de dilogo ser
modal o no modal

Instituto Tecnolgico de Morelia.

Pgina 97

ITM Unidad II Controles, Eventos, Mtodos y Componentes

Figura 2.21 Aplicacin en ejecucin.

TIP: Si en determinado mtodo no esta seguro de los parmetros, presione


Ctrl + space para que NetBeans le ofrezca posibles valores.

2.3.2 Predefinidas
En el apartado anterior, 3.1 Modales y no modales, analizamos como crear
cajas de dilogo pero; existen cajas de dialogo predefinidas, crearlas es muy
sencillo y el proceso necesario se describe a continuacin.
La clase que se utiliza para este fin se llama JOptionPane
Los tipos de cajas de texto predefinidas son:
1. Confirmacin (ConfirmDialog).
2. Entrada de datos (InputDialog).
3. Confirmacin Interna (InternalConfirmDialog)
4. Entrada interna de datos (InternalInputDialog)
5. Mensaje Interno (InternalMessageDialog)
6. Mensaje (MessageDialog)
7. Opcin (OptionDialog)

Instituto Tecnolgico de Morelia.

Pgina 98

ITM Unidad II Controles, Eventos, Mtodos y Componentes


Cada uno de los tipos de cajas de dialogo predefinidas mencionadas
anteriormente tienen varios constructores dependiendo de sus parmetros, a
continuacin se explicar el proceso de creacin y utilizacin de algunas de
estas cajas de dilogo mediante el uso de herramientas de NetBeans que
facilitan la programacin.
Por ejemplo:
Crearemos una caja de dilogo de confirmacin en el objeto
checkMayusculas1 de nuestra aplicacin, este es el que nos da la opcin de
poner nuestro texto en maysculas. Para ello realice lo siguiente.
1. Localice el cdigo de evento que ya habamos programado para este
objeto, si no ha seguido el ejemplo hasta este punto, cree una checkbox,
localice el evento mouseclicked y escriba JOptionPane.. Al escribir l
. (punto) NetBeans intentar complementar su cdigo dndole
opciones posibles. Si no ocurre lo anterior presione Ctrl + space para
que lo haga.

Figura 2.22 Cmo ver la lista de cuadros de dilogo predefinidos

Como puede Observar es muy sencillo, solo debe seleccionar el tipo de caja
de dilogo que desea utilizar. Si no est seguro de para qu sirve cada una,
en la parte inferior se muestra una explicacin de para qu sirve, que es lo
que muestra, etc. En el listado de los mtodos puede observar que
parmetros se necesitan y que devuelve la funcin. En fin entre las dos
ventana automticamente desplegadas por NetBeans se muestra todo lo
que debe saber del mtodo que crea una caja de dilogo.

Instituto Tecnolgico de Morelia.

Pgina 99

ITM Unidad II Controles, Eventos, Mtodos y Componentes

2. Una vez que identifica el mtodo que necesita, seleccinelo y presione


enter, automticamente se muestra otra ventana de ayuda para
completar el cdigo con los parmetros correspondientes.

Figura 2.23 Error por no importar librera.

Los parmetros para la caja de dilogo que estamos creando son el


formulario que la esta invocando y el mensaje que deseamos se muestre.
Recuerde que se puede ayudar de Ctrl+space para completar los
parmetros si desconoce que debe poner.
En este caso, el formulario que llamar al cuadro de dilogo es el formulario
principal cuyo nombre es mainPanel y el mensaje que queremos mostrar
es: Est completamente seguro??.
Observe que tenemos un error, es debido a que no hemos importado la
clase JOptionPane pero; otra de las herramientas poderosas de NetBeans
es solucionar con facilidad errores de los cuales conoce su solucin. Por
ejemplo para que se solucione ese error, basta con dar un clic sobre el foco
amarillo para que nos diga de qu error se trata y a continuacin
seleccionar una de las posibles soluciones. Siempre que se muestra un foco
en un mensaje de error, es porque NetBeans puede solucionarlo, De lo
contrario solo se muestra el error que se localiza.

Figura 2.24 Herramienta til para corregir errores sencillos.

Puede ser que le muestre otro error debido a que no est asignando el valor
de vuelta a ninguna variable. Ese error tambin se puede solucionar
fcilmente. Aunque de hecho esto no es un error, sera el equivalente a
un warning en el lenguaje C.

Instituto Tecnolgico de Morelia.

Pgina 100

ITM Unidad II Controles, Eventos, Mtodos y Componentes


Como vemos el mtodo devuelve un entero que nos permitir captar cual es
la opcin elegida por el usuario. Los valores sern 0 para Si, 1 para No, 2
para Cancelar y -1 para el cierre de la ventana. As podremos preguntar
cul es el valor devuelto y realizar la accin que deseamos.
3. Ahora

utilicemos

los

valores

de

retorno

para

condicionar

el

comportamiento. De lo contrario se mostrar la ventana pero no tendr


funcin alguna.
4. Haremos que si se presiona Si, la casilla se seleccione y cambie el
texto del cuadro de texto a maysculas, si se presiona No No se
activar la casilla, y en caso de que se presione Cancelar o se cierre la
ventana, Tampoco se activar la casilla.
5. El cdigo en el evento clic del checkbox es el siguiente.

private void checkMayusculasMouseClicked(java.awt.event.MouseEvent


evt) {
//necesitamos una variable entera en la cual almacenar el
valor de retorno.
int showConfirmDialog = JOptionPane.showConfirmDialog(mainPanel,
"Est Completamente seguro??");
if(showConfirmDialog == 0){
checkMayusculas.setSelected(true);
}
else{
checkMayusculas.setSelected(false);
}
//Como puede ver se realiza una accin si se selecciona la
//casilla.
if (checkMayusculas.isSelected() == true){
ampoTexto1.setText(campoTexto1.getText().toUpperCase());
}
else{
campoTexto1.setText(campoTexto1.getText().toLowerCase());
}
}

Con esto, estamos condicionando a que se confirme la accin que antes


siempre se ejecutaba al dar clic sobre ese objeto.

Instituto Tecnolgico de Morelia.

Pgina 101

ITM Unidad II Controles, Eventos, Mtodos y Componentes

Figura 2.25 Programa en ejecucin.

Ahora, supongamos que usted no necesita preguntar nada al usuario, que solo
quiere mostrar un mensaje al realizar cierta accin, ya sea una confirmacin o
un mensaje de que ocurri cierto error. Para eso utilicemos un mensaje simple,
ahora lo pondremos en el botn de la aplicacin.
Ejemplo: Agregar al cdigo del evento mouseclicked del Botn con la leyenda
Hola Java de nuestra aplicacin el cdigo que muestre una mensaje que
indique que la accin se llev a cabo correctamente. Anteriormente habamos
mostrado una caja de dialogo en ese cdigo. Modifquelo si es necesario.
El cdigo es el siguiente:
private void Boton1MouseClicked(java.awt.event.MouseEvent evt) {
campoTexto2.setText("Programaste el evento clic");
JOptionPane.showMessageDialog(mainPanel,
"La accin se realiz correctamente");
}

La creacin de cuadros de dilogo pre diseados es una de las tareas ms


sencillas. Utilice cajas de dilogo prediseanadas en lugar de cajas diseadas
por usted mismo si es posible. Se ahorrar mucho tiempo en la programacin y
adems tendr muchas opciones pre programadas en las mismas.

Instituto Tecnolgico de Morelia.

Pgina 102

ITM Unidad II Controles, Eventos, Mtodos y Componentes

Figura 2.26 Aplicacin en ejecucin.

2.4 Componentes estndar.


Cuando desarrolla una aplicacin en java, es apropiado elegir los componentes
de interfaz grfica de usuario (GUI) adecuados. En NetBeans se pueden
crear componentes Swing7 o AWT8 (Abstract Window Toolkit), ambos forman
parte de la Java Foundation Classes (JFC).
Para crear componentes de los distintos estndares, debe seleccionar la
categora correspondiente en la paleta de componentes.
Ambos tienen ventajas y desventajas, las cuales se mencionarn
posteriormente. Hasta el momento hemos trabajado nicamente con controles
swing.

Swing es una biblioteca grfica para Java. Contiene botones, cajas de texto, etc.
La Abstract Window Toolkit (AWT, en espaol Kit de Herramientas de Ventana Abstracta) es un kit de herramientas de grficos,
e interfaz de usuario.
8

Instituto Tecnolgico de Morelia.

Pgina 103

ITM Unidad II Controles, Eventos, Mtodos y Componentes

Figura 2.27 Componentes Swing y AWT.

Las Internet Foundation Classes (IFC9) era una biblioteca grfica para el
lenguaje de programacin Java desarrollada originalmente por Netscape10.
Desde sus inicios el entorno Java ya contaba con una biblioteca de
componentes grficos conocida como AWT. Esta biblioteca estaba concebida
como una API estandarizada que permita utilizar los componentes nativos de
cada sistema operativo. Entonces una aplicacin Java corriendo en
determinado sistema operativo, usara componentes estndar del sistema. En
la prctica esta tecnologa no funcion:

Al depender fuertemente de los componentes nativos del sistema


operativo el programador AWT estaba confinado a un mnimo
denominador comn entre ellos. Es decir que slo se disponen en AWT
de las funcionalidades comunes en todos los sistemas operativos.

El comportamiento de los controles vara mucho de sistema a sistema y


se vuelve muy difcil construir aplicaciones portables. Fue por esto que el
eslogan de Java "Escrbalo una vez, ejectelo en todos lados" fue
parodiado como "Escrbalo una vez, prubelo en todos lados".

Internet Foundation Classes era una biblioteca grfica para el lenguaje de programacin Java
Es una empresa de software famosa por ser la creadora del navegador web Netscape Navigator.

10

Instituto Tecnolgico de Morelia.

Pgina 104

ITM Unidad II Controles, Eventos, Mtodos y Componentes


En cambio, los componentes de IFC eran mostrados y controlados
directamente por cdigo Java independiente de la plataforma.
Swing se desarrolla a partir de AWT con el objetivo de mejorar a las
tecnologas existentes y lograr lo que AWT no pudo. Swing introdujo un
mecanismo que le permite que el aspecto de cada componente de una
aplicacin pudiera cambiar sin introducir cambios sustanciales en el cdigo de
la aplicacin. Swing emula la apariencia de los componentes nativos
manteniendo las ventajas de la independencia de la plataforma. Tambin
contiene un conjunto de herramientas que nos permiten crear un interfaz
atractivo para los usuarios.
Pudo haber notado que en NetBeans se pueden crear controles Swing y
controles AWT. La explicacin anterior es para comprender por qu durante el
desarrollo de este libro, se utilizaron nicamente componentes Swing.
De cualquier modo, la creacin y manipulacin de ambos es la misma, esta
decisin se bas en las ventajas que ofrece una nueva tecnologa (Swing)
sobre (AWT).
AWT vs Swing
Hay por supuesto pros y contras de ambos componentes de la JFC, a
continuacin se listan algunos.
AWT:
Pros

Velocidad: el uso de componentes nativos aumenta la velocidad de


ejecucin y el desempeo.

Portabilidad Web: La mayora de los navegadores de internet soportan


AWT por lo que no es necesario algn plugin adicional.

Apariencia: Los componentes AWT lucen ms como los componentes


nativos del sistema Operativo.

Contras
Portabilidad: El uso de componentes nativos atenta contra la portabilidad
de la aplicacin a otra plataforma.

Mayoras: La mayor parte de las compaas importantes de Software


basan sus tecnologas sobre swing.

Funciones adicionales: los componentes AWT no soportan cosas como


iconos y otras herramientas adicionales.

Instituto Tecnolgico de Morelia.

Pgina 105

ITM Unidad II Controles, Eventos, Mtodos y Componentes


Swing:
Pros

Portabilidad: El diseo de stos componentes provn mayor portabilidad.

Comportamiento: Estos componentes provn de mayor funcionalidad ya


que no estn atados a funciones de un solo sistema.

Funciones: Swing soporta muchas ms funciones como los iconos, los


pop-up, etc.

Actualmente: El desarrollo de Swing es ms activo, sun contina dando


mantenimiento a estas libreras y mejorndolas.

Apariencia: Aunque estos componentes imitan a los nativos de los


sistemas operativos, la verdad es que no hay diferencia notable en la
actualidad. Sobre todo para plataformas como (Microsoft Windows,
Solaris, Macintosh, etc.)

Contras
Portabilidad Web: La mayora de los navegadores de internet no
contienen la librera swing por lo que debe agregarse un plug-in. (Si la
tendencia hacia swing contina, esto ya no ser necesario).

Desempeo: Los componentes swing son mucho ms lentos y contienen


ms bugs que los AWT.

Apariencia: Aunque los componentes Swing estn hechos para lucir


como los propios del sistema operativo, pueden no verse como ellos.

Instituto Tecnolgico de Morelia.

Pgina 106

ITM Unidad II Controles, Eventos, Mtodos y Componentes


EJERCICIOS PROPUESTOS.
2.1 Desarrolle una aplicacin de escritorio, adapte las clases creadas en el
proyecto de la Unidad I, en el proyecto de la calculadora. Para funcionar
grficamente, agregue los botones necesarios para las funciones adicionales
que realice su aplicacin. Ej. De la interfaz que deber crear y programar.

2.2 Disee una aplicacin grfica para manipular la informacin de una Agenda
electrnica. Utilice los controles swing disponibles para poder agregar,
modificar, eliminar o consultar la informacin de 20 personas diferentes. La
informacin se almacenar en memoria. Utilice arreglos de tipo que considere
necesarios.
2.3 Programe una aplicacin en ambiente grfico que le permita tener una lista
de alumnos y sus calificaciones. Utilice un objeto JList para almacenar dicha
lista y utilice JOptionPane o JTextField para ingresar la informacin. Luego
coloque los botones necesarios para ordenar dicha lista ya sea por nombre o
por la calificacin.
2.4 Memorama. Desarrolle una aplicacin que funcione como un memorama.
Un memorama cociste en un conjunto de ncartas con n/2 imgenes distintas.
El objetivo es poner las cartas hacia abajo y tratar de localizar el mayor nmero
de parejas posible. Elija que objetos utilizar (botones, labels, etc.) y programe
un evento sobre ellos para que al seleccionar uno nos muestre que imagen o
texto oculta (puede utilizar texto en lugar de imgenes). La aplicacin deber
llevar el control de puntaje y turno de 2 jugadores. Utilice como mnimo 16
objetos que representarn las cartas.
2.6 Disee un programa en ambiente grfico que le ayude a aprender ingls.
Deber crear de manera automtica (con valores fijos) o pidiendo los valores al
usuario para llenar un arreglo de palabras en ingls. Deber guardar en otro su
equivalente en espaol. El programa mostrar de manera aleatoria una palabra
del arreglo de palabras en ingls. Usted deber ingresar la palabra en espaol

Instituto Tecnolgico de Morelia.

Pgina 107

ITM Unidad II Controles, Eventos, Mtodos y Componentes


y presionar enter para revisar si fue correcta o incorrecta su respuesta. El
programa mostrar de manera infinita y aleatoria las palabras que contiene.
2.7 Programe una aplicacin que realice una conversin de temperaturas entre
Fahrenheit y Centgrados. Deber ser capaz de que a que escala convertir, es
decir, de centgrados a Fahrenheit o viceversa.
2.8 Desarrolle una aplicacin que le permita transformar cantidades entre
varias tipos de monedas. Por ejemplo: De euros a pesos, a libras esterlinas, a
dlares, etc. Contemple todas las conversiones posibles entre al menos esas
cuatro monedas.
2.9 Disee una aplicacin que le permita resolver ecuaciones algebraicas de
primer grado. Ejemplo: x + 3 = 2x 2 y segundo grado. Ejemplo: x2 16 = 0.
1.10 Programe el juego del gato. Utilice una matriz de 9 elementos para llevar
un control de las posiciones. Utilice el objeto que considere conveniente para
representar de manera grfica al gato. El programa debe llevar el control de
turno de dos jugadores y decir cuando gana alguno. Utilice botones o un men
para crear opciones como nuevo juego o lo que necesite.

Instituto Tecnolgico de Morelia.

Pgina 108

ITM Unidad II Controles, Eventos, Mtodos y Componentes


PROYECTO INTEGRAL.
Sudoku. (En japons: , sdoku) es un pasatiempo (como los crucigramas
en Mxico), muy popular en Japn. El objetivo es rellenar una cuadrcula de
99 celdas (81 casillas) dividida en subcuadrculas de 33 (tambin llamadas
"regiones") con los nmeros del 1 al 9 partiendo de algunos nmeros ya
dispuestos en algunas de las celdas. Aunque se podran usar colores, letras,
figuras, conviene en usar nmeros para mayor claridad. Lo que importa, en
todo caso, es que sean nueve elementos diferenciados. No se debe repetir
ninguna cifra en una misma fila, columna o regin. Un sudoku est bien
planteado si la solucin es nica. La resolucin del problema requiere paciencia
y ciertas dotes lgicas.

Disee una aplicacin grfica que cree tablas de sudoku y usted pueda
resolverlas. El programa deber ser capaz de revisar la solucin que demos y
decir si es correcta o incorrecta. Existen algoritmos que describen tambin
como solucionarlos, de la opcin al usuario para resolver un sudoku si es que
se rindi o no puede resolverlo.

Instituto Tecnolgico de Morelia.

Pgina 109

Unidad 3. Sistemas de
Archivos.
Utilizacin de archivos como mtodo de almacenamiento de informacin.

ITM Unidad III Sistemas de Archivos


INTRODUCCION.
Antes de comenzar con el contenido de esta unidad, considero conveniente
explicar un poco el manejo de archivos en el lenguaje Java. Esto con el fin de
que comprendan mejor los ejemplos y explicaciones presentes en la Unidad.
Definicin de archivos de texto y archivos binarios
Archivos de texto: Es una estructura de datos permanente no estructurada
formada por una secuencia de caracteres ASCII. Los archivos de texto son
aquellos que estn compuestos
nicamente por texto sin formato, slo
caracteres. Estos caracteres se pueden codificar de distintos modos
dependiendo de la lengua usada. Algunos de los sistemas de codificacin ms
usados son: ASCII, Latn-1, Unicode, etc. Se les conoce tambin como
archivos de texto plano por carecer de informacin destinada a generar
formatos y tipos de letra (por ejemplo, tipo de letra: Arial, Times, Courier;
formato: negritas, subrayado, cursivas; tamao, etc.).
La costumbre ha hecho que se nombren con la extensin de archivo .TXT
aunque pueden tener cualquier otra, a capricho del usuario (son vlidas y
habituales .INF .80 .DAT .TMP .PRV .HLP etc.). Los archivos .BAT, .HTML y
muchos otros son tambin archivos de texto, que tienen funciones especiales.
Archivos binarios: Los archivos binarios son archivos electrnicos que han sido
guardados utilizando el cdigo bsico de las computadoras: una sucesin de
ceros y unos. Constituyen, en ltima instancia, la forma en la cual almacenan la
informacin, aunque su interaccin con los usuarios requiere de lenguajes
auxiliares que resulten ms inteligibles al ser humano.
Operaciones Bsicas en Archivos.
Crear
Para crear un archivo la sintaxis es:
FileWriter nombre_variable = new FileWriter(Nombre del archivo incluyendo
ruta);
Por ejemplo:
FileWriter archivo = new FileWriter("c:/prueba.txt");

En el ejemplo anterior se crea un archivo de nombre prueba.txt ubicado en la


ruta c:, pero en NetBeans marcar un error si no se coloca esta lnea dentro
de un control de excepciones try y catch. El cdigo funcional es el siguiente:

Instituto Tecnolgico de Morelia.

Pgina 109

ITM Unidad III Sistemas de Archivos


try{
FileWriter archivo = new FileWriter ("C:/prueba.txt");
}
catch (Exception e){
System.out.print("Error al crear el archivo");
}

Si quiere aadir al final de un archivo ya existente, simplemente se debe poner


una bandera (flag) en true como segundo parmetro del constructor de
FileWriter
FileWriter archivo = new FileWriter("c:/prueba.txt",true);
En este ejemplo se aadirn lneas al final del archivo prueba.txt
Abrir
La apertura de un archivo se hace con la siguiente sintaxis:
FileReader nombre_variable = new FileReader(Nombre del archivo incluyendo
ruta);
Por ejemplo:
FileReader fr2 = new FileReader("archivo.txt");
Esto es equivalente a:
File archi = new File("archivo.txt");
FileReader fr2 = new FileReader(archi);
Si a la hora de la apertura no se encuentra el archivo indicado, los
constructores de FileReader y FileInputStream
lanzan la excepcin
java.io.FileNotFoundException.
Cerrar
Para cerrar un archivo, ya sea de lectura o escritura, utilice el mtodo close().
Sintaxis: Nombre_variable.close();
Este mtodo debe invocarse para liberar los recursos11. Una vez que el archivo
ha sido cerrado, las operaciones posteriores sobre l producirn una excepcin
IOException (Excepciones de entrada y salida de datos). Cerrar un archivo
previamente cerrado no tiene ningn efecto.
Para probar las operaciones anteriores el cdigo es el siguiente:
11

Como los descriptores de archivos.

Instituto Tecnolgico de Morelia.

Pgina 110

ITM Unidad III Sistemas de Archivos


try{
FileWriter archivoEsc = new FileWriter ("C:/prueba.txt");
FileReader archivoLee = new FileReader ("C:/prueba.txt");
archivoEsc.close();
archivoLee.close();
}
catch (Exception e){
System.out.print("Error en el archivo");
}

Aunque con lo anterior se logra el objetivo de lectura en los archivos, la clase


FileReader tiene pocos mtodos que faciliten la lectura en archivos de texto.
Para ello existe la clase BufferReader. El cdigo para crear un objeto de este
tipo es el siguiente:
FileReader archivoLee = new FileReader ("C:/prueba.txt"); BufferedReader
leerArch = new BufferedReader(archivoLee);

3.1 Acceso secuencial.


En este caso los datos son ledos secuencialmente, desde el comienzo del
archivo hasta el final.
Entrada y salida secuencial en Java
La interfaz bsica de entrada y salida secuencial se define a travs de las
clases InputStream y OutputStream, su interfaz permite la lectura y escritura de
bytes, el tipo de dato ms pequeo disponible en Java e histricamente el
tamao mnimo de almacenamiento de datos en las computadoras.
Entrada
Como se dijo, la clase base para los distintos tipos de entrada secuencial es
InputStream. Existen varias subclases que implementan distintos tipos de
fuentes de datos secuenciales, algunas de las ms usadas son:
FileInputStream: Permite leer datos desde un archivo.
ByteArrayInputStream: Permite leer datos desde un bloque de memoria
dado por un arreglo de tipo byte.
StringBufferInputStream: Lee caracteres desde una cadena de texto.
La interfaz de InputStream provee un acceso muy crudo a los datos, siempre
en forma de bytes. Cuando se habla de E/S, es deseable tener formas para:

Instituto Tecnolgico de Morelia.

Pgina 111

ITM Unidad III Sistemas de Archivos


Leer distintos tipos de datos adems de bytes (por ejemplo: double, int,
boolean, etc.)
Hacer ms eficiente el acceso a los datos mediante la lectura en rfagas
hacia buffers.
Volver hacia atrs en la lectura de un archivo.

En Java se define una subclase abstracta de InputStream,


LineNumberInputStream. Esta clase contiene mtodos que nos permiten
realizar funciones con las que estamos ms familiarizados y consideramos ms
accesibles como .read() que nos permiten leer lneas en un archivo. Vemos un
pequeo ejemplo:
Agregue un botn al ejemplo que hemos utilizado hasta el momento, su
objetivo ser abrir un archivo de texto creado, leer cada lnea que contenga e
imprimirla y al final indicar cuantas lneas fueron ledas en el archivo. Cree el
archivo en el directorio que desee.
private
evt) {

void

leerArchivoMouseClicked(java.awt.event.MouseEvent

try {
File f = new File("C:/prueba.txt");
LineNumberInputStream lin = new
LineNumberInputStream(new FileInputStream(f));
int contador;
do {
contador = lin.read();
if (contador >= 0) {
System.out.print((char) contador);
}
} while (contador >= 0);
System.out.println("\nSe leyeron " +
lin.getLineNumber()+1+ " lineas de texto.");
lin.close();
} catch (IOException ex) {
System.out.println("Error al leer o crear archivo");
}

En el caso anterior la clase LineNumberInputStream es una clase que provee


mtodos adicionales para llevar la cuenta del nmero de lneas ledas desde el
flujo entrante (en este caso proveniente de un archivo). Observe que para crear
un objeto de la clase LineNumberInputStream se necesita un objeto de la clase
FileInputStream quien a su vez necesita un objeto de tipo File.
Las lneas donde se crean estos objetos es la siguiente:

Instituto Tecnolgico de Morelia.

Pgina 112

ITM Unidad III Sistemas de Archivos


File f = new File("C:/prueba.txt");
LineNumberInputStream lin = new
LineNumberInputStream(new FileInputStream(f));

Observe que en el ejemplo, todas las lneas que involucran al archivo


(creacin, lectura, etc.) se encuentran dentro de un control de excepciones try,
catch. Si no fuera as, el intrprete nos marcara un error. Observe adems,
que dentro del catch nos dice IOException ex. IOException nos indica que
ser una excepcin de entrada o salida (In, Out) y ex es el nombre con que
conoceremos dicha excepcin. Usted puede poner el nombre que desee a una
excepcin. Tambin, en lugar de poner IOException, podra poner simplemente
Ecxeption. Para que cualquier tipo de excepcin que ocurra se controle por
medio de ese catch.
Recuerde, dentro del catch usted pondr lo que desea que el programa haga si
ocurre un error de algn tipo. De salida en caso de IOException o cualquier
error en caso de Exception. En este caso queremos que nos muestre un
mensaje explicndonos que tipo de error ocurri, por eso ponemos la lnea:
System.out.println("Error al leer o crear archivo");

Figura 3.1 Programa en ejecucin.

Otras clases (ms tiles que esta) existentes son:


BufferedInputStream: Agiliza (y mucho) el acceso a flujos mediante la
lectura de los datos en rfagas. Los datos, en lugar de ser ledos de a
uno a medida que se invoca al mtodo read(), son ledos de a muchos y
almacenados en una memoria intermedia de contencin (buffer).

Instituto Tecnolgico de Morelia.

Pgina 113

ITM Unidad III Sistemas de Archivos


DataInputStream: Permite leer datos de tipo primitivo desde el flujo en
lugar de slo enteros de 8 bits (bytes), por ejemplo double, float, int,
long, etc.

Salida
La familia de flujos de salida es anloga a la de entrada, tenindose subclases
de OutputStream que permiten escribir en distintos medios:
FileOutputStream: hacia un archivo.
ByteArrayOutputStream:

hacia

un

bloque

de

memoria

bien

decoradores, heredados de FilterOutputStream.


BufferedOutputStream: escritura en rfagas.
DataOutputStream: escritura de datos de otros tipos primitivos adems
de byte.
PrintSteam: permite escribir texto de a lneas (System.out es un ejemplo
de PrintStream).

Ejemplo: Modifique el ejemplo, coloque un nuevo botn para crear un archivo


de texto que pueda utilizar para leerlo y contar la lneas que se escribieron en
el. Justo lo que se hizo en el ejemplo anterior.
private void crearArchivo1MouseClicked(java.awt.event.MouseEvent
evt) {
try{
FileWriter archivoEsc = new FileWriter ("C:/prueba.txt");
PrintWriter escribirArch = new PrintWriter(archivoEsc);
int lineas = Integer.parseInt(JOptionPane.showInputDialog
(campoTexto1, "Cuantas Lineas desea ingresar?"));
for(int contador=1; contador<=lineas; contador++ ){
escribirArch.println(JOptionPane.showInputDialog
(campoTexto1, "Escriba la linea "+contador));
}
archivoEsc.close();
}
catch (Exception e){
System.out.print("Error al crear el archivo");
}
}

Instituto Tecnolgico de Morelia.

Pgina 114

ITM Unidad III Sistemas de Archivos


En el ejemplo anterior, se crea el archivo y se presenta una caja de dialogo
preguntando cuantas lneas desea ingresar al archivo y posteriormente se crea
un ciclo en el cual se pide una por una las lneas que se indicaron en la primera
y se escriben en el archivo.

Figura 3.2 Programa en ejecucin.

3.2 Acceso directo.


Las clases que hemos analizado hasta ahora, son clases de acceso
secuencial, clases cuyo contenido debe ser ledo o escrito secuencialmente.
Esto es increblemente til, los archivos de acceso secuencial son
consecuencia de un medio secuencial cmo una cinta magntica. Por otro lado,
los archivos de acceso aleatorio, permiten un acceso no secuencial, o aleatorio
al contenido de un archivo.
Veamos por qu podramos necesitar archivos de acceso aleatorio.
Consideremos el formato de archivo conocido como "zip". Los archivos Zip
contienen archivos que normalmente estn comprimidos para ahorrar espacio.
Estos archivos tambin contienen una "entrada de directorio" que indica donde
comienzan los distintos archivos contenidos dentro de la carpeta Zip:
Ahora supongamos que queremos extraer un archivo especfico de un archivo
Zip. Si utilizramos una clase de acceso secuencial, tendra que hacer lo
siguiente:

Abrir el archivo Zip.

Buscar a travs del archivo Zip hasta que se localice el archivo que
quiere extraer.

Extraer el Archivo.

Cerrar el archivo Zip.

Instituto Tecnolgico de Morelia.

Pgina 115

ITM Unidad III Sistemas de Archivos


Como mnimo, utilizando este argumento, habremos tenido que leer medio
archivo Zip antes de encontrar el archivo que quiere extraer. Se puede extraer
el mismo archivo de un archivo Zip de una forma ms eficiente utilizando la
caracterstica de bsqueda de un archivo de acceso aleatorio:

Abrir el archivo Zip.

Buscar en la entrada de directorio y localizar la posicin para el archivo


que quiere extraer.

Buscar (hacia atrs o adelante) dentro del archivo Zip hasta la posicin
del archivo a extraer.

Extraer el archivo.

Cerrar el archivo Zip.

Este algoritmo es mucho ms eficiente porque slo lee la entrada de directorio


y el archivo que se quiere extraer. (Los archivos .zip que contiene varios
archivos dentro, contienen una breve descripcin de las posiciones que ocupa
cada archivo dentro de este. Eso es lo que se lee para saber dnde est el
archivo y extraerlo).
La clase RandomAccessFile del paquete java.io implementa un archivo de
acceso aleatorio.
Utilizar Archivos de Acceso Aleatorio
Al contrario que las clases de acceso secuencial, RandomAccessFile se utiliza
tanto para leer como para escribir archivos. Se puede crear el
RandomAccessFile con diferentes argumentos dependiendo de lo que se
intente hacer, leer o escribir.
La clase RandomAccessFile implementa las interfaces DataInput y DataOutput
y por lo tanto puede utilizarse tanto para leer como para escribir.
RandomAccessFile es similar a FileInputStream y FileOutputStream en que se
especifica un archivo del sistema de archivos nativo para abrirlo cuando se
crea. Se puede hacer esto con un nombre de archivo o un objeto File. Cuando
se crea un RandomAccessFile, se debe indicar si slo se va a leer el archivo o
tambin se va a escribir en l. La siguiente lnea de cdigo java crea un
RandomAccessFile para leer el archivo llamado prueba.txt:
new RandomAccessFile("prueba.txt", "r");
Y esta otra abre el mismo archivo para leer y escribir:

Instituto Tecnolgico de Morelia.

Pgina 116

ITM Unidad III Sistemas de Archivos


new RandomAccessFile("prueba.txt", "rw");
Despus de haber abierto el archivo, se pueden utilizar los mtodos comunes
read() o write() para realizar la I/O sobre el archivo. En la siguiente tabla se
muestran algunos de los mtodos para leer o escribir que posee esta clase.
Mtodo
read()
write()
readLine()
writeLong()
readShort()
readLong()
readInt()

Funcin
Lee un byte de informacin del archivo.
Escribe un byte especfico en el archivo.
Lee la siguiente Lnea de texto del archivo.
Escribe un dato tipo long en el archivo.
Lee un nmero con signo de 16 bits del archivo.
Lee un dato tipo long del archivo.
Lee un dato tipo Int del archivo.
Tabla 3.1 Mtodos de la clase RandomAccessFile.

Esta clase posee mtodos suficientes para leer cualquier tipo de dato nativo de
java, lneas en un archivo, escribir cualquier tipo de dato nativo de java e
incluso mtodos para moverse a determinada posicin.
RandomAccessFile soporta la nocin de puntero de archivo. El puntero de
archivo indica la posicin actual dentro del archivo. Cuando el archivo se crea
por primera vez, el puntero de archivo es cero, indicando el principio del
archivo. Las llamadas a los mtodos readTipoDeDato() y writeTipoDeDato()
ajustan el puntero de archivo el nmero de bytes ledos o escritos.
Adems de los mtodos normales de E/S (Entrada / Salida) que mueven
implcitamente el puntero del archivo cuando ocurre una operacin,
RandomAccessFile contiene tres mtodos que manipulan explcitamente el
puntero de archivo.
skipBytes() : Mueve el puntero de archivo hacia adelante el nmero de bytes
especificado.
void seek() : Coloca el puntero del archivo en una posicin determinada. La
posicin se da como un desplazamiento en bytes desde el comienzo del
archivo. La posicin 0 marca el comienzo de ese archivo.
long getFilePointer() : Devuelve la posicin actual del puntero de archivo.
long length() : Devuelve la longitud del archivo. La posicin length() marca el
final de ese archivo.
Creacin de un Archivo de Acceso Aleatorio
Hay dos posibilidades para abrir un archivo de acceso aleatorio:
Con el nombre del archivo:
miRAFile = new RandomAccessFile( String nombre,String modo );

Instituto Tecnolgico de Morelia.

Pgina 117

ITM Unidad III Sistemas de Archivos


Con un objeto File:
miRAFile = new RandomAccessFile( File archivo, String modo );

El argumento modo determina si se tiene acceso de slo lectura (r) o de


lectura/escritura (r/w). Por ejemplo, se puede abrir un archivo de una base de
datos para actualizacin:
RandomAccessFile miRAFile;
miRAFile = new RandomAccessFile( "/tmp/kk.dbf","rw" );
Actualizacin de Informacin
Se pueden utilizar archivos de acceso aleatorio para aadir informacin a
archivos existentes:
Ejemplo: Agregar un botn a la aplicacin de escritorio que cree un archivo de
acceso aleatorio, se mueva al final del archivo y agregue algunas lneas de
informacin.
private void crearRAFMouseClicked(java.awt.event.MouseEvent
evt) {
try {
//Cada vez que demos clic sobre este botn,
//se incorporara una nueva
//lnea al archivo de log que se crea
//la primera vez que se ejecuta
RandomAccessFile miRAFile;
String s = "Informacion a incorporar";
// Abrimos el archivo de acceso aleatorio
miRAFile = new RandomAccessFile("C:/prueba.txt", "rw");

// Nos vamos al final del archivo


miRAFile.seek(miRAFile.length());
miRAFile.writeBytes(s);
miRAFile.close();
} catch (IOException ex) {
System.out.println("Error
archivo");
}
}

Instituto Tecnolgico de Morelia.

al

Abrir

el

Pgina 118

ITM Unidad III Sistemas de Archivos

Figura 3.3 Ejemplo con RandomAccessFile.

Como puede observar la informacin se escribe de manera consecutiva, en la


misma lnea. Este tipo de archivo es muy til cuando se conoce la estructura
exacta de algn archivo y se desea introducir informacin en determinado lugar
o despus de determinada cantidad de bytes.
Observe que debido a sus caractersticas, usted es capaz de regresar a cierta
posicin en el archivo o ir de nuevo al inicio si as lo requiere para alguna
aplicacin.
Leer y Escribir objetos (Serializacin).
La serializacin es una caracterstica de objetos (cuya clase implementa la
interfaz Serializable) que les permite convertirse en una secuencia de bytes
que pueden ser posteriormente ledos para restaurar al objeto original. Esta
caracterstica se mantiene incluso al mandar la informacin por alguna red sin
importar si quiera si se enva de un sistema operativo a otro distinto.
Para hacer una clase serializable, esta debe implementar la interfaz
Serializable por ejemplo:
public class MiClase implements java.io.Serializable{
private int[] x;
private int n;
//otros miembros...
}
Hay dos clases que se especializan en la lectura y escritura de objetos. Estas
clases con: ObjectInputStream y ObjectOutputStream. Estas clases ayudan en
la lectura y escritura de clases que implementan serializacin, como la del
ejemplo anterior.
Para escribir objetos siga los siguientes pasos:
1. Creamos un objeto de la clase MiClase o cualquiera que implemente
serializacin.
MiClase objetoAEscribir = new MiClase(new [] {1,2,3,4,5});
Estamos creando un arreglo de enteros para que el objeto tenga algo de
informacin.

Instituto Tecnolgico de Morelia.

Pgina 119

ITM Unidad III Sistemas de Archivos


2. Creamos un flujo de salida. O sea un objeto FileOutputStream, le
pasamos el nombre del archivo en el que queremos escribir o el objeto
file que contenga dicha informacin (Estos mtodos se analizaron
anteriormente).
FileOutputStream fileOut=new FileOutputStream("prueba.obj");
3. Ya creamos un flujo de salida a un archive, sin embargo, necesitamos
relacionar el objeto que acabamos de crear con uno de la clase
ObjectOutputStream que es el que procesa los datos.
ObjectOutputStream flujoSalida=new ObjectOutputStream(fileOut);

O puede unir los dos pasos anteriores con la siguiente lnea:


ObjectOutputStream flujoSalida=new ObjectOutputStream(new
FileOutputStream("prueba.obj"));
4. El objeto flujoSalida puede utilizar ahora al mtodo writeObject para
escribir los objetos en un archivo en el disco duro. Por ejemplo, para
escribir un objeto de la clase MiClase y un String el cdigo es el
siguiente:
flujoSalida.writeObject("Esta String se guardar\n");
flujoSalida.writeObject(onjetoAEscribir);
5. Por ltimo, se cierran los flujos de salida.
flujoSalida.close();
El cdigo completo se vera de la siguiente manera:
MiClase objetoAEscribir= new MiClase(new int[]{12, 15, 11, 4,
32});
FileOutputStream fileOut=new FileOutputStream("prueba.obj");
ObjectOutputStream flujoSalida=new
ObjectOutputStream(fileOut);
flujoSalida.writeObject("guardar este string y un objeto\n");
flujoSalida.writeObject(lista1);
flujoSalida.close();
Para leer objetos siga los siguientes pasos:

Instituto Tecnolgico de Morelia.

Pgina 120

ITM Unidad III Sistemas de Archivos


1. Creamos un objeto de la clase FileInputStream, ste ser nuestro flujo
de entrada al archivo. Le pasamos el nombre y directorio del archivo que
deseamos utilizar o un objeto file que contenga el dato.
FileInputStream fileIn=new FileInputStream("media.obj");
2. El flujo de entrada ObjectInputStream es el que procesa los datos, se
debe vincular al objeto de la clase FileInputStream que creamos.
ObjectInputStream flujoEntrada=new ObjectInputStream(fileIn);

3. El objeto flujoEntrada posee ahora los mtodos necesarios para leer


objetos que se encuentren en un archivo. El mtodo que llama
readObject se encarga de leer objetos del flujo de entrada, o sea, el
archivo. Por ejemplo, para leer un objeto String y un objeto de MiClase
las lneas son las siguientes:
String str=(String)flujoEntrada.readObject();
MiClase obj=(MiClase)flujoEntrada.readObject();
4 Utilice los objetos recuperados. Una vez que llega a este punto, puede
disponer de los objetos como le plazca, puede utilizar sus mtodos o
propiedades para lo que sea que los haya recuperado de la misma manera que
lo hace habitualmente. Por ejemplo, imprimiremos un dato del objeto obj y al
objeto str.
System.out.println("Valor de n "+obj1.n);
System.out.println(El objeto String contiene +str);
5. Y por ltimo, al igual que al escribir objetos, se cierran los flujos.
flujoEntrada.close();
Modificador transient
El escribir objetos muchas veces se utiliza para mandarlos por medio de
archivos a travs de internet, esto podra ser un problema si usted transporta
informacin importante o secreta. Por ello existe el modificador transient, este
modificador protege los datos de un objeto cuando lo escribimos en un archivo.
Este modificador se utiliza de la siguiente manera:
public class MiClase implements java.io.Serializable{
private int[] x;
private transient int n;
//otros miembros...
}

Instituto Tecnolgico de Morelia.

Pgina 121

ITM Unidad III Sistemas de Archivos


Como puede ver, nicamente debe colocar la palabra transient antes del tipo
de dato. Para escribir un objeto que contenga este tipo de proteccin, el
proceso es el mismo.

3.3 Manejo de archivos.


El manejo de archivos en java es el conjunto de operaciones que se pueden
realizar con ellos en sus respectivos tipos. A lo largo de esta unidad estos
procesos fueron ya explicados para que se comprendiera mejor la explicacin
de cada tema por lo que en este apartado se explicarn algunas otras
herramientas tiles para el manejo de archivos en java que no se mencionaron
anteriormente.
Clase JFileChooser
La clase JFileChooser proporciona una interfaz al usuario para elegir un
archivo de una lista. Un selector de archivos es un componente que podemos
situar en cualquier lugar del GUI (interfaz Grfica de Usuario) de nuestro
programa. Sin embargo, normalmente los programas los muestran en dilogos
modales porque las operaciones con archivos son sensibles a los cambios
dentro del programa (Recuerde, un cuadro de dilogo modal no permite que el
programa siga interactuando con el usuario hasta que se cierre). La clase
JFileChooser hace sencillo traer un dilogo modal que contiene un selector de
archivos.
Los selectores de archivos se utilizan comnmente para dos propsitos.

Para presentar una lista de archivos que pueden ser abiertos por la
aplicacin.

Para permitir que el usuario seleccione o introduzca el nombre de un


archivo a grabar.

Recuerde que hasta ahora, en todos los ejemplos relacionados con archivos,
debemos introducir el directorio y nombre del archivo que queremos abrir, con
esta clase, podremos elegir el archivo que deseemos abrir o guardar con el
nombre que queramos sin tener que predefinir nada en el cdigo con relacin a
estos nombres.
Es conveniente aclarar que el selector de archivos ni abre ni graba archivos.
Presenta una GUI para elegir un archivo de una lista. El programa es
responsable de hacer algo con el archivo, como abrirlo o grabarlo.
Como la mayora de los programadores slo quieren un selector para abrir o
para grabar archivos, la clase JFileChooser proporciona los mtodos
convenientes para mostrar estos tipos de selectores de archivos en un dilogo.
Nuestro primer ejemplo ilustra estos usos.

Instituto Tecnolgico de Morelia.

Pgina 122

ITM Unidad III Sistemas de Archivos


Ejemplo: Agregue dos botones a una aplicacin de escritorio y programe los
eventos correspondientes para que uno permita abrir un archivo de una lista y
el otro permita guardar un archivo con un nombre cualquiera.

Figura 3.4 Ejemplo usando la clase JFileChooser.

Cuando se pulsa el botn Abrir Archivo el programa trae un open file


chooser. Cuando se pulsa el botn Guardar Archivo el programa trae un
save file chooser. Aqu podemos ver una imagen de un selector de apertura de
archivos.

Figura 3.5 Selector de apertura

El cdigo que crea y muestra el selector de apertura de archivos es el


siguiente.

Instituto Tecnolgico de Morelia.

Pgina 123

ITM Unidad III Sistemas de Archivos


private void abrirArchivoMouseClicked(java.awt.event.MouseEvent
evt) {
JFileChooser fileChooser = new JFileChooser();
int valor = fileChooser.showOpenDialog(fileChooser);
//Guardamos el valor de retorno para saber si se abri
//o no un archivo, Otras utilidades se explicarn
//adelante.
}

Por defecto, un selector de archivos que no haya sido mostrado anteriormente


muestra todos los archivos en el directorio del usuario. Podemos especificarle
un directorio inicial utilizando uno de los otros constructores de JFileChooser, o
podemos seleccionar el directorio directamente con el mtodo
setCurrentDirectory.
El programa de ejemplo utiliza el mismo ejemplar de JFileChooser para mostrar
el selector de grabar archivos. El cdigo es el siguiente:
private
guardarArchivoMouseClicked(java.awt.event.MouseEvent

void
evt)

{
JFileChooser fileChooser = new JFileChooser();
int valor = fileChooser.showSaveDialog(fileChooser);

}
Utilizando el mismo selector de archivos para abrir y grabar archivos, el
programa consigue estos beneficios.

El selector recuerda el directorio actual entre usos, por eso los dilogos
de abrir y grabar comparten el mismo directorio actual.

Slo tenemos que personalizar un selector de archivos, y nuestra


personalizacin se aplicar a las dos versiones, la de apertura y la de
grabacin.

Cmo hemos podido ver en los fragmentos de cdigo anteriores, los mtodos
showOpenDialog() y showSaveDialog() devuelven un entero que indica si el
usuario ha seleccionado un archivo. Podemos utilizar el valor de retorno para
determinar si realizar o no la operacin requerida.
Si el usuario elige un archivo, el cdigo llama a getSelectedFile (del objeto
fileChooser) sobre el selector de archivos para obtener un ejemplar de File, que
representa el archivo elegido. Podemos utilizar otros mtodos del objeto File,
como getPath o isDirectory, para obtener informacin sobre l. Tambin
podemos llamar a otros mtodos como delete y rename para cambiar el archivo

Instituto Tecnolgico de Morelia.

Pgina 124

ITM Unidad III Sistemas de Archivos


de alguna forma. Por supuesto, podramos leer o grabar el archivo utilizando
una de las clases lectoras o escritoras proporcionadas
Anteriormente abramos un archivo indicando la ruta y nombre del mismo, con
los mtodos de fileChooser como getPath podemos hacer lo mismo que antes
pero sin especificar solo un archivo.
Si quieres crear un selector de archivos para una tarea distinta de abrir o
grabar, o si quieres personalizar el selector de archivos, sigue leyendo.
Selectores de Archivos Personalizados
Como hemos visto, JFileChooser proporciona un mtodo para mostrar un
selector de apertura de archivos y otro mtodo para mostrar un selector para
grabar archivos. En aspecto y comportamiento, la nica diferencia entre estos
dos selectores es el ttulo de la ventana del dilogo y la etiqueta del botn
"accept".
La clase tiene un tercer mtodo, showDialog, para mostrar un selector de
archivos para una tarea personalizada. Aqu podemos ver el cdigo que
muestra el dilogo selector de archivos para la tarea Enviar.
private
void
abrirArchivoMouseClicked(java.awt.event.MouseEvent
evt)
{
JFileChooser fileChooser = new JFileChooser();
int valor = fileChooser.showDialog(fileChooser,
"Enviar");
}

Figura 3.6 Selector personalizado.

El primer argumento del mtodo showDialog es el componente padre para el


dilogo. El segundo argumento es un String que proporciona tanto el ttulo de la
ventana de dilogo como la etiqueta del botn "accept".

Instituto Tecnolgico de Morelia.

Pgina 125

ITM Unidad III Sistemas de Archivos


De nuevo, el selector de archivos no hace nada con el archivo seleccionado. El
programa es responsable de implementar la tarea personalizada para la que se
cre el selector de archivos.
Filtrar la lista de archivos
Por defecto, un selector de archivos muestra todos los archivos y directorios
que detecta. Un programa puede aplicar uno o ms filtros de archivos a un
selector de archivos para que el selector slo muestre algunos de ellos. El
selector de archivos llama al mtodo accept del filtro con cada archivo para
determinar si debera ser mostrado. Un filtro de archivos acepta o rechaza un
archivo basndose en algn criterio como el tipo, el tamao, el propietario, etc.
JFileChooser soporta tres clases de filtrado. Los filtros se checan en el orden
aqu listado. Por eso un filtro del segundo tipo solo puede filtrar aquellos
archivos aceptados por el primero, etc.
Filtrado interno: El filtrado se configura a travs de llamadas a mtodos
especficos de un selector de archivos. Actualmente el nico filtro interno
disponible es para los archivos ocultos. Se llama a setFileHidingEnabled(true) y
sirve para desactivar la seleccin de archivos ocultos (como aquellos que
empiezan con '.' en sistemas UNIX).
Filtrado controlado por la aplicacin: La aplicacin determina los archivos a
mostrar. Se crea una subclase de FileFilter, y se utiliza como un argumento
para setFileFilter. El selector de archivos slo mostrar los archivos que acepte
el filtro.
Filtrado seleccionable por el usuario: La GUI selector de archivos proporciona
una lista de filtros de la que el usuario puede elegir uno. Cuando el usuario
elige un filtro, el selector de archivos muestra slo aquellos archivos que acepte
el filtro. En el siguiente ejemplo se aade un filtro de archivos personalizado a
su lista de filtros seleccionables del selector de archivos.
Ejemplo: Cree un botn en nuestra aplicacin o edite uno ya existente para que
al dar clic, muestre un selector de archivos personalizado. Crear un filtro
personalizado para que el selector de archivos muestre nicamente los
archivos cuya extensin pertenezca a una imagen. Para ello deber crear una
clase separada que herede las propiedades de la clase FileFilter.
El cdigo del botn es:
private
evt) {

void

abrirArchivoMouseClicked(java.awt.event.MouseEvent

JFileChooser fileChooser = new JFileChooser();


int valor = fileChooser.showDialog(fileChooser,
"Abrir Imagen");
Filtro imagenes = new Filtro();
fileChooser.addChoosableFileFilter(imagenes);
}

Instituto Tecnolgico de Morelia.

Pgina 126

ITM Unidad III Sistemas de Archivos


Lo que se hace es lo siguiente:
a. Creamos un objeto FileChooser, este nos ayuda a mostrar los
selectores de archivos.
b. Guardamos el valor de retorno que nos indica que botn del
selector se presion para realizar lo que deseemos. Al mismo
tiempo, se est personalizando la ventana para mostrar un texto
diferente en el botn accept, Abrir Imagen en este caso.
c. Creamos una instancia de la clase que representa al filtro.
Filtro.java que hicimos. Esta se muestra a continuacin.
d. Agregamos el filtro a nuestro FileChooser. Este mtodo, recibe
como parmetro un objeto FileFilter. Debido a esto, la clase que
nosotros diseamos (Filtro.java) debe heredar las caractersticas
de FileFilter.

El filtro personalizado se implementa en Filtro.java, como una subclase de


FileFilter. La clase Filtro implementa el mtodo getDescription() para devolver
un string y ponerlo en la lista de filtros seleccionables. Como muestra en el
cdigo de la clase Filtro, se implementa el mtodo accept para aceptar todos
los directorios y cualquier archivo que tenga las extensiones ".jpg", ".jpeg",
".gif", ".tif", or ".tiff".
El cdigo de la clase que representa al filtro es el siguiente: El nombre de la
clase en Filtro.java
package aplicaciondeescritorio;
import java.io.File;
import javax.swing.*;
import javax.swing.filechooser.*;
//debe heredar de FileFilter para que se pueda usar la
//clase en el mtodo que la utiliza.
public class Filtro extends FileFilter{
final static String jpeg = "jpeg";
final static String jpg = "jpg";
final static String gif = "gif";
final static String tiff = "tiff";
final static String tif = "tif";

Instituto Tecnolgico de Morelia.

Pgina 127

ITM Unidad III Sistemas de Archivos


// Acepta todos los directorios y los archivos gif, jpg,
//o tiff.
public boolean accept(File f) {
if (f.isDirectory()) {
return true;
}
String s = f.getName();
int i = s.lastIndexOf('.');
//Buscamos despus del punto en cada archivo para saber su
//ext.
if (i > 0 && i < s.length() - 1) {
String extension =
s.substring(i+1).toLowerCase();
if (tiff.equals(extension) ||
tif.equals(extension) ||
gif.equals(extension) ||
jpeg.equals(extension) ||
jpg.equals(extension)) {
return true;
} else {
return false;
}
}
return false;
}
// Mtodo que nos muetra la descripcion del filtro
public String getDescription() {
return "Solo Imagenes";
}
}

Como al principio se indica que esta clase pertenece al mismo paquete de


nuestra aplicacin (package aplicaciondeescritorio;), no es necesario importarla
en ella para instanciar.
Aceptando todos los directorios, este filtro permite al usuario navegar a travs
del sistema de archivos. Si se omitieran las lneas en negrita de este mtodo, el
usuario se vera limitado al directorio en que se inicializ el selector de
archivos.
A continuacin, los mtodos relacionados con lo aprendido y una breve
descripcin de su funcionamiento.
Crear y Mostrar un Selector de Archivos
Mtodo

Instituto Tecnolgico de Morelia.

Propsito

Pgina 128

ITM Unidad III Sistemas de Archivos


JFileChooser()
JFileChooser(File, FileSystemView)
JFileChooser(File)
JFileChooser(FileSystemView)
JFileChooser(String, FileSystemView)
JFileChooser(String)
int showOpenDialog(Component)
int showSaveDialog(Component)
int showDialog(Component, String)

Crea un ejemplar de JFileChooser.

Muestra un dilogo modal


conteniendo el selector de archivos.

Tabla 3.2 Mtodos para crear y mostrar un selector de archivos.

Navegar por la Lista del Selector de Archivos


Mtodo
void ensureFileIsVisible(File)
void setCurrentDirectory(File)
File getCurrentDirectory
void changeToParentDirectory()
void rescanCurrentDirectory()

Propsito
Fuerza el archivo indicado a ser
visible en la lista de archivos.
Selecciona u obtiene el directorio
cuyos archivos se estn mostrando en
el selector de archivos.
Cambia la lista para mostrar el
directorio padre del directorio actual.
Comprueba el sistema de archivos y
actualiza la lista del selector.

Personalizar el Selector de Archivos


Mtodo
JComponent getAccessory()
void setAccessory(JComponent)
void setFileFilter(FileFilter)
FileFilter getFileFilter()
void setFileView(FileView)
FileView getFileView()
FileFilter[] getChoosableFileFilters()
void setChoosableFileFilters
(FileFilter[])
void addChoosableFileFilter(FileFilter)
boolean removeChoosableFileFilter
(FileFilter)
void resetChoosable(FileFilter)
FileFilter getAcceptAllFileFilter()
void setFileHidingEnabled(boolean)
boolean isFileHidingEnabled()

Propsito
Selecciona u obtiene el accesorio del
selector de archivos.
Selecciona u obtiene el filtro primario
del selector de archivos.
Selecciona u obtiene el visor de
archivos del selector.

Selecciona, obtiene o modifica la lista


de filtros seleccionables.

Selecciona u obtiene si se muestran


los archivos ocultos.

Tabla 3.3 Mtodos para personalizar el selector de archivos.

Seleccionar Archivos y Directorios


Mtodo
void setFileSelectionMode(int)

Instituto Tecnolgico de Morelia.

Propsito
Selecciona el modo de seleccin de

Pgina 129

ITM Unidad III Sistemas de Archivos


int getFileSelectionMode()
archivos. Los valores aceptables son
boolean isDirectorySelectionEnabled() FILES_ONLY,
DIRECTORIES_ONLY,
y
boolean isFileSelectionEnabled()
FILES_AND_DIRECTORIES.
void setMultiSelectionEnabled
Selecciona u obtiene si se pueden
(boolean)
seleccionar varios archivos a la vez.
boolean isMultiSelectionEnabled()
void setSelectedFile(File)
Selecciona u obtiene el archivo
File getSelectedFile()
actualmente seleccionado.
void setSelectedFiles(File[])
Selecciona u obtiene los archivos
File[] getSelectedFiles()
actualmente seleccionados.
Tabla 3.4 Mtodos para seleccionar archivos y directorios.

3.4 Controlar errores en tiempo de ejecucin.


En todo programa existen errores inesperados en tiempo de ejecucin, y
tambin errores que no consideramos debido a nuestra propia inexperiencia
como programadores. Algunos de estos errores ocurren por ejemplo, al intentar
acceder a un elemento del arreglo que est fuera del lmite de nuestro arreglo,
o cuando intentamos acceder a un archivo inexistente, entre otros.
Normalmente estos errores interrumpen el flujo de ejecucin de nuestros
programas, hasta el extremo de provocar la terminacin del programa en forma
inmediata. Java hace uso de las excepciones12 para poder controlar los errores
en tiempo de ejecucin. En Java, casi todos los tipos de errores que puedan
surgir en tiempo de ejecucin lanzan excepciones, es decir, cuando ocurre un
error dentro de un mtodo de Java, este mtodo crea un objeto Exception,
dicho objeto contiene informacin sobre la excepcin, que incluye su tipo y el
estado del programa cuando ocurri el error. El sistema de ejecucin es el
responsable de buscar algn cdigo para manejar el error. El manejo de
excepciones en Java sigue una estructura como esta:
try {
//Codigo donde puede ocurrir un error
}
catch (ExcepcionA ex) { // Que se va a hacer en caso que
se lance una Excepcion A }
...
catch (ExcepcionZ ex) { // Que se va a hacer en caso que
se lanze una Excepcion Z }
Por ejemplo: el siguiente es el cdigo de un botn de nuestro ejemplo que se
encarga de crear un archivo de acceso aleatorio, se ubica al final del archivo y
agrega algo de informacin.

12

Una excepcin es un evento que ocurre durante la ejecucin del programa, de forma que interrumpe el flujo normal de las
sentencias.

Instituto Tecnolgico de Morelia.

Pgina 130

ITM Unidad III Sistemas de Archivos


private
evt) {

void

crearRAFMouseClicked(java.awt.event.MouseEvent

try {
// Cada vez que demos clic sobre este botn, se
//incorporara una nueva lnea al archivo de
// log que se crea la primera vez que se ejecuta
RandomAccessFile miRAFile;
String s = "Informacion a incorporar";
// Abrimos el archivo de acceso aleatorio
miRAFile =
new RandomAccessFile("C:/prueba.txt", "rw");
// Nos vamos al final del archivo
miRAFile.seek(miRAFile.length());
miRAFile.writeBytes(s);
miRAFile.close();
} catch (IOException ex) {
System.out.println("Error al Abrir el archivo");
}
}

Dentro del bloque try { } viene encerrada la parte del programa que se desea
manejar sus excepciones. El cdigo dentro de algn catch (TipoDeExcepcion
e) se ejecuta en caso de que se lance una excepcin TipoDeExcepcion o que
pertenezca al grupo TipoDeExcepcion. El sistema de ejecucin Java busca rar
el mtodo que est interesado en manejar una excepcin particular. Es decir si
se lanza una excepcin en el mtodo A, pero si A no est interesado en
manejar dicha excepcin, entonces el sistema de ejecucin Java ve quin
llam a A (supongamos que si existe, y es el mtodo B), entonces se regresa a
B y ve si est interesado en dicha excepcin, y as consecutivamente hasta
llegar al mtodo principal de nuestra aplicacin. En caso de no encontrar
alguien que quiera manejarlo, comnmente Java manda una lista de mensajes
en nuestra ventana de consola, y en muchos casos se termina la ejecucin de
nuestro programa. Cuando manejamos excepciones, podemos manejar
excepciones en forma especfica (por ejemplo, usar un ndice que est fuera de
los lmites de nuestro arreglo), o manejar una excepcin de cierta categora
(por ejemplo, una excepcin lanzada por mal uso de un arreglo de datos), o
manejar todas las excepciones en su conjunto. Para el primer caso, es
necesario este cdigo:
catch(ArrayIndexOutOfBoundsException e){ }
Para el segundo:
catch (ArrayException e){}
Y para el ltimo
catch (Exception e){ }
Instituto Tecnolgico de Morelia.

Pgina 131

ITM Unidad III Sistemas de Archivos


En la prctica no es recomendable hacer uso de manejadores de excepciones
demasiado generales, como la del ltimo caso. Las excepciones son parte de
Java, y es muy comn usarlos en las operaciones E/S, ya que es donde ms
probabilidad hay de que se lance una. El uso de try y catch se abordo a fondo
en la primera unidad de este libro.

Instituto Tecnolgico de Morelia.

Pgina 132

ITM Unidad III Sistemas de Archivos


EJERCICIOS PROPUESTOS.
3.1 Para continuar con nuestro proyecto de la calculadora, ahora
implementaremos archivos en ella. Deber crear un archivo en donde contenga
una lista de nombres, nombres de usuario y contraseas, estructure el archivo
como crea que le convenga, ya sea separando el nombre y la contrasea por
un carcter o simplemente basndose en las posiciones. El objetivo ser que el
programa pida un nombre de usuario y una contrasea, revisar que se el
usuario este registrado en el archivo de texto y dar o no acceso a la
aplicacin. El programa utilizara las columnas de nombre y contrasea para
validar el acceso a nuestra calculadora y el campo de nombre para mostrarlo
en alguna parte de la calculadora con la leyenda Usuario:
nombre_del_usuario. Despus, tendr que agregar un men que le permita
agregar, eliminar, modificar o consultar usuarios. Agregue los objetos que
considere necesarios.
NOTA: Puede leer y manipular la informacin en arreglos y almacenar en
archivo solo al momento de entrar o salir de la aplicacin.
Ejemplos del archivo de texto:

3.2 Programe una pequea funcin que le permita leer un archivo de entrada y
le diga cuantas palabras encontr en el mismo.
3.3 Disee un programa que le permita leer un archivo en su totalidad y que le
diga cuantas veces encontr cierta palabra en l. El usuario deber especificar
que palabra desea buscar y elegir el archivo de entrada.
3.4 Programe una aplicacin que le permita consultar el contenido de un
archivo de texto, se le proporcionaran dos datos al programa, una palabra que
se desea buscar y otra palabra con la que se desea sustituir la anterior. El
Instituto Tecnolgico de Morelia.

Pgina 133

ITM Unidad III Sistemas de Archivos


programa buscar la primera palabra y la sustituir por la segunda y al final
crear un nuevo archivo.
3.5. Implemente la utilizacin de archivos para manipular la informacin de una
agenda electrnica. Este programa le permitir crear, borrar, modificar o
consultar de uno o varios archivos la informacin de sus amigos, familiares y
conocidos. Utilice la clase JOptionPane para permitir que el usuario seleccione
el archivo con el que se desea trabajar en lugar de especificar un directorio fijo.
Lea la informacin de un(os) archivo(s) con una estructura especifica, manipule
la informacin en arreglos y almacene la informacin al salir de la aplicacin. La
informacin almacenada es el nombre y su nmero telefnico nicamente.
3.6 Disee y programe las clases necesarias para crear una aplicacin que le
permita manipular una lista de alumnos y sus calificaciones almacenada en un
archivo de texto. Deber ser capaz de ordenar a los alumnos por su nombre o
por sus calificaciones. Adems, deber ser capaz de agregar nuevos alumnos
a su lista o eliminar registros existentes. Luego de tener una lista en orden,
deber ser capaz de guardar dicha lista ordenada en un archivo distinto al
archivo de origen.
3.7 Crear un programa traductor del idioma ingls. Para ello, introduzca un
archivo que contenga las palabras que pueden ser traducidas, cuando el
usuario escriba una palabra en ingles, el programa leer el archivo y buscar el
significado para mostrarlo en la pantalla.
3.8 Desarrolle una aplicacin que lea un archivo que contiene una lista de
nombres con diferentes longitudes. El programa deber comprobar que todos
los nombres midan menos de 20 caracteres, de lo contrario deber ajustarlo a
este tamao, elimine espacios en blanco que se encuentren en los extremos (si
es que los hay) antes de comprobar el tamao. Cree un nuevo archivo con los
nombres filtrados y haga que el programa le diga cuantos registros fueron
modificados para que su tamao correspondiera.
3.9 Programe lo necesario para crear una aplicacin que le permita leer de un
archivo una lista de personas, su direccin y su telfono. Las columnas
debern medir: nombre, 20 caracteres, direccin 60 caracteres y telfono 20
caracteres. El programa deber rellenar con espacios en blanco lo necesario
para que haya 3 columnas con los datos exactamente en ese formato. El
archivo de entrada puede tener algn formato en especfico pero el de salida
deber tener la estructura mencionada.
3.10 Disee un programa que lea de un archivo una lista de valores numricos
(telfonos) y busque si hay alguno repetido. El programa le notificar que
nmero y cuantas veces esta repetido.

Instituto Tecnolgico de Morelia.

Pgina 134

ITM Unidad III Sistemas de Archivos


PROYECTO INTEGRAL
El siguiente es un proyecto relativamente sencillo que se desarroll en la
empresa Konexo de grupo posadas (Morelia) para facilitar un proceso de
filtrado de informacin para ciertas aplicaciones que trabajan utilizando
archivos de texto con formato de posiciones.
El programa consiste en tomar como entrada un archivo de Excel o pasar la
informacin que contenga dicho archivo separada por algn carcter a otro
archivo de texto para que la informacin se pueda separa en columnas (Las
columnas dentro de un archivo de texto plano se identifican por los caracteres
de separacin como #, , |, etc.). Las columnas ms comunes son:
Nombre, apellido paterno, apellido materno, direccin, ciudad y nmero
telefnico.

El objetivo es obtener como salida un archivo de texto plano con la siguiente


estructura:
ESTRUCTURA DEL ARCHIVO DE SALIDA.
ID
2
3
7
8
9
10
11
12
13
12
12
14
13

Descripcin del campo


Tipo de producto
Tipo de solicitud
NSS
CURP
Ap. Paterno
Ap. Materno
Nombres
Telefono casa
Telefono oficina
Telefono celular
Telefono patrn
Extension oficina
Extension patron

Tipo de dato
Numrico
Numrico
Numerico
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR

Longitud
6
6
11
18
40
40
40
20
20
20
20
6
6

Pos Inicial
1
7
13
24
42
82
122
162
182
202
222
242
248

Pos Final
6
12
23
41
81
121
161
181
201
221
241
247
253

Comentarios
1 AFORE
1 Afiliacin 2 Traspaso
nmero de seguro social
Clave CURP
Apellido Paterno
Apellido Materno
Nombres
Telfono del domicilio del trabajador
Telfono de la oficina del trabajador
Telfono celular del trabajador
Telfono del jefe el trabajador
Extensin de oficina del trabajador
Extensin del oficina del jefe

Los campos de tipo de producto y tipo de solicitud se rellenan con: 000001 en


cada registro y los datos que no existen en nuestro archivo de entrada como
Telfono del patrn, telfono celular y dems. Se rellenan con espacios en
Instituto Tecnolgico de Morelia.

Pgina 135

ITM Unidad III Sistemas de Archivos


blanco. El nico campo que no se deber quedar en blanco es el NSS, pero
como no lo tenemos llenamos los campos con 00000000001, 00000000002 y
as sucesivamente para cada registro.
Un ejemplo del archivo final es:

Las validaciones son las siguientes:

Se necesitan por lo menos 10 dgitos en el nmero telefnico (solo


nmeros). Los registros que no cumplan con esto se eliminan junto
con los datos que los acompaan. (No deben tener espacios,
diagonales, parntesis, menos de 10 dgitos, guiones medios, letras,
etc.).

Rellenar con espacios en blanco cada campo para que se completen


un nmero determinado de caracteres por lnea.

En resumen, debe leer del archivo de Excel las diferentes columnas o extraer la
informacin a un archivo de texto que le permita realizar las validaciones
necesarias a los registros. La aplicacin real obedece ms validaciones y
reglas pero para nuestro proyecto creo que con esto ser suficiente.

Instituto Tecnolgico de Morelia.

Pgina 136

Unidad 4. Acceso a Datos


Bases de Datos.

ITM Unidad IV Acceso a Datos

4.1 Introduccin.
En esta unidad trabajaremos sobre bases de datos, sin embargo, no es objetivo
de esta unidad profundizar demasiado en el tema, mas bien, el dar al
estudiante una idea del funcionamiento y los beneficios de utilizar una base de
datos y tambin presentarle superficialmente algunas nuevas tecnologas
diseadas para trabajar con ellas que adems de proporcionar un mejor diseo
a la estructura de una aplicacin, ayudan muchsimo a un funcionamiento
mucho ms eficiente.
Como podr recordar, el desarrollo de este material se basa en el lenguaje
java, sin embargo, adicionalmente a los temas que se deben desarrollar de
acuerdo al temario, explicar y ejemplificare el uso de tecnologas
importantsimas relacionadas con el lenguaje java, que adems son
equivalentes a las que se piden en el temario pero que son basadas en otros
lenguajes como Visual Basic. Es necesario mencionar que debido a que las
bases de datos son objeto de estudio en materias posteriores, aqu solo dar
una breve introduccin. Dando as al estudiante los conocimientos necesarios
para facilitar el aprendizaje futuro.
Para ello utilizaremos la herramienta de java JDBC13. Como manejador de
bases de datos utilizaremos MySQL.
JDBC fue diseado para mantener sencillas las cosas sencillas. Esto significa
que el API14 JDBC hace muy sencillas las tareas diarias de una base de datos,
como una simple sentencia SELECT. Esta seccin nos llevar a travs de
ejemplos que utilizan el JDBC para ejecutar sentencias SQL15 comunes, para
que podamos ver lo sencilla que es la utilizacin del API JDBC bsico.
Al final de esta primera seccin, sabremos cmo utilizar el API bsico del JDBC
para crear tablas, insertar valores en ellas, pedir tablas, recuperar los
resultados de las peticiones y actualizar las tablas. En este proceso,
aprenderemos como utilizar las sentencias sencillas y veremos un ejemplo de
un procedimiento almacenado. Tambin aprenderemos como realizar
transacciones y como capturar excepciones y avisos.
Instalar Componentes Necesarios.
Para crear una aplicacin que utiliza una base de datos debemos conectar
nuestro programa hecho en con el lenguaje java en NetBeans con el manejador
de la base de datos MySQL. Lo primero que debemos hacer antes de conectar
Java con MySQL en NetBeans es instalar ambos. En la primera unidad vimos
como
instalar NetBeans. Para MySQL, no solo instalaremos MySQL,
instalaremos un paquete llamado Appserv16.

13

Java Database Connectivity, es un API que permite ejecutar operaciones sobre una base de datos.
Del ingls Application Programming Interface Interfaz de Programacin de Aplicaciones.
15
Structured Query Language Lenguaje estructurado para consultas en una base de datos.
16
Es un paquete que instalar en la PC Apache, PHP, MySQL y phpMyAdmin, dejando las aplicaciones configuradas para su
funcionamiento.
14

Instituto Tecnolgico de Morelia.

Pgina 138

ITM Unidad IV Acceso a Datos


Appserv es una herramienta OpenSource para Windows que facilita la
instalacin de Apache, MySQL y PHP en una sola herramienta, esta
caracterstica facilita la tarea al usuario ya que se configuran las aplicaciones
de forma automtica y quedan listas y funcionando.
AppServ incluye:
Apache 2.2.8: servidor HTTP multiplataforma.
PHP 5.2.6: lenguaje de programacin dinmico que utilizan la mayora
de gestores de contenidos ms populares. Se integra a la perfeccin con
MySQL y Apache.
MySQL 5.0.51b: gestor de bases de datos, rpido y seguro.
phpMyAdmin 2.10.3: interfaz grfica de administracin para MySQL.
Una vez instalado AppServ, dispondremos de un servidor web y otro de base
de datos propio, configurado de manera local, y que nos permitir realizar todas
las pruebas necesarias en nuestra aplicacin.
La instalacin de este paquete es conveniente para explicar de manera ms
adecuada y comprensible lo relacionado con la base de datos. Para ello se
necesita phpMyAdmin.
phpMyAdmin es una herramienta escrita en PHP con la intencin de manejar
la administracin de MySQL a travs de pginas web, utilizando Internet.
Actualmente puede crear y eliminar Bases de Datos, crear, eliminar y alterar
tablas, borrar, editar y aadir campos, ejecutar cualquier sentencia SQL,
administrar claves en campos, administrar privilegios, exportar datos en varios
formatos y est disponible en 50 idiomas. Se encuentra disponible bajo la
licencia GPL (General Public License O sea open source).
Instalacin de AppServ.
Para instalar AppServ siga los siguientes pasos:
1. Baje la versin que desee del sitio oficial de AppServ, en este caso se
utilizar la versin (2.5.10), el link de la pgina oficial es el siguiente:
http://www.appservnetwork.com/
2. De doble clic al archivo y presione siguiente, acepte los trminos de uso
y seleccione los elementos que desea instalar. Cabe mencionar que se

Instituto Tecnolgico de Morelia.

Pgina 139

ITM Unidad IV Acceso a Datos


necesita apache server para que phpMyAdmin funcione. En nuestro
caso, instalaremos el paquete completo.

Figura 4.1 Ventana: Elegir nombre de pagina y puerto.

En este punto deber elegir el nombre de su pgina de internet y dar un


mail. Esto es para el servidor web apache. Por lo que si decidi no
instalar este componente no ver esta pantalla. Tambin deber
especificar porque puerto desea que trabaje el servidor. El valor
predefinido es el 80.
3. Posteriormente, deber elegir la configuracin de MySQL.

Figura 4.2 Ventana: configuracin de MySQL.

Instituto Tecnolgico de Morelia.

Pgina 140

ITM Unidad IV Acceso a Datos

Esta parte es de suma importancia ya que debe elegir una contrasea


para manejar las bases de datos, esta contrasea se requerir al
momento de conectar NetBeans con MySQL. No la olvide
4. Por ltimo nos pregunta si debemos iniciar el servidor apache y MySQL.

Para probar que la instalacin funciona debemos iniciar ambos servidores, para
hacer esto vaya a inicio y busque AppServ, luego Control Server by Service y
ah seleccione Apache start y MySQL start.
Puede ser que necesite en determinado momento detener o reiniciar el servidor
apache, para que no tenga que venir a este punto en todo momento, puede
utilizar Apache Monitor, al ejecutar esto, aparecer un pequeo icono en la
esquina inferior derecha con el cual tendr acceso a estos comandos.

Figura 4.3 Iniciar ambos servidores.

Una vez que ambos servidores estn funcionando habr algn navegador de
internet y escriba localhost en el apartado de la pgina.
Lo que se muestra es la pgina de inicio de nuestro servidor apache. Si no se
muestra la siguiente pantalla, puede ser que se haya instalado mal o que no
hayamos iniciado los servidores.
Nota: localhost funciona nicamente si usted dejo el puerto 80 al momento de
instalar el servidor apache, si por algn motivo usted cambio ese nmero,
deber escribir localhost:xxxx (Ej. Localhost:8080).

Instituto Tecnolgico de Morelia.

Pgina 141

ITM Unidad IV Acceso a Datos

Figura 4.4 Pantalla principal del servidor Apache.

Una vez que tenemos esta pgina vamos a entrar a phpMyadmin para
administrar nuestras bases de datos. Para ello pulse donde dice phpMyadmin
Database Manager.
Para tener acceso deberemos ingresar nuestro nombre de usuario y
contrasea; pero, hasta este momento nicamente existe el usuario root, para
el cual especificamos una contrasea al momento de instalar. Escriba root en
el nombre de usuario y la contrasea que eligi para poder entrar.

Figura 4.5 Pantalla principal de phpMyAdmin.

Esta es la interfaz de phpMyadmin que nos ayudar a administrar nuestra base


de datos.
Por ltimo veamos la tabla de MySQL donde se guardan los usuarios que
tienen acceso para ver qu usuarios tiene acceso.
NOTA: La utilizacin de phpMyadmin es muy sencilla pero debido a la
gran cantidad de funciones y a la gran extensin de la misma, no se
explicar a fondo su manejo en este apartado. Sin embargo, procesos
como la creacin de una base de datos, sus tablas y algunas otras
acciones se explicarn a detalle ms adelante.

Instituto Tecnolgico de Morelia.

Pgina 142

ITM Unidad IV Acceso a Datos


Para ver la tabla donde se guardan los usuarios que tiene acceso demos click
en Bases de Datos y seleccione la tabla de MySQL.

Figura 4.6 Como acceder a la tabla de usuarios

Como puede observar, se muestra un listado de las tablas que contiene esa
base de datos. Seleccione la tabla user que est en lo ms bajo.
Hay dos opciones:
Si da clic sobre la palabra user se mostraran los campos de la tabla, y su
descripcin. Esto es lo mismo que seleccionar la tabla y luego dar clic en la
pestaa Estructura.
Si da clic sobre la pequea imagen de la tabla, se mostrar el contenido de la
tabla, es decir los registros que se encuentran almacenados. Esto equivale a
seleccionar una tabla y dar clic en la pestaa Examinar (Esta opcin es la que
nos interesa en este momento.)

Figura 4.7 Consulta de la tabla user de mySQL.

Instituto Tecnolgico de Morelia.

Pgina 143

ITM Unidad IV Acceso a Datos

Como puede observar, se nos muestra la sintaxis de la consulta SQL que nos
mostrara el contenido de esta tabla en la seccin consulta SQL y en la parte
inferior nos lista los resultados de la consulta. Esta herramienta le puede ser de
gran utilidad si no est seguro de la sintaxis de alguna accin sobre una tabla
al momento de programar y necesite saber cmo hacer algo sobre alguna
tabla todo lo que usted haga aqu de manera grfica, se mostrara en consulta
SQL.
Vea que el nico registro de la tabla es el usuario root y en el campo
Password aparecen muchos caracteres. Esto es debido a que no es
conveniente tener almacenada este tipo de informacin sin codificar. (Al
momento de instalar, usted debi elegir algn mtodo de codificacin, si no se
otorga uno por default). Si desea agregar un nuevo registro a esa tabla, haga
click en la pestaa Insertar y llene los campos correspondientes.

Figura 4.8 Datos a llenar para dar de alta otro usuario.

Como puede ver, ser capaz de crear nuevos usuarios con diferentes
privilegios sobre las tablas o las cosas que puede hacer o no.
Conectar Java con MySql en NetBeans.
El proceso para conectar Java con MySQL es diferente en las diferentes
versiones de NetBeans debido a que algunas versiones ya tienen incluidos los
drivers necesarios y en otras se deben agregar manualmente.
Conexin en versiones sin drivers.
Lo primero es descargar el conector de la pgina oficial. El enlace es el
siguiente: http://www.mysql.com/products/connector/j/
Para conectar una base de datos con java, abrimos NetBeans y creamos un
proyecto, hacemos clic en la pestaa "Runtime" (En la versin que estamos
utilizando la pestaa dice Services) y buscamos la opcin "Databases",

Instituto Tecnolgico de Morelia.

Pgina 144

ITM Unidad IV Acceso a Datos


hacemos doble clic sobre ella. Nos mostrar una carpeta con el nombre Driver,
a esta le daremos clic con el botn derecho del mouse y seleccionamos Add
Driver.

Figura 4.9 Cmo agregar el driver para conectar la base de datos?

Nos mostrar un cuadro de dialogo en el cual debemos agregar el driver que


descargamos anteriormente. Esto se hace oprimiendo el botn Add,
deberemos buscar el archivo mysql-connector-java-5.1.6-bin.jar. En la opcin
Driver Class debemos seleccionar "com.mysql.jdbc.Driver".

Figura 4.10 Ventana: Agregar driver JDBC

Ahora, veremos que en la carpeta "Driver" nos aparecer una opcin llamada
com.mysql.jdbc.Driver, la seleccionamos con el botn derecho del mouse y
seleccionamos "Connect Using"

Instituto Tecnolgico de Morelia.

Pgina 145

ITM Unidad IV Acceso a Datos

Figura 4.11 Opcin para conectar la base de datos.

Ahora, se nos pide los datos de la base de datos, en la opcin "Database URL" debemos
ingresar la direccin de la base de datos, empezando con el prefijo
"jdbc:mysql:://host/bd, ingresamos nuestro nombre de usuario y contrasea.

Figura 4.12 Agregar los datos de la base de datos.

Nos deber salir un mensaje diciendo "Connection established", si es as, la


conexin se complet sin problemas. De lo contrario, algn dato est mal o el
servidor de MySQL no est activo.
Establecer Conexin en NetBeans 6.0
En esta versin de NetBeans, el conector viene incluido por lo que establecer la
conexin es ms sencillo.
Abra su aplicacin, localice la pestaa Services y dentro de doble clic en
Databases. Por ltimo abra la carpeta Drivers.
Como puede ver, ya se encuentran incluidos varios drivers, incluido el de
MySQL. Lo seleccionamos con el botn derecho del mouse y seleccionamos
"Connect Using". Ahora, se nos pide los datos de la base de datos (igual que
antes), en la opcin "Database URL" debemos ingresar la direccin de la base
de datos, empezando con el prefijo "jdbc:mysql:://host/bd, ingresamos nuestro
nombre de usuario y contrasea.

Instituto Tecnolgico de Morelia.

Pgina 146

ITM Unidad IV Acceso a Datos

Figura 4.13 Conectar NetBeans con MySQL.

Una vez que ingresa los datos correctos, la conexin se establece.

Figura 4.14 Ventana: Conexin establecida.

La manera de conectarse con la base de datos anterior, puede ser til para
realizar pruebas con los usuarios que se hayan creado o para otros fines pero
la manera importante de establecer la conexin es mediante cdigo, dentro de
alguna funcin.
Ejemplo: Modificar nuestra aplicacin para conectarse con una Base de Datos.
Cree una funcin que pueda llamar desde cualquier lugar para conectarse
mediante lneas de cdigo con una base de datos.

Instituto Tecnolgico de Morelia.

Pgina 147

ITM Unidad IV Acceso a Datos


A continuacin, se muestra la clase ConectarBD, la cual nos servir para
conectarnos con una base de datos especfica.
package aplicaciondeescritorio;
//Importamos las bibliotecas necesarias.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* @author Sal
*/
public class ConectarBD {
//Accesaremos a la base de datos de prueba que viene en el Appserv.
public
public
public
public

static
static
static
static

String
String
String
String

bd = "test"; //Nombre de la BD
login = "root"; //usuario
password = "entrar"; //Contrasea
url = "jdbc:mysql://localhost/"+bd;

public static void conectar() {


Connection conn = null; //Creamos un objeto Connection
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, login, password);
if (conn != null)
{
System.out.println("Conexin a base de datos "+
url+" Ok");
//Este mensaje se mostrar si la conexin se estableci.
conn.close();
//La instruccin anterior termina la conexin.
}
}
catch(SQLException ex) {
System.out.println("Hubo un problema al intentar"+
" conectarse con la base de datos "+url);
}
catch(ClassNotFoundException ex) {
System.out.println(ex);
//Se muestra un error si no se localiza una clase.
}
}
}

Si no sabe que bibliotecas necesitar, no se preocupe, NetBeans le indicar al


momento de detectar el error qu biblioteca necesita.
Primero indicamos el driver que vamos a utilizar para establecer la conexin.
Los drivers se bajan de internet como se indic anteriormente. La manera de
hacerlo es mediante la instruccin:
Class.forName("com.mysql.jdbc.Driver");
El mtodo forName recibe como parmetro el nombre del driver. Este lo
debimos haber agregado como se indic anteriormente.
Instituto Tecnolgico de Morelia.

Pgina 148

ITM Unidad IV Acceso a Datos

Las instrucciones que utilizamos para establecer la conexin deben estar


dentro de un try {}, de lo contrari NetBeans no nos permitir avanzar.
Los objetos necesarios para establecer una conexin vienen de la clase
Connection. Una vez que creamos uno, hay que mandarle como parmetro la
url (Direccion de la base de datos), el nombre de usuario y la contrasea de
nuestro manejador de bases de datos.
Ahora llamaremos esta funcin desde un botn nuevo en nuestra aplicacin.
(Se eliminaron los elementos de los ejemplos anteriores ya que no se
necesitaban ms.)

Figura 4.15 Ejemplo de botn que invoca una conexin con la base de datos.

El cdigo del botn ConectarBD es el siguiente:


private void conectarBDMouseClicked(java.awt.event.MouseEvent evt) {
ConectarBD.conectar();
}

Vea que ni siquiera es necesario declarar un objeto de la clase ConectarBD


debido a que su nico mtodo (conectar()) es pblico.
Aplicacin con Bases de Datos.
Para conocer la importancia de manejar las bases de datos hagamos el
siguiente ejemplo. Siga los pasos cuidadosamente.
Dado que no se pretende profundizar en el lenguaje de mySQL en el programa
de esta materia, este no se analizar con profundidad, sin embargo se realizara
un pequeo ejemplo en el cual se utilizara una base de datos con la ayuda de

Instituto Tecnolgico de Morelia.

Pgina 149

ITM Unidad IV Acceso a Datos


phpMyadmin, se recomienda revisar el Apendice 2 para conocer ms a
profundidad el lenguaje de mySQL. Cabe mencionar que al llevar a cabo este
procedimiento en phpMyadmin, usted podr visualizar los comandos que
tendra que llevar a cabo en lnea de comandos.
Crear una base de datos.
La base de datos se llamar Negocio.
Contendr las tablas Clientes, Productos y Empleados.
Los campos sern: para Clientes (Id, nombre, direccin), para Productos
(Id, nombre y precio) y para empleados (Id, nombre, salario).
Primero entramos a nuestro navegador y luego a phpMyAdmin. Para crear ah
de manera grfica nuestra base de datos. Seleccionamos la opcin Bases de
Datos.

Figura 4.16 Opcin necesaria para crear una Base de Datos.

Ingresamos el nombre de nuestra base de datos y damos click en crear.

Instituto Tecnolgico de Morelia.

Pgina 150

ITM Unidad IV Acceso a Datos

Figura 4.17 Crear tablas de la base de datos.

Creamos cada una de nuestras tablas. El proceso es muy intuitivo, escriba el


nombre de la tabla y el nmero de campos, luego de clic en Continuar.

Figura 4.18 Ingresar datos de la tabla.

Ahora hay que definir que tamao y tipo sern nuestros campos. Para el
ejemplo manejaremos el campo Id como numrico y los dems sern
caracteres. El campo Id, ser la llave de cada una de las tablas. De clic en
Guardar cuando termine con cada tabla.

Instituto Tecnolgico de Morelia.

Pgina 151

ITM Unidad IV Acceso a Datos

Figura 4.19 Ingresar datos de cada campo de la tabla.

En la figura anterior se muestra que nuestro Id ser un tipo de dato INT, no


nulo, se autoincrementar y es adems la llave de nuestra tabla. No se
preocupe por cometer errores, puede modificar las tablas y sus campos
posteriormente si lo desea. Haga lo mismo con las dems tablas.
Una vez que creamos nuestras tablas podremos seleccionar nuestra nueva
base de datos en el men de bases de datos y ver cmo est conformada.

Figura 4.20 Vista de las tablas de nuestra base de datos.

Ahora vamos a nuestro ejemplo a crear registros en las tablas. Hasta este
punto, nos conectamos con nuestra base de datos al dar clic en un botn.
Obviamente no debe ser as, una aplicacin de este tipo debera conectarse sin
necesidad de tener que indicrselo.
En el ejemplo donde se conecta con la base de datos usando un botn
estamos terminando la conexin inmediatamente despus de establecerla.
Para este ejemplo hay que quitar esa lnea y modificar los datos para
conectarnos a la base de datos que acabamos de crear. La clase queda de la
siguiente manera.
package aplicaciondeescritorio;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConectarBD {
public static String bd = "negocio"; //Nombre de la BD
public static String login = "root"; //usuario
public static String password = "entrar"; //Contrasea
public static String url = "jdbc:mysql://localhost/"+bd;
public static Connection conectar() {

Instituto Tecnolgico de Morelia.

Pgina 152

ITM Unidad IV Acceso a Datos


Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, login, password);
if (conn != null){
System.out.println("Conexin a base de datos "+url+"
Ok");
//conn.close(); se quita para permanecer conectados
}
}
catch(SQLException ex) {
System.out.println("Hubo un problema al intentar "+
"conectarse con la base de datos "+url);
}
catch(ClassNotFoundException ex) {
System.out.println(ex);
}
return conn;
}
}

En el ejemplo anterior nos conectamos con una base de datos vaca que se
llama test, ahora nos conectamos con la base de datos que creamos. Solo hay
que cambiar el nombre de la base a la que nos conectamos y quitar la
instruccin que nos desconectaba. Tambin modificamos un poco la funcin
para que nos regrese el objeto que representa nuestra conexin. Lo
necesitaremos para los accesos a la base de datos.
Ahora crearemos un botn que de de alta productos en nuestra base de datos,
quitaremos el botn de Conectar ya que eso lo haremos aqu antes de dar de
alta un registro. Nos pedir por medio de cajas de dilogo los datos y los
almacenar en la base de datos.
El cdigo del botn es el siguiente:
private void altaProductoMouseClicked(java.awt.event.MouseEvent evt) {
try {
java.sql.Connection cone = ConectarBD.conectar();
String Id = JOptionPane.showInputDialog(menuBar, "Id :");
String nombre = JOptionPane.showInputDialog(menuBar, "Nombre :");
String precio = JOptionPane.showInputDialog(menuBar, "Precio :");
java.sql.Statement st = cone.createStatement();
st.execute("INSERT INTO `negocio`.`productos` (`Id` ,`nombre` ,`precio`)
VALUES ('"+Id+"', '"+nombre+"', '"+precio+"');");
} catch (SQLException ex) {
Logger.getLogger(AplicacionDeEscritorioView.class.getName()).
log(Level.SEVERE, null, ex);
}
}

Instituto Tecnolgico de Morelia.

Pgina 153

ITM Unidad IV Acceso a Datos


Primero se est estableciendo la conexin, luego se piden los tres valores que
se almacenarn en la tabla. Por ltimo se crea un objeto de la clase Statement
que nos permitir ejecutar sentencias SQL que enviemos en forma de cadenas.

Figura 4.21. Programa en ejecucin.

Si entramos a phpMyadmin a ver los registros en esta tabla podremos ver lo


siguiente.

Figura 4.22 Contenido de la base de datos.

Ejercicio: Realice modificaciones a la aplicacin para realizar las cuatro


operaciones bsicas (Altas, Bajas, Modificaciones y Consultas) en las 3 tablas
del ejemplo.

4.2 Control de datos ADO.


ActiveX Data Objects (ADO) es uno de los mecanismos que usan los
programas para comunicarse con las bases de datos, darles rdenes y obtener
resultados de ellas.
Con ADO, un programa puede leer, insertar, editar o borrar, la informacin
contenida en diferentes reas de almacenamiento dentro de la base de datos
llamadas tablas.

Instituto Tecnolgico de Morelia.

Pgina 154

ITM Unidad IV Acceso a Datos


Adems, se puede manipular la propia base de datos para crear nuevas reas
para el almacenamiento de informacin (tablas), como tambin alterar o
eliminar las ya existentes, entre otras cosas.
Fue desarrollado por Microsoft y es usado en ambientes Windows por
lenguajes de programacin como Visual Basic y en la Web mediante el uso de
Active Server Pages (ASP) y el lenguaje VBScript.
ADO substituy tanto a DAO (Data Access Object), que eran los sistemas
previos que se usaban para acceder a las bases de datos y bases de datos
remotas. Es sencillo de usar, de entender y por lo tanto fcil y menos engorroso
de programar.
La ltima versin de ADO, creada por Microsoft, se llama ADO.NET, y se usa
en los entornos de programacin de la plataforma .NET, de Microsoft, para
manejar bases de datos tanto en Windows como en la Web mediante
ASP.NET, que es la nueva versin del ASP para la plataforma .NET.
ADO.NET es mucho ms poderoso que ADO pero tambin es muy diferente,
por lo que es necesario redisear los programas hechos con ADO, para que
funcionen en l.
DAO

RDO

ADO
ADO.NET
ADO.NET 2 (2006)
Funcionamiento
ADO es un intermediario entre el programa y la base de datos. El programa no
ve la base de datos directamente, sino que hace todo el trabajo a travs de
ADO. Usando ADO, el programa se comunica con la base de datos, consulta,
edita, inserta, borra registros, aade tablas, etc. ADO a su vez se comunica
con la base de datos a travs de un "proveedor de datos".
El programa usa ADO para hacer una solicitud a la base de datos:
"Dame el nombre y apellido de todos los clientes que vivan en Mxico"
Programa ---> ADO ---> Proveedor de datos ---> Base de datos
En la direccin contraria, la base de datos responde, comunicndose con el
proveedor de datos, ste con ADO, y al final, la informacin llega al programa.
La base de datos responde:
Programa <--- ADO <--- Proveedor de datos <--- Base de datos

Instituto Tecnolgico de Morelia.

Pgina 155

ITM Unidad IV Acceso a Datos


Una vez que el programa tiene la informacin proveniente de la base de datos,
puede hacer con ella lo que considere, como por ejemplo, puede desplegarla
en una pgina Web.
Importancia de esta tecnologa.
Para comprender la importancia de esta tecnologa, imaginemos que hicimos
una aplicacin de gestin para una empresa. Utilizando como motor de base de
datos Oracle. Pero no tenemos dividida la capa de lgica (esta se representa
con las lneas de programacin que dicen qu hace el programa o que
informacin necesita manipular de la base de datos) de la de persistencia (la
capa de persistencia seria la que manipula las consultas directamente sobre la
base de datos). Por lo que la interaccin con la base de datos se hace
directamente desde la capa de lgica de negocio. Tal y como lo hicimos en el
apartado anterior.
Nuestra aplicacin consiste en muchsimas clases, y gran parte de ellas
interactan con la base de datos (conectndose a la base de datos, guardando
y recuperando datos, etc.).
Nuestra aplicacin va de maravilla, cuando de pronto, se acerca nuestro cliente
y nos comenta que por X, Y y Z razones se va a cambiar el motor de la base de
datos a MySQL. En ese momento se nos viene el mundo encima pues
tendremos que hacer prcticamente todo de nuevo. Todas las clases que
interactan directamente con la base de datos deben ser rediseadas.
Si hubiramos tenido por separado la capa de lgica de negocio de la de
persistencia, habra sido suficiente con modificar la capa de persistencia para
que la aplicacin pudiera utilizar el nuevo motor de base de datos, sin tener que
modificar nada de la capa de lgica de negocio. Pero como en el ejemplo
anterior NO usamos una capa de persistencia, sino que interactuamos con la
base de datos directamente desde la capa de lgica de negocio, entonces
vamos a tener que modificar todas las clases, cambiando todas las consultas
SQL, la manera de acceder a la base de datos, etc. para adecuarse al nuevo
motor de la base de datos.

4.3 Objetos ADO. (ActiveX Data Object)


Los objetos ADO, se utilizan comnmente con la tecnologa ASP17. Una de las
caractersticas ms interesantes de ASP es su facilidad para el manejo de
bases de Datos que residen en el servidor, obviamente mediante el uso de
ADO (ActiveX Data Object) de una forma fcil, rpida y con un mnimo
consumo de recursos del sistema.
ADO usa ODBC (Open Database Connectivity)18 para el acceso a bases de
datos. Lo que nos independiza de la tecnologa de las misma; esto implica que
podemos cambiar la tecnologa de la base de datos y si mantenemos la misma
17
18

Active Server Pages, tecnologa de Microsoft del tipo lado servidor para pginas web dinmicas.
Estndar para manejo de bases de datos creado por Microsoft.

Instituto Tecnolgico de Morelia.

Pgina 156

ITM Unidad IV Acceso a Datos


estructura de datos, nuestras aplicaciones desarrolladas con ADO pueden
seguir funcionando sin cambiar ni una sola lnea de cdigo.
ADO est formado por varios objetos organizados de forma jerrquica (cada
uno de ellos con sus mtodos y propiedades especficos) de los cuales vamos
a estudiar los que considero ms interesantes.
Connection
Nos proporciona una conexin a una base de datos ODBC desde una pgina
ASP. Esta conexin nos permitir efectuar las operaciones que deseemos
sobre la base de datos. Es el objeto primario de ADO, ninguno de los otros
objetos puede existir si este no es declarado de forma explcita o implcita (en
algunos de los ejemplos veremos que no existe una declaracin del objeto
Connection, pero debemos de tener en cuenta que siempre existe, si es
necesario ADO lo declarar por s mismo). La conexin terminar cuando
nosotros la cerremos explcitamente con el mtodo close o bien cuando termine
la ejecucin de la pgina ASP.
Error
Es una coleccin en la que se almacenarn los posibles errores del objeto.
Command
Representa un comando SQL que se ejecuta contra la base de datos declarada
en el objeto Connection. Si el resultado de ese comando es un conjunto de
datos, estos se almacenaran en un objeto de tipo Recordset.
Recordset
Representa una tabla o el resultado de una consulta ejecutada contra la base
de datos. Va a ser nuestra interface natural contra la base de datos. Como en
todo modelo relacional, los datos se nos presentaran en filas y columnas.
Field
El objeto Field representa la informacin relativa a un campo de un Recordset.
Contiene la coleccin Fields que representa todos los campos de la tabla, cada
miembro de esa coleccin es un objeto de tipo Field.
Objeto Connection (propiedades y mtodos)
Hemos comentado que el objeto Connection nos proporciona una conexin a
una base de datos desde una pgina ASP; ahora vamos a ver como se usa, as
como sus propiedades y mtodos.
Para establecer la conexin lo primero que hacemos es crear el Objeto
Connetion por medio de la propiedad CreateObject de objeto Server:

Instituto Tecnolgico de Morelia.

Pgina 157

ITM Unidad IV Acceso a Datos


<% Set conexin=Server.CreateObject("ADODB.Connection")%>
Una vez establecida la instancia del objeto pasamos a configurarlo mediante
sus distintas propiedades y mtodos.
Propiedades:
ConnectionString
Especifica la referencia a la base de datos con la cual queremos conectar,
conteniendo en una cadena de texto la informacin necesaria para efectuar esa
conexin mediante parejas de valores separadas por ";".
Los valores que podemos asignar son:
Data Source:
DSN=Nombre ODBC de la Base de Datos
Usuario:
User=Nombre de Usuario
Password:
Password=Password del usuario para la base de datos
Ejemplo:
<% conexion.ConnectionString="DSN=MIOdbc;User=pepe;Password=1234" %>

Mode
Especifica los permisos de la conexin.
Algunos de los valores ms habituales que podemos asignar son:
1 Establece permiso solo de Lectura
2 Establece permiso solo de Escritura
3 Establece permiso de Lectura/Escritura
Ejemplo:
<% conexion.Mode=3 %>
Mtodos:
BeginTrans
Abre una transaccin; todas las operaciones que realicemos a partir de ese
momento no sern efectivas hasta que no cerremos la transaccin.
Ejemplo:

Instituto Tecnolgico de Morelia.

Pgina 158

ITM Unidad IV Acceso a Datos


<% conexion.BeginTrans %>
Close
Cierra el objeto.
Ejemplo:
<% conexion.close %>
CommitTrans
Cierra una transaccin haciendo efectivos los cambios efectuados dentro de
ella.
Ejemplo:
<% conexion.CommitBeginTrans %>
Execute
Ejecuta una sentencia SQL contra la base de datos.
Ejemplo:
<% Set resultado=conexion.execute (Select * from amigos) %>
Open
Abre la conexin con los parmetros especificados en las propiedades.
Ejemplo:
<% conexion.open %>
RollBackTrans
Deshace todos los cambios efectuados en la base de datos desde el inicio de
la transaccin.
Ejemplo:
<% conexion.RollBackTrans %>
Objeto Error (propiedades y mtodos)
El objeto Error contiene la coleccin Errores, que es la encargada de
almacenar los errores que se pudieran producir durante la ejecucin de
operaciones contra Bases de Datos.
Instituto Tecnolgico de Morelia.

Pgina 159

ITM Unidad IV Acceso a Datos

Propiedades:
Description
Descripcin del error.
Number
El numero de error.
SQLState
Cdigo de error SQL.
Mtodos:
Clear
Elimina los datos del objeto Error.
Ejemplo: Examinando los posibles datos de la coleccin Errors. Se crea un
ciclo y se imprimen los posibles errores.
.......
.......
Miconexion.open
If Miconexion.Errors.Count > 0 then
For each error in Miconexion.errors then
Response.write Error.Number & " = "& Error.Description
next
End if
Nota: Count es una propiedad de la coleccin Errors.
Objeto RecordSet
El objeto Recordset es la interface entre los datos obtenidos de nuestras
consultas sobre las tablas y nuestras pginas ASP. Representa una tabla
organizada en filas (registros) y columnas (campos). La propiedades y mtodos
de Recordset son muchos, en esta unidad vamos a ver las ms interesantes,
para hacerlo un poco ms sencillo de entender vamos a verlos agrupados por
la funcionalidad que nos ofrecen.
Definicin del tipo de Cursor
Entendemos como cursor el puntero que nos permite desplazarnos por los
registros del recordset. Dependiendo del tipo elegido determinaremos los

Instituto Tecnolgico de Morelia.

Pgina 160

ITM Unidad IV Acceso a Datos


desplazamientos y cambios realizables en los datos. El tipo de cursor lo
definiremos mediante la propiedad CursorType, los posibles valores son:
Denominacin

valor

adOpenForwardOnly

adOpenKeyset

adOpenDynamic

adOpenStatic

Caractersticas
Es el cursor por defecto, solo nos permite
recorrer la tabla de forma secuencial (no se
puede volver hacia atrs) y no permite
modificaciones en los registros. No vemos
los cambios realizados en la tabla por otro
recordset.
Nos permite movernos en los dos sentidos,
si permite modificaciones en los registros.
Vemos los cambios realizados en la tabla
por otro recordset a excepcin de las
nuevas altas.
Nos permite movernos en los dos sentidos,
si permite modificaciones en los registros.
Vemos todos los cambios realizados en la
tabla por otro recordset.
Nos permite movernos en los dos sentidos,
no permite modificaciones en los registros.
No
vemos los cambios realizados en la tabla
por otro recordset.

Tabla 4.1 Tipos de cursores

Definicin del tipo de Cerrojo


Entendemos como cerrojo el tipo de bloqueo que efectuaremos en la base de
datos cuando modifiquemos un recordset, a fin de evitar que dos o ms
usuarios accedan a modificar un mismo registro a la vez.
El tipo de cerrojo lo definiremos mediante la propiedad LockType, los posibles
valores son:
Denominacin

valor

adLockReadOnly

dLockPessimistic

adLockOptimistic

Caractersticas
Es el que est por defecto; no permite al
usuario modificar los datos de la tabla.
Cuando se abra la tabla nadie ms podr
hacerlo, este modo nos asegura la plena
integridad de los datos.
Cierra la tabla a los dems usuarios cuando
se
invoque al mtodo Update del objeto
recordset;
de este modo la Base de datos quedar
bloqueada menos tiempo que con el
mtodo anterior.

Tabla 4.2 Tipos de Cerrojo.

Instituto Tecnolgico de Morelia.

Pgina 161

ITM Unidad IV Acceso a Datos


Ejemplo: Definicin de un recordset para actualizar datos:
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3%>
set rs=createobject("ADODB.Recordset")
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
Movindose por los datos del RecordSet
Mtodos usados para moverse en un RecordSet:
Mtodo
Move Num_registros
MoveFirst
MoveLast
MoveNext
MovePrevious

Caractersticas
Mueve el cursor Num_registros hacia abajo si
es positivo y hacia arriba si es negativo.
Mueve el cursor al primer registro del
Recordset.
Mueve el cursor al ltimo registro del
Recordset.
Mueve el cursor un registro hacia adelante.
Mueve el cursor un registro hacia atrs.

Tabla 4.3 Mtodos pa moverse en un Recorset

Propiedades usadas:
Propiedades
PageSize
(Ej. rs.Pagesize=10)
AbsolutePage
(Ej. rs.AbsolutePage=2)
PageCount
(Ej. xx=rs.PageCount)
Absoluteposition
(Ej.
rs.Absoluteposition=17)
RecordCount
(Ej. xx=rs.recordcount)
BOF
EOF

Caracteristicas
Establece el nmero de registros por pgina
del
Recordset.
Mueve el cursor al primer registro de dicha
pgina (es necesario definir anteriormente el
pageSize).
Contiene el nmero de pginas del recordset,
tomando como base PageSize.
Mueve el cursor al num_registro especificado.
Contiene el nmero de registros del recordset;
Nota:
No
funciona
con
el
cursor
adOpenForwardOnly
Toma el valor True cuando estamos en el
primer
registro del recordset
Toma el valor True cuando estamos en el
ultimo
registro del recordset

Instituto Tecnolgico de Morelia.

Pgina 162

ITM Unidad IV Acceso a Datos


Tabla 4.4 Propiedades de un Recordset.

Modificando los datos


Mtodos usados:
Metodo
AddNew
EJ.
rs.Addnew
rs("codigo")=1234
rs("titulo")="Todo sobre ASP"
rs.Update
Delete
Update
EJ:

Caracteristicas
Abre un nuevo registro en el recordset
para introducir
datos

Elimina el registro actual


Actualiza un registro del recordset tras
haberlo
modificado

rs("titulo")="Como hacerse rico en 10


minutos"
rs.Update
Tabla 4.5 Mtodos usados para modificar datos de un RecordSet.

Abriendo y cerrando el recordset


Mtodos usados:
Mtodo
Open Sql, conexion

Caracteristicas
Abre el recordset y almacena en el
resultado de sql contra la conexin

EJ.
set
rs=createobject("ADODB.Recordset")
rs.CursorType = 1
rs.LockType = 3
Sqltxt="SELECT * FROM libros"
rs.open Sqltxt, "DSN=Biblioteca"
Close

Cierra el recordset
Tabla 4.6 Mtodos usados para abrir y cerrar un Recordset.

Ejemplo de listado de un Recordset: Suponga que tiene una BD, en ella la tabla
almacn y en esa tabla los campos Id_Producto, Producto, Cantidad y Precio
para el ejemplo.
Nombre del archivo: Listado.asp

Instituto Tecnolgico de Morelia.

Pgina 163

ITM Unidad IV Acceso a Datos


<%SQLtxt = "SELECT Producto, Cantidad, Precio FROM almacen
set rs = CreateObject("ADODB.Recordset")
rs.Open SQLtxt, "DSN=Mibase"%>
<table>
<%
Do While NOT rs.EOF%>
<tr>
<td><%= rs("Producto")%></td>
<td><%= rs("Cantidad")%></td>
<td align="right"><% = FormatCurrency(rs("Precio"))%></td>
</tr>
<% rs.MoveNext
Loop
rs.Close
</table>
%>

4.4 Herramientas de acceso a datos.


En el apartado anterior, analizamos una de las tecnologas ms novedosas
para el acceso eficiente a los datos. Sin embargo, existen muchas ms
herramientas que podramos utilizar con el mismo fin. A continuacin
mencionar de manera general algunas de las ms comunes.

4.4.1 ADO.NET
El ADO.NET es un conjunto de componentes del software que pueden ser
usados por los programadores para acceder a datos y a servicios de datos. Es
una parte de la biblioteca de clases base que estn incluidas en el Microsoft
.NET Framework. Es comnmente usado por los programadores para acceder
y para modificar los datos almacenados en un Sistema Gestor de Bases de
Datos Relacionales, aunque tambin puede ser usado para acceder a datos en
fuentes no relacionales. ADO.NET es a veces considerado como una evolucin
de la tecnologa ActiveX Data Objects (ADO), pero fue cambiado tan
extensivamente que puede ser concebido como un producto enteramente
nuevo.
4.4.2 JDBC
JDBC es el acrnimo de Java Database Connectivity, un API que permite la
ejecucin de operaciones sobre bases de datos desde el lenguaje de
programacin Java independientemente del sistema operativo donde se
ejecute o de la base de datos a la cual se accede utilizando el dialecto SQL del
modelo de base de datos que se utilice.
El API JDBC se presenta como una coleccin de interfaces Java y mtodos de
gestin de manejadores de conexin hacia cada modelo especfico de base de
datos. Un manejador de conexiones hacia un modelo de base de datos en
Instituto Tecnolgico de Morelia.

Pgina 164

ITM Unidad IV Acceso a Datos


particular es un conjunto de clases que implementan las interfaces Java y que
utilizan los mtodos de registro para declarar los tipos de localizadores a base
de datos (URL) que pueden manejar. Para utilizar una base de datos particular,
el usuario ejecuta su programa junto con la librera de conexin apropiada al
modelo de su base de datos, y accede a ella estableciendo una conexin, para
ello provee el localizador a la base de datos y los parmetros de conexin
especficos. A partir de all puede realizar con cualquier tipo de tareas con la
base de datos a las que tenga permiso: consulta, actualizacin, creacin,
modificacin y borrado de tablas, ejecucin de procedimientos almacenados en
la base de datos, etc.
4.4.3 ODBC
Open Database Connectivity (ODBC) es un estndar de acceso a Bases de
Datos desarrollado por Microsoft Corporation, el objetivo de ODBC es hacer
posible el acceder a cualquier dato desde cualquier aplicacin, sin importar qu
Sistema Gestor de Bases de Datos (DBMS por sus siglas en ingls) almacene
los datos, ODBC logra esto al insertar una capa intermedia llamada manejador
de Bases de Datos, entre la aplicacin y el DBMS, el propsito de esta capa es
traducir las consultas de datos de la aplicacin en comandos que el DBMS
entienda. Para que esto funcione tanto la aplicacin como el DBMS deben ser
compatibles con ODBC, esto es que la aplicacin debe ser capaz de producir
comandos ODBC y el DBMS debe ser capaz de responder a ellos. Desde la
versin 2.0 el estndar soporta SAG y SQL.
Para conectarse a la Base de Datos se crea una DSN dentro del ODBC que
define los parmetros, ruta y caractersticas de la conexin segn los datos que
solicite el fabricante.
4.4.4 DAO
Como mencion al inicio de esta unidad, este material se orienta a la
programacin en java en la medida de lo posible. Sin embargo, se analizan
herramientas que no necesariamente trabajan con java. La tecnologa ADO (De
Microsoft, se maneja con Visual Basic o tecnologas propias hasta este
momento), como pudo observar, es una tecnologa importantsima en cuanto al
manejo de bases de datos, es por esto que analizar ms a detalle el tema de
los objetos DAO. Estos objetos se considera una herramienta vieja en
comparacin a ADO, sin embargo est comprobado que se utiliza de manera
ms amplia debido a que se maneja con el lenguaje java y su potencia es
equiparable. Un Data Access Object (DAO, Objeto de Acceso a Datos) es un
componente de software que suministra una interfaz comn entre la aplicacin
y uno o ms dispositivos de almacenamiento de datos, tales como una Base de
datos o un archivo.
Al igual que los objetos ADO, los objetos DAO conforman una capa que separa
las capas de lgica y de programacin de nuestras aplicaciones. El beneficio
principal, como se ejemplific anteriormente, es que si tuviramos una
tecnologa de BD y cambiramos a otra, no tendramos que reprogramar
nuestras clases. La capa formada por los objetos DAO se llama capa de
Persistencia de Datos.

Instituto Tecnolgico de Morelia.

Pgina 165

ITM Unidad IV Acceso a Datos

Como ya mencionamos, DAO encapsula el acceso a la base de datos. Por lo


que cuando la capa de lgica de negocio necesite interactuar con la base de
datos, va a hacerlo a travs de la API que le ofrece DAO. Generalmente esta
API consiste en mtodos CRUD (Create, Read, Update y Delete). Entonces por
ejemplo cuando la capa de lgica necesite guardar un dato en la base de
datos, va a llamar a un mtodo create(). Lo que haga este mtodo, es problema
de DAO y depende de cmo DAO implemente el mtodo create(), puede que lo
implemente de manera que los datos se almacenen en una base de datos o
que los datos se almacenen en un archivos de texto. Lo importante es que la
capa de lgica no tiene porque saberlo, lo nico que sabe es que el mtodo
create() va a guardar los datos, as como el mtodo delete() va a eliminarlos, el
mtodo update() actualizarlos, etc. Pero no tiene idea de cmo interacta DAO
con la base de datos.
En una aplicacin, hay tantos DAOs como modelos. Es decir, en una base de
datos relacional, por cada tabla, habra un DAO.
DAO consiste bsicamente en una clase que es la que interacta con la base
de datos. Los mtodos de esta clase dependen de la aplicacin y de lo que
queramos hacer. Pero generalmente se implementan los mtodos CRUD para
realizar las "4 operaciones bsicas" de una base de datos.
Por ltimo, debemos mencionar a los objetos DTO y podremos analizar cdigo.
Los DTO (Data Transfer Object) o tambin denominados VO (Value Object).
Son utilizados por DAO para transportar los datos desde la base de datos hacia
la capa de lgica y viceversa. Por ejemplo, cuando la capa de lgica llama al
mtodo create(), qu es lo que hace DAO? inserta un nuevo dato... pero qu
dato? el que la capa de lgica le pase como parmetro... y cmo se lo pasa
este dato?, a travs de un DTO.
Podra decirse que un DTO es un objeto comn y corriente, que tiene como
atributos los datos del modelo, con sus correspondientes accesos (getters y
setters).
Por ejemplo, si tuviramos una base de datos relacional con una tabla
Almacen, con los campos id, producto y cantidad. Entonces tendramos que
crear una clase AlmacenDTO, con los atributos id, producto y cantidad, que van
a utilizar la capa de lgica y de persistencia para transportar los datos entre las
dos capas.
Entonces cuando la capa de lgica quiera guardar un dato en la base de datos,
va a crear un objeto AlmacenDTO, a travs de los accessors (mtodos
utilizados para accesar a la base) va a modificar los atributos, y despus se lo
va a pasar al mtodo create() de DAO. Entonces DAO va a leer los datos del
DTO, y los va a guardar en la base de datos. Lo mismo pasara para eliminar
datos. Y para actualizarlos adems se le pasara el ID, para saber que dato
actualizar. Para buscar datos, sera parecido, ya que se le pasa al mtodo
read() el DTO para usarlo como patrn de bsqueda, pero con la diferencia de

Instituto Tecnolgico de Morelia.

Pgina 166

ITM Unidad IV Acceso a Datos


que este mtodo tiene valor de retorno, ya que devuelve otro DTO con los
datos del resultado de la bsqueda.
Ejemplo usando DAO
Imaginemos una aplicacin realizada en Java, utilizada para gestionar los datos
de una empresa (Almacen, clientes, empleados, etc.). Nosotros somos los
encargados de crear la capa de persistencia de la aplicacin, y decidimos
utilizar el patrn de diseo DAO.
Primero debemos saber Qu vamos a guardar en la base de datos?.
Los datos de los empleados, los datos de los clientes y los datos de los
productos.
Son tres modelos:
El modelo Empleado: que almacena los datos de los empleados (el ID,
el nombre y el sueldo).

El modelo Cliente: que almacena los datos de los clientes (el ID, el
nombre y la direccin).

El modelo Producto: que almacena los datos de los productos (el ID, el
nombre y el precio).

Lo primero que debemos hacer es crear los DTO, uno para cada modelo:
Archivo Empleado.class:

Instituto Tecnolgico de Morelia.

Pgina 167

ITM Unidad IV Acceso a Datos


class EmpleadoDTO {
//Necesitamos una variable por cada dato de la tabla
private int id;
private String nombre;
private double salario;
//Ahora un mtodo que nos regrese cualquiera de los
//valores de la tabla que declaramos antes.
public int getId() {return id;}
public String getNombre() {return nombre;}
public double getSalario() {return salario;}
//Por ultimo un mtodo que podamos usar para
//establecer o dar un valor a cada elemento.
public void setId(int id) {this.id = id}
public void setNombre(String nom) {this.nombre = nom}
public void setSalario(double sal) {this.salario = sal}
}
Archivo Clientes.class:
class ClienteDTO {
//Campos de la tabla
private int id;
private String nombre;
private String direccion;
//Mtodos para leer datos
public int getId() {return id;}
public String getNombre() {return nombre;}
public String getDireccion() {return direccion;}
//Mtodos para establecer datos
public void setId(int id) {this.id = id}
public void setNombre(String nom) {this.nombre = nom}
public void setDireccion(String dir) {this.direccion =
dir}
}
Archivo Producto.class:

Instituto Tecnolgico de Morelia.

Pgina 168

ITM Unidad IV Acceso a Datos


class ProductoDTO {
//Campos de la tabla
private int id;
private String nombre;
private double precio;
//Mtodos para leer datos
public int getId() {return id;}
public String getNombre() {return nombre;}
public double getPrecio() {return precio;}
//Mtodos para establecer datos
public void setId(int id) {this.id = id}
public void setNombre(String nom) {this.nombre = nom}
public void setPrecio(double precio) {this.precio
precio}
}

Ahora, vamos a crear los DAO, uno para cada modelo tambin:
Archivo EmpleadoDAO.class:
class EmpleadoDAO {
public void create(EmpleadoDTO dto) {
/* Implementacin del mtodo create() */
}
public EmpleadoDTO read(EmpleadoDTO dto) {
/* Implementacin del mtodo read() */
}
public void update(EmpleadoDTO dto, int id) {
/* Implementacin del mtodo update() */
}
public void delete(EmpleadoDTO dto) {
/* Implementacin del mtodo delete() */
}
}
Archivo ClienteDAO.class:
class ClienteDAO {
public void create(ClienteDAO dto) {
/* Implementacin del mtodo create() */
}
public ClienteDAO read(ClienteDAO dto) {
/* Implementacin del mtodo read() */
}

Instituto Tecnolgico de Morelia.

Pgina 169

ITM Unidad IV Acceso a Datos


public void update(ClienteDAO dto, int id) {
/* Implementacin del mtodo update() */
}
public void delete(ClienteDAO dto) {
/* Implementacin del mtodo delete() */
}
}
Archivo Producto.class:
class ProductoDAO {
public void create(ProductoDTO dto) {
/* Implementacin del mtodo create() */
}
public ProductoDTO read(ProductoDTO dto) {
/* Implementacin del mtodo read() */
}
public void update(ProductoDTO dto, int id) {
/* Implementacin del mtodo update() */
}
public void delete(ProductoDTO dto) {
/* Implementacin del mtodo delete() */
}
}
Obviamente en lugar de los comentarios van las implementaciones. Como
estamos utilizando mySQL, el mtodo create() , por ejemplo, de ClienteDAO
har una consulta SQL insertando un nuevo registro con los datos pasados por
el DTO como parmetro en la tabla clientes.
Si por algn motivo tuviramos que cambiar de manejadores de bases de
datos, es en este punto donde deberemos modificar lneas de cdigo. Sin
embargo, ser mucho ms sencillo ya que tendremos perfectamente ubicados
los archivos que interactan con la base de datos y las dems clases seguirn
funcionando exactamente igual.
Bien, ya estara la capa de persistencia creada. Ahora ya podramos utilizarla
desde la capa de lgica:
Aplicacin. Archivo principal Programa.class:
public static void main(String[] args) {
/* Creamos el DAO */
EmpleadoDAO dao = new EmpleadoDAO();
/* Creamos un DTO */

Instituto Tecnolgico de Morelia.

Pgina 170

ITM Unidad IV Acceso a Datos


EmpleadoDTO dto = new EmpleadoDTO();
/* Le asignamos los datos */
dto.setNombre("Sal Chvez");
dto.setSalario(7500);
/* Llamamos al mtodo create() del DAO que se encarga de
guardarlo en la base de datos */
dao.create(dto);
}
Como pueden ver, lo nico que hace la capa de lgica es llamar al mtodo
create() de EmpleadoDAO, pasndole como parmetro un EmpleadoDTO,
despus lo que haga el mtodo create() es asunto de EmpleadoDAO.

Instituto Tecnolgico de Morelia.

Pgina 171

ITM Unidad IV Acceso a Datos


EJERCICIO PROPUESTOS.
4.1 Qu y para qu es el lenguaje SQL? Investigue acerca de este lenguaje
con mucho detalle. Sobre todo la sintaxis de sus consultas.
4.2 Cul es la sintaxis para dar de alta un registro, modificarlo, consultarlo o
eliminarlo? Ejemplifique diversas posibilidades.
4.3 Instale el paquete AppServ y de de alta un nuevo usuario con todos los
accesos y permisos sobre las bases de datos de MySQL.
4.4 Crear una base de datos con ayuda de phpMyAdmin, deber contener al
menos 2 tablas, utilice el ambiente grfico para ingresar 5 registros en cada
una y luego experimente como modificar o eliminar los registros creados. Ej.
Clientes
ID
Nombre
AP
AM

Productos
ID
Nombre
Precio
Existencia

4.5 Programe una funcin que le permita leer registro a registro el contenido de
las tablas de una base de datos. Implemntela en una aplicacin grfica que
tenga los botones y campos de texto necesarios para ello. El usuario deber
elegir que tabla desea consultar, en caso de que la base de datos contenga
varias.
4.6 Ejercicio de continuacin del proyecto general. Cree una base de datos con
el nombre que guste que contenga una tabla que se llame usuarios esta tabla
deber contener los campos: ID, usuario, password, nombre. Luego, haga que
la calculadora que ha desarrollado durante todo el material utilice esta base de
datos para el control de acceso, al igual que en la unidad anterior, donde se
utiliz un archivo estructurado.
4.7 Desarrolle una aplicacin grfica que implemente bases de datos para
almacenar palabras en ingles y sus equivalentes en espaol. Deber crear la
base de datos necesaria y permitir al usuario consultar el significado de una
palabra en ingles. O sea, un traductor implementando bases de datos.
4.8 Explique con sus propias palabras la importancia de la capa de persistencia
de datos en una aplicacin. Para qu sirve? Y Qu herramientas puede
utilizar para crearla?
4.9 Cules son algunos de los objetos ADO Principales? Para qu sirve
cada uno?
4.10 Haga un programa sencillo en el que implemente algn objeto DAO para
una consulta de datos. Realice la misma funcin sin utilizar el objeto y analice
Instituto Tecnolgico de Morelia.

Pgina 172

ITM Unidad IV Acceso a Datos


cuales son las ventajas y desventajas de usarlo, no solo para su aplicacin sino
para proyectos empresariales. Investigue en internet que tanto se utiliza esta
tecnologa en comparacin a los objetos ADO de Microsoft.
PROYECTO INTEGRAL
Existen muchos negocios en crecimiento que se interesan ms y mas en
poseer un sistema que les ayude a controlar la mercanca que tienen a la
venta. La falta de un sistema de este tipo impide llevar un control exacto de las
ganancias, las ventas y la existencia en bodega de sus productos. Adems de
que es menos posible detectar robos de esta manera.
Desarrolle una aplicacin de escritorio que implemente el uso de bases de
datos. Consistir en controlar los inventarios de la tienda de abarrotes Doa
Lupe, como se trata de un negocio pequeo, solo les interesa saber que
productos tienen, cuantos tienen, cunto valen y quieren tener un sistema que
les permita consultar la existencia de cierto producto para saber si necesitan
comprar ms o no, o si hay producto que est desapareciendo misteriosamente
de la tienda y cual.
Debe crear la base de datos que necesite y una interfaz que permita introducir
nuevos productos al inventario, eliminar productos que ya no se tienen o
realizar las consultas que el cliente necesita y se mencionaron anteriormente.

Instituto Tecnolgico de Morelia.

Pgina 173

Unidad 5. Componentes y
Controles Definidos por el
Usuario.

ITM Unidad V Componentes y Controles Definidos por el Usuario

5.1 Modelo de componentes.


Un componente es un modulo de software independiente, que puede ser
reemplazado y es una parte de un sistema de software dentro de una
arquitectura bien definida. Un componente se ensambla a una arquitectura
debido a que realiza o implanta un conjunto de interfaces.
El modelo de componentes es una arquitectura y un API (del ingls Application
Programming Interface - Interfaz de Programacin de Aplicaciones) que
permite a los desarrolladores definir segmentos reutilizables de cdigo y que
pueden ser reutilizados para crear programas.
ActiveX
Es un trmino que hace referencia a un conjunto de tecnologas independientes
del lenguaje, que permiten que los componentes de software escritos en
diferentes lenguajes funcionen juntos en entornos de red. Los componentes
desarrollados bajo esta tecnologa se denominan ActiveX.
Su fundamento es tratar de hacer que estos componentes sean reutilizables.
Cada componente (objeto) se caracteriza por un comportamiento, que se
puede alterar a travs de sus mtodos, propiedades o la interaccin con otros
objetos.

5.2 Crear un componente Active X.


Los controles ActiveX son pequeas aplicaciones capaces de interactuar con el
usuario, realizar clculos o representar datos, y que se insertan en pginas web
a travs de las etiquetas <OBJECT> y <PARAM>, que se corresponden a las
operaciones de insercin del componente y paso de sus parmetros de
ejecucin.
Diferencia entre controles y componentes ActiveX
Los elementos desarrollados con esta tecnologa pueden aplicarse tanto en el
lado cliente como en el lado servidor. Esta es la diferencia fundamental entre
un control ActiveX, que se ejecuta localmente en nuestra aplicacin, de un
objeto ActiveX, que utiliza un "automation interface" (o interfaz automatizada)
para que otras aplicaciones o herramientas de programacin puedan utilizarlo.
Se denomina formalmente componente al objeto ActiveX y no al control. Un
componente tiene la ventaja de que se trata de un estndar prcticamente
universal, multiplataforma y, por tanto, independiente de las aplicaciones y sus
lenguajes.
Los controles se encuentran en clara desventaja frente a las posibilidades que
nos ofrecen los objetos de servidor (componentes), al poder combinarse, a
travs de ASP, con scripts y pginas HTML para poder crear webs
profesionales. Su funcionamiento precisa la instalacin del objeto en la
mquina sobre la que se ejecute, y suele encontrarse bajo archivos de
extensin OCX o DLL.
Instituto Tecnolgico de Morelia.

Pgina 175

ITM Unidad V Componentes y Controles Definidos por el Usuario

Para poder utilizar un componente, deber enlazarlo con su pgina web a


travs de programacin en un lenguaje de script, directamente, o a travs del
uso de ASP (Active Server Pages).
En cualquiera de los casos, deber introducir cierto cdigo para poder usar el
componente, una vez instalado en el servidor sobre el que vaya a ejecutarse.
Se trata, principalmente de una lnea en la que crea una "instancia" del objeto
(componente) que va a usar, y el resto de cdigo que utiliza los mtodos y
propiedades de la instancia que acaba de crear. Por ejemplo, si escribimos en
una pgina ASP, el cdigo debe quedar de la forma:
<%
Set OBJETO = Server.CreateObject(IDENTIFICADOR)
OBJETO.Metodo(Argumentos)
.......
%>
El parmetro "IDENTIFICADOR" es un identificador nico del componente. Los
valores "OBJETO.Metodo(Argumentos)" referencian a las funciones, y
parmetros que necesitan las mismas para su llamada, que incorpora el
componente que estamos usando.
Por ejemplo, el componente Acceso a bases de datos utiliza objetos de datos
de ActiveX (ADO) para proporcionar un fcil acceso a la informacin
almacenada en una base de datos (o en otra estructura de datos en forma de
tabla), que cumpla con el estndar ODBC (Open DataBase Connectivity).
A continuacin se muestra el cdigo que tendra que colocar en su pgina ASP
para poder usar este objeto:
<%
'Aqu creamos la instancia del objeto
Set miconexion = Server.CreateObject("ADODB.Connection")
'Ahora usamos la instancia y sus propiedades
nuestros fines
'Indicamos al objeto la cadena de conexin
miconexion.ConnectionString = "DSN=midsn"

para

'Se abre la base de datos


miconexion.Open
' .......
'........
'Se cierra la base de datos
miconexion.Close
%>
Crear un componente

Instituto Tecnolgico de Morelia.

Pgina 176

ITM Unidad V Componentes y Controles Definidos por el Usuario

Si tiene algo de experiencia en programacin de aplicaciones, puede que le


resulte interesante desarrollar sus propios objetos para temas especficos.
Los componentes ActiveX pueden ser creados con las herramientas
tradicionales de desarrollo (que soporten automatizacin).
Entre las ms conocidas estn el Visual C++ (en particular MFC ActiveX
ControlWizard) y Borland C++ respectivamente. Sin embargo, tal vez le resulte
ms sencillo el uso de otros como Visual Basic o Delphi.
El enlace natural de estos componentes con las pginas HTML se realiza
mediante scripts. Por ello, una vez creado el componente, podr enlazarlo en
su web directamente a travs de scripts o con el uso de pginas ASP. Dado
que la diferencia entre un control y un componente ActiveX radica en qu lugar
se ejecuta (Cliente o servidor) ejemplificar la creacin de un objeto de este
tipo en el apartado siguiente.
Encontrar Componentes ActiveX
Si busca por Internet encontrar numerosos componentes para muchisimas
utilidades. Aunque no todos los encontrar de manera gratuita (algunos son
comerciales), podr obtener versiones de prueba con las que podr decidir si le
interesa o no adquirir una licencia para su uso.
Puede visitar el siguiente sitio web donde encontrar informacin y algunos
componentes: http://www.activex.org/

5.3 Crear un Control Active X.


ActiveX est compuesto por dos tipos de objetos: controles Activos (Active
controls) y documentos Activos (Active documents). Estos ltimos permiten
insertar documentos con formato PDF, DOC, etc. Cada objeto tiene suficiente
informacin para ejecutarse l mismo sin ayuda de ninguna aplicacin.
Podemos crear nuestros propios controles o usar los creados por otros
programadores que nos los venden o distribuyen gratuitamente. Si optamos por
programarlos nosotros mismos existen herramientas que lo convierten
prcticamente en un juego de nios, entre ellas destaca las creadas para este
fin por Microsoft y que distribuye a travs de su Web (www.microsoft.com/ie/).
Hoy por hoy el nico inconveniente de la tecnologa ActiveX consiste en que
slo puede ser visto desde el sistema operativo Windows y con el Navegador
Internet Explorer, aunque afortunadamente parece que esto cambiar pronto.
Creando un control ActiveX (OCX)19

19

OCX hace referencia a mdulos que publican controles y funciones para ser utilizados en programas para Windows, incluyendo
especialmente el navegador.

Instituto Tecnolgico de Morelia.

Pgina 177

ITM Unidad V Componentes y Controles Definidos por el Usuario


Se pueden crear distintos tipos de controles activeX, lo nico que requiere, es
decidir si quiere hacer un control como el de un formulario, un ejecutable, algo
que pueda cargar en una pgina web, etc. Al crear un proyecto nuevo en Visual
Basic tendr que elegir cual desea desarrollar. Para el siguiente ejemplo, y con
el fin de que no se piense que los controles ActiveX son solo para temas
relacionados con el internet, haremos un ejecutable que se encargue de apagar
nuestra computadora.

Figura 5.1 Tipos de proyectos en Visual Basic.

Para crear un control OCX, siga los siguientes pasos en el Visual Basic.
NOTA IMPORTANTE: En esta ocasin no se sealar punto a punto y por
medio de imgenes dnde se localiza cada opcin dentro de la interfaz grfica
de Visual Basic, solo las que podra tener dificultad en localizar. Sin embargo,
est en muy intuitiva y no tendr problema en seguir el procedimiento que se
describe a continuacin.
1. Abrir Visual Basic y crear un proyecto "EXE Estndar" (Standard EXE) y le
vamos a agregar otro proyecto de tipo "Control ActiveX". De tal forma que nos
queden los dos proyectos como si fuera uno. El control que crearemos ser
uno que nos permita apagar Windows, reiniciarlo, etc.
2. Seleccionamos la propiedad "InvisibleAtRunTime" y la ponemos en true, ya
que nuestro control no ser visible durante la ejecucin del proyecto en el que
se encuentre.

Instituto Tecnolgico de Morelia.

Pgina 178

ITM Unidad V Componentes y Controles Definidos por el Usuario

Figura 5.2 Propiedades del proyecto.

Como puede observar, nuestro control es como un form normal, pero sin
bordes, ahora inserte un objeto image (Image1, se encuentran del lado
izquierdo de la pantalla, pase el puntero por encima para que se muestre el
nombre de cada objeto) y ponga como picture un icono que te parezca
representativo de lo que va a hacer nuestro control. O alguna imagen que
tenga a la mano para realizar la prueba.
3. En el evento "Resize" del UserControl pon lo siguiente... (Para ver los
eventos debe dar doble clic sobre el objeto que desee y a continuacin
seleccionar
el
evento
de
una
lista
disponible).
Private Sub UserControl_Resize()
Image1.Top = 0
Image1.Left = 0
UserControl.Height = Image1.Height
UserControl.Width = Image1.Width
End Sub
Esto har que el control se vea en el formulario como si fuera solo el icono de
la imagen.

Instituto Tecnolgico de Morelia.

Pgina 179

ITM Unidad V Componentes y Controles Definidos por el Usuario

Figura 5.3 Evento Resize del control ActiveX.

4. Ahora debemos crear los Mtodos del control, para eso vaya al men
"Complementos" (Add-Ins), de ah a "Administrador de Complementos" (Add-In
Manager) y haga doble clic sobre "Asistente para interfaz de controles ActiveX
de VB" (VB 6 ActiveX Ctrl Interface Wizard) seleccione la casilla Cargado/No
Cargado (Loaded/Unloaded) y pulse "Aceptar".

Figura 5.4 Ventana para activar el asistente de configuracin de controles ActiveX.

El "Asistente para interfaz de controles ActiveX de VB" es un asistente que nos


guiar paso a paso en la asignacin de mtodos para nuestro control. Otra vez
vaya a "Complementos", all aparecer una nueva opcin, que es el asistente.
bralo y pulse "Siguiente". En el cuadro "Nombres Disponibles" (Available

Instituto Tecnolgico de Morelia.

Pgina 180

ITM Unidad V Componentes y Controles Definidos por el Usuario


names) tiene todos los mtodos ms comunes que puede insertar, en
"Nombres Seleccionados" (Selected names) no deje nada y pulse "Siguiente".
En esta nueva ventana podemos definir mtodos personalizados.

Figura 5.5 Ventana: Seleccionar miembros de la interfaz.

De clic en "Nuevo" y crea estos mtodos...


1. "Mensaje_Apagar"
2. "Cerrar_Sesion"
3. "Apagar_Sistema"
4. "Reiniciar_Sistema"
5. "Forzar_Apagado"

Figura 5.6 Ventana: Agregar miembros personalizados.

Instituto Tecnolgico de Morelia.

Pgina 181

ITM Unidad V Componentes y Controles Definidos por el Usuario


No olvide de poner a cada uno como "Mtodo" (Method) en el cuadro "Tipo"
(Type). De Clic a "Siguiente", en el cuadro siguiente no hacemos nada, as que
"Siguiente" de nuevo.

Figura 5.7 Ventana Crear miembros personalizaos de la interfaz.

El cuadro que nos salteamos nos permite decir a cul de los componentes
insertados en nuestro control corresponden los mtodos que tengamos puestos
(de los que aparecan en "Nombres Disponibles") ya que hay mtodos que lo
tienen ms de uno de los controles insertados y esto se presta a confusiones.
En la ventana actual, podemos agregar una descripcin a cada cosa y designar
que valor retorna una funcin. Ponga una descripcin a cada mtodo lo desea,
aunque los nombres son bastante descriptivos. No cambien nada en lo de "Tipo
Devuelto". Denle a "Siguiente" y a "Finalizar".

Figura 5.8 Ventana Establecer atributos de los miembros.

Instituto Tecnolgico de Morelia.

Pgina 182

ITM Unidad V Componentes y Controles Definidos por el Usuario

5. Vamos al cdigo de control. Tenemos que declarar las APIs20 que realizaran
las operaciones necesarias:
(si no est familiarizado con la interfaz puede perderse en este punto, el cdigo
siguiente debe ser insertado en la parte de las declaraciones del cdigo de
nuestro control.)
Con esto se nos permitir mostrar el dialogo de "Apagar el Sistema":
Private Declare Function SHShutDownDialog Lib
Alias "#60" (ByVal YourGuess As Long) As Long

"shell32"

Con el siguiente cdigo se ejecutaran las dems operaciones:


Private Declare Function ExitWindowsEx Lib "user32" (ByVal
uFlags As Long, ByVal dwReserved As Long) As Long
Const
Const
Const
Const

EWX_LOGOFF = 0
EWX_SHUTDOWN = 1
EWX_REBOOT = 2
EWX_FORCE = 4

Una vez que tenemos las declaraciones, tenemos las siguientes funciones (Se
pueden ver en la parte baja del cdigo):
Public Function Dialogo_Apagar() As Variant
End Function
Y as para las dems funciones.
Ahora debemos poner las llamadas a las APIs dentro de cada
funcin...
Public Function Dialogo_Apagar() As Variant
SHShutDownDialog 0
End Function
Public Function Cerrar_Sesion() As Variant
ExitWindowsEx EWX_LOGOFF, 0
End Function
Public Function Apagar_Sistema() As Variant
ExitWindowsEx EWX_SHUTDOWN, 0
End Function

20

Del ingls Application Programming Interface - Interfaz de Programacin de Aplicaciones

Instituto Tecnolgico de Morelia.

Pgina 183

ITM Unidad V Componentes y Controles Definidos por el Usuario


Public Function Reiniciar_Sistema() As Variant
ExitWindowsEx EWX_REBOOT, 0
End Function
Public Function Forzar_Apagado() As Variant
ExitWindowsEx EWX_FORCE, 0
End Function

No elimine los comentarios ni el resto del cdigo que haya generado


automticamente Visual Basic.
Casi hemos terminado.
De clic a guardar y pase al formulario del proyecto ejecutable (O sea, el otro,
que no hemos tocado, pulse CTRL+F4 para cerrar la ventana del formulario del
control ActiveX). El ltimo icono que aparece en la barra de la izquierda es el
de nuestro control, dibjelo en el formulario de nuestro proyecto ejecutable
(aparecer el cono que le asignamos) y vaya a la ventana de cdigo del
formulario (En este punto, nuestro control apareci en el panel izquierdo, con el
nombre de UserControl1, es decir, hemos creado un control personalizado
ActiveX, a partir de este punto se pretende implementarlo). Escriba
"UserControl11" y ponga un punto para ver los mtodos del control, aparecen
los
nuestros
mas
algunos
que
VB
pone
por
defecto.

Objeto insertado al formulario


(Elija una imagen pequea) Esa
imagen es de la empresa en la que
laboro y es marca registrada As que
cuidado con eso =)

Control
Nuevo

Ventana del cdigo del


formulario y mtodos de
nuestro control.
Figura 5.9 Utilizacin de nuestro control.

Instituto Tecnolgico de Morelia.

Pgina 184

ITM Unidad V Componentes y Controles Definidos por el Usuario

Por ltimo, ponga la propiedad "CanGetFocus" a False (nuestro control no


obtiene el foco porque es invisible).
En Paint u otro programa para manejo de imgenes cree un BMP de 16 x 15
pixeles. Coloque esa imagen en "ToolBoxBitmap", ese es el icono que
aparecer en la barra de la izquierda (la barra de herramientas), en lugar del
icono por defecto.
Asigne un nombre en la propiedad "Nombre", de modo que cuando dibuje su
control en un formulario, el nombre por default del objeto ser
nombre_objeto_1, nombre_objeto_2, etc.
Ejercicio: Vaya al Form1, borre el que control que pusimos anteriormente y el
cdigo que en el que creamos el objeto (si escribi algo) e inserte uno nuevo.
Ponga en el form varios botones (uno que llame a cada funcin del control).
Guarde todo y prubelo (recuerde que apagara su computadora as que tenga
cuidado).
Compile el control, elija el proyecto y vaya al men "Archivo" y a "Generar
Nombre_quepuso.OCX". Elija donde desea guardarlo, asigne un nombre (Si se
llama Apagar_Equipo, puede ponerle Apagar_Equipo.OCX). Vaya a "Opciones"
y agregue la informacin que desee. Esto ltimo es solo con el fin de poner su
nombre o lo que guste a su control... no afecta su funcionamiento.)
Insercin de un control ActiveX
El cdigo HTML que se necesita para insertar un control o documento ActiveX
en una pgina Web fue desarrollado por Microsoft, con lo que se acord el uso
del estndar OBJECT. A continuacin veremos un sencillo ejemplo que no
requiere ningn archivo especial, el nico requisito para poder visualizarlo
consistir en tener instalado el navegador Internet Explorer 3.0 o superior, en
este caso se utiliz Internet Explorer 7.0. El cdigo usado para insertar el
control ActiveX ser:
<OBJECT WIDTH=250 HEIGHT=340
CLASSID="clsid:99B42120-6EC7-11CF-A6C7-00AA00A47DD2">
<PARAM NAME="alignment" VALUE="2">
<PARAM NAME="BackStyle" VALUE="3">
<PARAM NAME="caption" VALUE="Programacin II">
<PARAM NAME="FontName" VALUE="Arial">
<PARAM NAME="FontSize" VALUE="30">
<PARAM NAME="FontBold" VALUE="1">
<PARAM NAME="Backcolor" VALUE="#006600">
<PARAM NAME="Forecolor" VALUE="#FFFFFF">
Para visualizar el control ActiveX necesita Explorer 3.0 o posterior.
</OBJECT>

En la figura 5.1 podemos ver el resultado obtenido tal y como se ve con Internet
Explorer 7.0. Pasemos a explicar el este cdigo: El valor del atributo CLASSID
es el que identifica el tipo de control ActiveX que estamos insertando. Este
cdigo es complejo y se sale de los objetivos de esta obra.

Instituto Tecnolgico de Morelia.

Pgina 185

ITM Unidad V Componentes y Controles Definidos por el Usuario

Figura 5.10 Objeto ActiveX

Usando este control ActiveX podemos crear efectos variados con texto
Entre los principales parmetros usados en la insercin de este control ActiveX
encontramos:
Caption: Es el texto que debe insertarse con las caractersticas que se indican
con el resto de parmetros.
Angle: Es el ngulo del texto con la horizontal en grados. Si le damos el valor
90 el control mostrar el texto en vertical.
FontSize: Es el tamao del texto.
FontName: Es el tipo de letra.
Backcolor y Forecolor: Son el color del fondo y el color del texto
respectivamente.
Ejercicio: Hacer pruebas modificando los valores de estos y el resto de los
atributos para adaptarlo a nuestras necesidades y poder incorporarlo en sus
propias pginas.

EJERCICIOS PROPUESTOS

Instituto Tecnolgico de Morelia.

Pgina 186

ITM Unidad V Componentes y Controles Definidos por el Usuario


5.1 Qu es un control modelo de componentes?
5.2 Qu es un control ActiveX? Para qu sirve?
5.3 Qu es un componente ActiveX? Para qu sirven?
5.4 Cul es la diferencia entre un control y un componente?
5.5 Qu herramientas se pueden utilizar para crear componentes y controles
ActiveX? Por qu?
5.6 Cules son las ventajas y desventajas principales de los componentes
ActiveX?
5.7 Qu herramientas existen para crear elementos equivalentes a los
controles y componentes ActiveX?
5.8 Realice una investigacin para determinar cul es la tecnologa equivalente
a los controles y componentes ActiveX para el lenguaje Java.
5.9 Investigue qu tipos de controles y componentes ActiveX pueden ser
programados en Visual Basic.
5.10 Por qu a pesar de ser una herramienta tan til, ActiveX es una
herramienta que se utiliza poco a comparacin de otras herramientas
disponibles?

PROYECTO INTEGRAL.
Proyecto 1: Crear tu propio componente o control ActiveX. No importa que
funcionalidad le de. Utilice Visual Basic para crear un objeto personalizado y
posteriormente utilcelo en alguna aplicacin de escritorio o Web.
Recuerde: Visual Basic es una de las herramientas que permiten crear este tipo
de objetos de una manera sencilla. Despus de crearlo, deber probarlo y
utilizarlo.
Proyecto 2: Desarrolle una investigacin detallada acerca de Java Beans y
desarrolle un ejemplo sencillo que realice cualquier funcin equivalente a la de
los controles ActiveX.

Instituto Tecnolgico de Morelia.

Pgina 187

ITM Apndice 1 Instalacin de NetBeans

Apndice 1
Instalacin de NetBeans
A continuacin se darn las instrucciones de como instalar NetBeans IDE en
cada una de las plataformas soportadas. Recuerde que el JDK21 de java ya
debe estar instalado en el sistema. Hay dos versiones de NetBeans, una
normal y una que incluye ya los paquetes, sin embargo la instalacin no tiene
dificultad alguna. (Es del tipo accept, next, next, finish.)
Instalacin en Windows XP o Vista
1. Bajar e instalar el JDK de internet, una de las paginas que lo tiene es:
http://java.sun.com/javase/downloads/index.jsp
2. Despus de haber bajado el instalador, dar doble clic sobre el icono para
iniciar el instalador.
3. Despus aparecer el Acuerdo de Licenciamiento (License Agreement),
acptelo y de clic en Siguiente (Next).
4. Especificar un directorio vaco donde instalar Netbeans IDE. Dar clic en
Siguiente (Next).
5. Selecciones el JDK que se quiere usar junto con el NetBeans IDE de la
lista de seleccin si hay ms de uno. Dar clic en Siguiente (Next). (si ya
tiene instalada una versin no le pregunta)
6. Verifique que el directorio de instalacin es el correcto y que se cuenta
con espacio suficiente en el sistema para la instalacin.
7. De clic en Siguiente (Next) para iniciar la instalacin.
Instalacin en Linux (Este proceso se prob en Ubuntu 8.1 Intrepid Ibex)
1. Abrir una consola de comandos y ejecutar el comando sudo su,
despus de ingresar la contrasea adecuada podr ejecutar el siguiente
comando.
2. $sudo apt-get install netbeans. Con esto se nos listas los paquetes que
se instalarn, el espacio requerido, etc. Y al final se nos preguntar si se
desea proceder.
3. Desea continuar [S/n]?
4. Una vez que selecciona continuar, la instalacin se crea sin ningn
problema y la aplicacin se agrega a la lista de aplicaciones de Ubuntu.
Nota: Los pasos pueden ser diferentes dependiendo de la distribucin que
tenga.
Ejecutar NetBeans IDE
A continuacin se explicar la forma de ejecutar NetBeans IDE en los
diferentes sistemas operativos.
Ejecutar en Windows XP o Vista
21

Java Development Kit. Kit de desarrollo de Java. Necesario para trabajar con dicho lenguaje.

Instituto Tecnolgico de Morelia.

Pgina 188

ITM Apndice 1 Instalacin de NetBeans

Para ejecutar el IDE en Mquinas con Microsoft Windows hacer lo siguiente:


Dar Doble clic en el icono de NetBeans IDE en el escritorio.
Desde el Men Inicio, seleccionar NetBeans IDE > NetBeans IDE
Ejecutar en Linux (Ubuntu 8.1 Intrepid Ibex)

Dar Doble clic en el icono de NetBeans IDE en el escritorio.


Buscar el cono de la aplicacin en el listado de aplicaciones y dar clic
sobre el mismo.

Desinstalar NetBeans IDE


A continuacin se mostrar como desinstalar NetBeans IDE en los diferentes
sistemas operativos.
Desinstalar en Windows XP o Vista
1. Desde el Men Inicio, escoger Panel de Control.
2. Dar doble clic en el icono de Agregar o Quitar Programas.
3. Seleccionar NetBeans IDE de la lista y dar clic en Remover.
Desinstalar en Linux (Ubuntu 8.1 Intrepid Ibex)
1. Entre a una consola de comandos y ejecute el comando sudo para
poder ejecutar algunos comandos con permisos de root.
2. Ejecute $sudo apt-get remove netbeans.

Instalacin de Eclipse en (Ubuntu 8.1 Intrepid Ibex)


1. Abrir una consola de comandos y ejecutar el comando sudo su,
despus de ingresar la contrasea adecuada podr ejecutar el siguiente
comando.
2. $sudo apt-get install eclipse. Con esto se nos listas los paquetes que se
instalarn, el espacio requerido, etc. Y al final se nos preguntar si se
desea proceder.
3. Desea continuar [S/n]?
4. Una vez que selecciona continuar, la instalacin se crea sin ningn
problema y la aplicacin se agrega a la lista de aplicaciones de Ubuntu.
5. Para ejecutar la aplicacin o desinstalarla siga la misma lgica que se
aplic al instalar NetBeans.

Instalacin de JCreator en Windows XP o Vista

Instituto Tecnolgico de Morelia.

Pgina 189

ITM Apndice 1 Instalacin de NetBeans


1. La instalacin es muy sencilla independientemente de la versin, sobre
todo hablando de instalar aplicaciones en Windows. Primero localice el
archivo instalador y de doble clic. Presione Next y luego acepte la
licencia y presione Next nuevamente
2. Seleccione el directorio donde desea que se instale la aplicacin y
presione Next.
3. Seleccione sonde desea que se coloquen accesos directos y presione
Next.
4. Finalmente presione Install y termine la instalacin con Finish

Instituto Tecnolgico de Morelia.

Pgina 190

ITM Apndice 2 Introduccin a MySQL

Apndice 2

Introduccin a MySQL

MySQL es un gestor de base de datos sencillo de usar, es uno de los motores de base
de datos ms usados en Internet, la principal razn de esto es que es Open Source.
En este apndice se pretende mostrar el uso del programa cliente mysql para crear y
usar una sencilla base de datos, se analizara solo lo necesario para llevar a cabo un
ejercicio como el que se presenta en el material.
Mysql es un programa interactivo que permite conectarnos a un servidor MySQL,
ejecutar algunas consultas, y ver los resultados.
Supongamos que mysql est instalado en alguna mquina y que disponemos de un
servidor MySQL al cual podemos conectarnos (Tal como lo deja AppServ). Para ver la
lista de opciones proporcionadas por mysql, lo invocamos con la opcin --help:
> mysql --help
A continuacin se describe el proceso completo de creacin y uso de una base de
datos en MySQL. Puesto que es imposible que se describan a detalle muchos de los
temas relacionados con la funcionalidad total de MySQL, se recomienda que se
consulte el manual de MySQL para obtener ms informacin al respecto.
Conectar al servidor MySQL
Para conectarse al servidor, usualmente necesitamos de un nombre de usuario (login)
y de una contrasea (password), y si el servidor al que nos deseamos conectar est en
una mquina diferente de la nuestra, tambin necesitamos indicar el nombre o la
direccin IP de dicho servidor. Una vez que conocemos estos tres valores, podemos
conectarnos de la siguiente manera:
> mysql -h NombreDelServidor -u NombreDeUsuario -p
Cuando ejecutamos este comando, se nos pedir que proporcionemos tambin la
contrasea para el nombre de usuario que estamos usando.
Si la conexin al servidor MySQL se pudo establecer de manera satisfactoria,
recibiremos el mensaje de bienvenida y estaremos en el prompt de mysql:

Instituto Tecnolgico de Morelia.

Pgina 191

ITM Apndice 2 Introduccin a MySQL


>mysql -h root -u algo -p
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5563 to server version: 3.23.41
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
Esto nos indica que mysql est listo para recibir comandos.
Despus de que nos hemos conectado de manera satisfactoria, podemos
desconectarnos en cualquier momento al escribir "quit", "exit", o presionar
CONTROL+D.
La mayora de los ejemplos siguientes asume que estamos conectados al servidor, lo
cual se indica con mysql>.

Sintaxis MySQL
En este momento debimos de haber podido conectarnos ya al servidor MySQL, an
cuando no hemos seleccionado alguna base de datos para trabajar. Lo que haremos a
continuacin es escribir algunos comandos para irnos familiarizando con el
funcionamiento de mysql.

Un comando normalmente consiste de una sentencia SQL seguida por un punto


y coma.
Cuando emitimos un comando, mysql lo manda al servidor para que lo ejecute,
nos muestra los resultados y queda listo para recibir ms consultas.
mysql muestra los resultados de la consulta como una tabla (filas y columnas).
La primera fila contiene etiquetas para las columnas. Las filas siguientes
muestran los resultados de la consulta. Normalmente las etiquetas de las
columnas son los nombres de los campos de las tablas que estamos usando en
alguna consulta.
mysql muestra cuntas filas fueron regresadas y cuanto tiempo tard en
ejecutarse la consulta, lo cual puede darnos una idea de la eficiencia del
servidor, aunque estos valores pueden ser un tanto imprecisos ya que no se
muestra la hora del CPU, y porque pueden verse afectados por otros factores,
tales como la carga del servidor y la velocidad de comunicacin en una red.
Las palabras clave pueden ser escritas usando maysculas y minsculas.

Instituto Tecnolgico de Morelia.

Pgina 192

ITM Apndice 2 Introduccin a MySQL


Las siguientes consultas son equivalentes:
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;
Es posible escribir ms de una sentencia por lnea, siempre y cuando estn separadas
por punto y coma:
mysql> SELECT VERSION(); SELECT NOW();

Sintaxis MySQL
Un comando no necesita ser escrito en una sola lnea, as que los comandos que
requieran de varias lneas no son un problema. mysql determinar en dnde finaliza la
sentencia cuando encuentre el punto y coma, no cuando encuentre el fin de lnea.
Aqu est un ejemplo que muestra una consulta simple escrita en varias lneas:
mysql> SELECT
-> USER(),
-> CURRENT_DATE;
+-------------------+--------------+
| USER()
| CURRENT_DATE |
+-------------------+--------------+
| root@localhost
| 2008-12-24
|
+-------------------+--------------+
1 row in set (0.00 sec)
mysql>

En este ejemplo debe notarse como cambia el texto (de mysql> a ->, a ese texto se le
conoce como propmt.) cuando se escribe una consulta en varias lneas. Esta es la
manera en cmo mysql indica que est esperando a que finalice la consulta. Sin
embargo si deseamos no terminar de escribir la consulta, podemos hacerlo al escribir \c
como se muestra en el siguiente ejemplo:
mysql> SELECT
-> USER(),
-> \c
mysql>

Instituto Tecnolgico de Morelia.

Pgina 193

ITM Apndice 2 Introduccin a MySQL


Est listo para una nueva consulta.
Los comandos multi-lnea comnmente ocurren por accidente cuando tecleamos
ENTER, pero olvidamos escribir el punto y coma. En este caso mysql se queda
esperando para que finalicemos la consulta:
mysql> SELECT
USER()
->
Si esto llega a suceder, muy probablemente mysql estar esperando por un punto y
coma, si escribimos el punto y coma podremos completar la consulta y mysql podr
ejecutarla:
mysql> SELECT USER()
-> ;
+----------------+
| USER()
|
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
mysql>
Los prompts '> y "> ocurren durante la escritura de cadenas. En mysql podemos
escribir cadenas utilizando comillas sencillas o comillas dobles (por ejemplo, 'hola' y
"hola"), y mysql nos permite escribir cadenas que ocupen mltiples lneas. De manera
que cuando veamos el prompt '> o ">, mysql nos indica que hemos empezado a
escribir una cadena, pero no la hemos finalizado con la comilla correspondiente.
Aunque esto puede suceder si estamos escribiendo una cadena muy grande, es ms
frecuente que obtengamos alguno de estos prompts si inadvertidamente escribimos
alguna de estas comillas.
Por ejemplo:
mysql> SELECT * FROM mi_tabla WHERE nombre = "Tecnolgico
AND edad < 30;
">
Si escribimos esta consulta SELECT y entonces presionamos ENTER para ver el
resultado, no suceder nada. En lugar de preocuparnos porque la consulta ha tomado
mucho tiempo, debemos notar la pista que nos da mysql cambiando el prompt. Esto
nos indica que mysql est esperando que finalicemos la cadena iniciada ("Tecnolgico).

Instituto Tecnolgico de Morelia.

Pgina 194

ITM Apndice 2 Introduccin a MySQL


En este caso, lo ms simple es cancelar la consulta. Sin embargo, no basta con escribir
\c, ya que mysql interpreta esto como parte de la cadena que estamos escribiendo. En
lugar de esto, debemos escribir antes la comilla correspondiente y despus \c :
mysql> SELECT * FROM mi_tabla WHERE nombre = "Tecnolgico AND
edad < 30;
"> " \c
mysql>
El prompt cambiar de nuevo al ya conocido mysql>, indicndonos que mysql est listo
para una nueva consulta.
Es sumamente importante conocer lo que significan los prompts '> y ">, ya que si en
algn momento nos aparece alguno de ellos, todas la lneas que escribamos a
continuacin sern consideradas como parte de la cadena, inclusive cuando escribimos
QUIT. Esto puede ser confuso, especialmente si no sabemos que es necesario escribir
la comilla correspondiente para finalizar la cadena, para que podamos escribir despus
algn otro comando, o terminar la consulta que deseamos ejecutar.
Usar una base de datos
Ahora que conocemos como escribir y ejecutar sentencias, es tiempo de acceder a una
base de datos.
Crearemos la misma base de datos y las tablas que se crean en el materia de esta
materia utilizando phpMyadmin as podr realizar una comparacin entre utilizar la
lnea de comandos o alguna aplicacin grfica que le permita administrar su servidor
mySQL.
La base de datos "Negocio" ser muy simple (deliberadamente), pero no es difcil
pensar de situaciones del mundo real en la cual una base de datos similar puede ser
usada.
Primeramente usaremos la sentencia SHOW para ver cules son las bases de datos
existentes en el servidor al que estamos conectados:
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql
|
| test
|
+----------+
2 rows in set (0.00 sec)
mysql>

Instituto Tecnolgico de Morelia.

Pgina 195

ITM Apndice 2 Introduccin a MySQL


Es probable que la lista de bases de datos que veamos sea diferente en nuestro caso,
pero seguramente las bases de datos "mysql" y "test" estarn entre ellas. En particular,
la base de datos "mysql" es requerida, ya que sta tiene la informacin de los
privilegios de los usuarios de MySQL. La base de datos "test" es creada durante la
instalacin de MySQL con el propsito de servir como rea de trabajo para los usuarios
que inician en el aprendizaje de MySQL, como puede recordar, cuando comenzamos a
trabajar con phpMyadmin utilizamos la base de datos test.
Es posible que no veamos todas las bases de datos si no tenemos el privilegio SHOW
DATABASES. Se recomienda revisar la seccin del manual de MySQL dedicada a los
comandos GRANT y REVOKE.
Si la base de datos "test" existe, hay que intentar accesar a ella:
mysql> USE test
Database changed
mysql>
Observe que USE, al igual que QUIT, no requieren el uso del punto y coma, aunque si
se usa no hay ningn problema. El comando USE es especial tambin de otra manera:
ste debe ser usado en una sola lnea.

Crear una base de datos


Intentaremos acceder a la base de datos, si no ha sido creada deberemos hacerlo
nosotros mismos.
mysql> USE Negocio
ERROR 1049: Unknown database
'Negocio'
mysql>
El mensaje anterior indica que la base de datos no ha sido creada, por lo tanto
necesitamos crearla.
mysql> CREATE DATABASE Negocio;
Query OK, 1 row affected (0.00 sec)
mysql> USE Negocio
Database changed
mysql>

Instituto Tecnolgico de Morelia.

Pgina 196

ITM Apndice 2 Introduccin a MySQL


Al crear una base de datos no se selecciona sta de manera automtica; debemos
hacerlo de manera explcita, por ello usamos el comando USE en el ejemplo anterior.
La base de datos se crea slo una vez, pero nosotros debemos seleccionarla cada vez
que iniciamos una sesin con mysql. Por ello es recomendable que se indique la base
de datos sobre la que vamos a trabajar al momento de invocar al monitor de MySQL.
Por ejemplo:
>mysql -h parametro1 -u usuario -p Negocio
Enter password: ******
Welcome to the MySQL monitor. Commands end
with ; or \g.
Your MySQL connection id is 17 to server
version: 3.23.38-nt
Type 'help;' or '\h' for help. Type '\c' to
clear the buffer
mysql>
Observe que "Negocio" no es la contrasea que se est proporcionando desde la lnea
de comandos, sino el nombre de la base de datos a la que deseamos acceder. Si
deseamos proporcionar la contrasea en la lnea de comandos despus de la opcin "p", debemos de hacerlo sin dejar espacios (por ejemplo, -phola123, no como -p
hola123). Sin embargo, escribir nuestra contrasea desde la lnea de comandos no es
recomendado, ya que es bastante inseguro.
Crear tabla
Crear la base de datos es la parte ms fcil, pero en este momento la base de datos
est vaca, como lo indica el comando SHOW TABLES:
mysql> SHOW TABLES;
Empty set (0.00 sec)
La parte un tanto complicada es decidir la estructura que debe tener nuestra base de
datos: qu tablas se necesitan y qu columnas estarn en cada tabla.
En principio, Contendr las tablas Clientes, Productos y Empleados.
Los campos sern: para Clientes (Id, nombre, direccin), para Productos (Id, nombre y
precio) y para empleados (Id, nombre, salario).

Instituto Tecnolgico de Morelia.

Pgina 197

ITM Apndice 2 Introduccin a MySQL


Usaremos la sentencia CREATE TABLE para indicar como estarn conformados los
registros de nuestros clientes.
mysql> CREATE TABLE Clientes(
-> id INT, nombre VARCHAR(60),
-> direccion VARCHAR(120);
Query OK, 0 rows affected (0.02 sec)
mysql>
Lleve a cabo el mismo procedimiento para las tres tablas. Consulte el manual de
MySQL para saber ms acerca de los tipos de datos que se utilizan, sus longitudes y la
manera adecuada de asignarlos a campos dentro de una tabla.
Ahora que hemos creado la tabla, la sentencia SHOW TABLES debe producir algo
como:
mysql> SHOW TABLES;
+---------------------+
| Tables_in_Negocio |
+---------------------+
| clientes
|
| productos
| empleados
|
+---------------------+
3 row in set (0.00 sec)
mysql>
Para verificar que la tabla fue creada como nosotros esperbamos, usaremos la
sentencia DESCRIBE:
mysql> DESCRIBE clientes;
+--------------+-------------+------+-----+---------+-------+
| Field
| Type
| Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| id
| INT
| NO |
| NULL
|
|
| nombre
| varchar(60) |NO|
| NULL
|
|
| direccion| varchar(120)|NO|
| NULL
|
|
+--------------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
mysql>

Instituto Tecnolgico de Morelia.

Pgina 198

ITM Apndice 2 Introduccin a MySQL


Podemos hacer uso de la sentencia DESCRIBE en cualquier momento, por ejemplo, si
olvidamos los nombres el tipo de las columnas en alguna tabla.
Cargar datos en una tabla
Despus de haber creado la tabla, ahora podemos incorporar algunos datos en ella,
para lo cual haremos uso de la sentencia INSERT.
En la manera ms simple, debemos proporcionar un valor para cada columna en el
orden en el cual fueron listados en la sentencia CREATE TABLE.
mysql> INSERT INTO clientes
-> VALUES('1', 'Saul Chavez', 'Constelaciones 99');
Recuperar informacin de una tabla
La sentencia SELECT es usada para obtener la informacin guardada en una tabla. La
forma general de esta sentencia es:
SELECT
LaInformacinQueDeseamos
CondicinASatisfacer

FROM

DeQueTabla

WHERE

Aqu, LaInformacinQueDeseamos es la informacin que queremos ver. Esta puede


ser una lista de columnas, o un * para indicar "todas las columnas". DeQueTabla indica
el nombre de la tabla de la cual vamos a obtener los datos. La clausula WHERE es
opcional. Si est presente, la CondicinASatisfacer especifica las condiciones que los
registros deben satisfacer para que puedan ser mostrados.
Seleccionando todos los datos
La manera ms simple de la sentencia SELECT es cuando se recuperan todos los
datos de una tabla:
mysql> SELECT * FROM clientes;
+---+-----------------+--------------------------+
| id |
nombre
| direccin
|
+---+-----------------+--------------------------+
| 1 | Saul Chavez | Constelaciones 99
|
+---+------------------+-------------------------+
1 rows in set (0.00 sec)
Esta forma del SELECT es til si deseamos ver los datos completos de la tabla.
Para eliminar todos los datos de una tabla usamos la sentencia DELETE.
mysql> DELETE FROM clientes;
Instituto Tecnolgico de Morelia.

Pgina 199

ITM Apndice 2 Introduccin a MySQL


Para llevar a cabo una modificacin, utilizamos una sentencia UPDATE:
mysql> UPDATE clientes SET nombre="Saul Hernandez
de caifanes"
WHERE nombre="Saul Chavez";
Como se mostr anteriormente, es muy fcil recuperar los datos de una tabla completa.
Pero tpicamente no deseamos hacer esto, particularmente cuando las tablas son
demasiado grandes..
Seleccionar registros particulares
Podemos seleccionar slo registros particulares de una tabla. Por ejemplo, si
deseamos verificar el cambio que hicimos al nombre de Saul Chavez, seleccionamos
slo el registro de Saul Hernandez de caifanes de la siguiente manera:
mysql> SELECT * FROM clientes WHERE id="1";
+---+-----------------+--------------------------+
| id |
nombre
| direccin
|
+---+-----------------+--------------------------+
| 1 | Saul Hernandez de caifanes | Constelaciones 99|
+---+------------------+-------------------------+
1 rows in set (0.00 sec)
La salida mostrada confirma que el nombre ha sido modificado de Saul Chavez a Saul
Hernandez de caifanes.
La comparacin de cadenas es normalmente no sensitiva, as que podemos especificar
el nombre como "Saul Chavez", "saul chavez", etc. El resultado de la consulta ser el
mismo.
Podemos adems especificar condiciones sobre cualquier columna, no slo el "id",
como el nombre o la direccin. O incluso utilizar el operador lgico AND u OR para
especificar ms condiciones:
mysql> SELECT * FROM clientes WHERE id = "1" OR Nombre = "Saul
Chavez";
Si tenemos una mayor cantidad de operadores AND u OR y queremos determinar el
orden en que se deben agrupar las condiciones, es buena idea usar parntesis.
Seleccionar columnas particulares
Si no deseamos ver los registros completos de una tabla, entonces tenemos que usar
los nombres de las columnas en las que estamos interesados separndolas por coma.
Instituto Tecnolgico de Morelia.

Pgina 200

ITM Apndice 2 Introduccin a MySQL


Por ejemplo, si deseamos conocer solo la direccin, debemos seleccionar la columna
"direccion" nicamente:
mysql> SELECT direccion FROM clientes;
+-------------------------+
| direccin
|
+-------------------------+
| Constelaciones 99|
+-------------------------+
1 rows in set (0.00 sec)
La extraccin de informacin de una base de datos puede ser tan especfica como lo
requiera el usuario y hay muchas palabras claves que facilitan el filtrado, ordenamiento
u otra accin a realizar en los registros resultantes de una consulta. Para conocer a
profundidad la creacin de sentencias por favor consulte el manual de mySQL ya que
este material es meramente introductorio.

Instituto Tecnolgico de Morelia.

Pgina 201

ITM

Conclusiones
En este material se han conseguido los objetivos propuestos:
Elaborar el material didctico para la asignatura de Programacin II y proporcionar los
conocimientos terico prcticos a los estudiantes, quienes aplicarn los
conocimientos en un lenguaje de programacin orientado a eventos, para resolver
problemas dentro de los procesos administrativos.
Desarrollar material que lleve de la mano al alumno y sea una herramienta til para el
profesor, con explicaciones sencillas.
Respetar el temario indicado y desarrollarlo utilizando el lenguaje Java y analizar
herramientas alternativas relacionadas con Java para temas que no tienen relacin con
dicho lenguaje.
Apoyar sustancialmente al profesor y alumno de la asignatura de Programacin II,
ofreciendo al alumno una buena referencia de la cual extraer informacin, tomar
ejemplos, realizar ejercicios, etc. durante el estudio de esta asignatura. A los profesores
de la misma, les podr funcionar como apoyo y gua durante el desarrollo de los temas.
As mismo, apoya a sostener el programa de acreditacin de la carrera de la
Licenciatura en Informtica.
Este material fue desarrollado de manera tal, que se facilite el aprendizaje y que este
sea adems progresivo y la dificultad vaya en aumento para as no solo guiar al
alumno, sino inculcar en l la necesidad de investigar y aprender ms acerca de los
temas expuestos. Por ejemplo: en la unidad uno se desarrollan los temas relacionados
con la base del lenguaje, sus estructuras, su sintaxis, su importancia, etc. Y todo se
realiza desarrollando proyectos en consola, con una interfaz rudimentaria y ejemplos
sencillos, de cualquier modo, los ejemplos van aumentando en su grado de
complejidad, comenzando con un simple hola mundo hasta pequeas aplicaciones
donde se piden datos por medio de una interfaz ahora un poco mejor y se trabajan de
tal manera que se obliga al alumno a practicar lo expuesto durante toda la unidad
como: ciclos, estructuras, declaraciones, objetos, clases, herencia, polimorfismo, etc.
etc. etc.
Siguiendo esta idea de aumento progresivo en dificultad de programacin y anlisis de
conceptos, en la segunda unidad se introduce al alumno a un ambiente grfico, en el
cual debe implementar todo lo aprendido en la unidad I pero ahora utilizando
elementos de un ambiente grfico como botones, cuadros de dilogo, ventanas, reas
de texto, etc.
Instituto Tecnolgico de Morelia.

Pgina 202

ITM
Posteriormente, en la unidad III, el alumno es guiado a implementar lo aprendido en las
unidades anteriores y fusionarlos con la administracin de archivos. Hasta el momento,
todos los ejemplos y ejercicios fueron planeados de tal manera que los datos fueran
almacenados y generados en memoria, en esta unidad se da otro giro implementando
ahora archivos como fuente de informacin y lugares de almacenamiento. Es as como
en esta unidad se logra desarrollar aplicaciones grficamente amigables que
implementan archivos para funcionar.
Despus, en la unidad IV se sigue con la lnea de aprendizaje guiando al alumno a la
implementacin de bases de datos como medio de almacenaje y lectura de
informacin. Aunque no se profundiza demasiado en este tema debido a que el objetivo
durante sta materia es ms introductorio. A pesar de esto, se detalla como instalar un
servidor de bases de datos, como utilizarla usando el lenguaje de programacin java y
el ambiente grfico de NetBeans e incluso se ejemplifican pequeas aplicaciones con
bases de datos pequeas tambin. Con ello, el alumno contar con los conocimientos
necesarios en relacin con bases de datos para un aprendizaje futuro.
Por ltimo, en la unidad V salimos un poco de la temtica que gira alrededor de Java
para analizar herramientas que trabajan con otros lenguajes como Visual Basic. El
objetivo es mostrar al alumno que adems de poder programar aplicaciones poderosas
utilizando los componentes y controles existentes, es posible crear sus propios
componentes con fines especficos. Y debido a que los temas que propone el temario
estn relacionados con el lenguaje Visual Basic y uno de los objetivos del libro fue
desarrollar los temas utilizando el lenguaje java, se da al alumno la tarea de analizar el
equivalente a la tecnologa Active X de Microsoft en el lenguaje Java.
As pues, se estructur el contenido de este material, guiando al alumno de lo ms
sencillo a lo ms complejo, siempre ejemplificando y proponiendo ejercicios que
fuercen al alumno a ir un poco ms profundo
A pesar de que este material fue realizado en la versin ms actual en cuanto a las
herramientas que involucra, siempre hay herramientas nuevas que surgen incluso da
con da y esto podra dejar atrs ciertos mtodos analizados. Sin embargo, la esencia
del funcionamiento de cualquier lenguaje orientado a eventos queda plasmada y no
pasar de moda, adems, analizando la evolucin de los lenguajes de programacin
puedo predecir que este material ser de utilidad durante suficiente tiempo para cumplir
su misin y ayudar al alumnado y profesorado de la mejor institucin educativa pblica
del estado a aprender y ensear respectivamente.

Instituto Tecnolgico de Morelia.

Pgina 203

ITM

Bibliografa

1. Steven Holzner - La Biblia Del Java 2


Ed. Coriolis.

2. Deitel Java How to Program, 4th EditionMicrosoft


Ed. Prentice Hall

3. Taylor David.
Object Orient informations systems, planning and implementations.
Ed. Ed. Wiley, Canada, 1992.

4. Fco. Javier Ceballos.


Java 2 Curso de Programacin.
Ed. Alfaomega.

5. Herbert Schildt.
Fundamentos de Programacin en Java 2.
Ed. McGrawHil.

6. Agustn Froufe.
Java 2 Manual de usuario y tutorial.
Ed. Alfaomega.
Instituto Tecnolgico de Morelia.

Pgina 204

ITM

7. Stephen R. Davis.
Aprenda Java Ya.
Ed. McGrawHill.

8. Laura Lemay, Rogers Cadenhead.


Aprendiendo JAVA 2 en 21 das.
Ed. Prentice Hall.

9. Kris Jamsa Ph D..


Java Ahora!
Ed. McGrawHill..

10. Philip Heller, Simon Roberts


Complete Java 2 Certification: Study Guide
Fifth Edition

11. http://java.sun.com/
Web oficial de SUN. Puedes encontrar: informacin, software, etc.
Fecha de consulta: 02/ene/09

12. http://www.javaworld.com/
Documentacin muy completa.
Fecha de consulta: 03/ene/09

Instituto Tecnolgico de Morelia.

Pgina 205

ITM
13. http://www.adictosaltrabajo.com/indexg.php?pagina=tutoriales
Tutoriales muy completos
Fecha de consulta: 10/ene/09

14. http://www.developer.com/java/
Informacin muy actualiza respecto al mundo de java.
Fecha de consulta: 27/ene/09

15. http://www.javahispano.org/canyamo.action
Uno de los sitios de java ms completos que hay en espaol.
Fecha de consulta: 10/ene/09

16. http://www.programacion.net/java/
Otro buen sitio de java en espaol.
Fecha de consulta: 15/ene/09

17. http://www.exampledepot.com/
Aqu se puede disponer de muchos ejemplos sencillos.
Fecha de consulta: 08/ene/09

18. http://www.java2s.com/
Otro excelente sitio con informacin confiable y ejemplos sobre java.
Fecha de consulta: 01/feb/09

19. http://www.lawebdelprogramador.com/

Instituto Tecnolgico de Morelia.

Pgina 206

ITM
Informacin confiable, chat para resolver dudas, foros de consulta, libros incluso posee
un rea de ofertas de trabajo.

20. http://www.elrincondelprogramador.com/
Buena fuente de informacin, no solo para temas relacionados con java, sino con ms
lenguajes.
Fecha de consulta: 05/feb/09

21. http://mindprod.com/jgloss/jgloss.html
Glosario muy completo sobre java. Aunque el diseo de la pgina no es el mejor.
Fecha de consulta: 05/ene/09

22. http://java.dzone.com/
Pagina con foros, links e informacin sobre java muy confiables pero sobre temas
avanzados del lenguaje.
Fecha de consulta: 17/ene/09

23. http://www.javasoft.com
Fuente confiable y completa.
Fecha de consulta: 01/feb/09

24. http://www.prenhall.com/deitel
Pagina con la cual se complementa la informacin que viene en la obra de deitel.
Fecha de consulta: 03/ene/09

25. http://es.wikipedia.org/wiki/Java

Instituto Tecnolgico de Morelia.

Pgina 207

ITM
La informacin consultada es buena.
Fecha de consulta: 10/feb/09
26. http://www.java.com
Pgina oficial, descargas, ayuda, Qu es java?
Fecha de consulta: 09/feb/09
27. www.manual-java.com
Manual muy completo, seccin de FAQ, Foros, Cdigo, etc.
Fecha de consulta: 10/feb/09
28. www.webtaller.com/manual-java
Manual paso a paso de Java. Muy recomendable para alguien que comienza a
introducirse en el tema.
Fecha de consulta: 10/feb/09
29. http://todojava.awardspace.com/manuales-java.html
Manuales de java
Fecha de consulta: 10/feb/09
30. www.itapizaco.edu.mx/paginas/Javatut/froufe/introduccion/indice.html
Tutorial muy bueno para principiantes en java.
Fecha de consulta 10/feb/09

Instituto Tecnolgico de Morelia.

Pgina 208

ITM

Glosario de Trminos

A
abstract class (clase abstracta)
Una clase que contiene uno o ms mtodos abstractos, y, por tanto, nunca puede ser
instanciada. Las clases se definen de manera que otras clases pueden extenderse y
hacerlas concretas mediante la aplicacin de los mtodos abstractos.
abstract method (mtodo abstracto)
Un mtodo que no tiene implementacin.
Abstract Window Toolkit (AWT)
Una coleccin de componentes de interfaz grfica de usuario (GUI) que se crearon
utilizando las plataformas-nativas de los componentes. Estos componentes
proporcionan un subconjunto de la funcionalidad que es comn a todas las plataformas.
En gran medida suplantado por el proyecto conjunto de componentes Swing.
access control (control de acceso)
Los mtodos por los cuales las interacciones con los recursos son limitados a las
colecciones de los usuarios o programas con el fin de hacer cumplir la integridad,
confidencialidad, disponibilidad o limitaciones.
ACID
El acrnimo de las cuatro propiedades de las transacciones garantizadas: (atomicity,
consistency, isolation, and durability) atomicidad, la consistencia, aislamiento y
durabilidad.
actual parameter list (lista de parmetros reales)
The arguments specified in a particular method call. Los argumentos que se especifican
en una llamada de mtodo especial.

Instituto Tecnolgico de Morelia.

Pgina 209

ITM
API
(Application Programming Interface.) Interfaz de programacin de aplicaciones. La
especificacin de cmo un programador haciendo una aplicacin accede a la conducta
y el estado de clases y objetos.
applet
Un componente que normalmente se ejecuta en un navegador Web, pero puede
ejecutar en una variedad de otras aplicaciones o dispositivos que apoyan el modelo de
programacin applet.
argument (argumento)
Un elemento de datos especificados en una llamada de mtodo. Un argumento puede
ser un valor literal, una variable, o una expresin.
array (arreglo)
Una coleccin de datos, todos del mismo tipo, en el que cada elemento ocupa una
posicin nica designada por un entero.
ASCII
(American Standard Code for Information Interchange) Cdigo americano estndar
para el intercambio de informacin. Una norma de asignacin de 7-bit cdigos
numricos a caracteres.
atomic (atmica)
Se refiere a una operacin que nunca se interrumpe o se dejan en un estado
incompleto bajo ninguna circunstancia.

B
bean
Un componente de software reutilizable que se ajuste a determinado diseo y
convenciones de nombres.
Binario, sistema

Instituto Tecnolgico de Morelia.

Pgina 210

ITM
Es un sistema de numeracin en el que los nmeros se representan utilizando
solamente las cifras cero y uno (0 y 1).
binary operator (operador binario)
Un operador que tiene dos argumentos.
bit
La unidad ms pequea de informacin en una computadora, con un valor de 0 o 1.
bitwise operator (operador bitwise)
El operador que manipula los bits de uno o ms de sus operandos por separado y en
paralelo. Los ejemplos incluyen a los operadores binario lgicos (&, |, ^), el cambio de
operadores binarios (<<,>>>>>) y el unario un complemento del operador (~).
block (bloque)
En el lenguaje de programacin Java, cualquier cdigo entre llaves. Ejemplo: {x = 1;}.
boolean
Se refiere a una expresin o variable que slo puede tener un valor verdadero o falso.
El lenguaje de programacin Java proporciona el tipo booleano y los valores literales
verdadero y falso.
break
Una palabra clave de Java utilizada para reanudar la ejecucin del programa en la
instruccin inmediatamente despus de la actual declaracin. Si est seguido por una
etiqueta, el programa reanudar la ejecucin en la etiqueta la declaracin.
byte
Una secuencia de ocho bits. Java proporciona un tipo byte correspondiente.
bytecode
Cdigo independiente mquina generado por el compilador Java y ejecutado por el
intrprete de Java.

C
Instituto Tecnolgico de Morelia.

Pgina 211

ITM
case
Una palabra reservada de Java que define un grupo de estados para iniciar la
ejecucin si un valor coincide con el valor definido.
casting (enmascaramiento)
Conversin explcita de un tipo de dato a otro.
catch
Una palabra clave de Java utilizada para declarar un bloque de cdigo para ser
ejecutado en caso de que haya una excepcin de Java, o en un error en tiempo de
ejecucin, se produce en un bloque try anterior.
char
Una palabra clave de Java utilizada para declarar una variable de tipo carcter.
class (clase)
En el lenguaje de programacin Java, un tipo que define la implementacin de un tipo
particular de objeto. Una definicin de clase define la instancia y variables de clase y
mtodos, as como especificar las interfaces que la clase implementa y la inmediata
superclase de la clase.
class method (mtodo de clase)
Un mtodo consta de una serie de instrucciones que determinan el comportamiento del
de la clase. Los mtodos de clase afectan a la clase en su conjunto, no una instancia
de la clase
class variable (variable de clase)
Un elemento de datos asociados a una clase en su conjunto - no con casos particulares
de la clase. Las variables se definen en las definiciones de clase.
Cdigo
Conjunto de lneas de texto que son las instrucciones que debe seguir la computadora
para ejecutar un programa.
comment (comentario)

Instituto Tecnolgico de Morelia.

Pgina 212

ITM
En un programa, un texto explicativo que es ignorado por el compilador. En los
programas escritos en el lenguaje de programacin Java, los comentarios estn
delimitados con / / o / * ... * /.
commit (comprometerse)
El punto en una transaccin cuando todas las actualizaciones a todos los recursos que
participan en la transaccin se hizo permanente.
compiler (compilador)
Programa informtico que traduce un programa escrito en un lenguaje de programacin
a otro lenguaje de programacin, generando un programa equivalente que la mquina
ser capaz de interpretar.
Componentes de Software
Todo aquel recurso desarrollado para un fin concreto y que puede formar solo o junto
con otro/s, un entorno funcional requerido por cualquier proceso predefinido. Son
independientes entre ellos, y tienen su propia estructura e implementacin.
constructor (constructor)
Es un pseudo-mtodo que crea un objeto. En el lenguaje de programacin Java, los
constructores son mtodos de instancia con el mismo nombre que su clase. Los
constructores se invocan utilizando la palabra reservada new.
continue (continuar)
Es una palabra clave de Java utilizados para reanudar la ejecucin del programa al
final del bucle de corriente.

D
declaration (declaracin)
Una lnea de cdigo que establece un identificador y los atributos asociados con l, sin
que necesariamente se reserve memoria (para datos).
default (predeterminado)

Instituto Tecnolgico de Morelia.

Pgina 213

ITM
Palabra reservada de Java utilizado opcionalmente, despus de todos los casos o
condiciones. Si las condiciones no son correspondidas por el valor de la variable, las
sentencias de la opcin por default se llevarn a cabo.
Depurador
Programa que permite depurar o limpiar los errores de otro programa informtico.
do
Palabra clave de Java utilizada para declarar un bucle que va a iterar un bloque de
declaraciones. La condicin de salida del bucle puede especificarse al mismo tiempo.
double
Una palabra clave de Java utilizado para definir una variable de tipo doble.

E
else
Palabra clave de Java utilizada para ejecutar un bloque de estados en el caso de que la
condicin de prueba con la palabra clave if evala a falso.
exception (excepcin)
Un evento durante la ejecucin del programa que evita que el programa contine
normalmente, en general, un error. El lenguaje de programacin Java admite
excepciones con las palabras try, catch, y throw.
exception handler (manejador de excepciones)
Bloque de cdigo que reacciona a un tipo especfico de excepcin. Si la excepcin es
para un error del cual el programa se puede recuperar, el programa se puede reanudar
despus de la ejecucin manejador de excepciones se ha ejecutado.
extends (se extiende o hereda)
La clase X extiende a la clase Y para aadir funcionalidad, ya sea mediante la adicin
de campos o mtodos para la clase Y, por una o mtodos de la clase Y. esta palabra
reservada se utiliza en la herencia de clases.

Instituto Tecnolgico de Morelia.

Pgina 214

ITM

F
final
Palabra clave de Java que se utiliza para declarar valores constantes en una
aplicacin.
float
Palabra reservada de Java utilizada para definir una variable en punto flotante.
for
Palabra clave de Java utilizada para declarar un bucle que reitera las declaraciones. El
programador puede especificar los estados para ser ejecutado, las condiciones de
salida, y variables para la inicializacin del bucle.

G
garbage collection (recoleccin de basura)
Deteccin automtica y liberacin de memoria que ya no est en uso. El sistema
ejecuta esta accin debido a que los programadores no siempre liberan la memoria que
solicitan al sistema.
goto
Se trata de una palabra reservada. Sin embargo, no es utilizado por las versiones
actuales del lenguaje de programacin Java.
GUI
(Graphical User Interface.) Interfaz grfica de usuario. Se refiere a las tcnicas
involucradas en el uso de grficos, junto con un teclado y un ratn, para proporcionar
una manera fcil de utilizar algn programa.

H
Instituto Tecnolgico de Morelia.

Pgina 215

ITM
hexadecimal
El sistema de numeracin que utiliza 16 como su base.

I
Identificador
Nombre de un elemento en un programa escrito en el lenguaje de programacin Java.
if
Palabra clave de Java utilizada para llevar a cabo una prueba condicional y ejecutar un
bloque de estados si la prueba se evala a verdadero.
import
Palabra reservada de Java utilizada en el comienzo de un archivo fuente que puede
especificar las clases o los paquetes que se desean importar o utilizar posteriormente.

inheritance (herencia)
Concepto de clases en el que de forma automtica que contienen las variables y los
mtodos definidos en sus superclases.
instancia
Un objeto de una clase particular. En los programas escritos en el lenguaje de
programacin Java, una instancia de una clase se crea usando el operador new
seguido por el nombre de clase.
int
Palabra reservada de Java utilizada para definir una variable de tipo entera.
intrprete
Mdulo que, alternativamente, decodifica y ejecuta todas las instrucciones en un
programa. El intrprete de Java decodifica y ejecuta bytecode de la mquina virtual.
Iteracin
Se refiere a la accin de repetir una serie de pasos un cierto nmero de veces.

Instituto Tecnolgico de Morelia.

Pgina 216

ITM

J
Java
Lenguaje de programacin orientado a objetos desarrollado por Sun Microsystems a
principios de los aos 90.
Java Database Connectivity (JDBC) Conectividad de bases de datos Java
Un estndar de la industria de base de datos independiente de la conexin entre la
plataforma Java y una amplia gama de bases de datos.
Java Development Kit (JDK)
Un entorno de desarrollo de software que sirve para escribir applets y aplicaciones en
el lenguaje de programacin Java.
Java Foundation Classes (JFC)
Organismo encargado de crear bibliotecas adicionales al lenguaje Java como el Toolkit
AWT.
Java virtual machine (Mquina virtual Java)
Software "motor de ejecucin" que en condiciones de seguridad y compatibilidad
ejecuta el cdigo byte en los archivos de clase Java en un microprocesador (ya sea en
una computadora o en otro dispositivo electrnico).
JavaBeans
Modelo de componente reusable e independiente de plataforma.

L
Librera
Es un conjunto de subprogramas utilizados para desarrollar software. Las libreras
contienen cdigo y datos, que proporcionan servicios a programas independientes, es

Instituto Tecnolgico de Morelia.

Pgina 217

ITM
decir, pasan a formar parte de stos. Esto permite que el cdigo y los datos se
compartan y puedan modificarse de forma modular.

M
Memoria de datos
Memoria de lectura/escritura (RAM), cuyo objetivo es permitir el almacenamiento
temporal de datos o programas de aplicacin. Por sus caractersticas de
lectura/escritura, la informacin que reside en ella se puede alterar fcilmente. Esta se
pierde cuando se apaga la fuente de alimentacin.

N
NetBeans
Plataforma para el desarrollo de aplicaciones de escritorio usando Java y a un entorno
de desarrollo integrado (IDE) desarrollado usando la Plataforma NetBeans.
new
Una palabra clave de Java utilizado para crear una instancia de una clase.
null
El tipo nulo tiene un valor, la referencia nula, representada por el literal null, el cual est
formado de caracteres ASCII. Una literal es nula siempre del tipo null.

O
objeto
Instancia de clase. Elemento principal de un lenguaje orientado a objetos.
octal
Instituto Tecnolgico de Morelia.

Pgina 218

ITM
El sistema de numeracin que utiliza 8 como su base, utilizando los nmeros 0-7 como
sus dgitos

P
Parmetro
Es una variable que es recibida por una funcin, procedimiento o subrutina.
Primitivo, tipo
Tipos de datos originales de un lenguaje de programacin, esto es, aquellos que nos
proporciona el lenguaje y con los que podemos (en ocasiones) construir tipos de datos
abstractos y estructuras de datos.
private
Palabra reservada de Java que indica si una variable puede ser accedida o utilizada
nicamente por elementos de la misma clase.
propiedad
Caractersticas de un objeto que los usuarios pueden fijar, como el color de una
ventana.
protected (protegidas)
Palabra reservada de Java. Significa que el mtodo o variable slo puede ser visitada
por los elementos que residen en sus clases, subclases, clases o en el mismo paquete.
public pblico
Palabra reservada de Java. Significa que el mtodo o variable puede ser visitada por
los elementos que residen en otras clases.

R
return

Instituto Tecnolgico de Morelia.

Pgina 219

ITM
Palabra clave de Java utilizada para terminar la ejecucin de un mtodo. Se utilize
normalmente para regresar un valor en un mtodo.

S
short
Una palabra clave de Java utilizado para definir una variable de tipo short.
SQL
Structured Query Language. Lenguaje estructurado de consultas en bases de datos.
stream corriente
Es un flujo de datos en bytes que se envan desde un emisor a un receptor.
super
Una palabra clave de Java utilizado para acceder a miembros de una clase heredada
de la clase en la que aparece.
Swing
Coleccin de componentes de interfaz grfica de usuario (GUI) que se ejecuta de
manera uniforme a cualquier plataforma nativa que utilice la mquina virtual Java

T
Template
O plantilla es una forma de dispositivo que proporciona una separacin entre la forma o
estructura y el contenido. Es un medio o un instrumento que permite guiar, portar o
construir un diseo o esquema predefinido.
this

Instituto Tecnolgico de Morelia.

Pgina 220

ITM
Una palabra clave de Java que pueden utilizarse para representar una instancia de la
clase en la que aparece. Esto puede ser usado para acceder a las variables de clase y
mtodos.
throw
Una palabra clave de Java que permite al usuario lanzar una excepcin.
Token
O componente lxico, es una cadena de caracteres que tiene un significado coherente
en cierto lenguaje de programacin.
try
Palabra clave que define un bloque de estados que pueden lanzar una excepcin
lenguaje Java.

V
Variable
Elemento de datos nombrado con un identificador.

Instituto Tecnolgico de Morelia.

Pgina 221

También podría gustarte