Professional Documents
Culture Documents
Abril de 2012
confidencialidad
Aviso: Este documento es material confidencial y propiedad de everis. Se prohbe
el uso, reproduccin o la divulgacin del contenido de este material sin permiso
previo y por escrito de la empresa propietaria.
Derechos de Autor
2010, everis. All rights reserved
ndice
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos I
5. Excepciones
6. Utilidades Java I
ndice
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos I
5. Excepciones
6. Utilidades Java I
introduccin a Java
breve historia
Nace en 1991, como controlador de electrodomsticos
desarrollado por Sun Microsystems.
Se llama inicialmente Oak, por iniciativa de su autor,
James Gosling.
El nombre Java proviene de la variante de caf que
tomaban los desarrolladores de Oak.
Est basado en lenguajes anteriores como C, C++ y
SmallTalk.
Su sintaxis es muy parecida a la de C++
El lema inicial de Java:
introduccin a Java
breve historia
En 1995, aprovechando el auge de Internet, se catapulta hacia el estrellato con los
applets.
Se lanza el primer kit de desarrollo JDK1.0
Netscape garantiza la compatibilidad de Java con sus navegadores.
En 1998 se mejora y ampla a la versin 1.2, llamada Java2.
En aos sucesivos el lenguaje crece y se ampla
En 2001 se lanza J2EE (Java 2 Enterprise Edition),
orientado a aplicaciones empresariales.
En 2010 Oracle compra Sun Microsystems y absorbe el negocio
Java.
La versin actual de java es la 1.7.
8
introduccin a Java
caractersticas de Java
Simple
El cdigo es auto contenido y no son necesarios ficheros de cabecera o
IDLs
Se han eliminado elementos poco tiles de C++ como macros, herencia
mltiple, operadores de acceso diferentes del punto (.) , etc.
Slo posee 53 palabras reservadas.
Robusto
introduccin a Java
caractersticas de Java
Multiplataforma y portable
Java es interpretado. Genera archivos bytecode que se ejecutan bajo una
mquina virtual. El mismo cdigo sirve para varios entornos.
Actualmente existen intrpretes de Java bajo Windows, Linux, MacOS y
Solaris.
El tamao de los tipos bsicos es fijo e independiente del
compilador y mquina.
mens),
E/S
(gestin
de
ficheros),
10
introduccin a Java
caractersticas de Java
Gestin automtica de la memoria
No es necesario destruir objetos ya que un mecanismo dentro de la mquina
virtual llamado recolector de basura se encarga de ello de forma automtica.
Seguridad de tipos
Java tiene mecanismos de seguridad para garantizar de forma correcta los
accesos a los tipos de datos para evitar accesos a memoria no
correspondiente.
introduccin a Java
caractersticas de Java
Orientado a objetos
Se basa en los tres pilares del paradigma de orientacin a objetos:
encapsulacin, herencia y polimorfismo.
Multitarea
Java dispone de hilos, que permiten
la ejecucin de dos fragmentos de
cdigo
de
forma
concurrente
compartiendo recursos.
Ligero
Las aplicaciones ocupan muy poco espacio de disco.
El intrprete y las bibliotecas bsicas ocupan unos 200 KB.
12
introduccin a Java
mquina virtual (JVM)
Java es un lenguaje compilado e interpretado.
Un compilador genera ficheros objeto llamado bytecode.
La mquina virtual de Java (Java Virtual Machine o JVM) es el entorno de
ejecucin que interpreta (ejecuta) los bytecode generados por el compilador.
La existencia de una JVM para cada sistema operativo es la caracterstica
que hace de Java un lenguaje multiplataforma.
Tanto el compilador como la JVM son comandos nativos de cada SO:
13
introduccin a Java
tipos de aplicaciones
Aplicaciones Java Pesadas
Aplicaciones convencionales de escritorio
Son autnomas
Applets
Aplicaciones Java que un navegador web descarga de un servidor
Se ejecutan en la mquina cliente con restricciones
Aplicaciones JEE
Programas gestionados por un servidor de aplicaciones y por un servidor web
conjuntamente
Se ejecutan en la mquina servidor
Aplicaciones JME
Aplicaciones para dispositivos mviles y PDA
Se ejecutan en entorno reducido con pocos recursos
14
introduccin a Java
siglas java
JEE
JME
JSE
JDK
JRE
Java Runtime
Environment
JVM
15
introduccin a Java
primera aplicacin en Java
Una aplicacin en Java es un conjunto de uno o ms ficheros de cdigo fuente
con las instrucciones necesarias para que funcione como se desee.
Como primer contacto con un lenguaje nuevo, nada mejor que el programa Hola,
Mundo!, cuyo objetivo es mostrar por pantalla el mensaje Hola, Mundo!
16
introduccin a Java
primera aplicacin en Java
Usar un editor de textos (por ejemplo, Bloc de notas) para escribir el cdigo y
guardarlo como texto plano en un fichero llamado HelloWorld.java.
Para compilarlo basta con abrir una ventana de consola (MS-DOS en Windows),
colocarse en su directorio y escribir:
> javac HelloWorld.java
17
ndice
1. Introduccin a Java
2. Sintaxis bsica
a. Identificadores, palabras reservadas y literales
b. Tipos simples y conversiones
c. Operadores
d. Estructuras de control de flujo
e. Convenciones de notacin
3. Arrays
4. Orientacin a objetos I
5. Excepciones
6. Utilidades Java I
18
sintaxis bsica
identificadores
Un identificador es un nombre mediante el cual identificamos un elemento del
cdigo (clase, variable, mtodo, etc.)
Es una secuencia de caracteres Unicode, nmeros, smbolos de moneda y
caracteres de unin como el guin bajo
Reglas de uso:
sintaxis bsica
identificadores
Ejemplos de identificadores vlidos:
_a
$b
_______2_a
_E
2c
identificador_muy_largo_permitido_en_Java_SE_6
Ejemplos de identificadores no vlidos:
:a
b#
-a
7g
20
sintaxis bsica
palabras reservadas
La versin Java SE 6 dispone de 50 palabras reservadas:
Nota: aunque no son palabras reservadas, los literales true, false y null no los
podemos usar como identificadores vlidos
21
sintaxis bsica
literales
Tipo
Descripcin
Ejemplos
Decimal
56, +5, -6
Hexadecimal
0x3F29A9
Decimal
Decimales
Carcter
e,\n, 5
Caracteres
Unicode
\u00F6
Booleanos
Cadenas de
caracteres
Nulos
null
Enteros
Octal
Cientfico
0567, -0436
2.4, -4.0, .9
6.02e28
true, false
22
ndice
1. Introduccin a Java
2. Sintaxis bsica
a. Identificadores, palabras reservadas y literales
b. Tipos simples y conversiones
c. Operadores
d. Estructuras de control de flujo
e. Convenciones de notacin
3. Arrays
4. Orientacin a objetos I
5. Excepciones
6. Utilidades Java I
23
sintaxis bsica
tipos simples o primitivos
Nmeros enteros:
byte, short, int, long
Caracteres
char
Booleanos (lgicos)
boolean
sintaxis bsica
tipos simples o primitivos
Rango de valores de los tipos primitivos:
Tipo
Tamao en bytes
Rango
byte
1 (8 bits)
-126 a +127
short
2 (16 bits)
-32.768 a +32.767
int
4 (32 bits)
-2.147.483.648 a + 2.147.483.647
long
8 (64 bits)
- 9.223.372.036.854.775.808 a
+9.223.372.036.854.775.807
float
4 (32 bits)
3,40282347e+38
double
8 (64 bits)
1,7976e+308
char
2 (16 bits)
boolean
1 (8 bits)
25
sintaxis bsica
tipos simples o primitivos
Ejemplos vlidos:
byte numero = 125;
char caracter = a;
double numero = 5;
Ejemplos no vlidos:
byte numero = 128;
boolean resultado = 1;
sintaxis bsica
conversiones de tipos
Una conversin o casting es el proceso de transformar un valor de un tipo de
datos en otro tipo. Existen dos variantes de conversin:
Conversin implcita. El casting se realiza de forma automtica. Se da al
convertir un tipo de datos en uno ms amplio
byte short int long float double
char int long float double
Conversin explcita. El programador debe indicar explcitamente el tipo de
sintaxis bsica
conversiones de tipos
28
sintaxis bsica
conversiones de tipos
byte b = 1;
int i = 3;
float f = 5.0f;
short s = 2;
long l = 4L;
double d = 6.0;
f = 7.0;
i = i + i;
b = i;
d = 4.0f;
i = (short)d;
b = (byte)i;
f = 56;
s = b + b;
l = s;
f = (float)8.4;
s = (short)(s + b);
l = (long)s;
i = 56L;
f = d;
b = b + s;
i = (int)4L;
b = (byte) d;
b = (byte)(b + s);
i = i + d;
i = a;
d = i + f;
i = (double)i+d;
b = (byte)b + s;
29
sintaxis bsica
variables
Una variable se puede ver como un almacn de objetos de un determinado tipo al
30
sintaxis bsica
variables
En funcin de donde se localice una variable y su modificador de acceso, puede
Caracteres
\0
Lgicos
false
Decimales
0.0
Strings
null
Objetos
null
31
sintaxis bsica
variables
Variable local. Se definen dentro de un mtodo o dentro un bloque de cdigo.
Se destruyen al finalizar el mtodo o bloque al que pertenecen. Las variables
locales deben inicializarse antes de ser usadas.
Parmetro. Actan como variables locales dentro del mtodo que las define. En
Java los parmetros se reciben siempre por valor, es decir, el mtodo recibe un
copia del valor de la variable transferida como argumento en la llamada al
mtodo.
sintaxis bsica
constantes
Una constante es una variable cuyo valor nunca vara y en consecuencia el
sintaxis bsica
constantes
Para definir constantes de clase usaremos los modificadores de no acceso
static y final y normalmente declararemos la constante con el modificador de
acceso public
public static final double PI = 3.141596;
Para definir constantes en una interfaz podemos usar cualquiera de las siguientes
expresiones:
public
public
public
public
double
double PI = 3.141596;
final double PI = 3.141596;
static double PI = 3.141696;
static final double PI = 3.141596;
PI = 3.141596;
ndice
1. Introduccin a Java
2. Sintaxis bsica
a. Identificadores, palabras reservadas y literales
b. Tipos simples y conversiones
c. Operadores
d. Estructuras de control de flujo
e. Convenciones de notacin
3. Arrays
4. Orientacin a objetos I
5. Excepciones
6. Utilidades Java I
35
sintaxis bsica
operadores
Un operador es un smbolo formado por uno o ms caracteres que permite realizar
una determinada operacin entre uno o ms datos y produce un resultado.
Operadores aritmticos
Operadores relacionales
Igualdad (==), desigualdad (!=), mayor que (>), menor que (<), mayor o igual
que (>=) y menor o igual que (<=).
Operadores lgicos
Unarios: not (!)
Binarios: and (&&) y or (||). Son perezosos (no evalan la condicin cuando
se deduce el resultado de un operando)
Binarios: and (&) y or (|). Siempre se evalan todas las expresiones
36
sintaxis bsica
operadores
Operadores con cadenas
Se usa (+) para concatenar (unir) cadenas. Se pueden concatenar cadenas
con caracteres. Ejemplos:
"Hola" + " Mundo" y "Hola Mund" + o devuelven "Hola Mundo"
123 + 5 + " Hola mundo" devuelve "128 Hola Mundo"
sintaxis bsica
operadores
Operadores de manipulacin de bits
And (&), or (|), not (~), xor (^), desplazamiento hacia la izquierda N
posiciones con signo (<<nmero) e dem hacia la derecha (>>nmero)
(>>>nmero desplaza a la derecha sin signo).
Operadores de asignacin
El operador bsico es (=) que, a parte de asignar, devuelve el valor
asignado. La asignacin es asociativa por la derecha.
Operadores compuestos: realizan una operacin y asignan el resultado.
Existen para la suma (+=), resta (-=), producto (*=), divisin (/=), mdulo
(%=), las operaciones bit a bit de and (&=), or (|=), xor (^=) y los
desplazamientos de bits (<<=, >>= y >>>=)
38
sintaxis bsica
operadores
Operadores de asignacin (cont.)
a = 56;
//asign. bsica
b = 78 + a;//asign. bsica
c += 23;
//asign. compuesta. Equivale a c
i++;
//Incremento. Equivale a i = i +
d = i++;
//Asigna e incrementa. Si i vale
d = ++i;
//Incrementa y asigna. Si i vale
= c + 23
1
3 al inicio, d vale 3.
3 al inicio, d vale 4
39
sintaxis bsica
operadores
int a = 0, b = 10;
a = ++b; // a = ?, b = ?
a = b++; // a = ?, b = ?
a = ++a; // a = ?, b = ?
40
sintaxis bsica
operadores
Operador condicional
sintaxis bsica
operadores
Operador instanceof
Es un operador de comparacin
ndice
1. Introduccin a Java
2. Sintaxis bsica
a. Identificadores, palabras reservadas y literales
b. Tipos simples y conversiones
c. Operadores
d. Estructuras de control de flujo
e. Convenciones de notacin
3. Arrays
4. Orientacin a objetos I
5. Excepciones
6. Utilidades Java I
43
sintaxis bsica
instrucciones de control de flujo
Sentencia condicional if
if(<condicin1>){
<instrucciones>
} else if(<condicin2>) {
<instrucciones>
}
Ejemplos:
else if(<condicinN>){
<instrucciones>
} else {
<instrucciones>
}
sintaxis bsica
instrucciones de control de flujo
Sentencia condicional switch case
La expresin switch debe evaluar a char, byte, short, int o
enum.Las constantes case deben evaluar al mismo tipo que la expresin
switch y adems deben ser literales o constantes en tiempo de
compilacin (es decir, variables definidas con final e inicializadas en la
misma lnea).
No pueden haber dos case iguales en el mismo bloque switch.
45
sintaxis bsica
instrucciones de control de flujo
switch(<expresin>){
case <constante1>:
<instrucciones>
break;
case <constante2>:
<instrucciones>
break;
//N valores
case <constanteN>:
<instrucciones>
break;
default:
<instrucciones>
}
46
sintaxis bsica
instrucciones de control de flujo
Ejemplo usando constantes:
int estado = getEstado();
final int TRISTE = 0;
final int FELIZ = 1;
final int SERIO = 2;
switch(estado){
case TRISTE:
System.out.println("triste");break;
case FELIZ:
System.out.println("feliz");break;
case SERIO:
System.out.println("serio");break;
default:
System.out.println("No estoy");
}
47
sintaxis bsica
instrucciones de control de flujo
Ejemplo usando enums:
enum ESTADOS {TRISTE, FELIZ, SERIO};
ESTADOS estado = getEstado();
switch(estado){
case TRISTE:
System.out.println("triste");break;
case FELIZ:
System.out.println("feliz");break;
case SERIO:
System.out.println("serio");break;
default:
System.out.println("No estoy");
}
48
sintaxis bsica
instrucciones de control de flujo
Ejemplo usando variables:
int
int
int
int
estado = getEstado();
triste = 0;
feliz= 1;
serio = 2;
switch(estado){
case triste: // No compila
System.out.println("triste");break;
case feliz: // No compila
System.out.println("feliz");break;
case serio: // No compila
System.out.println("serio");break;
default:
System.out.println("No estoy");
}
49
sintaxis bsica
instrucciones de control de flujo
Ejemplo agrupando varias expresiones case:
int numero = getNumero();
switch(numero){
case 2:
case 4:
case 6:
case 8:
case 10:
System.out.println("Numero par");
break;
default:
System.out.println("Nmero impar");
}
50
sintaxis bsica
instrucciones de control de flujo
Sentencias iterativas while y do while
La expresin de condicin debe evaluar un resultado booleano. El cuerpo
del bucle while slo se ejecuta si la condicin evala a true. El cuerpo
de un bucle dowhile se ejecuta como mnimo una vez.
while(<condicin>){
<instrucciones>
}
do{
<instrucciones>
while(<condicin>);
Ejemplo:
int a = 10;
Ejemplo:
char c = \0;
do{
c = (char)System.in.read();
}while(c != q);
51
sintaxis bsica
instrucciones de control de flujo
Sentencias iterativas while y do while
Ejemplo (while):
int a = 4, b = 5;
Cul es la salida
de ambos bucles?
sintaxis bsica
instrucciones de control de flujo
Sentencia iterativa for bsica
Consta de tres partes (opcionales) separadas por punto y coma:
Declaracin e inicializacin de variables (una o ms de una y del mismo
tipo)
Expresin booleana (condicin)
Expresin de iteracin
for(<declaracin>;
<condicin>;<instruccin>){
<instrucciones>
}
Para forzar la salida de un bucle podemos usar break o
return dentro del cuerpo del bucle
53
sintaxis bsica
instrucciones de control de flujo
sintaxis bsica
instrucciones de control de flujo
Sentencia iterativa for enriquecida
Se utiliza para iterar sobre todos los elementos de un array o coleccin. Consta de
dos partes separadas por el smbolo de dos puntos (:)
Declaracin, tiene que ser de un tipo compatible con los elementos del
array o coleccin. La variable estar disponible en el cuerpo del bucle y su
valor representar al elemento actual del array o coleccin.
Expresin, debe ser el array o coleccin a iterar. Puede ser una variable o
una expresin que devuelva un array o una coleccin.
for(<tipo> <variable> :
<array o coleccin>){
<instrucciones>
}
Ejemplo:
int[] numeros = {4,7,9,1,5,0};
for(int numero : numeros){
System.out.println(numero);
}
55
sintaxis bsica
instrucciones de control de flujo
56
sintaxis bsica
instrucciones de control de flujo
Ejemplo (break):
Ejemplo (continue):
Salida ?
Salida ?
57
sintaxis bsica
instrucciones de control de flujo
Sentencias etiquetadas Normalmente las usamos cuando iteramos en bucles
anidados y queremos salir o saltar a la siguiente iteracin de alguno de los bucles
anidados usando break y/o continue. Para definir una etiqueta debemos seguir
las siguientes reglas:
El nombre de la etiqueta debe seguir las mismas reglas que los
identificadores
58
sintaxis bsica
instrucciones de control de flujo
Ejemplo (break):
Ejemplo (continue):
exterior: // etiqueta
for(int i=0;i<2;i++){
for(int j=0;j<5;j++){
if(j>2){
break exterior;
}
System.out.println("hola.");
}
}
System.out.println("fin");
exterior: // etiqueta
for(int i=0;i<2;i++){
for(int j=0;j<5;j++){
if(j>2){
continue exterior;
}
System.out.println("hola.");
}
}
System.out.println("fin");
Salida ?
Salida ?
59
ndice
1. Introduccin a Java
2. Sintaxis bsica
a. Identificadores, palabras reservadas y literales
b. Tipos simples y conversiones
c. Operadores
d. Estructuras de control de flujo
e. Convenciones de notacin
3. Arrays
4. Orientacin a objetos I
5. Excepciones
6. Utilidades Java I
60
sintaxis bsica
convenciones SUN
Clases e interfaces: La primera letra debera ser mayscula y en caso de
palabras compuestas la primera letra de cada palabra en mayscula,
normalmente
deberan
ser
nombres
para
clases:
Persona,
Almacen,
Comparable
Mtodos: La primera letra debera ser minscula y normalmente debera usarse la
pareja verbo-nombre: getTotal, calcularSaldo, setNombreCliente
Variables: Como en los mtodos, debera empezar con una letra minscula:
sintaxis bsica
JavaBeans
sintaxis bsica
JavaBeans
Reglas para nombres de propiedad en JavaBeans.
63
sintaxis bsica
JavaBeans
public class Persona {
private int edad;
private String nombre;}
Propiedades JavaBeans vlidas:
public void setEdad(int edad)
public int getEdad()
public void setNombre(String nombre)
public String getNombre()
Propiedades JavaBeans no vlidas:
public void Setnombre(String nombre) //debe ser setNombre
public boolean setEdad(int edad) //debe ser void
ndice
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos I
5. Excepciones
6. Utilidades Java I
65
arrays
concepto y declaracin
Los Arrays son objetos que almacenan mltiples datos del mismo tipo declarado.
Los Arrays pueden almacenar tanto referencias a objetos como tipos primitivos.
Declaracin de Arrays:
<tipoDatos>[] <nombre Array>;
Array que almacena enteros
int[] numeros;
Array que almacena objetos de tipo Alumno
Alumno[] alumnos;
Array de dos dimensiones de enteros
int[][] numeros;
Array tridimensional de enteros
int[][][] numeros;
66
arrays
construccin
Sintaxis para instanciar un nuevo array:
new <tipoDatos>[<expresin>], donde <expresin> se evala a int
En el momento de la construccin debemos definir el tamao del array y no es
posible redimensionar un array una vez ha sido construido.
Todos los elementos toman el valor por defecto del tipo declarado en el array.
Ejemplo 1: declaracin y construccin de un Array de enteros. Los cinco
elementos toman el valor 0, valor por defecto de int
int[] numeros = new int[5];
Ejemplo 2: declaracin y construccin de un Array de Integer. Los cinco
elementos toman el valor null, valor por defecto de una referencia a Integer
Integer[] numeros = new Integer[5];
67
arrays
construccin
Un array multidimensional es un array de arrays. Por ejemplo, un array de dos
dimensiones de tipo int es realmente un objeto de tipo array de int (int[])
donde cada elemento almacena otro array de int. El siguiente cdigo declara y
construye un array de int de dos dimensiones:
int[][] numeros = new int [5][];
Al declarar arrays multidimensionales es necesario especificar el tamao de todas
las dimensiones excepto de la ltima, que es opcional.
arrays
arrays multidimensionales
int[][] A = new int[3][4]
Si se crea un array A, es posible
que uno piense que es una matriz
de 3 filas y 4 columnas
arrays
inicializacin
Inicializar un Array significa aadir elementos dentro de l.
Los elementos pueden contener valores primitivos (2, false, a) o
referencias a objetos del tipo o subtipo declarado en el array (polimorfismo).
Formas de inicializar array:
En lneas separadas
Alumno[] alumnos = new Alumno[2];
alumnos[0] = new Alumno();
70
arrays
acceso a elementos
Se usa [<posicinElemento>] detrs del identificador del Array para acceder
arrays
asignacin de arrays
Podemos asignar variables de tipo array a cualquier referencia de array del mismo
tipo. Por ejemplo si tenemos declarada una variable de tipo Array de int (int[]),
podemos reasignarla a cualquier Array de int de cualquier tamao pero no
Ejemplo no vlido:
char []numeros = {1,2,3,4,5}; // Es correcto
int []copia = numeros; // Tipos incompatibles
72
arrays
asignacin de arrays
subtipo.
Ejemplo vlido:
Coche[] nuevos;
Mercedes[] mercedes = new Mercedes[4];
nuevos = mercedes; //Correcto, Mercedes es subtipo de Coche
Coche[] ocasion = new Coche[4];
nuevos = ocasion; // Correcto, son del mismo tipo
Moto[] nuevas = new Moto[4];
nuevos = nuevas; // Incorrecto, Moto no es subtipo de Coche
73
arrays
ejemplos
int[] miArray = {1,2,3};
int[] miArray = new int[3];
Qu sentencias
son correctas?
arrays
ejemplos
int[] miArray;
Qu sentencias
son correctas?
miArray = {1,2,3};
int[] miArray = new int[];
int[] miArray = new int[]{1,2,3};
int elementos = 4;
int miArray = new int[elementos];
int[] miArray = new int[2];
miArray[2] = 5;
int[][] miArray = {{1},{2,3},{4}};
int elementos = -4;
int miArray = new int[elementos];
ndice
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos I
a. Conceptos y principios bsicos
b. Clases, atributos y mtodos
c. Modificadores
d. Constructores
e. Interfaces
5. Excepciones
6. Utilidades Java I
76
orientacin a objetos I
conceptos. Pilares OO
77
orientacin a objetos
conceptos. Abstraccin
En informtica, la abstraccin es el proceso mediante el cual los
datos y programas se definen con una representacin similar a su
significado (semntica), mientras que esconden los detalles de
implementacin.
La abstraccin trata de reducir y ocultar (pero no eliminar) los
detalles para que el programador puede concentrarse en unos
pocos conceptos a la vez.
Ayuda a modelar el mundo real tomando las cosas que son
realmente importantes. Por ejemplo, qu caractersticas
orientacin a objetos. I
conceptos. Encapsulacin
Se entiende por encapsulacin al mecanismo
79
orientacin a objetos I
conceptos. Herencia
clase
80
orientacin a objetos I
conceptos. Herencia
En Java, para indicar que una clase hereda de otra se debe hacer en la
declaracin de la propia clase aadiendo la palabra extends:
81
orientacin a objetos I
conceptos. Herencia
N Ruedas
N Pasajeros
Marca
Tipo de motor
N puertas
CV
N marchas
Con luz?
Piloto
Escudera
Cilindrada
orientacin a objetos I
conceptos. Herencia
public class Vehiculo{
protected int numRuedas;
protected String marca;
public void arrancar(){
System.out.println("Arrancando vehculo de marca" + marca);
}
}
public class Coche extends Vehiculo {
private String tipoMotor;
orientacin a objetos I
conceptos. Polimorfismo
compilacin.
Se
Es
resuelve
el
en
tiempo
mecanismo
de
de
la
sobrecarga de mtodos.
Dinmico. Se resuelve el tiempo de ejecucin. Es el polimorfismo en s
mismo. Es el mecanismo de la sobrescritura de mtodos
84
orientacin a objetos I
conceptos. Relaciones
Asociacin
Conexin entre dos clases que representa una
relacin semntica
Puede ser en una direccin o ambas
La multiplicidad es el nmero de instancias que
participan en una asociacin
Ejemplos:
Un Coche pertenece a una Persona
Una Persona tiene varios Zapatos
Agregacin
Forma especializada de relacin donde un todo se
relaciona con sus partes
El todo se compone de partes y las partes no tienen
sentido sin el todo
Ejemplos:
Una Escuela tiene varias Aulas
Un Aula es de una (y slo una) Escuela
85
orientacin a objetos
conceptos. Principios SOLID
Single Responsibility
Open-Closed
Liskov substitution
Interface Segregation
Dependency Inyection
86
ndice
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos I
a. Conceptos y principios bsicos
b. Clases, atributos y mtodos
c. Modificadores
d. Constructores
e. Interfaces
5. Excepciones
6. Utilidades Java I
87
orientacin a objetos I
clases. Definiciones
Clase
Plantilla que describe una tipologa de objetos. Define el estado y el
comportamiento de los objetos de ese tipo.
Objeto
Ocurrencia concreta de una clase. Recibe tambin el nombre de instancia
Estado
Conjunto de valores de los atributos (propiedades) que definen nicamente a
un objeto
Comportamiento
Conjunto de operaciones que crean la lgica necesaria para manipular el
estado de un objeto
88
orientacin a objetos I
clases. Sintaxis
class <nombreClase> {
<atributo/mtodo 1>
<atributo/mtodo 2>
<>
<atributo/mtodo N>
}
Ejemplo:
class MiClase {
int a;
double b;
public void f(int i){
a = i;
}
//ms atributos y mtodos
}
89
orientacin a objetos I
clases. Reglas de ficheros
Slo puede haber una clase pblica por fichero
fuente
Los comentarios pueden aparecer en cualquier
lugar del fichero fuente
Si hay una clase pblica en un fichero, el nombre
del fichero debe coincidir con el nombre de la clase
pblica y debe tener la extensin java
Si una clase es parte de un paquete, la sentencia
package debe aparecer en la primera lnea del
orientacin a objetos I
clases. Reglas de ficheros
Si hay sentencias import, deben aparecer entre la sentencia package (si existe)
y la declaracin de la clase
Las sentencias import y package se aplican a todas las clases contenidas en el
fichero fuente
Un fichero fuente puede tener ms de
una clase no pblica
pblicas
no
tienen
porqu
91
orientacin a objetos I
atributos
Un atributo es un dato comn a todos los objetos de una determinada clase. Se
deben definir dentro del cuerpo de la clase y tienen la siguiente sintaxis:
<tipoAtributo> <identificadorAtributo>
<tipoAtributo> es el tipo de datos del atributo. Puede ser un tipo simple o un
92
orientacin a objetos I
atributos
Para acceder a un atributo se utiliza la siguiente sintaxis:
<identificadorObjeto>.<identificadorAtributo>
Por ejemplo, para acceder al atributo edad de un objeto Persona llamado p y
cambiar su valor por 20 sera:
p.edad = 20;
Si estamos trabajando en el contexto de una clase el acceso a sus atributos es
directo, es decir, slo se usa <identificadorAtributo>
orientacin a objetos I
atributos
Caracteres
\0
Decimales
0.0
Strings
null
Lgicos
false
Objetos
null
94
orientacin a objetos I
mtodos
Un mtodo es un conjunto de instrucciones encapsuladas a las que se asocia un
nombre. Se deben definir dentro de la clase y tienen la siguiente sintaxis:
<tipoDevuelto> <identificadorMtodo> ([<parmetros>]) {
<instrucciones>
}
Dentro de un mtodo es posible acceder con total libertad a los atributos de la
clase donde est definido el mtodo.
Los mtodos pueden devolver un objeto, un dato de tipo simple o un array
como resultado de las instrucciones ejecutadas.
El tipo de dato a devolver ha de ser el mismo que el indicado en
<tipoDevuelto>. Si no se ha de devolver nada, se indica void, pero si se
orientacin a objetos I
mtodos
Opcionalmente pueden recibir un listado de objetos, <parmetros>, a los que se
podr acceder durante la ejecucin de las instrucciones. Al declarar un parmetro
se ha de indicar el tipo y un nombre identificador.
Los parmetros se consideran variables locales de un mtodo
Los parmetros pueden ser de tipos simples, clases y arrays
Ejemplo. Bsqueda lineal en un array de int:
boolean buscar (int vector[], int valor){
for(int i=0; i < vector.length; i++){
if(vector[i] == valor){
return true; //Abandona el bucle y el mtodo
} }
return false; //Pueden existir mltiples return por mtodo
}
96
orientacin a objetos I
mtodos. Paso de parmetros
El mecanismo de paso de parmetros en Java es simple:
Los parmetros siempre se pasan por valor
Si el parmetro es un tipo simple o primitivo se pasa la copia del valor. Si
97
orientacin a objetos I
mtodos. Retornos covariantes
Si un mtodo devuelve un tipo primitivo, podemos devolver cualquier valor o
variable que pueda ser implcitamente convertida al tipo de retorno declarado
public int getCaracter(){
return c;
}
Si un mtodo devuelve una referencia, podemos devolver cualquier tipo de objeto
que pueda ser implcitamente convertido al tipo declarado
public Animal getAnimal() {
return new Gato(); // Asumiendo que Gato extends Animal
}
98
orientacin a objetos I
mtodos con nmero indefinido de parmetros
Dentro del mtodo, este parmetro se comporta como un array del tipo
especificado.
99
orientacin a objetos I
mtodos con nmero indefinido de parmetros
100
ndice
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos I
a. Conceptos y principios bsicos
b. Clases, atributos y mtodos
c. Modificadores
d. Constructores
e. Interfaces
5. Excepciones
6. Utilidades Java I
101
orientacin a objetos I
modificadores de acceso
Un modificador es una palabra reservada que se coloca delante de la
declaracin de un elemento al que se desea aadir un comportamiento.
Los modificadores de acceso definen la visibilidad de los atributos, mtodos y
orientacin a objetos I
modificadores de acceso
Si una clase A tiene acceso a otra clase B
significa que podemos hacer tres cosas:
La clase A puede crear instancias de la
clase B
orientacin a objetos I
modificadores de acceso
private
package
protected
public
Misma clase
Subclase de otro
package
Clase de otro
package
Contexto
(slo herencia)
104
orientacin a objetos I
modificadores de acceso
Modificador abstract
En una clase, indica que sta es abstracta, es decir, no se podr instanciar
ningn objeto puesto que se espera que las subclases implementen de forma
especfica un comportamiento.
En un mtodo, indica que ste es abstracto y se fuerza a que todas las
subclases lo sobrescriban. Los mtodos abstractos carecen de cuerpo.
Este modificador se ver en el curso Java SE Intermedio.
Modificador final
En un atributo. Indica que el valor del atributo es constante, de slo lectura.
En un mtodo. Indica que el mtodo no puede ser sobrescrito y por lo tanto
no se puede aplicar polimorfismo
En una clase. Indica que la clase no puede tener subclases.
105
orientacin a objetos I
modificadores de acceso
static
synchronized
native
strictfp
volatile
transient
106
orientacin a objetos I
modificadores de acceso
Modificador
Clase
Mtodo
Atributo
public
protected
private
abstract
final
static
(slo internas)
synchronized
native
strictfp
volatile
transient
107
ndice
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos I
a. Conceptos y principios bsicos
b. Clases, atributos y mtodos
c. Modificadores de acceso
d. Constructores
e. Interfaces
5. Excepciones
6. Utilidades Java I
108
orientacin a objetos I
constructores
Un constructor de una clase es un mtodo especial que contiene las
instrucciones a ejecutar cada vez que se cree un nuevo objeto de ese tipo.
Se usan para tareas como inicializacin de atributos o se requieren operaciones
ms complejas como aperturas de ficheros, acceso a redes, etc.
Siempre se ejecutan despus de haberse inicializado todos los atributos (de
forma explcita o implcita a travs de valores por defecto).
Tienen un gran diferencia respecto el resto de
mtodos: no se heredan.
109
orientacin a objetos I
constructores
Los constructores tienen una sintaxis muy parecida a los mtodos, salvo que el
nombre del constructor ha de coincidir con el de la clase y nunca tienen valor
de retorno (ni void):
<nombreTipo> ([<parmetros>]) {
<instrucciones>
}
Ejemplo:
Persona(String nombre){
System.out.println(nombre);
}
Al constructor se invoca en el momento de creacin del objeto usando la directiva
new:
Persona p = new Persona("David");
110
orientacin a objetos I
constructores
Todas las clases deben tener constructor.
En caso que el programador no defina uno, el compilador crea uno por
defecto con la siguiente signatura:
public <nombreClase>(){super();}
Si el programador define un constructor, el compilador ignora aadir el
constructor por defecto, por lo que se recomienda aadirlo manualmente
en este caso.
orientacin a objetos I
constructores
Cuando se instancia una clase, se ejecuta una secuencia en
cascada de constructores que comienza por el constructor de
Object, pasando por el de todas las superclases hasta llegar
Cuntos
constructores
y en qu orden
se invocarn?
al de la clase instanciada.
public class Animal {
public Persona() {
System.out.println("Constructor Animal");
} }
public class Perro extends Animal{
public Perro(){
System.out.print("Guau!");
}
public static void main(String[] args){
Perro perro = new Perro();
} }
112
orientacin a objetos I
constructores
Se pueden definir varios constructores para una clase siempre y cuando difieran
en nmero de parmetros y/o en tipos, es decir, se permite la sobrecarga.
Tambin se pueden realizar llamadas desde un constructor a otros constructores
de la misma clase usando la partcula this() como primera instruccin (usar
esta instruccin en otro orden genera un error de compilacin):
No podemos invocar constructores desde otros mtodos que no sean otros
constructores.
public class A {
A (){
this(0.0,0.0); //llamamos al segundo constructor
}
A (int altura, double peso){}
}
113
orientacin a objetos I
constructores
Tambin podemos llamar a cualquier constructor definido en la superclase a
travs de la palabra reservada super().
public class Persona {
private String nombre;
public Persona(String n) {
nombre = n;
} }
public class Empleado extends Persona {
private int numEmpl;
public Empleado(int num, String nom){
super(nom);
numEmpl = num;
} }
orientacin a objetos I
uso de this
115
orientacin a objetos I
ejemplo
//Definimos una clase que modele vectores de dos dimensiones
public class Vector2D{
//Definimos los atributos: dos coordenadas (x,y)
private double x;
private double y;
//Definimos un constructor de 2 parmetros
public Vector2D(double x, double y){
//Usamos this para deshacer ambigedades
this.x = x;
this.y = y;
}
//Definimos otro constructor sin parmetros
public Vector2D(){
//Llamamos al otro constructor con this
this(0.0,0.0);
}
116
orientacin a objetos I
ejemplo
//Definimos un mtodo que calcula la suma de dos vectores.
//El mtodo suma el objeto actual (this) con el objeto
//pasado como parmetro
public Vector2D suma(Vector2D vec){
double xAux = x + vec.x;
double yAux = y + vec.y;
Vector2D vecSuma = new Vector2D(xAux, yAux);
return vecSuma;
}
//Definimos un mtodo que calcula el producto escalar
//de dos vectores: this y el parmetro
public double prodEscalar(Vector2D vec){
return x * vec.x + y * vec.y;
}
}
117
ndice
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos I
a. Conceptos y principios bsicos
b. Clases, atributos y mtodos
c. Modificadores de acceso
d. Constructores
e. Interfaces
5. Excepciones
6. Utilidades Java I
118
orientacin a objetos I
concepto de interfaz
Una interfaz equivale a una clase abstracta cuyos mtodos son todos
abstractos y deben ser implementados en sus subclases.
La diferencia entre definir una interfaz y una clase abstracta con mtodos
abstractos radica en que las interfaces permiten herencia mltiple.
119
orientacin a objetos I
definicin de interfaz
Lo que declaramos
Lo que interpreta
el compilador
121
orientacin a objetos I
implementacin de interfaz
Cuando una clase define el cuerpo los mtodos de una interfaz decimos que la
clase implementa la interfaz.
abstracto).
public class Pelota implements Botable {
public void botar(){ //Mtodo de la interfaz Botable
System.out.println("Bota mi pelota hasta " + ALTURA);
} }
122
orientacin a objetos I
herencia de interfaces
123
orientacin a objetos I
herencia de interfaces
124
ndice
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos I
5. Excepciones
a. Concepto y clasificacin
b. Captura y tratamiento de excepciones
125
excepciones
concepto
Las posibles causas del lanzamiento de una excepcin incluyen desde fallos de
hardware (desbordamiento, acceso a disco, etc.) hasta errores de programacin
(acceso fuera de rangos de un array, fallo de conexiones a bases de datos, etc.),
siendo estos ltimos las principales.
126
excepciones
ventajas
El mecanismo clsico de gestin de errores consiste en que cada fragmento de
cdigo susceptible de error genere un cdigo que debe tratar despus el
programador a travs de sentencias if else.
Las excepciones ofrecen usa serie de ventajas respecto al mecanismo anterior.
Claridad. El control de excepciones separa el cdigo normal del cdigo de
control de errores en dos partes bien diferenciadas para separar ambas
excepciones
clasificacin
Existen tres grandes grupos de excepciones que heredan de Throwable:
Errores (extends Error). Representan errores graves de sistema, por
unchecked
(extends
RuntimeException).
Son
128
excepciones
clasificacin
Throwable
Error
OutOfMemoryError
StackOverflowError
AWTError
Exception
Excepciones
checked
Excepciones unchecked
(RuntimeException)
IOException
SQLException
ClassNotFoundException
Excepciones Personalizadas
ArithmeticException
NullPointerException
OutOfBoundsException
ClassCastException
129
excepciones
excepciones y errores comunes
IndexOutOfBoundsException y
ArrayIndexOutOfBoundsException
El ndice de acceso a un lugar se encuentra fuera de rango.
La segunda es subclase de la primera. Indica que el ndice por el
cual se ha accedido es negativo o mayor que el tamao del array
ClassCastException
Se produce al realizar un casting entre objetos incompatibles. La
mquina virtual lanza de manera automtica esta excepcin.
IllegalArgumentException
Indica que el parmetro pasado a una funcin no es vlido. Se trata
de una excepcin de propsito general para validacin de datos.
130
excepciones
excepciones y errores comunes
IllegalStateException
excepciones
excepciones y errores comunes
AssertionError
El resultado de evaluar una asercin es falso.
ExceptionInInitializerError
Error cuando se produce una excepcin en el inicializador (constructor) esttico de
una clase. La clase no se carga en la memoria de la JVM.
StackOverflowError
Se produce cuando la pila de llamadas se desborda debido a exceso de recursividad.
ClassNotFoundException y NoClassDefFoundError
La primera se produce cuando no se encuentra una clase dentro del Classpath de la
aplicacin
El segundo se produce cuando no se puede cargar ni leer la definicin de la clase.
132
excepciones
mtodos de Throwable
printStackTrace(). Escribe en la salida de error estndar (System.err) la
traza de la pila.
La primera lnea contiene la salida del mtodo toString() del objeto Throwable
que lo llama.
El resto de informacin es la pila de llamadas. Cada lnea de la pila contiene el
nombre del mtodo y la lnea donde se hizo la llamada, empezando por el
ndice
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos I
5. Excepciones
a. Concepto y clasificacin
b. Captura y tratamiento de excepciones
134
excepciones
captura y tratamiento de excepciones
Bloque try. Incluye las instrucciones normales de cdigo susceptibles a lanzar
una o varias excepciones. Si se lanza una excepcin se interrumpe el flujo
normal de ejecucin y se salta al bloque catch correspondiente.
Bloque catch. (opcional) Incluye las instrucciones que tratarn la excepcin
generada. Un bloque catch dispone siempre de una referencia a la excepcin
generada para obtener informacin sobre sobre su causa, su trazabilidad, etc.
135
excepciones
captura y tratamiento de excepciones
public Double dividir(double divisor, double dividendo){
try{
//Instruccin susceptible a lanzar excepciones
return divisor / dividendo;
}
catch (ArithmeticException ex) {
// Volcado de pila
ex.printStackTrace();
// Informacin de la excepcin
System.out.println(ex.getMessage());
}
finally{
System.out.println("Liberando recursos")
}
excepciones
tratamiento de mltiples excepciones
Java ofrece la posibilidad de capturar mltiples excepciones en un nico bloque
try.
Para ello basta con definir varios bloques catch, uno por cada excepcin que se
desee gestionar.
Los bloques catch se ejecutan en secuencia, de forma que es importante definir
su orden, sobre todo cuando existe una jerarqua de excepciones ya que por
excepciones
tratamiento de mltiples excepciones
Ejemplo incorrecto:
public static void main(String[] args){
try {
refValida.metodoLanzaMiException();
}catch(Throwable e){
}catch(Exception e){
}catch(ArithmeticException e){
}catch(MiException e){}
}
class MiException extends ArithmeticException {}
El primer bloque catch captura Throwable, el resto de bloques catch son
subtipos de sta y no los podemos declarar en este orden. Primero debemos
declarar las excepciones ms concretas o especializadas y por ltimo las ms
genricas
138
excepciones
tratamiento de mltiples excepciones
Ejemplo correcto, aunque no tiene sentido. Con el primer catch es suficiente
porque es la nica excepcin que puede lanzar el mtodo
public static void main(String[] args){
try {
refValida.metodoLanzaMiException();
}catch(MiException e){
}catch(ArithmeticException e){
}catch(Exception e){
}catch(Throwable e){}
}
class MiException extends ArithmeticException {}
139
excepciones
tratamiento de excepciones
Otro ejemplo correcto: usamos bloques try/catch/finally
public static void main(String[] args){
ReferenciaRecursoCritico refRecursoCritico;
try {
refRecursoCritico = ClaseEstatica.getInstance();
// ms cdigo aqu puede haber varios return
}catch(MiException ex){
ex.printStackTrace();
}finally{
ClaseEstatica.free();
refRecursoCritico = null;
}}
class MiException extends Exception { }
140
ndice
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos I
5. Excepciones
a. Concepto y clasificacin
b. Captura y tratamiento de excepciones
141
excepciones
propagacin de excepciones
Si una excepcin no se gestiona dentro de un mtodo decimos que se propaga
hacia niveles superiores.
Se delega la responsabilidad de gestin al mtodo que llam al mtodo actual,
y as sucesivamente hasta alcanzar el primer mtodo de la pila de llamadas.
Si la excepcin no se gestiona, se termina el hilo de ejecucin de la actual pila
de llamadas. Si el hilo en ejecucin es el principal, el programa aborta su
ejecucin.
Si sabemos que las instrucciones de un mtodo son susceptibles de lanzar
excepciones pero no queremos gestionarlas se debe explicitar en la definicin del
mtodo cules son las excepciones que puede lanzar a travs de la clusula
throws.
142
excepciones
propagacin de excepciones
Ejemplo
//abreStream declara una excepcin de tipo IOException
public void abreStream(String fich) throws IOException{
//Esta instruccin lanza una excepcin,
//pero no se captura con trycatch, sino que se propaga
excepciones
lanzamiento de excepciones
Para lanzar una excepcin se usa throw seguido de una expresin que devuelva
una referencia a una excepcin.
144
ndice
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos I
5. Excepciones
a. Concepto y clasificacin
b. Captura y tratamiento de excepciones
145
excepciones
excepciones definidas por el usuario
146
excepciones
excepciones definidas por el usuario
public class SaldoNegativoException extends Exception{
public SaldoNegativoException(){ } //Sin argumentos
public SaldoNegativoException(String mensajeError){ //Sobrecargado
super(mensajeError);
}
}
excepciones
excepciones definidas por el usuario
public class CuentaBancariaMain{
public static void main(String args){
try{
CuentaBancaria cb = new CuentaBancaria(1000.0);
// Instruccin que no genera error
cb.sacarDinero(500.0);
// Instruccin que genera una excepcin
cb.sacarDinero(501.0);
} catch (SaldoNegativoException ex){
// Mostramos el mensaje de error
System.out.println(ex.getMessage());
// Volcamos la pila en System.err
ex.printStackTrace();
}
}
}
148
ndice
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos I
5. Excepciones
6. Utilidades Java I
a. Las clases String, StringBuffer y StringBuilder
149
utilidades Java I
la clase String
utilidades Java I
la clase String
Aunque los objetos String son inmutables, sus variables de referencia no:
String s = new String("Hola");
s = s.concat(" Mundo"); // concat aade un literal al final
Ahora tenemos dos objetos String en la JVM: "Hola" (inmutable) y "Hola
qu salida
produce?
}
151
utilidades Java I
la clase String
Mtodo
Descripcin
charAt(index)
concat(str)
contains(cadena)
compareTo(cadena)
equals(cad)
equalsIgnoreCase(cad)
indexOf(char c)
lastIndexOf(char c)
length()
matches(regex)
replace(charO, charD)
replace(regex, strNew)
utilidades Java I
la clase String
Mtodo
Descripcin
split(regex)
startsWith(prefix)
endsWith(suffix)
substring(ini,dest)
toLowerCase()
toUpperCase()
toCharArray()
trim()
valueOf(tipoSimple)
format(cad, args)
153
utilidades Java I
las clases StringBuffer y StringBuilder
Las clases StringBuilder y/o StringBuffer se usan cuando tenemos que hacer
muchas modificaciones en cadenas de caracteres.
Dado que los objetos String son inmutables, si tenemos que hacer
muchas modificaciones con ellos, estaremos llenando la memoria.
Los objetos StringBuilder y StringBuffer pueden modificarse una y otra
vez sin que afecte a la memoria de la JVM
154
utilidades Java I
las clases StringBuffer y StringBuilder
Mtodo
Descripcin
append(valor)
delete(ini,fin)
deleteCharAt(pos)
insert(pos,val)
Aade en la posicin pos, el valor val. val puede ser un tipo simple, un
string o un Object.
setCharAt(pos,car)
toString()
utilidades Java I
las clases StringBuffer y StringBuilder
Definamos el mismo ejemplo de concatenacin de cadenas de caracteres que vimos
con la clase String. Sustituimos el mtodo concat de la clase String por el mtodo
append de la clase StringBuilder:
public class Test{
public static void main(String args){
StringBuilder sb = new StringBuilder("Hola");
sb.append(" mundo");
System.out.println("sb = " + sb);
}
}
Qu salida producir
este programa?
156
ndice
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos I
5. Excepciones
6. Utilidades Java I
a. Las clases String, StringBuffer y StringBuilder
157
utilidades Java I
sentencia package
Java organiza las clases dentro de paquetes (packages). Cuando definimos una
clase podemos indicar el nombre del paquete al que pertenece en la primera lnea
de cdigo.
El nombre completo de una clase es el nombre del paquete junto con el nombre
de la clase, por ejemplo: La clase Empleado dentro del paquete
com.everis.people la definimos as:
package com.everis.people; // paquete al que corresponde
public class Empleado { } // definicin de la clase
Para el ejemplo anterior fsicamente se crea la siguiente estructura de directorios
/com/everis/people/Empleado.java
Para crear una referencia de Empleado desde cualquier otra clase fuera del
paquete com.everis.people tenemos que usar la siguiente sintaxis:
com.everis.people.Empleado emp = new com.everis.people.Empleado();
158
utilidades Java I
sentencia import
Para evitar escribir el nombre completo de una clase cada vez que la
referenciamos y adems evitar ambigedades, Java proporciona la sentencia
import.
Se escriben antes de la definicin de la clase y despus de la sentencia
package, si existe.
Existen dos modos de importancin:
Podemos importar una sola clase:
import com.everis.people.Empleado;
O bien podemos importar todas las clases de un paquete:
import com.everis.people.*;
utilidades Java I
sentencia import
La sentencia import no importa subpaquetes. Si un paquete tiene subpaquetes
tenemos que usar ms de una sentencia import, una por paquete:
import com.everis.people.Empleado;
import com.everis.people.staff.Programador;
Otro mecanismo que incorpora Java desde la versin 5 son las sentencias de
importacin estticas import static
Son tiles cuando queremos usar miembros estticos de una clase con mucha
frecuencia sin tener que referenciar el nombre de la clase cada vez que
accedemos al miembro.
160
utilidades Java I
sentencia import
Sin usar import static:
public class TestStatic {
public static void main(String[] args) {
System.out.println(
Integer.toHexString(42));
}
}
Usando import static:
import static java.lang.System.out; // 1
import static java.lang.Integer.*; // 2
public class TestStatic {
public static void main(String[] args) {
out.println(toHexString(42));
}
}
1. El mtodo esttico
out de la clase
System
2. Todos los mtodos
estticos de la clase
Integer
161
ndice
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos I
5. Excepciones
6. Utilidades Java I
a. Las clases String, StringBuffer y StringBuilder
162
utilidades Java I
la lnea de comandos
Ficheros de
cdigo fuente
(.java)
Compilador Java
(javac)
Ficheros bytecode
(.class)
Lenguaje
mquina
JVM (java)
163
utilidades Java I
la lnea de comandos. javac
Usamos el comando javac desde la lnea de comandos para compilar un
programa escrito en Java
Sintaxis de uso: javac [opciones] [ficheros fuente]
Opcin
Descripcin
-help
-classpath
-g
-verbose
-nowarn
-d
-source
-target
-version
utilidades Java I
la lnea de comandos. javac
javac Persona.java # Compila la clase Persona
javac d classes src/Persona.java # Compila la clase Persona y sita
el archivo Persona.class en la carpeta classes
javac classpath com\everis g Persona.java Alumno.java #
Compila las clases Persona y Alumno, genera informacin de depuracin e
indica la carpeta donde encontrar clases
utilidades Java I
la lnea de comandos. java
Usamos el comando java desde la lnea de comandos para ejecutar una clase
Java
Ejecutar una clase: java [opciones] fichero de clase
[argumentos]
Ejecutar un jar: java [opciones] jar fichero jar [argumentos]
Opcin
Descripcin
-help
-classpath
-D
-verbose
-ea
-da
-version
utilidades Java I
la lnea de comandos. java
java Persona # Ejecuta la clase Persona
javac Dcolor=rojo Persona.java # Ejecuta la clase Persona y aade la
propiedad color con el valor rojo a las propiedades del sistema
System.getProperties();
java Persona Carlos # Ejecuta la clase Persona y pasa Carlos como argumento
java Persona Carlos Prez Garca # Ejecuta la clase Persona y pasa los
argumentos Carlos, Prez y Garca
java Persona "Carlos Prez Garca" # Ejecuta la clase Persona y pasa el
argumento Carlos Prez Garca
java classpath project\classes com.everis.Persona # Ejecuta la
clase com.everis.Persona e indica el classpath donde encontrarla
167
utilidades Java I
la lnea de comandos. El mtodo main
Si necesitamos crear una clase ejecutable desde la lnea de comandos, sta
deber definir el mtodo public static void main(String[] args)
Podemos encontrar el mtodo escrito de varias maneras:
static public void main(String[] args)
public static void main(String... x)
utilidades Java I
la lnea de comandos. El mtodo main
class PruebaMain {
public static void main(String[] args) {
for(String s: args) {
System.out.print(s + " ");
}
System.out.println(System.getProperty("coche"));
}
}
+
C:\>javac PruebaMain.java
C:\>java Dcoche=Ferrari PruebaMain Jesus pilota un
C:\>_
=
C:\>Jesus pilota un Ferrari
C:\>_
169
everis.com
170