Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
Clases
Una definicin de clase comprende:
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
Mtodos:
Funciones Constructores Bloques de inicializacin static Finalizador
Modificadores de clase
Modificadores:
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 class Rectangulo{ Rectangulo{ public int x; x; int int y; y; int int ancho; ancho; int int alto; alto; int // faltan faltan los los mtodos mtodos de de Rectngulo Rectngulo // } } Object
Rectangulo
Tema 3: Clases y objetos en Java. LPS 2005 Tema 3: Clases y objetos en Java. LPS 2005
Capacidad para almacenar diversos valores (atributos) Define su propio conjunto de mtodos para operar sobre las instancias o ejemplares de esa clase Cuando se declara un objeto de una clase se crea una referencia a una instancia de dicha clase
Incialmente toma el valor null porque no existe objeto al que referirse No son punteros con los que se pueda trabajar directamente
Tema 3: Clases y objetos en Java. LPS 2005
num rect
5 null
10
Crea una instancia o ejemplar de la clase indicada y devuelve una referencia a dicho objeto Se reserva espacio de memoria para los datos del objeto
Un ejemplar es una copia individual de la plantilla de la clase que tiene su propio conjunto de datos
Tema 3: Clases y objetos en Java. LPS 2005
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 calcula la la superficie superficie y y la la devuelve devuelve como como un un // nmero entero entero nmero Sintaxis int calcularSuperficie(){ calcularSuperficie(){ int int area; area; int area = = ancho ancho * * alto; alto; area return area; area; return } } // muestra muestra los los valores valores pero pero no no devuelve devuelve nada nada // void mostrarValores(){ mostrarValores(){ void System.out.println( "x "x = =" "+ +x x+ +" "y y= =" "+ +y y ); ); System.out.println( System.out.println( "ancho "ancho = =" "+ + ancho ancho + +" " alto alto System.out.println( =" "+ + 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
La invocacin a los mtodos desde una instancia se hace mediante el operador de acceso ( . )
referenciaObjeto.nombreMetodo(listaArgumentos);
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; // no se controla Tema 3: Clases y 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 Al menos menos una una clase clase o o interface interface de de una una unidad unidad de de compilacin compilacin (package) (package) debe debe ser ser public public
31
32
Constructores
Constructores
public class class Rectangulo{ Rectangulo{ public int x; x; int .... .... // constructor constructor // public Rectangulo(int Rectangulo(int x1, x1, int int y1, y1, int int public w, int int h){ h){ w, 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
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
33
34
Constructores
public static static void void main(String main(String args[ args[ ]) ]) { { public Rectangulo rect; rect; Rectangulo rect = = new new Rectangulo(5, Rectangulo(5, 7, 7, 4, 4, 3); 3); rect int area=rect.calcularSuperficie(); area=rect.calcularSuperficie(); int rect.mostrarValores(); rect.mostrarValores(); System.out.println( "Superficie: "Superficie: " " System.out.println( + area area ); ); + . . } } } }
Tema 3: Clases y objetos en Java. LPS 2005
Constructores
Pueden sobrecargarse
super(argumentos);
Debe ser la primera instruccin del constructor
this(argumentosPorDefecto);
Tema 3: Clases y objetos en Java. LPS 2005 36
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 6 3: Clases y objetos en Java.
LPS 2005 50
Puede servir para inicializar algunas variables de clase Tema 3: Clases y objetos en Java.
LPS 2005 49