Programacion Java
Programacion Java
i
PROGRAMACION EN JAVA
Historia del lenguaje Java
El resultado fue un lenguaje que tenía similitudes con C, C++ y Objetive C y que
no estaba ligado a un tipo de CPU concreta.
Mas tarde, se cambiaría el nombre de Oak a Java, por cuestiones de propiedad
intelectual, al existir ya un lenguaje con el nombre de Oak. Se supone que le
pusieron ese nombre mientras tomaban café (Java es nombre de un tipo de café,
originario de Asia), aunque otros afirman que el nombre deriva de las siglas de
James Gosling, Arthur Van Hoff, y Andy Bechtolsheim.
Después de mostrar a Scott McNealy y Bill Joy los prototipos de bajo nivel del
sistema, continúan con el desarrollo, incluyendo sistema operativo, Green OS; el
lenguaje Oak, las librerías, alguna aplicación básica y el hardware, hasta que el 3
de septiembre de 1992 se termina el desarrollo y con ello el Proyecto Verde.
3
La incipiente subsidiaria fracasó en sus intentos de ganar una oferta con Time-
Warner, sin embargo el equipo concluyó que el mercado para consumidores
electrónicos smart y las cajas Set-Up en particular, no eran del todo eficaces. La
subsidiaria Proyecto verde fue amortizada por la compañía Sun a mediados de
1994.
Con el paso del tiempo HotJava se convirtió en un concepto práctico dentro del
lenguaje Java y demostró que podría proporcionar multiplataformas para que el
código pueda ser bajado y corrido del Host del World Wide Web y que de otra
forma no son seguros.
Una de las características de HotJava fue su soporte para los "applets", que son
las partes de Java que pueden ser cargadas mediante una red de trabajo para
después ejecutarlo localmente y así lograr soluciones dinámicas en computación
acordes al rápido crecimiento del ambiente WEB.
4
Muy pronto las licencias o permisos contemplaban prestigiosas firmas como: IBM,
Microsoft, Symantec, Silicon Graphics, Oracle, Toshiba y Novell.
Los apples Java (basados en JDK 1.02) son apoyados por los dos más populares
navegadores web (Nestcape Navigator 3.0 y Microsoft Internet Explorer 3.0.
I.B.M./Lotus, Computer Asociates, Symantec, Informix, Oracle, Sybase y otras
poderosas empresas de software están construyendo Software 100% puro JAVA,
por ejemplo el Corel Office que actualmente está en versión Beta.
Programación Java
Esta programación Java tiene muchas similitudes con el lenguaje C y C++, así
que si se tiene conocimiento de este lenguaje, el aprendizaje de la programación
Java será de fácil comprensión por un programador que haya realizado
programas en estos lenguajes.
5
La programación en Java, permite el desarrollo de aplicaciones bajo el esquema
de Cliente Servidor, como de aplicaciones distribuidas, lo que lo hace capaz de
conectar dos o más computadoras u ordenadores, ejecutando tareas
simultáneamente, y de esta forma logra distribuir el trabajo a realizar.
Comentarios
/* comentarios de una o
más líneas
*/
Los dos primeros tipos de comentarios son los que todo programador conoce y se
utilizan del mismo modo. Los comentarios de documentación, colocados
inmediatamente antes de una declaración (de variable o función), indican que ese
comentario ha de ser colocado en la documentación que se genera
automáticamente cuando se utiliza la herramienta de Java, javadoc. Dichos
comentarios sirven como descripción del elemento declarado permitiendo generar
una documentación de nuestras clases escrita al mismo tiempo que se genera el
código.
Identificadores
Los identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el
programador necesite identificar o usar.
identificador
nombre_usuario
Nombre_Usuario
_variable_del_sistema
$transaccion
6
y su uso sería, por ejemplo:
int contador_principal;
char _lista_de_ficheros;
float $cantidad_en_Ptas;
Palabras clave
Las siguientes son las palabras clave que están definidas en Java y que no se
pueden utilizar como identificadores:
Palabras Reservadas
Además, el lenguaje se reserva unas cuantas palabras más, pero que hasta ahora
no tienen un cometido específico. Son:
Literales
Enteros:
7
float 32 bits IEEE 754
double 64 bits IEEE 754
Por ejemplo: 3.14 2e12 3.1E12
Booleanos:
true
false
Caracteres:
Cadenas:
Arrays
Se pueden declarar en Java arrays de cualquier tipo:
char s[];
int iArray[];
Para crear un array en Java hay dos métodos básicos. Crear un array vacío:
String nombres[] = {
"Juan","Pepe","Pedro","Maria"
};
String nombres[];
8
nombres = new String[4];
nombres[0] = new String( "Juan" );
nombres[1] = new String( "Pepe" );
nombres[2] = new String( "Pedro" );
nombres[3] = new String( "Maria" );
Tampoco se puede rellenar un array sin declarar el tamaño con el operador new:
int lista[];
for( int i=0; i < 9; i++ )
lista[i] = i;
Es decir, todos los arrays en Java son estáticos. Para convertir un array en el
equivalente a un array dinámico en C/C++, se usa la clase vector, que permite
operaciones de inserción, borrado, etc. en el array.
Operadores
Los operadores de Java son muy parecidos en estilo y funcionamiento a los de C. En la
siguiente tabla aparecen los operadores que se utilizan en Java, por orden de
precedencia:
. [] ()
++ --
! ~ instanceof
* / %
+ -
<< >> >>>
< > <= >= == !=
& ^ |
&& ||
? :
= op= (*= /= %= += -= etc.) ,
9
El operador = siempre hace copias de objetos, marcando los antiguos para
borrarlos, y ya se encargará el garbage collector de devolver al sistema la
memoria ocupada por el objeto eliminado.
Separadores
Sólo hay un par de secuencias con otros caracteres que pueden aparecer en el código
Java; son los separadores simples, que van a definir la forma y función del código. Los
separadores admitidos en Java son:
Clases y objetos
10
Una clase es por tanto una plantilla implementada en software que describe un
conjunto de objetos con atributos y comportamiento similares.
Atributos
Los atributos son las características individuales que diferencian un objeto de otro
y determinan su apariencia, estado u otras cualidades. Los atributos se guardan
en variables denominadas de instancia, y cada objeto particular puede tener
valores distintos para estas variables.
Además de las variables de instancia hay variables de clase, las cuales se aplican
a la clase y a todas sus instancias. Por ejemplo, el número de ruedas de un
automóvil es el mismo cuatro, para todos los automóviles.
Comportamiento
Del mismo modo que hay variables de instancia y de clase, también hay métodos
de instancia y de clase. En el primer caso, un objeto llama a un método para
realizar una determinada tarea, en el segundo, el método se llama desde la propia
clase.
El proyecto
11
tanto, la última casilla del asistente de creación de clases New Java File debe de
estar activada.
La clase
class Rectangulo{
//miembros dato
//funciones miembro
}
class Rectangulo{
int x;
12
int y;
int ancho;
int alto;
//faltan las funciones miembro
}
Cuando se llama a la función, los argumentos arg1, arg2, arg3 se copian en los
parámetros parm1, parm2, parm3 y se ejecutan las sentencias dentro de la
función. La función finaliza cuando se llega al final de su bloque de definición o
cuando encuentra una sentencia return.
Cuando una función no devuelve nada se dice de tipo void. Para llamar a la
función, se escribe
Estudiaremos más adelante con más detalle cómo se definen las funciones.
Una función suele finalizar cuando llega al final del bloque de su definición
void funcion(....){
//sentencias...
}
13
Una función puede finalizar antes del llegar al final de su definición
void funcion(....){
//sentencias...
if(condicion) return;
//sentencias..
}
Una función puede devolver un valor (un tipo de dato primitivo o un objeto).
double funcion(....){
double suma=0.0;
//sentencias...
return suma;
}
class Rectangulo{
int x;
int y;
int ancho;
int alto;
int calcularArea(){
14
return (ancho*alto);
}
}
class Rectangulo{
int x;
int y;
int ancho;
int alto;
void desplazar(int dx, int dy){
x+=dx;
y+=dy;
}
}
Como se tienen que cumplir las cuatro condiciones a la vez, se unen mediante el
operador lógico AND simbolizado por &&.
class Rectangulo{
int x;
int y;
int ancho;
int alto;
boolean estaDentro(int x1, int y1){
if((x1>x)&&(x1<x+ancho)&&(y1>y)&&(y1<y+ancho)){
return true;
}
return false;
}
}
15
Los constructores
class Rectangulo{
int x;
int y;
int ancho;
int alto;
Rectangulo(int x1, int y1, int w, int h){
x=x1;
y=y1;
ancho=w;
alto=h;
}
}
El constructor recibe cuatro números que guardan los parámetros x1, y1, w y h, y
con ellos inicializa los miembros dato x, y, ancho y alto.
class Rectangulo{
int x;
int y;
int ancho;
int alto;
Rectangulo(int w, int h){
x=0;
y=0;
ancho=w;
alto=h;
}
}
class Rectangulo{
int x;
int y;
int ancho;
int alto;
Rectangulo(){
x=0;
y=0;
ancho=0;
16
alto=0;
}
}
Los objetos
Por ejemplo,
17
new reserva espacio en memoria para los miembros dato y devuelve una
referencia que se guarda en la variable rect1 del tipo Rectangulo que
denominamos ahora objeto. Dicha sentencia, crea un objeto denominado rect1 de
la clase Rectangulo llamando al segundo constructor en el listado. El rectángulo
estará situado en el punto de coordenadas x=10, y=20; tendrá una anchura de
ancho=40 y una altura de alto=80.
objeto.miembro;
Por ejemplo, podemos acceder al miembro dato ancho, para cambiar la anchura
de un objeto rectángulo.
rect1.ancho=100;
El rectángulo rect1 que tenía inicialmente una anchura de 40, mediante esta
sentencia se la cambiamos a 100.
Desde un objeto llamamos a las funciones miembro para realizar una determinada
tarea. Por ejemplo, desde el rectángulo rect1 llamamos a la función calcularArea
para calcular el área de dicho rectángulo.
rect1.calcularArea();
int medidaArea=rect1.calcularArea();
System.out.println("El área del rectángulo es "+medidaArea);
rect2.desplazar(10, 20);
18
Podemos verificar mediante el siguiente código si el punto (20, 30) está en el
interior del rectángulo rect1.
if(rect1.estaDentro(20,30)){
System.out.println("El punto está dentro del rectángulo");
}else{
System.out.println("El punto está fuera del rectángulo");
}
rect1.dentro() devuelve true si el punto (20, 30) que se le pasa a dicha función
miembro está en el interior del rectángulo rect1, ejecutándose la primera
sentencia, en caso contrario se ejecuta la segunda.
rect2.desplazar(10, 20);
if(rect1.estaDentro(20,30)){
System.out.println("El punto está dentro del rectángulo");
}else{
System.out.println("El punto está fuera del rectángulo");
}
}
}
La vida de un objeto
En el lenguaje C++, los objetos que se crean con new se han de eliminar con
delete. new reserva espacio en memoria para el objeto y delete libera dicha
memoria. En el lenguaje Java no es necesario liberar la memoria reservada, el
recolector de basura (garbage collector) se encarga de hacerlo por nosotros,
liberando al programador de una de las tareas que más quebraderos de cabeza le
producen, olvidarse de liberar la memoria reservada.
Veamos un ejemplo
19
}
}
}
Creamos dos objetos de la clase rectángulo, del mismo modo que en el apartado
anterior
Si escribimos
rect3=rect1;
Puede haber situaciones en las que es necesario realizar ciertas operaciones que
no puede realizar el recolector de basura (garbage collector) cuando se destruye
un objeto. Por ejemplo, se han abierto varios archivos durante la vida de un
objeto, y se desea que los archivos estén cerrados cuando dicho objeto
desaparece. Se puede definir en la clase un método denominado finalize que
realice esta tarea. Este método es llamado por el recolector de basura
inmediatamente antes de que el objeto sea destruido.
20
Identificadores
Cómo se escriben los nombres de las variables, de las clases, de las funciones,
etc., es un asunto muy importante de cara a la comprensión y el mantenimiento
de código. En la introducción a los fundamentos del lenguaje Java hemos tratado
ya de los identificadores.
El código debe de ser tanto más fácil de leer y de entender como sea posible.
Alguien que lea el código, incluso después de cierto tiempo, debe ser capaz de
entender lo que hace a primera vista, aunque los detalles internos, es decir, cómo
lo hace, precise un estudio detallado.
Vemos primero un ejemplo que muestra un código poco legible y por tanto, muy
difícil de mantener
Cuen(int ba){
this.ba=ba;
}
public void dep(int i){
ba+=i;
}
public boolean ret(int i){
if(ba>=i){
ba-=i;
return true;
}
return false;
}
public int get(){
return ba;
}
}
21
balance-=cantidad;
return true;
}
return false;
}
public int obtenerBalance(){
return balance;
}
}
Este es una programa sencillo de una cuenta bancaria. El tipo de dato puede ser
entero (int o long), si la unidad monetaria tiene poco valor como la peseta, o un
número decimal (double) si la unidad monetaria es de gran valor como el Euro y
el Dólar.
BIBLIOGRAFIA
http://sunsite.dcc.uchile.cl/java/docs/JavaTut/Cap1/progra.html
http://www.lenguajes-de-programacion.com/programacion-java.shtml
http://www.cad.com.mx/historia_del_lenguaje_java.htm
http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clases1/clases.htm
22