-Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO...

21
-Informática II - 1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos y semántica Clase: que define la implementación de los métodos.

Transcript of -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO...

Page 1: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 1

Clases y objetos

La unidad fundamental de programación OO son las clases.

POO

Qué se va a hacer

Cómo se va a hacer

Conjunto de métodos y semántica

Clase: que define la implementación de los métodos.

Page 2: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 2

Clases y objetos

campos : representan el estado interno del objeto

Clase

métodos : representan el comportamiento del objeto

Page 3: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 3

Clases y objetosclass Punto{

private double x, y;public Punto (double z,double m) {

x = z;y = m;

}public void clear() {

x = 0;y = 0; }

public static void main (String [] args) {Punto p = new Punto (0,0);Punto q = new Punto (10,20);p.clear();System.out.println(j);

}}

Page 4: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 4

El método main

•En una aplicación Java, existe siempre una clase que controla la aplicación.

•Ejecutar una aplicación Java es ejecutar una clase. El sistema localiza el método main de esa clase y lo ejecuta.

•El método main debe ser public, static y void y acepta un solo argumento de tipo String [].

Page 5: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 5

Clases y objetos

Una clase crea un nombre de tipo en Java.

Vehiculo mi_auto;

La declaración no crea un objeto, únicamente declara una referencia a un objeto vehículo.

El objeto mi_auto no existe en la realidad, sólo existe una referencia mi_auto.

Page 6: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 6

Clases y objetos

de instancia

Campos:

estáticos o de clase

Campos de instancia: significa que cada objeto posee los campos de instancia con sus valores particulares.

Campos estáticos o de clase: sólo una instancia del campo es compartida por todos los objetos de una clase. Se declaran con static.

Page 7: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 7

Control de acceso y herencia

Todos los campos y métodos de una clase son siempre accesibles para el código de la propia clase. Para controlar el acceso desde otras clases y para controlar la herencia de las subclases, existen los modificadores de control de acceso:

Public: son accesibles en cualquier lugar en que sea accesible la clase y lo heredan las subclases.

Private: son accesibles sólo en la propia clase.

Protected: son accesibles para las subclases y heredados por ellas, y accesibles por código del mismo paquete.

Paquete: no llevan modificador de acceso y son accesibles y heredados por código del mismo paquete

Page 8: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 8

Creación de objetos

Punto mi_punto = new Punto (5, 7.3);

Cuando se crea un objeto con el operador new, se especifica el tipo de objeto que se desea crear y los posibles parámetros para su construcción.

Si no hay espacio de memoria suficiente, se ejecuta el garbage_collector. Si con la ejecución del recogedor de basura sigue sin haber espacio, el sistema lanza una excepción OutOfMemoryError.

Page 9: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 9

Constructores

Tiene el mismo nombre que la clase y sirve para darle al objeto en el momento de creación, un estado inicial correcto. Puede existir más de un constructor por clase.

Los constructores no tienen tipo devuelto, razón por la cual no se consideran métodos.

Los campos se pueden inicializar con un valor en el momento de declararlos. Los constructores se invocan después de haber asignado sus valores iniciales por defecto alas variables de instancia.

Page 10: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 10

Constructores

En un constructor se puede invocar a otro constructor de la propia clase, usando la invocación this().

Si el constructor que quiere invocar tiene parámetros, se los nombra al invocar a this(double x).

Los constructores sin parámetros se llaman constructores no-arg.

Si no se proporciona un constructor para una clase, el lenguaje proporciona un constructor no-arg, por defecto que no hace nada. El constructor por defecto es public si lo es la clase y no lo es en caso contrario.

Page 11: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 11

Constructores

•Algunas clases no tienen un estado inicial razonable.

•Proporcionar un estado inicial es conveniente y razonable.

•Construir un objeto es a veces una operación costosa, se requiere que los objetos tengan un estado inicial correcto (objeto con una tabla).

•Un constructor que no sea public impone restricciones en cuanto a quien puede crear objetos.

•Un constructor se puede marcar como protected y sólo tienen sentido para las subclases.

Page 12: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 12

Métodos

Los métodos contienen habitualmente código que comprende y manipula el estado de un objeto.

Los métodos se invocan como operaciones sobre los objetos a través de las referencias usando el operador .

Punto centro = new Punto (10, 10);

centro.clear ( );

cada método tiene un número determinado de parámetros. Cada parámetro tiene un tipo determinado, ya sea un tipo primitivo o un tipo de referencia. Tienen también un tipo devuelto (void si no devuelve ningún valor).

Page 13: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 13

Métodos

•Pasaje de parámetros por valor. Pero si pasa una referencia a un objeto, lo que se pasa por valor es esta referencia.

•Es decir si un método recibe como parámetro un objeto y ese método cambia el estado del objeto, se cambia ese objeto en todos los lugares del programa en que se haga referencia a él.

•El conjunto de los métodos públicos son la interface de la clase, y sólo a través de ellos se accede a los campos privados del objeto.

Para preservar el encapsulamiento y desacoplar el uso de

un objeto de su estructura interna, los métodos deben ser la

única vía de acceso a los campos.

Page 14: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 14

Referencia especial this y super

•this: hace referencia al propio objeto que ha invocado al método. Se usa en métodos no estáticos.

•super: se usa para acceder a campos anulados y a métodos de la superclase.

Page 15: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 15

Sobrecarga de métodos

Dos métodos pueden tener el mismo nombre pero deben diferir en su signatura, es decir, en el número o tipo de alguno de sus parámetros. Estos dos métodos se dice que están sobrecargados.

void rotar(float grados, int direccion)

void rotar(int rads)

void rotar(float grados)

Al tener distinto número de parámetros o alguno de sus parámetros de distinto tipo no le crea ambigüedades al compilador.

Page 16: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 16

Miembros estáticos

•Campos estáticos: hay sólo una variable que identifica ese campo, independientemente del número de objetos que haya de esa clase.

•Se inicializan antes de que se use ningún campo estático y antes de que se ejecute ningún método de la clase.

•Un método estático accede sólo a las variables estáticas y a los métodos estáticos de la clase.

•No existe la referencia this.

Page 17: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 17

Garbage collector

•Cuando no existe ninguna referencia a un objeto, el sistema puede reclamar el espacio que ese objeto ocupa en memoria, lo hace automáticamente a través del Garbage Collector (recogida de basura)

•El sistema sólo ejecuta el garbage collector si en realidad necesita espacio en memoria.

Page 18: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 18

El método finalize

Los métodos finalize se ejecutan siempre antes de que el espacio de memoria ocupado por un objeto sea reclamado.

Es importante implementarlos en los objetos que usan recursos externos, no Java, como ser archivos, una conexión de red, etc.

protected void finalize( ) throws Throwable {

super.finalize( );

}

Page 19: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 19

El método finalize

Invocando a finalize a través de super se asegura que las superclases sean correctamente finalizadas.

Al salir de una aplicación se ejecutan los métodos finalize de todos los objetos existentes.

Page 20: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 20

El método toString

Cuando un objeto posee un método toString(), que no recibe argumentos y retorna un String, que es una representación imprimible del objeto.

toString() se usa cuando el objeto debe mostrarse en pantalla.

Page 21: -Informática II -1 Clases y objetos La unidad fundamental de programación OO son las clases. POO Qué se va a hacer Cómo se va a hacer Conjunto de métodos.

-Informática II - 21

El método toString

String toString( ) {

String datos = “\nDatos personales : “ +

“\n Nombre : “ + this.nombre +

“\n Dirección :” + this.dire;

return datos;

}