Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Email: maghtin@yahoo.com.mx
WebSite: http://mx.geoities.com/maghtin/
Debido a la existencia de distintos tipos de CPUs y a los continuos cambios, era importante
conseguir una herramienta independiente del tipo de CPU utilizada. Desarrollaron un código
“neutro” que no dependía del tipo de electrodoméstico, el cual se ejecutaba sobre una
“máquina hipotética o virtual” denominada Java Virtual Machine (JVM). Era la JVM quien
interpretaba el código neutro convirtiéndolo a código particular de la CPU utilizada. Esto
permitía lo que luego se ha convertido en el principal lema del lenguaje: “Write Once, Run
Everywhere”. A pesar de los esfuerzos realizados por sus creadores, ninguna empresa de
electrodomésticos se interesó por el nuevo lenguaje.
La compañía Sun describe el lenguaje Java como “simple, orientado a objetos, distribuido,
interpretado, robusto, seguro, de arquitectura neutra, portable, de altas prestaciones,
multitarea y dinámico”.
INTRODUCCIÓN A JAVA
Los programas desarrollados en Java presentan diversas ventajas frente a los desarrollados
en otros lenguajes como C/C++. La ejecución de programas en Java tiene muchas
posibilidades: ejecución como aplicación independiente (Stand-alone Application),
ejecución como applet, ejecución como servlet, etc. Un applet es una aplicación especial
que se ejecuta dentro de un navegador o browser (por ejemplo Netscape Navigator o Internet
Explorer) al cargar una página HTML desde un servidor Web. El applet se descarga desde el
servidor y no requiere instalación en el ordenador donde se encuentra el browser. Un servlet
es una aplicación sin interface gráfica que se ejecuta en un servidor de Internet. La ejecución
como aplicación independiente es análoga a los programas desarrollados con otros
lenguajes.
By: m @ gh 1
Una forma general de indicar estas dos variables es crear un archivo por lotes de MS-DOS
(*.bat) donde se indiquen dichos valores. Cada vez que se ejecute MS-DOS será necesario
ejecutar este archivo *.bat para su asignación adecuada. Un archivo sería jdk115.bat: ?
set JAVAPATH=C:\ jdk1.1.5
set PATH=.;%JAVAPATH%\bin;%PATH%
set CLASSPATH=.\ ;%JAVAPATH%\lib\classes.zip;%CLASSPATH%
lo cual sería válido en el caso de que el JDK estuviera situado en el directorio C:\jdk1.1.5
By: m @ gh 2
Encapsulación, las clases pueden ser declaradas como públicas (public) y como package
(accesibles sólo para otras clases del package). Las variables miembro y los métodos
pueden ser public, private, protected. De esta forma se puede controlar el acceso y evitar un
uso inadecuado.
Herencia, una clase puede derivar de otra (extends), y en ese caso hereda todas sus
variables y métodos. Una clase derivada puede añadir nuevas variables y métodos y/o
redefinir las variables y métodos heredados. Ejemplo:
class No mbre_Clase_Derivada extend No mbre_Clase_Base
Clase: Figuras
class Triangulo extend Figuras
Polimorfismo, los objetos de distintas clases pertenecientes a una misma jerarquía o que
implementen una misma interface pueden tratarse de una forma general e individualizada, al
mismo tiempo. Ejemplo:
class Circulo extend Figuras // Se aplica la herencia
{ …
public void copiar(Figuras f) { … }; // Se aplica el polimorfismo
}
class Triangulo extend Figuras // Se aplica la herencia
{ …
public void copiar(Figuras f) { … }; // Se aplica el polimorfismo
}
By: m @ gh 3
Una variable es un nombre que contiene un valor que puede cambiar a lo largo del
programa. Desde el punto de vista del papel o misión en el programa, las variables son:
1. Variables miembro de una clase: Se definen en una clase, fuera de cualquier método;
pueden ser tipos primitivos (char, byte, short, int, long, float, double, boolean) o
referencias (arrays u objetos de una determinada clase).
Nombres de Variables
Los nombres de variables en Java se pueden crear con mucha libertad. Pueden ser
cualquier conjunto de caracteres numéricos y alfanuméricos, sin algunos caracteres
especiales utilizados por Java como operadores o separadores ( ,.+-*/ etc.).
Existe una serie de palabras reservadas las cuales tienen un significado especial para Java
y por lo tanto no se pueden utilizar como nombres de variables. Dichas palabras son:
Java dispone de ocho tipos primitivos de variables: un tipo para almacenar valores true y
false (boolean); un tipo para almacenar caracteres (char), y 6 tipos para guardar valores
numéricos, cuatro tipos para enteros (byte, short, int y long) y dos para valores reales de
punto flotante (float y double). Los rangos y la memoria que ocupa cada uno de estos tipos
se muestran a continuación:
Un tipo particular de referencias son los arrays o vectores, sean éstos de variables primitivas
(por ejemplo, un vector de enteros) o de objetos. En la declaración de una referencia de tipo
array hay que incluir los corchetes []. En los siguientes ejemplos aparece cómo crear un
vector de 10 números enteros y cómo crear un vector de elementos MyClass. Java garantiza
que los elementos del vector son inicializados a null o a cero (según el tipo de dato) en caso
de no indicar otro valor.
By: m @ gh 5
Variables de Clase, los miembros de una clase son métodos o variables, las variables de
clase se declaran en una clase, fuera de los métodos; al menos son visibles desde cualquier
método de la clase y se referencian simplemente con su nombre. Y se caracteriza por: se le
asigna memoria cuando se crea el objeto de la clase y permanece hasta que el objeto es
liberado o termina la ejecución del programa.
? Ejemplo:
class Numeros
{
int num1, num2; // Declaración de variables Miembro de la Clase
double promedio()
{
double x; // Declaración de variable Local
num1 = 21; // Esta variable es visible por ser Miembro de la Clase
}
double sumas()
{
float x; // Declaración de variable Local. Note que es igual a la del otro método.
num2 = 22; // Esta variable es visible por ser Miembro de la Clase
}
}
By: m @ gh 6
Operadores aritméticos
Son operadores binarios (requieren siempre dos operandos) que realizan las operaciones
aritméticas habituales: suma (+), resta (-), multiplicación (*), división (/) y resto de la
división (%).
Operadores de asignación
Los operadores de asignación permiten asignar un valor a una variable. El operador de
asignación por excelencia es el operador igual (=). La forma general de las sentencias de
asignación con este operador es:
Operador Utilización Expresión equivalente
+= 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
Operador instanceof
El operador instanceof permite saber si un objeto pertenece o no a una determinada clase.
Es un operador binario cuya forma general es, objectName instanceof ClassName y que
devuelve true o false según el objeto pertenezca o no a la clase.
Operadores incrementales
Java dispone del operador incremento (++) y decremento (--). El operador (++) incrementa
en una unidad la variable a la que se aplica, mientras que (--) la reduce en una unidad. Estos
operadores se pueden utilizar de dos formas:
Operadores relacionales
Los operadores relacionales sirven para realizar comparaciones de igualdad, desigualdad y
relación de menor o mayor.
El resultado de estos operadores es siempre un valor boolean (true o false) según se
cumpla o no la relación considerada. La Tabla muestra los operadores relacionales de Java.
Operador Utilización El resultado es true
> op1 > op2 si op1 es mayor que op2
>= op1 >= op2 si op1 es mayor o igual que op2
< op1 < op2 si op1 es menor que op2
<= op1 <= op2 si op1 es menor o igual que op2
== op1 == op2 si op1 y op2 son iguales
!= op1 != op2 si op1 y op2 son diferentes
Operadores lógicos
Los operadores lógicos se utilizan para construir expresiones lógicas, combinando valores
lógicos (true y/o false) o los resultados de los operadores relacionales. La Tabla 2.4
muestra los operadores lógicos de Java. Debe notarse que en ciertos casos el segundo
By: m @ gh 7
Precedencia de operadores
El orden en que se realizan las operaciones es fundamental para determinar el resultado de
una expresión. Por ejemplo, el resultado de x/y*z depende de qué operación (la división o el
producto) se realice primero. La siguiente lista muestra el orden en que se ejecutan los
distintos operadores en un sentencia, de mayor a menor precedencia:
postfix operators [] . (params) expr++ expr--
unary operators ++expr --expr +expr -expr ~ !
creation or cast new (type)exp.
multiplicative */%
Additive +-
Shift << >> >>>
Relational < > <= >= instanceof
Equality == !=
Bitwise AND &
Bitwise exclusive OR ^
Bitwise inclusive OR |
Logical AND &&
Logical OR ||
Condicional ?:
Assignment = += -= *= /= %= &= ^= |= <<= >>= >>>=
En Java, todos los operadores binarios, excepto los operadores de asignación, se evalúan
de izquierda a derecha. Los operadores de asignación se evalúan de derecha a izquierda,
lo que significa que el valor de la derecha se copia sobre la variable de la izquierda.
By: m @ gh 8
Salida (System.out)
El objeto out definido en la clase System esta asociado con el flujo de salida, que dirige los
datos a consola y permite visualizarlos en la pantalla de su equipo:
Syste m.out es una referencia a un objeto de clase PrintStream, tiene métodos que se
utilizarán con mucha frecuencia:
print( ) transfiere una cadena de caracteres al buffer de pantalla.
println( ) transfiere una cadena de caracteres y el carácter de fin de línea al buffer de la
pantalla.
? Ejemplo:
Syste m.out.print(“Este es un mensaje en java”);
Syste m.out.println(“Este es un mensaje en java y el cursor lo envía a la siguiente línea”);
No resulta practico el capturar carácter a carácter, es preferible hacerlo línea a línea. Para
ello se utiliza la clase InputStreamReader, de la que se crea un objeto inicializado con
Syste m.in
Bu ffer edReader var iable = new Bu fferedReader( new Input StreamReader(S yst em. in) ;
? Eje mplo:
String nombrex;
BufferedReader entr = ne w BufferedRea der(new InputStrea mReader(Syste m.in);
Syste m.out.print(“Nombre:”);
nombrex = ent r.readline();
Syste m.out.println(“El Nombre Tecleado es: ” + nombrex);
By: m @ gh 9
Paquete *Clase/Metodo+
io +print Transfiere una cadena de caracteres al buffer de pantalla.
util +print
io *BufferedReader Permite inicializar los métodos para lectura de datos.
util *Scanner
io +readLine Se utiliza para la entrada de datos desde el teclado, devuelve
util +nextLine un objeto cadena con los caracteres leídos hasta encontrar la
marca de fin de línea.
io +parseInt Tiene como argumento una cadena y devuelve el valor entero
correspondiente a la conversión de dígitos de la cadena.
util +nextInt Se utiliza para la entrada de datos desde el teclado, devuelve
un objeto numérico entero.
io +parseFloat Tiene como argumento una cadena y devuelve el valor numérico
decimal correspondiente a la conversión de dígitos de la cadena.
Util +nextFloat Se utiliza para la entrada de datos desde el teclado, devuelve
un objeto numérico decimal.
By: m @ gh 11
// Método que permite la lectura de datos tipo cadena a través del objeto entrada.
nombre=entrada.readLine(); //El valor pulsado por teclado se almacenará en la variable nombre
System.out.println("Año de Nacimiento"); //Muestra en pantalla el mensaje Año de nacimiento
// Método que permite la lectura de datos tipo cadena a través del objeto entrada.
// Cabe destacar que a través de la clase io, solamente se pueden leer datos tipo cadena.
auxiliar=entrada.readLine();
// Permite hacer la conversión del dato tipo texto a dato tipo numérico entero.
nacio=Integer.parseInt(auxiliar);
// Realiza el calculo de la edad de la persona, almacenando el valor en la variable edad
edad = 2006 - nacio;
// Realiza el calculo del total de segundos de vida, almacenando el valor en la variable segundos
segs = edad * 525600;
By: m @ gh 12
By: m @ gh 13
Las instrucciones o sentencias se organizan en tres tipos de estructuras de control que sirven
para controlar el flujo de la ejecución: secuencia, selección (decisión) y repetición. Hasta este
momento solo se han utilizado el flujo secuencial. Una sentencia compuesta es un conjunto
de sentencias encerradas entre llaves que se utiliza para especificar un flujo secuencial.
SENTENCIA DE CONTROL if
En Java, la estructura de control de selección principal es la sentencia if. La sentencia if tiene
dos alternativas o formatos posibles. El formato más sencillo tiene la siguiente sintaxis:
if (condición) sentencia;
donde: la condición es una expresión logica y la sentencia representa la acción ejecutable, si
la condición toma un valor verdadero.
import java.util.*;
public class MayoriaEdad
{
public static void main(String arg[])
{
int edad;
if (edad >=18)
Syste m.out.print("Eres mayor de e dad, ya puedes votar");
else
Syste m.out.print("Eres menor de e dad");
}
}
By: m @ gh 14
/*
*/
import java.util.*;
public class Nu mMayor
{
public static void main(String arg[])
{
float num1, nu m2 , nu m3, nu mmayor;
else
System.out.print("Los Nu meros Son Iguales");
}
}
By: m @ gh 15
switch(selector)
{
case etiqueta 1 : sentencias 1 ;
break;
case etiqueta 2 : sentencias 2 ;
break;
..
..
case etiqueta n :sentencias n ;
break;
default: sentencias n ; // Opcional
break;
donde, la expresión de control o selector se evalúa y se compara con cada una de las
etiquetas del case. La expresión selector debe ser de tipo int, char o bolean, pero no double,
string o flota. Cada etiqueta es un valor único, constante y cada etiqueta debe tener un valor
diferente de los otros. Si el valor de la expresión selector es igual a una de las etiquetas case
por ejemplo: case1, entonces la ejecución comenzará con la primera sentencia1 y continuará
hasta que encuentre una sentencia break (o hasta encontrar el fin de la sentencia de control
switch).
Si el valor del selector no esta listado en ninguna etiqueta case, no se ejecutará ninguna de
las opciones, a menos que especifique una acción por defecto (omisión). La omisión de una
etiqueta default puede crear un error lógico difícil de prever. Aunque la etiqueta default es
opcional, se recomienda su uso, a menos que este absolutamente seguro de que todos los
valores de selector están incluidos en las etiquetas case.
Una sentencia break consta de la palabra reservada break seguida por punto y coma.
Cuando la computadora ejecuta las sentencias siguientes a una etiqueta case, continua
hasta que se alcanza una sentencia break. Si la computadora encuentra una sentencia
break, termina la sentencia switch. Si se omiten las sentencias break, después de ejecutar el
código de case, la computadora ejecutará el código que sigue al siguiente case.
By: m @ gh 16
import java.util.*;
public class MenuNu m
{
public static void main(String arg[])
{
int opc;
switch(opc)
{
case 1:Syste m.out.println("Valor pulsado 1, corresponde al Lunes");
break;
By: m @ gh 17
import java.io.*;
public class DiasTxt
{
public static void main(String arg[])
{
char opc;
switch(opc)
{
By: m @ gh 18
Ejemplo:
contador=0; // Inicialización
while(contador<4) // Prueba/condición
{
Syste m.out.println(“*”);
contador++; // Actualización (incremento)
}
La variable que representa la condición del bucle se denomina variable de control del bucle
debido a que determina si el cuerpo del bucle se repite. La variable de control del bucle debe
ser: inicializada, comprobada y actualizada para que el cuerpo del bucle se ejecute
adecuadamente. Cada etapa se resume así:
Inicialización, al contador se establece con un valor inicial, antes de que alcance el maximo
valor.
Prueba/condición, se comprueba el valor del contador antes de que comience la repetición
de cada bucle (denominada iteración o pasada).
Actualización, el contador se actualiza (su valor se incrementa en 1, mediante el operador
++) durante cada iteración.
By: m @ gh 19
? Ejemplo 12, aplicación que permite capturar una serie de números y finaliza la captura
hasta que el usuario teclee el numero 0. Debe utilizar el bucle while, calcular el total de
números capturados y la media de los números. Debe mostrar en pantalla el total y la media
de los números.
import java.util.*;
public class Su maNu ms
{
public static void main(String[] args)
{
int num, su ma, media, cuenta;
Scanner lee = new Scanner(Syste m.i n);
nu m=1; cuenta=0; su ma=0; media=0;
Syste m.out.println("Captura Numero s, hasta que teclee 0");
while(num! =0)
{
Syste m.out.print("Nu mero:");
nu m=lee.ne xtInt();
cuenta++;
su ma=su ma +nu m;
}
media=su ma/(cuenta-1);
Syste m.out.println("Total de Números Capturados: "+(cuenta-1));
Syste m.out.println("La Media es: "+media);
}
}
By: m @ gh 20
/*
*/
import java.util.*;
public class Nu msParI mpar
{
public static void main(String[] args)
{
int num, au x, cuenta, cant;
int cantpar, cantimpar;
Scanner lee = new Scanner(Syste m.i n);
cuenta=0; au x=0;
cantpar=canti mpar=0;
Syste m.out.print("Cantidad de Núme ros a Capturar? ");
cant=lee.nextInt();
while(cuenta<cant)
{
Syste m.out.print("Nu mero:");
nu m=lee.ne xtInt();
cuenta++;
aux=nu m%2;
if(aux==0)
cantpar++;
else
canti mpar++;
}
Syste m.out.println("Total de Numeros Pares: "+cantpar);
Syste m.out.println("Total de Numeros I mpares: "+canti mpar);
}
}
By: m @ gh 21
? Ejemplo 14, consiste en mostrar en pantalla los números pares, comenzando con el 30 y
terminando en 1, utilizando el bucle for.
import java.io.*;
public class Nu msPares
{
public static void main(String arg[])
{
int num;
Syste m.out.println("Lista los Numero s Pares del 30-1");
nu m=1;
for(nu m=30;nu m>1;nu m-=2)
{
Syste m.out.println(num);
}
}
}
By: m @ gh 22
/*
*/
import java.util.*;
public class Nu mMa x
{
public static void main(String[] args)
{
int num, ma x, cuenta;
Scanner in = new Scanner(Syste m.in);
Syste m.out.println("Captura 5 Numer os. Ma xi mo Valor de la Lista");
ma x=0;
for(cuenta=1;cuenta<=5;cuenta ++)
{
Syste m.out.print("Nu mero:");
nu m=in.ne xtInt();
if(num>ma x)
ma x=nu m;
}
Syste m.out.println("El Valor Máxi mo de la Lista es:"+ma x);
}
}
By: m @ gh 23
import java.util.*;
public class CicloCompra Mcdo
{
public static void main(String []arg)
{
String pdto, obtenido, error;
float cant, precio, importe, subtotal, t otal, desc;
Scanner in = new Scanner(Syste m.in);
Syste m.out.println("Captura 5 Productos.");
importe=0.0f; subtotal=0.0f; total=0.0f; desc=0.0f;
for(int cuenta=1;cuenta<=5;cuenta++)
{
Syste m.out.print("Producto: ");
pdto=in.nextLine();
Syste m.out.print("Cantidad: ");
cant=in.nextFloat();
Syste m.out.print("Precio:$ ");
precio=in.nextFloat();
importe=cant*precio;
subtotal+=importe;
error=in.nextLine();
}
if(subtotal>5000)
{
desc=subtotal-(subtotal*.10f);
obtenido="10%";
}
else if((subtotal>2500) && (subtotal<=5000))
{
desc=subtotal-(subtotal*.05f);
obtenido="5%";
}
else
{
desc=subtotal;
obtenido="0%";
}
total=desc+(desc*.15f);
S yst em.o ut .print ln( "Tot al de la co mpra: $"+t ot al+"con un descuent o del:"+obt enid o );
}
}
By: m @ gh 24
? Ejemplo 17, aplicación que permite capturar texto hasta que el usuario pulse *. Se
mostrará en pantalla todos los caracteres pulsados por el usuario.
import java.io.*;
public class CicloTexto
{
public static void main(String []arg) throws IO Exception
{
char letra;
S yst em.o ut .print ln( "Teclee el Text o Deseado. Para t erminar pulse * y E nt er") ;
do
{
letra = (char) Syste m.in.read();
}while(letra! ='*');
}
}
By: m @ gh 25
import java.util.*;
public class CicloMenu
{
public static void main(String []arg)
{
int opcion;
float num1, nu m2, result;
Scanner lee = new Scanner(Syste m.i n);
do
{
Syste m.out.println("Menu:");
Syste m.out.println("1. Suma");
Syste m.out.println("2. Resta");
Syste m.out.println("3. Suma");
Syste m.out.println("4. Resta");
Syste m.out.println("5. Salir");
Syste m.out.print("Elije Opcion:");
opcion=lee.nextInt();
if(opcion==1)
{
Syste m.out.println("Elijio Su ma ");
Syste m.out.print("Nu mero ");
nu m1=lee.ne xtFloat();
Syste m.out.print("Nu mero ");
nu m2=lee.ne xtFloat();
result=nu m1+nu m2;
Syste m.out.println("El resultado de: "+nu m1+" + "+nu m2+" = "+result);
}
if(opcion==2)
{
Syste m.out.println("Elijio Resta ");
Syste m.out.print("Nu mero ");
nu m1=lee.ne xtFloat();
Syste m.out.print("Nu mero ");
nu m2=lee.ne xtFloat();
result=nu m1-nu m2;
Syste m.out.println("El resultado de: "+nu m1+" - " +nu m2 +" = "+result);
}
}while(opcion! =5 || opcion! =5);
}
}
By: m @ gh 26
Un array puede contener, por ejemplo: la edad de los alumnos, las temperaturas de cada dia
del mes de una ciudad, el total de personas de las ciudades del estado de Michoacán, etc.
La declaración de un array es similar a otros tipos de datos, excepto que se debe indicar al
compilador que es un array y esto se hace con los corchetes. Se pueden colocar de 2 formas
tipo_dato [] identificador;
tipo_dato identificador[];
El primer formato indica que todos los identificadores son arrays del tipo de dato. El segundo
formato es array solo el identificador al que le siguen los corchetes.
Ejemplos:
char cad[], t xt; // cad es un array tipo char, txt es una variable de tipo char.
int [] nums, su ma s; // tanto nums como sumas son declarados arrays de tipo int.
int [] edad = new int [4]; // edad contiene 5 elementos de tipo int
float [] ma x, min = ne w float [4]; // tanto max como min contienen 5 elementos de tipo float
Se deben asignar valores a los elementos de un array antes de utilizarlos, tal como se
asignan valores a variables. Para asignar valores a cada elemento del array, como ejemplo:
nu ms[0]=7; cad[ ]={' m', '@', 'g', 'h'}
nu ms[1]=6;
Cuando se inicializa un array, el tamaño del array se puede determinar automáticamente por
las constantes de inicialización. Estas constantes se separan por comas y se encierran entre
llaves, como los siguientes ejemplos:
int valores [ ]= {1,2,3,4,5} // define un array de 5 elementos de tipo int y se inicializa
char txt[] = {' m', 'g'} // define un array de 2 elementos de tipo char y se inicializa
? Ejemplo 19, aplicación que por medio de un arreglo muestra una lista de colores.
import java.util.*;
public class ArrayColors
{
public static void main(String []arg)
{
int cta;
String colores [ ]= {"Azul", "Amarillo", "Verde", "Blanco", "Rojo"};
Syste m.out.println("Lista los Colores");
for(cta=0;cta<=4;cta++)
{ Syste m.out.println("Color en la Posicion: "+cta+" "+colores[cta]);
}
}
}
By: m @ gh 27
/*
*/
import java.util.*;
public class Editor
{
public static void main(String []arg)
{
String [ ]palabra= new String[100];
Scanner in = ne w Scanner(Sy ste m.in);
Syste m.out.println("Aplicacion que Captura Palabras");
Syste m.out.println(" Hasta Que Teclee salir");
for(int i=0;i<100;i++)
{
palabra[i]=in.nextLine();
if(palabra[i].equals("salir"))
break;
}
Syste m.out.println("\nEste su texto:\ n");
for(int cta=0;cta<100;cta++)
{
if(palabra[cta].equals("salir"))
break;
Syste m.out.println(palabra[cta]);
}
}
}
By: m @ gh 28
/*
*/
import java.util.*;
public class OrdenaNombres
{
public static void main(String []arg)
{
String no mbres[ ]={" Martin","Ana","Elsa","Alejandro","Diana", "Luis"};
Syste m.out.println("Aplicacion que Ordena los Nombres de la Lista.");
for(int j=0; j<no mbres.length; j++)
{
for(int i=j+1;i<no mbres.length;i++)
{
if(no mbres[i].co mpareTo(no mbr es[j])<0)
{
String au x= no mbres[ j];
no mbres[ j]= no mbres[i];
no mbres[i]= aux;
}
}
}
By: m @ gh 29
import java.util.*;
public class OrdenaNums
{
public static void main(String []arg)
{
int total;
int num[ ]= ne w int[10];
Scanner in = ne w Scanner(Syste m.in);
do
{
Syste m.out.println("Cantidad de Nu meros a Capturar? ");
total=in.nextInt();
} while(total>10);
By: m @ gh 30
Todos los applets son subclases de la clase applet, Cualquier applet debe importar los
paquetes java.applet y java.awt. Los applets son ejecutados por un navegador de internet o
bien por un visor de applets (appleetviewer), incluido en JDK. La ejecución de un applet no
comienza con el main(). Sino que es gestionada por varios métodos del AWT. Una vez que
se ha compilado un applet, se incluye en un archivo HTML utilizando la etiqueta applet.
ESTRUCTURA DE UN APPLET
Casi todos los applets sobrescriben una serie de métodos que proporcionan el mecanismo
básico mediante el que el navegador o el visor de applets conecta con el applet y control su
ejecución. Cuatro de estos metodos son: init(), start(), stop(), destroy() los define el
applet. El paint() lo define la clase Component. Como se muestra en esta estructura:
import java.applet.Applet;
import java.a wt.*;
public class HolaJava extends Applet
{
public void paint(Graphics g) // Inicia lizamos el mét odo Grafico
{
g.drawString("Mi 1er Applet",20,50); //Envia mo s un mensaje a la vent ana
// en las coordenadas: Co l, Reng
}
}
import java.applet.Applet;
import java.awt.*;
En nuestro applets deberemos, incluir como mínimo estas dos sentencias de importación. En
la primera importamos la clase Applet, de la cual derivaremos nuestros applets. La segunda
permite importar las clases de la librería AWT, que nos permitirán dibujar en el rectángulo
asignado al applet.
codebase:
es un atributo opcional que especifica el URL del código del applet, que es el directorio
donde se buscará el archivo de clase ejecutable del applet.
code:
es un atributo necesario y proporciona el nombre del archivo que contiene el archivo
compilado .class del applet.
alt:
es un atributo opcional que especifica el mensaje que se debe visualizar en caso de que el
navegador entienda la etiqueta applet pero no pueda ejecutar applets Java. Este es diferente
al texto alternativo de HTML.
width y height:
son atributos necesarios que dan el tamaño del area de visualización de un applet (en
píxeles).
align:
es un atributo opcional que especifica la alineación del applet. Puede tomar los siguientes
valores: left, right, top, bottom, middle, baseline, texttop, absmiddle, absbottom.
Si desea incluir su applet en una página web. La página que desarrollaremos es la siguiente.
Puedes utilizar un editor de páginas web o cualquier editor de texto, para nuestro ejemplo
usaremos el Bloc de notas, haciendo clic en Inicio / Programas / Accesorios / Bloc de notas:
<HTML>
<BODY>
<APPL ET CODE="HolaJava.class" W IDTH="200" HEIGHT="70">
</APPL ET>
</BODY>
</HTML >
Cuando termines de teclear estas líneas de código, clic en Archivo / Guardar como. Del
cuadro de dialogo: en el cuadro Tipo: Todos lo archivos. Y en el cuadro Nombre: Hola.ht ml
Ahora ingresa al Explorador de Windows o MiPC, busca el archivo: Hola.html has doble clic
sobre este, se abre navegador con el contenido de esta pagina, para nuestro ejemplo, solo
se visualizará el mensaje: Mi 1er Applet
By: m @ gh 33
Métodos de dibujo
Mientras no se especifique, consideraremos que todos los parámetros son enteros:
drawRect(x,y,a nc ho,alto)
fillRect(x,y,a ncho,alto)
clearRect(x,y,a nc ho.alto)
Son tres métodos encargados de dibujar, rellenar y limpiar, respectivamente, un
rectángulo cuya esquina superior izquierda está en las coordenadas (x,y) y tienen el
ancho y alto especificados.
drawRoundRect(x,y,a nc ho,alto,anchoArco,altoArco)
fillRoundRect(x, y,a ncho,alto,anc ho Arco,altoArco)
Equivalentes a los anteriores, pero con las esquinas redondeadas. La forma y tamaño
de dichas esquinas viene dada por los dos últimos parámetros.
import java.applet.Applet;
import java.a wt.*;
public class Figuras extends Applet
{
public void paint(Graphics g)
{
int i=1;
int gc=10,bc=150,rc=250;
for(i=1;i<=10;i++)
{
g.setColor(Color.yellow); //Est ablece co lor
g.drawLine(10, 10, 250, 10+i*10); //Dibuja líneas
i=1;
g.setColor(Color.white); //Est ablece co lor blanco
g.fillRect(0, 0, 800, 600); //Dibuja un rect ángulo de co lor blanco
while(i<=10)
{
g.setColor(Color.blue); // Est ablece co lor azul
g.fillRect(10+i*10, 10+i*10, 50+i*10, 50+i*10); // Dibuja cuadros rellenado s
La clase Color dispone de varias propiedades estáticas que contienen los colores comunes:
Color Constante Valor RGB Color Constante Valor RGB
Naranja Orange 255,200,0 Gris gray 128,128,128
Rosa Pink 255,175,175 Gris claro light_gray 192,192,192
Cyan Cyan 0,255,255 Gris obs. dark_gray 64,64,64
Magenta magenta 255,0,255 Rojo red 255,0,0
Amarillo Yellow 255,255,0 Verde green 0,255,0
Negro Black 0,0,0 Azul blue 0,0,255
Blanco White 255,255,255
? Ejemplo 25, diseñamos un applet que dibuje en la ventana: Círculos. Y pueda crear
instancias de color por medio de constructores para definir colores menos comunes.
import java.applet.Applet;
import java.a wt.*;
public class GrafCirculos extends Applet
{
public void paint(Graphics g)
{
int i=1;
int rc=255,gc=50,bc=10;
By: m @ gh 36
El usuario puede escribir cualquier cosa en el espacio del cuadro de dialogo de entrada. Para
ello va a utilizar el método showInputDialog de la clase JOptionPane del paquete:
javax.swing.
Sintaxis:
variable_tipo_texto=JOptionPane.showInputDialog("texto a mostrar");
Eje mplos:
int numero;
nu mero=JOptionPane.sho wInputDialog("Introduce Nu mero:");
String nombre;
no mbre=JOptionPane.sho wInputDialog("Introduce No mbre:");
Sintaxis:
JOptionPane.showMessage Dialog(null, "texto a mostrar”,”titulo”,icono);
Eje mplos:
String nombre =”Martin Alejandro Guerr a Hernandez”;
JOpt io nP ane. showMessageDialog( nu ll, "Autor:"+no mbre, "Manual de Java2 ",
JOpt io nP ane.INFORMATION_MESSAGE);
int fecha=2007;
JOpt io nP ane. showMessageDialog( nu ll, "Año:"+fecha, "Curso de Java Básico ",
JOpt io nP ane.INFORMATION_MESSAGE);
// Cuadro de Dialogo: con el t ext o y valo r del Pro medio, t it ulo, icono de Infor mació n
JOptionPane.sho wMessageDialog(null, "Promedio de Edad: "+pro m,
"Edad Pro medio",JOptionPane.INFORMATION MESSAGE);
} // Fin de Init
By: m @ gh 38
Vemos que necesitamos un objeto Image y otro ImageObserver y de esas cosas no sabemos
todavía... No vamos a ver estos objetos muy a fondo. ImageObserver es un interfaz (que un
antepasado de Applet implementa) que nos ofrece información sobre la imagen según la
imagen se carga de la red. Por otro lado, Image es un objeto que representa a la imagen.
Normalmente crearemos un objeto Image por medio del método de Applet getImage():
Image img = getImage(URL base, String archivo)
Asigna la imagen contenida en la URL donde se encuentre el archivo que contiene la imagen
que queremos presentar y el nombre de ese archivo.
Normalmente obtendremos esa dirección a partir de la página donde esté la página HTML o
nuestro applet. Para averiguarlo disponemos de dos métodos en la clase Applet:
URL getDocumentBase()
Devuelve la URL donde está la página HTML (excluyendo el nombre del fichero).
URL getCodeBase()
Devuelve la URL donde está el applet (excluyendo el nombre del archivo). Si deseamos
obtener una URL distinta deberemos importar esa clase (java.net.URL) y crear uno
pasándole una cadena como parámetro al constructor conteniendo la URL.
//Visualiza la imagen dentro del applet, en la posición especificada, referenciando al objeto actual.
g.drawI mage(i mg,100,100,this);
}
}
By: m @ gh 39
AWT soporta los siguientes tipos de controles: Label (etiquetas), Button (botones), Checkbox
(casillas de verificación), List (lista desplegable) Scrollbar (barras de desplazamiento) y las
siguientes subclases: TextField (cajas de texto) y TextArea (área de texto).
Algunas veces, cuando ya no necesita utilizar más el control, puede eliminarlo de la ventana.
Para hacerlo, debe utilizar remove() que esta definido en la clase Container. Su sintaxis:
void remove(Co mponent ob j)
La primera crea una etiqueta que contiene la cadena especificada. La segunda crea una
etiqueta que contiene la cadena especificada, alineando el texto en la posición indicada
(LEFT, RIGHT, CENTER)
By: m @ gh 43
import java.applet.Applet;
import java.a wt.*;
import java.a wt.event. *;
By: m @ gh 44
import java.applet.*;
import java.a wt.*;
import java.a wt.event. *;
By: m @ gh 45
import java.applet.*;
import java.a wt.*;
import java.a wt.event. *;
public class VerificaEdad extends Applet
imple ments ActionListener
{
private TextField edadCampo;
private int edad;
public void init()
{
edadCa mpo=ne w Te xtField(10);
add(edadCa mpo);
edadCa mpo.addActionListener(this);
}
public void actionPerformed(ActionEvent event)
{
edad=Integer.parseInt(edadCa mpo.get Text());
repaint();
}
public void paint (Graphics g)
{
g.drawString("Tu edad es " + edad, 50, 50);
if (edad >30)
g.drawString("Eres un Adulto", 50,100);
else if (edad >20)
g.drawString("Eres un Joven", 50,100);
else if (edad >10)
g.drawString("Eres un Jovencito", 50, 100);
else
g.drawString("Eres un Niño", 50,100);
}
}
By: m @ gh 46
REFERENCIAS WEBGRAFICAS:
http://www.lawebdelprogramador.com/cursos/
http://www.progra ma cion.co m/ java/tuto riales/J2SE/
http://www.elguruprogra mador.com. ar/
http://www.desarrolloweb.co m/ manuales/57/
SOFTWARE UTILIZADO:
http://ja va.sun.co m/ j2se/1.5.0/do wnloa d.jsp
http://www.jgrasp.org
By: m @ gh 47