Vous êtes sur la page 1sur 18

1

Relaciones entre clases


Humberto Cervantes Maceda
Alfonso Martnez Martnez
Abril 2005
2
Relaciones entre clases
Dependencia
Generalizacin
Asociacin
Realizacin
3
Relaciones entre clases
Dependencia: es una relacin de uso
en donde los cambios en la
especificacin de una clase, pueden
afectar a otra clase ue la usa

Ventana
# tamao: integer
+ configurar()
+ abrir()
+ cerrar()
+ mover()
+ mostrar()
+ manejarEvento()
Evento
Dependencia
!
Relacin de dependencia
De la prctica No. 1:
5
Relacin de dependencia
De la prctica No. 1:
package mx.uam.cursojava.practica1;
public class Principal {
public static void main(String [] argc)
{
Principal p ne! Principal();
p.reali"aPrueba#rdenado(1$$$$);
%
&' (elaci)n de dependencia de la class principal *acia +rreglo ,
-ronometro '&
public void reali"aPrueba#rdenado(int elems)
{
+rreglo a ne! +rreglo(elems);
-ronometro cronne! -ronometro();

cron.arrancar();
a.ordena.urbuja();
cron.detener()
cron.mostrar/iempo();
%
%
&& los objetos a , cron
&& existen solo durante
&& la ejecuci)n de0
&& p.reali"aPrueba#rdenado(1$$$$)
"
Relaciones entre clases
Generalizacin: #s una relacin entre una
clase $eneral %superclase& ' otra especfica
%subclase&( )eneralizacin*#specializacin
Ventana
# tamao: integer
+ configurar()
+ abrir()
+ cerrar()
+ mover()
+ mostrar()
+ manejarEvento()
Consola CajaDialogo
Generalizacin
(herencia)
+
Relacin de generalizacin
Herencia simple: una subclase tiene
eactamente un padre
Herencia m!ltiple: una subclase hereda
de "arios padres# sin traslape de
estructura o comportamiento
$emnticamente la relacin se puede
"eri%icar comprobando si la subclase es
un tipo de su padre
,
Polimorfismo por inclusin
[Cardelli & Wegner]
&s un tipo de polimor%ismo uni"ersal en
donde el comportamiento declarado o
implementado en una tipo 'eneral
(superclase)# es incluido en tipos
espec(%icos (subclases)
-
Generalizacin
)ontrol de acceso
.os miembros declarados como protected, public o
package son accesibles en las subclases/ 0in
embar$o, los atributos no pueden declararse como
public o package %encapsulamiento&
.os m1todos declarados como final no pueden
redefinirse en las subclases
.os m1todos declarados como abstract, son
implementados en las subclases
abstract public class 1lemento
{
abstract public int compara(1lemento elem) t*ro!s
+rreglo1xception; && este m2todo se implementar3 en las
% && las subclases de esta clase
10
Clases Abstractas
$on clases de las cuales no se obtienen
ob*etos:
0em2nticamente, son mu' $enerales ' la obtencin
de ob3etos no tiene sentido, por e3emplo un ob3eto
de la clase persona
#s mas si$nificativo obtener ob3etos de sus sub4
clases, por e3emplo persona 5eredando a alumno
0int2cticamente, el compilador de 3ava lo impide
11
Clases Abstractas
$on clases +ue de%inen solo parte de su
implementacin# de*ando a las subclases
(etensiones) la tarea de implementaciones
espec(%icas de al'!n m,todo o de todos
#n la pr2ctica 2, el metodo compara() de la
class elemento es declarado como abstract ' es
implementado en class Alumno ' en class Libro
12
Clase Abstracta y Generalizacin
De la -rctica No. .
Elemento es una clase
abstracta, el metodo
compara( ) se implementa en
las clase Libro y Alumno en
donde la comparacin entre
elementos es diferente
13
Clase Abstracta y Generalizacin
De la -rctica No. .
import mx.uam.cursojava.practica4.+rreglo1xception;
import mx.uam.cursojava.practica4.1lemento;
public class 5ibro extends 1lemento && (elaci)n de generali"aci)n
{ && *ereda de elemento
private String m6titulo;
private String m6autor;
private int m6isbn;

public 5ibro(String titulo7 String autor7 int isbn)
{
%

public int compara(1lemento elem) t*ro!s +rreglo1xception
{
&& 5a comparaci)n se reali"a entre dos elementos de tipo
&& 5ibro
%
%
1!
Relaciones entre clases
Asociacin: es una relacin
estructural ue e6presa la cone6in
reciproca entre ob3etos de de 2 clases
distintas
15
Relacin todo/partes en donde una clase
representa el todo 0 otra una de sus partes
$e realiza declarando re%erencias dentro de los
atributos (rombo "ac(o en 123)
Departamento
Organiaci!n
"
#
4odo
-arte
A're'acin
Relacin de asociacin: Agregacin simple
1"
Agregacin simple
De la prctica No. 1
int
$rreglo
"
#
-lass +rreglo
{
int m6arreglo[];
int m6tamanio;
public +rreglo(int tamanio)
{
m6tamaniotamanio;
m6arreglone! int[m6tamanio]
% && +gregaci)n simple
public agregar1lemento()
%
...........
{
%
...
null
m6arreglo
1+
es una %orma de a're'acin# con %uerte
pertenencia 0 tiempo de "ida coincidente como
parte del todo.
%rame
&in'o(
"
#
4odo
-arte )omposicin
Relacin de asociacin: Composicin
1,
De la prctica No..
Composicin
public class Principal
{
private /eclado teclado ne! /eclado(); && 1jemplo de
&&relaci)n de composici)n
public static void main(String [] argc)
{
Principal p ne! Principal();
&& +8u9 se cac*an excepciones 8ue pueda generar el menu.
tr,
{
p.prueba-on:enu();
%
catc*(1xception ex)
{
ex.printStack/race();
%
%
)ecla'o
*rincipal
"
"

Vous aimerez peut-être aussi