Está en la página 1de 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

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

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 class NombreClase NombreClase [ [ extends SuperClase] SuperClase] { { [Modificadores] extends // definicin definicin de de los los atributos atributos de de la la clase clase // tipo1 identificador1; identificador1; tipo1 tipo2 identificador2; identificador2; tipo2 .. .. // definicin definicin de de los los mtodos mtodos de de la la clase clase // tipoDevuelto nombreMetodo1 nombreMetodo1 (listaParametros) (listaParametros) { { tipoDevuelto //instrucciones del del mtodo1 mtodo1 //instrucciones } } tipoDevuelto nombreMetodo2 nombreMetodo2 (listaParametros) (listaParametros) { { tipoDevuelto //instrucciones del mtodo2 mtodo2 //instrucciones del } } .. .. } }
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 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

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

Variables, objetos y referencias

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

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 num = = 5; 5; int // crea crea una una referencia referencia // Rectangulo rect; rect; Rectangulo rect = = new new Rectangulo(); Rectangulo(); rect Rectangulo otroRect; otroRect; Rectangulo otroRect = rect; otroRect = rect; // otroRect otroRect se se refiere refiere al al // mismo mismo // rectangulo rectangulo que que rect 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 class Rectangulo Rectangulo { { public int x; x; int int y; y; int int ancho; ancho; int int alto; alto; int //faltan las funciones funciones miembro miembro //faltan las public static void void main(String main(String args[ args[ ]) ]) { { public static Rectangulo rect; rect; Rectangulo rect = = new new Rectangulo(); Rectangulo(); rect rect.x = = 5; 5; rect.x rect.y = = 7; 7; rect.y rect.ancho = = 4; 4; rect.ancho rect.alto = 3; 3; rect.alto = System.out.println( "x "x = =" "+ + rect.x rect.x + + System.out.println( y= =" "+ + rect.y rect.y ); ); y System.out.println( "ancho "ancho = =" "+ + rect.ancho rect.ancho System.out.println( + alto alto "+ + Java. rect.alto ); ); } }} } Tema 3: Clases = y= objetos en + " rect.alto
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 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

Llamada a los mtodos

Llamada a los mtodos


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

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

referenciaObjeto.nombreMetodo(listaArgumentos);

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; // 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.

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

Tema 3: Clases y objetos en Java. LPS 2005

31

Tema 3: Clases y objetos en Java. LPS 2005

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

Tema 3: Clases y objetos en Java. LPS 2005

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

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{ Rectangulo{ class int x; x; int .... .... int ancho; ancho; int int alto; alto; int // constructor constructor // Rectangulo(int x1, x1, int int y1, y1, int int w, w, int int h){ h){ Rectangulo(int x=x1; y=y1; ancho=w; ancho=w; alto=h; alto=h; } x=x1; y=y1; } // otro otro constructor constructor polimorfico polimorfico // Rectangulo(int ancho, ancho, int int alto){ alto){ Rectangulo(int x=0; y=0; x=0; y=0; this.ancho= ancho; ancho; this.ancho= this.alto= alto; alto; } this.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 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 rect.mostrarValores(); rect.mostrarValores(); Rectangulo nuevo; nuevo; Rectangulo nuevo = = new new Rectangulo(6, Rectangulo(6, 9); 9); nuevo 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 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

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. Tema 3: Clases y objetos en Java.
LPS 2005 52

También podría gustarte