Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
Caractersticas de Java
Lenguaje independiente de mquina
4Definicin basada en mquina virtual interpretada
Fuentes de disponibles en C
Lenguaje de la mquina virtual: Bytecodes
Equivalente al lenguaje mquina de un procesador
Formato de fichero mquina: Class file format
Programas en Java
Clase: elemento central de un programa Java
Una clase se encapsula en un fichero
4El fichero tiene el mismo nombre de la clase.
Para imprimir
4System.out.println(......)
public class HelloWorld {
public static void main (String args[]){
System.out.println("Hello World!");
}
}
4Clases
Definibles por el usuario
Permiten crear objetos
Se manejan siempre por referencia
4Arrays (matrices)
Similares a las clases
sintaxis especial
Tipos predefinidos I
Tipo
Contenido
Valor por
Defecto
false
\u0000
byte
Complemento a 2 0
short
Complemento a 2 0
Bits Valores
mnimo y
mximo
1
false, true
16
\u0000,
\uFFFF
8
-128,
127
16
-32768,
32767
Tipos predefinidos II
Valor por Bits Valores mnimo
Defecto
y mximo
Tipo
Contenido
int
Complemento a 2 0
32
-2147483648,
+2147483647
long
Complemento a 2 0
64
-9223372036854775808,
+9223372036854775807
float
IEEE 754
0.0
32
0.0
64
3.40292347e+38,
1.40239846e-45
1.79769313486231570e+308,
4.94065645841246544e-324
// asigna false
// asigna true
int count = 7;
count = count + 1;
count++;
++count;
count += 1;
// incrementa count
// incrementa count (postincremento)
// incrementa count (preincremento)
// incrementa count
Sentencia: while
El bucle while analiza la condicin antes de
ejecutar el cuerpo del bucle
4el programa imprime los argumentos por consola
class PrintArgs1 {
public static void main (String args[]){
int i = 0;
while (i < args.length) {
System.out.println (argumento + i + : + args[i++]);
}
}
}
Sentencia: for
Inicializa (y define) variables antes de comenzar
4Permite varias sentencias separadas por comas
Sentencia: break
break aborta la ejecucin: si args.length = 0
4Utilizable con: {}, while, for, do-while y switch
class PrintArgs3 {
public static void main (String args[]){
int i = 0;
do {
if (args.length == 0) { break;}; // aborta la ejecucion
System.out.println (argumento + i + : + args[i++]);
} while (i < args.length);
}
}
Sentencia: switch
int llave;
......
switch (llave) {
case 3:
.......
break;
case 2:
.......
break;
.......
case <valor>:
.......
break;
default:
.......
break;
}
......
Operandos I
Prior/ ope- operandos
Asoc rador
descripcion
1, R
++, -- aritmetico
pre/post incr/decremento
1, R
+, -
aritmetico
1, R
entero
1, R
boolean
complemento logico
1, R
(tipo)
any
2, L
3, L
+, -
3, L
4, L
<<
entero
desplazamiento a la izquierda
4, L
>>
entero
4, L
>>>
entero
Operandos II
Prior/ operador operandos
Asoc
5, L <, <=
aritmetico, arit.
5, L
>, >=
5, L
6, L
==, !=
6, L
==, !=
Object, Object
7, L
&
entero,entero
7, L
&
boolean, bool.
and (logico)
8, L
entero, entero
8, L
boolean, bool.
xor (logico)
9, L
entero, entero
or (bit a bit)
9, L
boolean, bool.
or (logico)
aritmetico, arit.
descripcion
prueba de tipo
Operandos III
Prior/ operador
Asoc
10, L &&
11, R ||
12, R ?:
operandos
descripcion
any
13, R =, *=, /=,
%=, +=,
-=, <<=,
>>=, >>>=,
&=, ^=, |=
asignacion con
operacion
x += 3;
igual a
x = x + 3;
Operaciones: ejemplos
static final int i = 88; // define una constante entera
static final byte b = 3; // define una constante de tipo byte
byte bb = (byte) i; // la funcin de cast adapta tipos (int a byte)
int val = b; // de menor a mayor no hace falta hacer cast
byte b = (3 < ++val)?3:2; // asigna 3, expresin = true
byte b = (byte) (value >> 8); // extrae segundo byte de value
int i = (0x000000600 & intvalue) >>> 9; // extrae un campo de
// dos bits (bits 9 y 10) con una mscara hexadecimal
// y calcula su valor numrico
Ejercicio Java 2
Realizar un programa que reciba varios
argumentos
4cuando el argumento sea 11, 12 o 13 imprima
numero once, numero doce o numero trece
Clases y objetos
Clases y objetos
El mecanismo de definicin de clases permite
crear nuevos tipos de usuario
4substituye un struct de C, o un record de Pascal
4aade control de visibilidad y herencia
Clase:
4Conjunto de datos encapsulados con los mtodos
que permiten manipularlos de forma coherente
4Una clase se compone de:
campos, constructores y mtodos
Objeto:
4instancia de una clase
se crea y destruye dinmicamente
// campos
// constructor
class WebSiteTest {
public static void main(String args[]){
WebWite w = new WebSite(Juan Quemada,
http://www.dit.upm.es/quemada,
pagina personal de J. Quemada);
// creacin
w.print();
// uso
System.out.println (Name is: + w.name);
}
}
Referencias
Un objeto se maneja usando referencias a l.
Uso tpico:
1. declarar variable que contendr la referencia a un objeto.
2. almacenar en la variable la referencia a un objeto.
Visibilidad de miembros
Visibilidad publica: public
4Accesible donde la clase sea accesible.
Ejercicio Java 3
Extender la clase WebSite con mtodos de
acceso y modificadores para cada campo
(name, url, descr).
Crear tambin un programa de prueba que
41) cree un objeto
42) imprima su contenido
43) modifique un campo
44) imprima el contenido modificado
Clases y objetos
(Transparencias complementarias)
Tapado de constructores
WebSite0 no posee constructores utilizables
4El usuario no puede crear objetos de tipo WebSite0
4Pregunta: Como se puede crear un objeto WebSite0?
public class WebSite0 {
private String name;
private String url;
private String descr;
private WebSite0(){}
// campos
// constructor no utilizable
Destruccin de objetos
La maquina virtual Java destruye los objetos
cuando no se utilizan mas
4libera la memoria y el resto de recursos que se han
asignado al crear el objeto
4Hay otros recursos que se asignan en el cdigo
descriptores de ficheros, sockets, .. no se liberaran
Herencia
Herencia
La herencia permite crear nuevas clases a
partir de clases existentes
4diseo incremental
// campos
Herencia: enriquecimiento
WebSiteE aade: campo email, mtodo printEmail
Herencia: modificacin
WebSiteM modifica WebSite
4Aade tambin la variable: email
4Pero redefine el significado de: print()
public class WebSiteM extends WebSite {
public String email;
public WebSiteM(String n, String u, String d, String email) {
super(n, u, d); this.email = email;
}
public void print() {
super.print();
System.out.println
(To contact + name + send msg to + email);
}
// nuevo metodo
}
Programa de prueba
public class WebSiteEMTest {
// Invocacion:
//
java WebSiteEMTest <name> <url> <descr> <email>
// Crea objetos WebSiteE y WebSiteM, e invoca sus
// mtodos print y printEmail en su caso.
public static void main(String a[]){
WebSiteE wE = new WebSiteE(a[0], a[1], a[2], a[3]);
WebSiteM wM = new WebSiteM(a[0], a[1], a[2], a[3]);
wE.print();
// invoca print de WebSiteE
wE.printEmail(); // invoca printEmail de WebSiteE
wM.print();
// invoca print de WebSiteM
}
}
Ejercicio Java 5
Definir una clase que extienda WebSiteE
aadiendo nuevos campos para los nmeros
de telfono, de fax y de mvil.
4Aadir un nuevo mtodo printTelefonos() que
imprima:
Los nmeros de contacto de <name> son:
tf = <tf>, fax = <fax>, movil = <movil>
Jerarqua de clases
La herencia en java es de tipo simple (o lineal)
4Slo se hereda de una clase
Una clase slo tiene una superclase
Una clase puede tener varias subclases
Herencia
(Transparencias complementarias)
WebSiteD
WebSiteD debe tener un constructor sin argumentos
4WebSiteD() es invocado por el constructor de WebSiteEb
Un objeto de una subclase debe construir siempre el objeto de su
superclase antes de crearse
// campos
public WebSiteD () {}
public WebSiteD (String n, String u, String d)
{name = n; url = u; descr = d;}
// constructores
public void print(){
// metodo
System.out.println(name + at + url + descr);
}
}
Herencia de constructores
Al crear un objeto derivado de otro es necesario
construir el objeto de forma incremental
4Invocando a los constructores de las superclases
4Constructor explcito
debe invocar a constructor explcito del supertipo en la
primera lnea
si no se invoca automticamente el constructor implcito
antes de ejecutar el constructor
excepcin: antes de invocar el constructor del supertipo
se pueden invocar otros constructores del mismo tipo
Matrices (Arrays)
Matrices (Arrays)
Definen estructuras regulares de informacin
4Ejemplos:
byte PDU[] = new byte[4];
byte PDU[] = {2, 4, 8, 9}; // utilizable solo en inicializacin
Ejemplos: matrices
// definicin
public byte[] PDU(int type, int len, byte[] data);
String buffer[];
int[] a, b[];
// a es unidimensional, b es bidimen.
// uso
byte[] datos = {0,0,0,0}; // esta sintaxis solo es
// valida en la creacin, en asignaciones y
// otros usos se debe utilizar arrays dinmicos
byte[] buff = PDU(8, 10, datos);
int i = buff.length
Object o = {0,0,0,0};
for
Recorrido por los valores del array usando el
ndice.
int[] a = {10,20,30,40};
for (int i=0; i<a.length; i++) {
System.out.println(valor =+a[i]);
}
String[] b = {uno,dos,tres};
for (int i=0; i<b.length; i++) {
System.out.println(valor =+b[i]);
}
foreach
Recorrido por los valores del array sin uso
del ndice.
Desde java 1.5
int[] a = {10,20,30,40};
for (int i : a) {
System.out.println(valor =+i);
}
String[] b = {uno,dos,tres};
for (String i : b) {
System.out.println(valor =+i);
}
Matrices (Arrays)
(Transparencias complementarias)
Matrices (II)
El tamao de un array no es parte del tipo
4una variable de tipo array puede contener arrays de
diversas longitudes
Resumen modificadores
(Transparencias complementarias)
Modificadores
Un modificador es un atributo de una
definicin de
4Clase
4interfaz
4campo
4metodo
4inicializador
Modificadores I
static: atributo de clase
4clase (desde Java 1.1): clase de mbito mximo
4campo: campo de clase, el mismo en todos los objetos
4mtodo: mtodo de clase, solo accede a campos static
4inicializador: se ejecuta al cargar la clase
Modificadores II
abstract: con mtodos no implementados
4clase: contiene mtodos no implementados
4interface: es abstracto por definicin, es opcional
4mtodo: el mtodo no tiene cuerpo, slo signatura
debe pertenecer a una clase abstracta
Modificadores III
(metodos y campos)
public: visibles en cualquier parte
private: Visibles slo dentro de la clase
protected: Visibles en paquete y subclases
Sin modificador: Visibles en paquete
Internacionalizacin:
Cdigos de caracteres,
Readers y Writers
Bibliografa:
- Java Network Programming
- Documentacin API: paquete java.io
Internacionalizacin
Capacidad de un programa para manejar
interfaces de usuario utilizables en
mltiples pases
Caractersticas
4Deben poder representar todas las lenguas
con diferentes alfabetos o jeroglficos
Internacionalizacin en Java
Java soporta internacionalizacin de programas
Facilidades
4Cdigo Unicode
permite representar mltiples alfabetos
4java.text:
paquete de manejo de convenciones locales para las
lenguas mas comunes
4java.util.ResourceBoundle:
clase de manejo de bloques de mensajes en mltiples
lenguas
Codificacin de caracteres
Codificacin internacionalizada
4Debe soportar las lenguas existentes
Tipos de lenguas: alfabticas y jeroglficas
Lenguas alfabticas:
4Codificacin indirecta basada en un alfabeto
Palabra: se representa con un bloque de smbolos del alfabeto
Suelen tener un numero de smbolos pequeo (entre 20 y 100)
Lenguas jeroglficas:
4Poseen un smbolo diferente para cada palabra
Necesitan un conjunto de smbolos muy grande
ASCII:
4codifica ingles-americano
Adems incluye caracteres de control de teletipos
ISO Latin-1:
4extiende ASCII con 1 bit
4Codifica caracteres de otras lenguas de raz latina
incluye castellano, cataln, ....
Cdigo Unicode
UNICODE:
4Cdigo pseudointernacionalizado
Mas informacin en: http://www.unicode.org
Cdigo UTF8
UTF8: Universal Character Set Transformation
Format 8-bit form
4optimizado para representar caracteres ASCII.
Representacin de caracteres en
Java
Java ha sido diseado para soportar
internacionalizacin
4Los char de Java usan codificacin UNICODE
4Java 1.4 usa Unicode 3.0
4Java 5.0 usa Unicode 4.0
Necesidad de usar un int para soportar algunos
caracteres asiticos
Existen mtodos en las Character, String, etc. Para
soportar estos caracteres.
char c = ;
// crea c y asigna caracter:
c = \u0022;
// asigna caracter:
c = \042;
// asigna caracter:
c = \;
// asigna caracter:
// 22 (hexadecimal) = 42 (octal) = cdigo de caracter
//
//
//
//
//
//
//
//
\b
\t
\n
\r
\f
\
\
\\
espacio atrs
tabulador horizontal
linea nueva
retorno de carro
paso de pagina
comillas
comilla
barra hacia atras