Sie sind auf Seite 1von 40

CLASE 2

Propiedades de los objetos


Encapsulamiento.Ocultamiento de la
Informacin
Modos de acceso
Mtodos como control de acceso
Acceso a los atributos privados.
Cul es el problema del atributo
pblico?
Control de acceso por clase
Mtodos getXXX() y setXXX()
Sobrecargando mtodos
Miembros static (atributos, mtodos)

Constantes
Constantes objetos (no primitivos)
Constantes cambiar el estado del
objeto referido
Colector de basura y finalize
Finalize
La relacin de asociacin: agregacin y
composicin
Diferencias entre agregacin y
composicin
Introduccin a los Requerimientos.
Introduccin a las Inspecciones,
recorridos de prueba, checklist.

Propiedades de los objetos


Abstraccin

Significa extraer las propiedades esenciales de un objeto que lo distinguen


de los dems tipos de objetos y proporciona fronteras conceptuales definidas
respecto al punto de vista del observador.

Encapsulamiento

Herencia

Es la propiedad que permite ocultar al mundo exterior la representacin


interna del objeto. Esto quiere decir que el objeto puede ser utilizado, pero
los datos esenciales del mismo no son conocidos fuera de l.

Es la propiedad que permite a los objetos construirse a partir de otros objetos. La clase
base contiene todas las caractersticas comunes. Las sub-clases contienen las
caractersticas de la clase base ms las caractersticas particulares de la sub-clase. Si la
sub-clase hereda caractersticas de una clase base, se trata de herencia simple. Si hereda
de dos o mas clases base, herencia multiple.

Polimorfismo

Literalmente significa "cualidad de tener mas de una forma". En poo, se


refiere al hecho que una misma operacin puede tener diferente
comportamiento en diferentes objetos. En otras palabras, diferentes objetos
reaccionan al mismo mensaje de modo diferente.

Encapsulamiento.Ocultamiento de la Informacin
Objeto
Caja de Ahorro
Variables de Instancia

saldo
600

titular

Mtodos

Mensajes

depositar(unMonto)

depositar(unMonto)

extraer(unMonto)

extraer(unMonto)

saldo()

saldo()

titular()

Esconder los
detalles y mostrar
lo relevante

titular()
titular(unaPersona)

titular(unaPersona)

Distingue el cmo hacer del "qu hacer"


La especificacin es visible al usuario, mientras que la implementacin se le oculta.
3

Modos de acceso
Es la forma de representar el encapsulamiento
Pblico (+): Atributos o Mtodos que son accesibles
fuera de la clase. Pueden ser llamados por cualquier clase,
aun si no est relacionada con ella.

Privado (-): Atributos o Mtodos que solo son accesibles


dentro de la implementacin de la clase.

