Sei sulla pagina 1di 9

Clases Java: Clases y Objetos

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

Tema 3: Clases y objetos en Java. LPS 2005

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

estado del objeto comportamiento

Mtodos:
Funciones Constructores Bloques de inicializacin static Finalizador

Tema 3: Clases y objetos en Java. LPS 2005

Tema 3: Clases y objetos en Java. LPS 2005

Definicin de una clase


[Modificadores] class NombreClase [extends SuperClase] { [Modificadores] class NombreClase [extends SuperClase] { // definicin de los atributos de la clase // definicin de los atributos de la clase tipo1 identificador1; tipo1 identificador1; tipo2 identificador2; tipo2 identificador2; .. .. // definicin de los mtodos de la clase // definicin de los mtodos de la clase tipoDevuelto nombreMetodo1 (listaParametros) { tipoDevuelto nombreMetodo1 (listaParametros) { //instrucciones del mtodo1 //instrucciones del mtodo1 } } tipoDevuelto nombreMetodo2 (listaParametros) { tipoDevuelto nombreMetodo2 (listaParametros) { //instrucciones del mtodo2 //instrucciones del mtodo2 } } .. .. } }
Tema 3: Clases y objetos en Java. LPS 2005 5

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

class C extends superclase // la clase hereda de otra


Slo herencia simple (una sla superclase) Si no aparece extends la clase definida hereda (es una subclase) de un objeto general del sistema llamada Object
Tema 3: Clases y objetos en Java. LPS 2005 6

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

Variables, objetos y referencias


Una variable de un determinado tipo simple proporciona
Capacidad para almacenar un valor simple Un conjunto predifinido de operadores

Rectangulo
Tema 3: Clases y objetos en Java. LPS 2005 Tema 3: Clases y objetos en Java. LPS 2005

Variables, objetos y referencias


Un objeto de una determinada clase proporciona
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 9

Variables, objetos y referencias

int num = 5; Rectangulo rect;

num rect

5 null

Tema 3: Clases y objetos en Java. LPS 2005

10

Variables, objetos y referencias


La declaracin de tipos primitivos reserva memoria La declaracin de tipos no primitivos no reserva memoria. Los objetos declarados no son objetos, sino punteros a objetos. Antes de utilizar un objeto dentro del programa es necesario reservar el espacio necesario
Tema 3: Clases y objetos en Java. LPS 2005 11

Creacin de instancias (objetos)


Operador new
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

Creacin de instancias (objetos)


Clase Rectngulo Rectngulo e = new Rectngulo()

Creacin de instancias (objetos)


int num = 5; int num = 5; // crea una referencia // crea una referencia Rectangulo rect; Rectangulo rect; rect = new Rectangulo(); rect = new Rectangulo(); Rectangulo otroRect; Rectangulo otroRect; otroRect = rect; otroRect = rect; // otroRect se refiere al // otroRect se refiere al mismo mismo // rectangulo que rect // rectangulo que rect

num rect otroRect

e Referencia al objeto

Instancia de Rectngulo

x y ancho alto

Tema 3: Clases y objetos en Java. LPS 2005

13

Tema 3: Clases y objetos en Java. LPS 2005

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;

Mrs. Edna Smith 12 Acacia Avenue

Mr. J McDonald 14 High Street

Mrs. T Hughes 27 Fern Cresent

Employee e

Employee x copia la referencia

sendJunkMailTo

sendJunkMailTo

sendJunkMailTo

Tema 3: Clases y objetos en Java. LPS 2005

15

Tema 3: Clases y objetos en Java. LPS 2005

16

Creacin de instancias o ejemplares


Cuando se crea un objeto, las variables miembro (atributos) se inicializan al reservar memoria con los siguientes valores: byte, short, int long float double char boolean tipos de referencia 0 0L 0.0f 0.0d '\u0000' (null) false null

Acceso a los atributos de un objeto


Desde un objeto se puede acceder a los atributos o miembros con la siguiente sintaxis
referenciaObjeto.atributo;

Las variables locales a un mtodo se deben inicializar. stas no se inicializan automticamente.


Tema 3: Clases y objetos en Java. LPS 2005 17 Tema 3: Clases y objetos en Java. LPS 2005 18

Acceso a los atributos de un objeto


public class Rectangulo { public class Rectangulo { int x; int x; int y; int y; int ancho; int ancho; int alto; int alto; //faltan las funciones miembro //faltan las funciones miembro public static void main(String args[ ]) { public static void main(String args[ ]) { Rectangulo rect; Rectangulo rect; rect = new Rectangulo(); rect = new Rectangulo(); rect.x = 5; rect.x = 5; rect.y = 7; rect.y = 7; rect.ancho = 4; rect.ancho = 4; rect.alto = 3; rect.alto = 3; System.out.println( "x = " + rect.x + System.out.println( "x = " + rect.x + y = " + rect.y ); y = " + rect.y ); System.out.println( "ancho = " + rect.ancho System.out.println( "ancho = " + rect.ancho + Temaalto y= " en rect.alto ); } } 3: Clases " + rect.alto ); } } + alto =objetos+ Java.
LPS 2005 19

Declaracin de mtodos
Funciones declaradas en la clase y que determinan su comportamiento
tipoDevuelto nombreMetodo (listaParametros) { //instrucciones del mtodo }

Tema 3: Clases y objetos en Java. LPS 2005

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

Llamada a los mtodos


La invocacin a los mtodos desde una instancia se hace mediante el operador de acceso ( . )
referenciaObjeto.nombreMetodo(listaArgumentos);

Llamada a los mtodos


public class Rectangulo { public class Rectangulo { int x; .. int x; .. int calcularSuperficie(){ .... } int calcularSuperficie(){ .... } void mostrarValores(){.} void mostrarValores(){.} public static void main(String args[ ]) { public static void main(String args[ ]) { Rectangulo rect; Rectangulo rect; rect = new Rectangulo(); rect = new Rectangulo(); rect.x = 5; rect.y = 7; rect.ancho = 4; rect.x = 5; rect.y = 7; rect.ancho = 4; rect.alto = 3; rect.alto = 3; int area = rect.calcularSuperficie(); int area = rect.calcularSuperficie(); rect.mostrarValores(); rect.mostrarValores(); System.out.println( "Superficie: " + area ); System.out.println( "Superficie: " + area ); System.out.println( "x = " + rect.x + y = " + System.out.println( "x = " + rect.x + y = " + rect.y ); rect.y ); System.out.println( "ancho = " + rect.ancho + System.out.println( "ancho = " + rect.ancho + alto = " + rect.alto ); y Tema 3: ); } alto = " + rect.alto Clases } objetos en Java. LPS 2005 24 } }

Tema 3: Clases y objetos en Java. LPS 2005

23

Ocultacin de datos
pon()

Ocultacin de datos
mtodos pblicos

cont : int cima() rep : int array quita()

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.

Tema 3: Clases y objetos en Java. LPS 2005

29

Tema 3: Clases y objetos en Java. LPS 2005

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

Tema 3: Clases y objetos en Java. LPS 2005

31

Tema 3: Clases y objetos en Java. LPS 2005

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

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)

Se puede crear un objeto con distintos tipos de parmetros

Pueden llamar al constructor del padre


super(argumentos);
Debe ser la primera instruccin del constructor

o a otros constructores de la misma clase


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

El constructor por defecto


Existe para cualquier clase Permite crear una instancia de un objeto con el mtodo new Xxx(). La definicin de un constructor invalida al constructor por defecto.

37

Tema 3: Clases y objetos en Java. LPS 2005

38

Referencia a objeto this


Referencia especial que utilizada dentro de un mtodo de cualquier clase se refiere a la instancia actual
Permite parmetros con igual nombre que atributos Posibilita la llamada a otros constructores

Referencia a objeto this


class Rectangulo{ class Rectangulo{ int x; int x; .... .... int ancho; int ancho; int alto; int alto; // constructor // constructor Rectangulo(int x1, int y1, int w, int h){ Rectangulo(int x1, int y1, int w, int h){ x=x1; y=y1; ancho=w; alto=h; } x=x1; y=y1; ancho=w; alto=h; } // otro constructor polimorfico // otro constructor polimorfico Rectangulo(int ancho, int alto){ Rectangulo(int ancho, int alto){ x=0; y=0; x=0; y=0; this.ancho= ancho; this.ancho= ancho; this.alto= alto; } this.alto= alto; } ..... Tema 3: Clases y objetos en Java. ..... LPS 2005 40

Tema 3: Clases y objetos en Java. LPS 2005

39

Referencia a objeto this


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); rect.mostrarValores(); rect.mostrarValores(); Rectangulo nuevo; Rectangulo nuevo; nuevo = new Rectangulo(6, 9); nuevo = new Rectangulo(6, 9); rect.mostrarValores(); rect.mostrarValores(); . . } } } }
Tema 3: Clases y objetos en Java. LPS 2005

Variables (static) de la clase


Pertenece a todas las instancias de la clase. Puede estar como pblica o como privada. Si est marcada como pblica, se puede acceder desde fuera de la clase, sin necesidad de una instancia de la clase.
Tema 3: Clases y objetos en Java. LPS 2005 42

41

Variables (static) de la clase


public class Count { private int serialNumber; private static int counter = 0; public Count () { counter++; serialNumber = counter; } } Se le suele llamar variable clase.
Tema 3: Clases y objetos en Java. LPS 2005 43

Variables (static) de la clase


Desde fuera de la clase se puede acceder a una variable static si no se marca como private (que es lo habitual). Las variables de tipo static son, en algunos aspectos, parecidas a las variables globales de algunos lenguajes. Las instancias de la clase comparten la variable static
Tema 3: Clases y objetos en Java. LPS 2005 44

Mtodos (static) de la clase


Un mtodo static se puede llamar sin necesidad de una instancia de la clase a la que pertenecen. Con los mtodos estticos no se puede utilizar el puntero this, ya que no se necesitan instancias.

Mtodos (static) de la clase


public class GeneralFunction { public static int add(int x, int y) { return x + y; } } public class UseGeneral { public void mtodo () { int a = 9; int b = 10; int c = GeneralFunction.add(a, b); System.out.println ("add devuelve: " + c"; } }
Tema 3: Clases y objetos en Java. LPS 2005 46

Tema 3: Clases y objetos en Java. LPS 2005

45

Mtodos (static) de la clase


Los mtodos estticos, slo pueden acceder a sus propios argumentos y a las variables estticas. El mtodo main() es esttico, porque la aplicacin tiene que acceder a l para ejecutarse, antes de que realice cualquier instancia. Los mtodos estticos no se pueden sobreescribir
Tema 3: Clases y objetos en Java. LPS 2005 47

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

La palabra clase final


Si se aplica esta palabra a una clase, esa clase no puede tener subclases. Por ejemplo, la clase java.lang.String, es una clase final y se ha definido as por motivos de seguridad.
Tema 3: Clases y objetos en Java. LPS 2005 51

La palabra clase final


Los mtodos marcados con esta palabra no se pueden sobreescribir. Los mtodos marcados como estticos o privados son finales automticamente. Si una variable se marca con la palabra reservada final, se convierte en una constante. Si se intenta cambiar el valor de cualquier variable final,se produce un error. en Java. Tema 3: Clases y objetos
LPS 2005 52

Potrebbero piacerti anche