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 + configurar() + abrir() + cerrar() + mover() + mostrar() + manejarEvento()

Generalizacin (herencia)

Consola
6

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
Elemento es una clase abstracta, el metodo compara( ) se implementa en las clase Libro y Alumno en donde la comparacin entre elementos es diferente

12

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
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() } ........... { }

Arreglo
1

int

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