Вы находитесь на странице: 1из 21

Clases y objetos

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

Conjunto de métodos y
Que se va a hacer semántica
POO
Clase: que define la
Como se va a hacer implementación de los
métodos.

-Informática II - 1
Clases y objetos

campos : representan el estado interno del objeto

Clase

métodos : representan el comportamiento del objeto

-Informática II - 2
Clases y objetos
class 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);
-Informática II - 3
}
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 [].

-Informática II - 4
Clases y objetos

Una clase crea un nombre de tipo en Java.

Vehiculo mi_auto;

La declaración no crea un objeto, unicamente declara una


referencia a un objeto vehículo.
El objeto mi_auto no existe en la realidad, solo existe una
referencia mi_auto.
-Informática II - 5
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.
-Informática II - 6
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
-Informática II - 7
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.

-Informática II - 8
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

-Informática II - 9
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.

-Informática II - 10
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.

-Informática II - 11
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).
-Informática II - 12
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.
-Informática II - 13
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

-Informática II - 14
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.
-Informática II - 15
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.

-Informática II - 16
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.

-Informática II - 17
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( );
}

-Informática II - 18
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.

-Informática II - 19
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.

-Informática II - 20
El método toString

String toString( ) {
String datos = “\nDatos personales : “ +
“\n Nombre : “ + this.nombre +
“\n Dirección :” + this.dire;
return datos;
}

-Informática II - 21