Sunteți pe pagina 1din 4

Diagrama de Clases UML: Agregacin y Composicin | Didier Prez

1 de 4

http://www.didierperez.com/2012/02/diagrama-de-clases-uml-agregacion...

INICIO (HTTP://WWW.DIDIERPEREZ.COM)
ACERCA DE M (HTTP://WWW.DIDIERPEREZ.COM/DESARROLLADOR-WEB-DE-HOBBIEY-PROFESION/)
RSUM (HTTP://WWW.DIDIERPEREZ.COM/RESUME/)
CONTACTO (HTTP://WWW.DIDIERPEREZ.COM/CONTACTO/)

Diagrama de Clases UML: Agregacin y


Composicin
27 febrero, 2012, by Didier, category Desarrollo (http://www.didierperez.com/category/desarrollo/),
Ingeniera de Software (http://www.didierperez.com/category/ingenieria-de-software/), UML
(http://www.didierperez.com/category/uml/)

Las relaciones de Agregacin y Composicin son dos tipos de especializacin de la


relacin de Asociacin (http://www.didierperez.com/2012/02/diagrama-de-clasesuml-asociacion/).

Agregacin
De nicin
Es muy similar a la relacin de Asociacin solo vara en la multiplicidad ya que en
lugar de ser una relacin "uno a uno" es de "uno a muchos".
Representacin UML
Se representa con una echa que parte de una clase a otra en cuya base hay un
rombo de color blanco.

25/04/2016 09:31 p.m.

Diagrama de Clases UML: Agregacin y Composicin | Didier Prez

2 de 4

http://www.didierperez.com/2012/02/diagrama-de-clases-uml-agregacion...

La ClaseA agrupa varios elementos del tipo ClaseB.


Ejemplo
Tenemos una clase Agenda.
Tenemos una clase Contacto.
Una Agenda agrupa varios Contactos.

Composicin
De nicin
Similar a la relacin de Agregacin solo que la Composicin es una relacin mas
fuerte. Aporta documentacin conceptual ya que es una "relacin de vida", es decir, el
tiempo de vida de un objeto est condicionado por el tiempo de vida del objeto que
lo incluye.
Representacin UML
Se representa con una echa que parte de una clase a otra en cuya base hay un
rombo de color negro.

La ClaseA agrupa varios elementos del tipo ClaseB.


El tiempo de vida de los objetos de tipo ClaseB est condicionado por el
tiempo de vida del objeto de tipo ClaseA.
Ejemplo
Tenemos una clase Silla.
Un objeto Silla est a su vez compuesto por cuatro objetos del tipo Pata.
El tiempo de vida de los objetos Pata depende del tiempo de vida de Silla, ya
que si no existe una Silla no pueden existir sus Patas.

Traduciendo a Cdigo
La forma de traducir ambos tipos de relacin a cdigo es tener un atributo en la
25/04/2016 09:31 p.m.

Diagrama de Clases UML: Agregacin y Composicin | Didier Prez

3 de 4

http://www.didierperez.com/2012/02/diagrama-de-clases-uml-agregacion...

clase compuesta donde almacenaremos una coleccin de los objetos que la


componen. Dependiendo del lenguaje podremos utilizar diferentes estructuras de
datos que nos permitan almacenar la coleccin de objetos, aunque generalmente
se utilizan arreglos para este n. Adems debemos de proporcionar un mtodo para
agregar elementos a la coleccin.
En el ejemplo de la Agenda:

Cdigo traducido a PHP:


Contacto.php
1
2
3
4
5
6
7
8
9
10
11
12
13

<?php
/* Clase Contacto */
Class Contacto
{
private $_nombre;
private $_telefono;

public function __construct($nombre, $telefono) {


$this->_nombre = $nombre;
$this->_telefono = $telefono;
}
}
?>

Agenda.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

<?php
/* Incluimos la clase Contacto */
require_once 'Contacto.php';

/* Clase Agenda */
class Agenda
{
private $_contactos = array();
public function __construct() {
}
public function addContacto(Contacto $contacto)
{
$this->_contactos[] = $contacto;
}
}
?>

En la practica:

25/04/2016 09:31 p.m.

Diagrama de Clases UML: Agregacin y Composicin | Didier Prez


http://www.didierperez.com/2012/02/diagrama-de-clases-uml-agregacion...
?
1
<?php
2
/* Creamos una instancia de Agenda */
3
$miAgenda = new Agenda();
4
5
/* Agregamos algunos Contactos*/
6
$miAgenda->addContacto(new Contacto("Pepe", "3-21-54-87"));
7
$miAgenda->addContacto(new Contacto("Juan", "3-32-65-98"));
8
$miAgenda->addContacto(new Contacto("Luis", "3-78-13-46"));
9
?>

4 de 4

Un da normal de trabajo (http://www.didierperez.com/2012/12/un-dianormal-de-trabajo/)


Diagrama de Clases UML: Asociacin (http://www.didierperez.com/2012/02
/diagrama-de-clases-uml-asociacion/)

One Comment

Yep this is a theme, I'm a Developer not a Designer ;)


Created by Site5 WordPress Themes (http://www.s5themes.com/). Experts in WordPress Hosting (http://gk.site5.com/t/570)

25/04/2016 09:31 p.m.

S-ar putea să vă placă și