Está en la página 1de 17

Elementos Bsicos de Java (Jos Manuel Gutirrez, Santander)

Julio, 2002, slide 1


Elementos Bsicos de Java.
OOP (herencia, polimorfismo), interfases, eventos.
J os Manuel Gutirrez
Universidad de Cantabria
manuel.gutierrez@unican.es
Internet
Java
http://grupos.unican.es/macc/asignaturas/javaDB
Elementos Bsicos de Java (Jos Manuel Gutirrez, Santander)
Julio, 2002, slide 2
Historia de Java = Caf (posterior a Oak)
Aparicin de WWW.
El lado del cliente
Internet es un sistema Cliente-Servidor
Transmito el programa al cliente
El cliente ejecuta el programa (debe ser capaz de ejecutarlo).
Interaccin con el usuario es local
Muchos clientes diferentes
Diferentes clientes / diferentes servidores: NO SIRVE CDIGO MQUINA
Java se traduce en un cdigo independiente de la mquina bytecode.
Bytecode=> Cdigo mquina para mquina imaginaria, virtual Java (JVM)
Cada ordenador traduce el Bytecode.
Seguridad: Ejecuto en programa en el cliente (borrar ficheros, etc)
El cliente dispone de un gestor de seguridad (security manager) que limita las
acciones que puede ejecutar el programa suministrado por el servidor.
Acceso al sistema de ficheros
transmitir informacin a otros ordenadores de la red
Elementos Bsicos de Java (Jos Manuel Gutirrez, Santander)
Julio, 2002, slide 3
Por qu utilizar Java? Caractersticas principales
? Java es un potente lenguaje de
programacin orientado a objetos.
? Todo el entorno de desarrollo (SDK)
para crear ficheros .class con cdigo
pseudocompilado para intrpretes
Java.
? Los programas son compilados en
ficheros pseudo-ejecutables que se
pueden ser interpretados:
(aplicaciones) mquina virtual, o
(applets) plug-in de un navegador Web.
? Tiene reglas estrictas sobre cmo
declarar y utilizar variables.
(control estricto de tipos)
Independencia de plataforma
(UNIX, Windows, Mac,...).
Orientado a objetos
(Obligado a implementar).
Seguridad y confianza:
lenguaje, compilador, interprete
Simplicidad:
gestin automtica de basura.
Estndar.
Computacin distribuida.
Clases" potentes para desarrollo.
(GUI,NET,BD)
Generacin rpida de cdigo.
Documentacin y Mantenimiento.
Rendimiento????.
JAVA no es slo un Lenguaje de Programacin, JAVA es adems un conjunto
de herramientas avanzadas: JAVA es una Tecnologa
Elementos Bsicos de Java (Jos Manuel Gutirrez, Santander)
Julio, 2002, slide 4
Elementos de Desarrollo para Java
Java 1.0
212 Clases, 8 paquetes
Java 1.1
504 Clases, 23 paquetes
Mejopras en el rendimiento de la VM
Java 1.2
1520 Clases, 59 paquetes
Plataforma Java 2.0
Java 1.4.1 (Beta), Julio 2002
Para trabajar con Java 1.0 o Java 1.1
Java Development Kit para la versin (JDK)
Para trabajar con Java 1.2 (Renombrado como Java 2)
Software Development Kit(SDK) o ms concreto:
Java 2 SDK, Standard Edition Ver. 1.2, ...
El lenguaje de programacin Java: Lenguaje de programacin.
Un lenguaje con una sintaxis similar a C, orientado a Objetos
Evitando las caractersticas complejas que han caracterizado a otros lenguajes como C++
La mquina virtual Java (JVM): Hardware/Software (habitual).
Es la parte imprescindible para poder ejecutar programas Java
Sun: Solaris, Linux y Windows, Tambin para Mac, UnixPalm OS
A pesar de ser un intrprete, la VM tiene un buen rendimiento.
JIT Compiler (J ust-I n-Timecompilers).
Propio de la Mquina Virtual
Bytecodes convertidos instantneamente en cdigo nativo de la plataforma correspondiente
Mejora en la velocidad de ejecucin
Hotspot => Buena implantacin de JIT
Java Runtime Environment (JRE)
Contiene todo lo necesario para ejecutar programas Java
pero no para desarrollarlos
Elementos Bsicos de Java (Jos Manuel Gutirrez, Santander)
Julio, 2002, slide 5
Tecnologas Actuales Java
Java
TM
technologies:
J2SE
TM
,
J2EE
TM
,
J2ME
TM
,
JAX XML.
SDK
(Standard Development Kit)
JRE
(Java RunTime Enviroment)
Elementos Bsicos de Java (Jos Manuel Gutirrez, Santander)
Julio, 2002, slide 6
Elementos del Lenguaje Java
public class Reverse {
public static void main (String[] args){
int i = args.length;
while (i != 0 ) {
for (int j=args[i-1].length()-1; j >= 0; j--)
System.out.print (args[i-1].charAt(j));
System.out.print(" ");
i--;
}
System.out.println(); }
}
Programa que copia la entrada
en la salida e invierte el orden
de las letras
Elementos Bsicos de Java (Jos Manuel Gutirrez, Santander)
Julio, 2002, slide 7
Programacin Orientada a Objetos (OOP)
? En la programacin orientada a objetos, el desarrollo de una aplicacin se organiza
en torno a los datos, en torno a los cuales se organizan los procesos.
Para ello, estos lenguajes tienen la posibilidad de:
Definir objetos compuestos de un conjunto de variables (o propiedades) y
funciones (o mtodos) asociadas.
Definir una estructura jerrquica, donde se heredan variables y mtodos de
padres a hijos.
Control de sucesos a travs de la estructura gerjrquica definida.
? Reusabilidad del cdigo.
? Fcil modificacin
? Facilidad de desarrollo.
? Fcil comprensin.
de clases
estructural
Object
Component Color
Button Label Container
Panel ScrollPane Window
Applet Dialog Frame
addMouseListener()
Graphics
addActionListener()
Canvas
Elementos Bsicos de Java (Jos Manuel Gutirrez, Santander)
Julio, 2002, slide 8
Las Clases: Atributos y Mtodos
? Una clase es la descripcin esttica de un conjunto de datos y de funciones que
operan sobre ellos "Animal":
Clase = Atributos + Mtodos (Constructores)
? Un objeto es la instanciacin dinmica de una clase en la memoria, con valores
concretos para los atributos de la clase "Liebre", "Tortuga".
Pueden instanciarse tantos objetos se deseen con una misma clase.
class Animal {
int miVelocidad;
String miNombre;
public Animal (int vel, String nom) {
miNombre= nom;
miVelocidad= vel;
};
public void saluda () {
System.out.println("Hola, soy "+miNombre);
}
public void corre (int metros) {;}
}
Atributos
Constructores
Mtodos
Elementos Bsicos de Java (Jos Manuel Gutirrez, Santander)
Julio, 2002, slide 9
Instanciando la clase Animal
? Los objetos se crean utilizando el comando new
reserva espacio en memoria a partir de la definicin de la clase,
llama al mtodo constructor de la clase.
class OOP {
public static void main (String arg []){
Animal laLiebre;
Animal laTortuga;
laLiebre= new Animal (5,"L");
laTortuga= new Animal (1,"T");
laTortuga.saluda();
laLiebre.saluda();
}
}
El sistema recupera automticamente la memoria ocupada
por objetos que no se utilizan garbage collection
class Animal {
int miVelocidad;
String miNombre;
public Animal (int velocidad, String nombre) {
miNombre= nombre;
miVelocidad= velocidad;
};
public void saluda () {
System.out.print ("Hola, soy "+miNombre);
}
}
laLiebre laTortuga L T
Elementos Bsicos de Java (Jos Manuel Gutirrez, Santander)
Julio, 2002, slide 10
Constructores de un Objeto
Los valores por defecto de las
propiedades se asignan al crear
el mismo, pero antes de llamar al
constructor.
a1.miVelocidad
10
a1.miNombre
perro
Si no se inicializan los atributos,
toman el valor 0 por defecto.
class TrivialApplication {
static public void main (String arg[]) {
a2 = new Animal ("perro");
};
}
En este ejemplo, uno de los
atributos toma el valor por
defecto y el otro es
modificado por el constructor.
class Animal {
int miVelocidad=1;
String miNombre="sin nombre";
public Animal (int vel, String nom) {
miNombre= nom;
miVelocidad= vel;
};
public Animal (String nom) {
miNombre= nom;
};
}
a2.miVelocidad
1
a2.miNombre
perro
a1 = new Animal(10,"perro");
Elementos Bsicos de Java (Jos Manuel Gutirrez, Santander)
Julio, 2002, slide 11
Atributos y Mtodos Estticos
Los atributos etiquetados static en
una clase son compartidos por todos los
objetos instanciados de la misma.
Si un mtodo slo modifica valores
estticos, puede declararse esttico.
? Definir mtodos estticos tiene algunas ventajas claras:
Pueden llamarse sin referencia al objeto, basta poner delante el nombre de
la clase (o nada, entendindose que es un mtodo de la clase actual)
Por ejemplo, el mtodo main es esttico y puede llamarse sin referencias.
class OOP {
public static void main (String arg []) {
Animal laLiebre;
Animal laTortuga;
laLiebre= new Animal (5,"L");
laLiebre.saluda();
Animal.cuantosAnimales();
laTortuga= new Animal (1,"T");
laTortuga.saluda();
Animal.cuantosAnimales();
}}
class Animal {
static int animales=0;
int miVelocidad;
String miNombre;
public Animal (int v, String n) {
animales++;
miNombre= n;
miVelocidad= v;
};
public Animal () {
animales++;
};
public static void cuantosAnimales (){
System.out.println("Hay "+animales+" animales");
}
}
Elementos Bsicos de Java (Jos Manuel Gutirrez, Santander)
Julio, 2002, slide 12
Subclases y Herencia
? Cuando se desea extender los atributos y mtodos de una clase dada, se
pueden heredar en una clase hija utilizando el comando extends
class Acuatico extends Animal {
boolean marino;
public Acuatico (int vel, String nom, boolean mar){
super(vel, nom);
marino=mar;
// los animales Acuaticos llevan prefijo "A_"
miNombre="A_"+miNombre;
}
public void saluda() {
super.saluda();
System.out.println("y soy acutico.");
}}
Nuevos
atributos
Nuevos
constructores
Sobrecarga
de
mtodos
class OOP3_subclases {
public static void main (String arg []) {
Animal laLiebre, laTortuga1;
Acuatico laTortuga2;
laLiebre= new Animal (5,"L");
laLiebre.saluda();
laTortuga2= new Acuatico (1,"T1",true);
laTortuga2.saluda();
laTortuga1= new Animal (1,"T2");
laTortuga1.saluda();
}}
Elementos Bsicos de Java (Jos Manuel Gutirrez, Santander)
Julio, 2002, slide 13
La Encapsulacin de los Datos
? Pretende proteger ciertos datos (atributos y mtodos) de una clase.
? Una clase presta ciertos servicios y el resto de clases no tienen por qu conocer
los detalles de cmo se realizan. Para ello, una clase consta de:
Una parte pblica, accesible por otras clases,
Una parte privada, accesible slo por los mtodos de la clase.
class ventana {
public int x1, y1; // esquina sup. izq.
public int altura, anchura;
}
class escritorio {
...
void desplaza (ventana v) {
v.x1=0; v.y1=0;
};
...
}
Si dejamos que un mtodo de la clase
escritorio modifique los atributos de un
objeto de la clase ventana, corremos el
riesgo de generar incoherencias con
otros atributos del objeto. Por ejemplo,
podra no actualizarse la informacin de
la esquina inferior derecha de la misma.
class ventana {
public int x1, y1;
public int altura, anchura;
// esquina inf. der.
private int x2;
private int y2;
}
Como regla general, los atributos de
una clase deben de ser protegidos.
?
Elementos Bsicos de Java (Jos Manuel Gutirrez, Santander)
Julio, 2002, slide 14
Niveles de Encapsulacin (proteccin)
private, slo tienen acceso los objetos de la clase dada.
private protected, se permite el acceso tambin a los objetos de sus
subclases, pero sin poder acceder a los valores de objetos de la clase madre.
protected, se permite el acceso a las subclases y clases del mismo paquete.
public, es accesible para todo el mundo.
El valor de proteccin por defecto es friendly y permite acceder a las clases del
mismo paquete.
Clase 1
private
private protected
protected
public
SubClase 1
Clase 2
Clase 3
Paquete 1
Paquete 2
Las protecciones que se pueden
establecer son (de ms fuerte a
ms dbil) :
Para ilustrar los distintos niveles de
proteccin consideramos una clase
prototipo, en un paquete dado, y vemos
cmo afectan los niveles de proteccin a
otra clase y a una subclase ambas en el
mismo paquete, y tambin a una clase
en otro paquete distinto.
Elementos Bsicos de Java (Jos Manuel Gutirrez, Santander)
Julio, 2002, slide 15
class Perro extends Animal implements saludar {
public void saluda(){
System.out.println("guau");
}
}
class Trucha extends Acuatico implements saludar {
public void saluda(){
System.out.println("glub glub");
}
}
Herencia Mltiple. Interfaces.
cmo corre un animal "Acutico"?
Ser_Vivo
Vegetal Animal
Terrestre Acuatico
nombre
velocidad
marino
corre()
Areo
saluda()
cmo saluda un "Vegetal"?
public interface correr
Ser_Vivo
Vegetal Animal
Terrestre Acuatico
nombre
velocidad
marino
Areo
public interface saludar{
public void saluda();
}
Una interfaz es una descripcin
de comportamiento, una
coleccin con nombre de
mtodos, que puede tambin
incluir constantes.
(relacin con clases abstractas)
mamfero
mamfero
Elementos Bsicos de Java (Jos Manuel Gutirrez, Santander)
Julio, 2002, slide 16
Ejemplo de Interface.
interface saludar{
public void saluda();
}
class Animal {
int miVelocidad=0;
String miNombre="sin nombre";
public Animal (String nom, int vel) {
miNombre= nom;
miVelocidad=vel;
};
public Animal (String nom) {
miNombre= nom;
};
public Animal () {;};
}
class Perro extends Animal implements saludar {
public Perro(String nom){
super(nom);
}
public void saluda(){
System.out.println("guau guau...");
}
}
class Acuatico extends Animal {
boolean marino;
public Acuatico (String nom, boolean mar){
super(nom);
marino=mar;
// los animales Acuaticos llevan prefijo "A_"
miNombre="A_"+miNombre;
}}
class Trucha extends Acuatico implements saludar {
public Trucha(String nom){
super(nom,false);
}
public void saluda(){
System.out.println("glub glub...");
}}
class OOP5_interfaces {
public static void main (String arg []) {
Animal gusano;
Trucha t;
Perro p;
t= new Trucha("T");
t.saluda();
p= new Perro("P");
p.saluda();
gusano= new Animal ("G");
//gusano.saluda();
}}
Elementos Bsicos de Java (Jos Manuel Gutirrez, Santander)
Julio, 2002, slide 17
Polimorfismo
El objeto laTortuga2 de la
clase Animal se puede
instanciar a cualquiera de las
subclases de Animal definidas,
(Acutico) facilitando mucho la
programacin.
? El polimorfismo es uno de los conceptos ms importantes de la programacin
orientada a objetos. Consiste en que un objeto de una clase se puede instanciar
como objeto de cualquiera de sus subclases.
Animal laLiebre;
Acuatico laTortuga1;
Animal laTortuga2;
Animal animal;
laLiebre= new Animal (5,"L");
laLiebre.saluda();
laTortuga1= new Acuatico(1,"T1",false);
laTortuga2= new Acuatico(1,"T2",true);
laTortuga1.saluda();
laTortuga2.saluda();
if (i sAcuat i co)
animal=new Acuatico();
else
animal=new Animal();
As, puedo definir un objeto
animal de tipo Animal y en
tiempo de ejecucin decidir si lo
inicializo como Animal (para
que salude como un animal) o
como Marino

También podría gustarte