Protegido (#): Atributos o Mtodos que son accesibles


para la propia clase y sus clases hijas (subclases). Luego se
ampliar la definicin.

Los atributos y los mtodos que son pblicos constituyen


lo que el mundo exterior conoce de la misma.
Normalmente lo usual es que se oculten los atributos de la
clase y solo sean visibles los mtodos, incluyendo
entonces algunos mtodos de consulta para ver los
valores de los atributos. El mtodo constructor (New)
siempre es pblico.

Modos de acceso

Mtodos como control de acceso


System.out.println(mi saldo es +
unaCajaDeAhorro.saldo)

Cmo accedo a los atributos privados ?

Por qu no hacerlos directamente pblicos?

get's y set's

Acceso a los atributos privados


public class CajaDeAhorro
{
private double saldo;
private Persona titular;
public double getSaldo()
{
return this.saldo;
}
public Persona getTitular()
{
return this.titular;
}

public void setTitular(Persona titular)


{
this.titular = titular;
}

Se utilizan los
mtodos pblicos
como mecanismo
para acceder a los
atributos privados.

por
porqu
qu
hacerlo
hacerlo
asi
asi??...
??...
8

Cul es el problema del atributo pblico ?


Qu problema surge si permitimos que
el atributo edad sea pblico ?
unaPersona.edad =

-7;

Cmo evito el error ?

La responsabilidad de validar el ingreso de datos corresponde a la propia clase, de


otra forma, esa validacin se vera trasladada a todo el cdigo en donde se ingrese la
edad de la persona.
9

Mtodos como control de acceso

De esta forma, la validacin queda bajo la


responsabilidad de la propia clase

10

El control de alceso se lealiza pol clase


y no pol objeto...
# @ !! *

Ver libro de Gosling, captulo 2

11

Mtodos getXXX() y setXXX()


Convenio para acceder a los atributos de
visibilidad privada

12

Sobrecargando mtodos
Signatura o firma: consiste del nombre y parmetros (nmero y tipos). Es toda la
cabecera excepto el retorno.

Sobrecarga

Dos o ms mtodos pueden tener el mismo nombre si tienen


diferente nmero o tipo de parmetros, y por lo tanto diferente
signatura. El nombre del mtodo tiene ms de un significado.

Cuando se invoca el mtodo, el compilador compara el nmero y tipo de parmetros


para encontrar el mtodo que mejor se ajustan entre las signaturas disponibles.
No se puede diferenciar un mtodo de otro solamente si se diferencian en el tipo
de retorno. O sea, no se puede sobrecargar solamente modificando el retorno.
Los constructores tambin pueden sobrecargarse
13

Sobrecarga de mtodos

14

Sobrecarga de
Constructores

15

Miembros static (atributos, mtodos)


Atributos estticos
Son atributos compartidos por todos los objetos de una clase.
Los atributos especficos de clase se obtienen declarndolos como static.
No se necesita crear un objeto para poder acceder a estos atributos. Se puede
acceder invocando el nombre de la clase seguida del operador de seleccin (.) y
luego el nombre del campo.
Mtodos estticos
Un mtodo esttico se invoca en nombre de una clase completa, no sobre una
instancia.
Puede acceder slo a campos estticos u otros mtodos estticos de la clase.
Dentro de un mtodo esttico no hay referencia a this (no existe el objeto).

16

Ejemplo
Supongamos que estamos
desarrollando un sistema para un
comercio, en el que tenemos

clientes, productos y realizamos la


facturacin correspondiente a la
compra de productos que hace un
cliente.

17

EJEMPLO

18

19

20

21

Constantes
Las constantes en JAVA se definen usando la palabra clave final. Una vez que un
atributo declarado final es inicializado, no es posible cambiar su valor.
Cuando estamos definiendo atributos final tenemos dos formas de inicializarlas:
En el constructor

En la declaracin

22

Constantes
Qu sucede si modificamos
el atributo final iva?

Qu sucede si el atributo final en lugar de ser de tipo primitivo es un objeto?


23

Constantes objetos (no primitivos)


No puedo cambiar el contenido de la variable de tipo final !!
Se producir un error en compilacin si lo intentamos.

24

Constantes cambiar el estado del objeto referido


Puedo modificar los datos del objeto productor?
puedo cambiarle el valor del atributo nombre?

Si!!!. Los valores de los atributos del objeto productor pueden cambiarse.25

Colector de basura y finalize


Garbage Collection Destruccin de objetos

El manejo manual de memoria es una tarea compleja y propensa a errores.


Cuando no hay ninguna referencia hacia un objeto, este se marca para ser recogido
por el recolector
Los lenguajes OO usualmente incluyen un mecanismo llamado Garbage Collection.

Detecta los objetos que ya nadie conoce y libera la memoria que ocupaban.

Es automtico.

Es seguro.

Es transparente (corre en background).


Algunas desventajas

No puede utilizarse en sistemas de tiempo real.

Los primeros garbage collectors tenan un overhead importante.


26

Finalize
El mtodo finalize se llama cuando va a ser liberada la
memoria (que ocupa el objeto) por el recolector de
basura (garbage collector).
Normalmente, no es necesario redefinir este mtodo en
las clases, solamente en contados casos especiales.
Por ejemplo, si una clase mantiene un recurso que no
es de Java como un descriptor de archivo o un tipo de
letra del sistema de ventanas, o cuando se han abierto
varios archivos durante la vida de un objeto, y se desea
que los archivos estn cerrados cuando dicho objeto
desaparece, entonces sera acertado el utilizar la
finalizacin para asegurar que los recursos se liberan.
Es similar a los destructores de C++.
27

Finalize
class CualquierClase
{ ...
protected void finalize() trows Throwable
{
super.finalize();
//cdigo que libera recursos externos
}
}
La primera sentencia que contenga la redefinicin de finalize ha de ser una llamada a la
funcin del mismo nombre de la clase base, y a continuacin le aadimos cierta
funcionalidad, habitualmente, la liberacin de recursos, cerrar un archivo, etc.
Entonces: void objeto.finalize() es llamado por el recolector de basura antes de
eliminar el objeto. Esta implementacin no hace nada, debe serprogramador el que
sobreescriba este mtodo en caso de que quiera realizar algo en especial antes de
eliminar el objeto de la memoria.
Se
Seprofundizar
profundizarms
msadelante
adelante

28

La relacin de asociacin: agregacin y composicin


Relacin de Agregacin
La agregacin es un tipo de asociacin que indica
que una clase es parte de otra clase (composicin
dbil).
Los componentes pueden ser compartidos por varios
compuestos (de la misma asociacin de agregacin
o de varias asociaciones de agregacin distintas). La
destruccin del compuesto no conlleva la destruccin
de los componentes. Habitualmente se da con mayor
frecuencia que la composicin.
La agregacin se representa en UML mediante un
diamante de color blanco colocado en el extremo en
el que est la clase que representa el todo.

Empresa

Cliente

Tenemos una clase Empresa.


Tenemos una clase Cliente.
Una empresa agrupa a varios clientes.
29

La relacin de asociacin: agregacin y composicin


Relacin de Composicin
Composicin es una forma fuerte de asociacin donde la vida de la
clase contenida debe coincidir con la vida de la clase contenedor.
Los componentes constituyen una parte del objeto compuesto.

Empresa

De esta forma, los componentes no pueden ser compartidos por


varios objetos compuestos. La supresin del objeto compuesto
conlleva la supresin de los componentes.
El smbolo de composicin es un diamante de color negro
colocado en el extremo en el que est la clase que representa el
todo (Compuesto).

Empleado

Tenemos una clase Empresa.


Un objeto Empresa est a su vez compuesto por uno o varios objetos del tipo empleado.
El tiempo de vida de los objetos Empleado depende del tiempo de vida de Empresa, ya que si no
existe una Empresa no pueden existir sus empleados.
30

Diferencias entre agregacin y composicin

31

Asociacin, Agregacin,Composicin y Dependencia


Postulacin

Categora

Persona

Domicilio

Sucursal
32

Relacin de Composicin
Persona

Domicilio

La clase Persona tiene una relacin de composicin con la clase


Domicilio.
Conceptualmente esto significa que los domicilios son una parte
inseparable de la persona, por lo que si no existiera una persona
entonces el domicilio de la misma debera desaparecer.
Es una relacin de composicin fuerte.
33

Relacin de Agregacin
Categora

Persona

La clase Persona tiene una relacin de Agregacin con Categora.


Conceptualmente esto significa que las categoras existen
independientemente de la persona que la tenga asignada. En el
modelo conceptual esto se corresponde con un enunciado como
"una persona puede tener una categora pero una categora puede
estar presente en muchas personas".
34

Relacin de Dependencia
Postulacin

Persona

La clase Persona tiene una relacin de Dependencia


con Postulacin.
Conceptualmente esto significa que la Postulacin
es un objeto que la Persona utiliza para algn fin,
dentro de alguna operacin que ella realice (por
ejemplo Postularse a un cargo). Pero una Persona
no tiene en su interior una Postulacin, sino que solo
lo utiliza para realizar ciertas operaciones.
Por ejemplo, un mtodo de Persona que cree y
retorne un objeto de tipo Postulacin.
35

Relacin de Asociacin
Persona

Sucursal

La clase Persona tiene una relacin de Asociacin con


Sucursal.
Conceptualmente la asociacin en un diagrama de clases
implica transitividad y bidireccin de clases. Por ejemplo una
persona tiene como atributo interno a una Sucursal, pero (y
aqu est la diferencia) una Sucursal tambin tiene un
atributo de tipo Persona; la cardinalidad de la asociacin
indicar si Sucursal tiene una o muchas instancias de
Persona, con lo cual en realidad el atributo de Sucursal
podra ser una Lista de Personas.
Otra caracterstica fundamental es que la vida de las
instancias de ambas clases no dependen una de la otra.
36

Bloques de Inicializacin
Se utilizan para realizar inicializaciones ms
complejas. Es un bloque de sentencias que aparece
dentro de la declaracin de la clase y fuera de la
declaracin de cualquier miembro o constructor, y
que inicializa los campos del objeto.
Se utilizan en inicializaciones no triviales, cuando no
se necesitan parmetros de construccin y hay una
razn para no proporcionar un constructor sin
37
argumentos.

Bloques de Inicializacin

38

Bloques de Inicializacin Esttico


Los campos estticos de una clase pueden tener
inicializadores. Pero adems se puede realizar
una inicializacin esttica ms compleja utilizando
un bloque de inicializacin esttica.
Son similares a los anteriores, pero slo pueden
referirse a miembros estticos de la clase.
Por ejemplo, creacin de un array esttico.
39

Bloques de Inicializacin Esttico

40

Das könnte Ihnen auch gefallen