Está en la página 1de 18

Relaciones entre clases

Humberto Cervantes Maceda


Alfonso Martnez Martnez
1

Abril 2005

Relaciones entre clases


Dependencia
Generalizacin
Asociacin
Realizacin

Relaciones entre clases


Dependencia: es una relacin de uso
en donde los cambios en la
especificacin de una clase, pueden
afectar a otra clase que la usa
Dependencia

Ventana

# tamao: integer

+ configurar()
+ abrir()
+ cerrar()
+ mover()
+ mostrar()
+ manejarEvento()

Evento

Relacin de dependencia
De la prctica No. 1:

Relacin de dependencia
De la prctica No. 1:
package mx.uam.cursojava.practica1;
public class Principal {
public static void main(String [] argc)
{
Principal p = new Principal();
p.realizaPruebaOrdenado(10000);
}
/* Relacin de dependencia de la class principal hacia Arreglo y
Cronometro */
public void realizaPruebaOrdenado(int elems)
{
Arreglo a= new Arreglo(elems);
Cronometro cron=new Cronometro();

cron.arrancar();
a.ordenaBurbuja();
cron.detener()
cron.mostrarTiempo();

//
//
//
//

los objetos a y cron


existen solo durante
la ejecucin de:
p.realizaPruebaOrdenado(10000)

Relaciones entre clases


Generalizacin: Es una relacin entre una
clase general (superclase) y otra especfica
(subclase): Generalizacin/Especializacin
Ventana
# tamao: integer

Generalizacin
(herencia)

Consola
6

+ configurar()
+ abrir()
+ cerrar()
+ mover()
+ mostrar()
+ manejarEvento()

CajaDialogo

Relacin de generalizacin
Herencia simple: una subclase tiene
exactamente un padre
Herencia mltiple: una subclase hereda
de varios padres, sin traslape de
estructura o comportamiento
Semnticamente la relacin se puede
verificar comprobando si la subclase es
un tipo de su padre
7

Polimorfismo por inclusin


[Cardelli & Wegner]

Es un tipo de polimorfismo universal en


donde el comportamiento declarado o
implementado en una tipo general
(superclase), es incluido en tipos
especficos (subclases)

Generalizacin
Control de acceso
Los miembros declarados como protected, public o
package son accesibles en las subclases. Sin
embargo, los atributos no pueden declararse como
public o package (encapsulamiento)
Los mtodos declarados como final no pueden
redefinirse en las subclases
Los mtodos declarados como abstract, son
implementados en las subclases

abstract public class


{
abstract public int
ArregloException;
}

Elemento
compara(Elemento elem) throws
// este mtodo se implementar en las
// las subclases de esta clase

Clases Abstractas
Son clases de las cuales no se obtienen
objetos:
Semnticamente, son muy generales y la obtencin
de objetos no tiene sentido, por ejemplo un objeto
de la clase persona
Es mas significativo obtener objetos de sus subclases, por ejemplo persona heredando a alumno
Sintcticamente, el compilador de java lo impide
10

Clases Abstractas
Son clases que definen solo parte de su
implementacin, dejando a las subclases
(extensiones) la tarea de implementaciones
especficas de algn mtodo o de todos
En la prctica 2, el metodo compara() de la
class elemento es declarado como abstract y es
implementado en class Alumno y en class Libro

11

Clase Abstracta y Generalizacin


De la Prctica No. 2

12

Elemento es una clase


abstracta, el metodo
compara( ) se implementa en
las clase Libro y Alumno en
donde la comparacin entre
elementos es diferente

Clase Abstracta y Generalizacin


De la Prctica No. 2
import mx.uam.cursojava.practica2.ArregloException;
import mx.uam.cursojava.practica2.Elemento;
public class Libro extends Elemento // Relacin de generalizacin
{
// hereda de elemento
private String m_titulo;
private String m_autor;
private int m_isbn;
public Libro(String titulo, String autor, int isbn)
{
}
public int compara(Elemento elem) throws ArregloException
{
// La comparacin se realiza entre dos elementos de tipo
// Libro
}
}

13

Relaciones entre clases

Asociacin: es una relacin


estructural que expresa la conexin
reciproca entre objetos de de 2 clases
distintas

14

Relacin de asociacin: Agregacin simple

Relacin todo/partes en donde una clase


representa el todo y otra una de sus partes
Se realiza declarando referencias dentro de los
atributos (rombo vaco en UML)
Todo

Organizacin
1

Agregacin
Parte
*

Departamento
15

Agregacin simple
De la prctica No. 1

Arreglo
1

int

Class Arreglo
{
int m_arreglo[];
int m_tamanio;
public Arreglo(int tamanio)
{
m_tamanio=tamanio;
m_arreglo=new int[m_tamanio]
}
// Agregacin simple
public agregarElemento()
}
...........
{
}

m_arreglo

...

16

null

Relacin de asociacin: Composicin

es una forma de agregacin, con fuerte


pertenencia y tiempo de vida coincidente como
parte del todo.
Todo

Window
1

Parte

Composicin
*

Frame
17

Composicin
De la prctica No.2
public class Principal
{
private Teclado teclado = new Teclado(); // Ejemplo de
//relacin de composicin
public static void main(String [] argc)
{
Principal p = new Principal();
// Aqu se cachan excepciones que pueda generar el menu.
try
{
Principal
p.pruebaConMenu();
}
1
catch(Exception ex)
{
ex.printStackTrace();
1
}
}
18

Teclado

También podría gustarte