Академический Документы
Профессиональный Документы
Культура Документы
La unidad fundamental de programacin en Java es la clase Un programa Java est formado por un conjunto de clases Una clase es una plantilla que describe un conjunto de objetos con atributos y comportamiento similares Un programa Java en ejecucin crea y manipula (mediante llamadas a mtodos) objetos concretos (ejemplares o instancias)
1 Tema 3: Clases y objetos en Java. LPS 2005 2
Clases
Cada objeto es un ejemplar de una clase
Cuando se invoca un mtodo de un objeto, se mira en el cdigo de su clase las acciones a ejecutar Un objeto puede usar otros para realizar su trabajo
Clases
Una definicin de clase comprende:
Cabecera Campos o atributos:
Variables Constantes
Mtodos:
Funciones Constructores Bloques de inicializacin static Finalizador
Modificadores de clase
Modificadores:
public class NombreClase paquete // visible fuera del
Normalmente la clase se almacena en un fichero NombreClase.java En un fichero .java puede haber como mucho una clase public
Modificadores de clase
public class Rectangulo{ public class Rectangulo{ int x; int x; int y; int y; int ancho; int ancho; int alto; int alto; // faltan los mtodos de Rectngulo // faltan los mtodos de Rectngulo } } Object
Rectangulo
Tema 3: Clases y objetos en Java. LPS 2005 Tema 3: Clases y objetos en Java. LPS 2005
num rect
5 null
10
12
e Referencia al objeto
Instancia de Rectngulo
x y ancho alto
13
14
Asignacin
Por valor copia int i =10; int j =i; int i 10 int j 10
Objetos
Podemos instanciar varios objetos de una clase Los mtodos disponibles son los mismos
getName
setName
getName
setName
getName
setName
Por Referencia
Employee e = new Employee() Employee x = e;
Employee e
sendJunkMailTo
sendJunkMailTo
sendJunkMailTo
15
16
Declaracin de mtodos
Funciones declaradas en la clase y que determinan su comportamiento
tipoDevuelto nombreMetodo (listaParametros) { //instrucciones del mtodo }
20
// calcula la superficie y la devuelve como un // calcula la superficie y la devuelve como un nmero entero nmero entero Sintaxis int calcularSuperficie(){ int calcularSuperficie(){ int area; int area; area = ancho * alto; area = ancho * alto; return area; return area; } } // muestra los valores pero no devuelve nada // muestra los valores pero no devuelve nada void mostrarValores(){ void mostrarValores(){ System.out.println( "x = " + x + " y = " + y ); System.out.println( "x = " + x + " y = " + y ); System.out.println( "ancho = " + ancho + " alto System.out.println( "ancho = " + ancho + " alto = " + alto ); = " + alto ); } }
Tema 3: Clases y objetos en Java. LPS 2005 21
Declaracin de mtodos
Parmetros
El lenguaje Java slo pasa los argumentos de tipos bsicos por valor. Cuando se pasa un objeto instanciado como argumento a un mtodo, el valor del argumento es el puntero al objeto. Los contenidos del objeto se pueden cambiar dentro del mtodo al que se ha llamado (los objetos se pasan por referencia), pero el puntero no se puede cambiar.
Tema 3: Clases y objetos en Java. LPS 2005 22
23
Ocultacin de datos
pon()
Ocultacin de datos
mtodos pblicos
La palabra reservada private permite una accesibilidad total desde cualquier mtodo de la clase, pero no desde fuera de esta.
mtodos privados
esVacio()
Tema 3: Clases y objetos en Java. LPS 2005 25 Tema 3: Clases y objetos en Java. LPS 2005 26
Ocultacin de datos
public class Date { private int day, month, year; public void tomorrow () { this.day = this.day + 1; }//tomorrow }//Date public class DataUser { public static void main (String args[]){ Date mydate = new Date(); mydate.day = 21; //Incorrecto Tema 3: Clases y objetos en Java. } LPS 2005 }
Ocultacin de datos
Como los datos son inaccesibles, la nica manera de leer o escribirlos es a travs de los mtodos de la clase. Esto proporciona consistencia y calidad. Supongamos una clase que permite acceso libre: MyDate d = new MyDate(); d.day = 32; // da no valido d.month = 2; d.day = 30; // posible pero incorrecto d.month = d.month +1;y // no se controla Tema 3: Clases objetos en Java.
LPS 2005
27
28
Ocultacin de datos
Regla: definir datos privados y mtodos accesores y modificadores pblicos
Encapsulacin
Ocultar los detalles de implementacin de la clase. Fuerza al usuario a utilizar una interfaz para acceder a los datos. Hace que el cdigo sea ms fcil de mantener.
29
30
Acceso a clases
public protected package private
Sobrecarga de mtodos
Se puede utilizar: public void print(int i) public void print(float i) public void print(String i) La lista de argumentos tiene que ser diferente. El tipo que devuelve puede ser diferente.
Al menos una clase o interface de una Al menos una clase o interface de una unidad de compilacin (package) debe ser unidad de compilacin (package) debe ser public public
31
32
Constructores
Mtodo que inicializa el objeto en su creacin Se llama automticamente cuando se crea un objeto Su nombre es igual que el de la clase y no tiene tipo de retorno Java proporciona un constructor sin parmetros por defecto que deja de estar disponible cuando se aade algn constructor
Constructores
public class Rectangulo{ public class Rectangulo{ int x; int x; .... .... // constructor // constructor public Rectangulo(int x1, int y1, int public Rectangulo(int x1, int y1, int w, int h){ w, int h){ x=x1; x=x1; y=y1; y=y1; ancho=w; ancho=w; alto=h; } alto=h; } ..... .....
Tema 3: Clases y objetos en Java. LPS 2005
33
34
Constructores
public static void main(String args[ ]) { public static void main(String args[ ]) { Rectangulo rect; Rectangulo rect; rect = new Rectangulo(5, 7, 4, 3); rect = new Rectangulo(5, 7, 4, 3); int area=rect.calcularSuperficie(); int area=rect.calcularSuperficie(); rect.mostrarValores(); rect.mostrarValores(); System.out.println( "Superficie: " System.out.println( "Superficie: " + area ); + area ); . . } } } }
Tema 3: Clases y objetos en Java. LPS 2005
Constructores
Pueden sobrecargarse
Una clase puede tener ms de un constructor
Si no se declara ninguno se hereda el de la superclase (o el de Object)
35
Constructores
public class Empleado { private String nombre; private int salario; public Empleado(String n, int s){ nombre = n; salario = s; } public Empleado(String n){ this (n,0); } public Empleado( ){ this ("Desconocido"); } Tema 3: Clases y objetos en Java. } LPS 2005
37
38
39
41
45
Inicializadores estticos
Bloques de inicializacin esttica Una clase puede tener cdigo esttico que no exista dentro del cuerpo de un mtodo. El bloque esttico se ejecuta slo una vez, cuando se carga la clase. Los diferentes bloques dentro de una misma clase, se ejecutan en el orden en que aparecen.
Tema 3: Clases y objetos en Java. LPS 2005 48
Inicializadores estticos
class Universidad { private static Vector profesores = new Vector(); static { profesores.addElement("Luis"); profesores.addElement(Balta"); profesores.addElement(Antonio"); } }
Inicializadores estticos
public class StaticInitDemo { static int i = 5; static { System.out.println ("Static code i = "+i++); } } public class Test { public static void main (String args []){ System.out.println ("Main code: i =" + StaticInitDemo.i); } } imprimir: Static code: i = 5 Main code: i =Tema 3: Clases y objetos en Java. 6
LPS 2005 50
Puede servir para inicializar algunas variables de clase Tema 3: Clases y objetos en Java.
LPS 2005 49