Introducción a UML y PHP
1 Oct
Escrito por: dots3r En: PHP
Anteriormente había explicado como pasar un diagrama UML a PHP, pues bien, estas semanas en el curso a distancia de POO en PHP impartido por Enrique Place (PHPSenior) en el que estoy inscrito he aprendido un poco mas de UML y a modo de repaso compartiré con ustedes una pequeña introducción a UML, concretamente a las relaciones de dependencia y asociación.
Relación de Dependencia

Esta relación es la más básica entre clases, se representa con una flecha discontinua que parte desde la clase dependiente(A) a la clase independiente(B), por lo tanto la clase A conoce a la clase B, pero la clase B no conoce a la clase A, además de que todo cambio que se realice en B afecta a A. En esta relación se podría decir que una clase utiliza a la otra, es por eso que este tipo de relación se conoce también como "relación de uso".
Traduciendo a PHP este diagrama la clase independiente debe ser incluida en la clase dependiente mediante un "requiere_once" y pueden haber dos situaciones posibles:
1) En un método de la clase A se instancia un objeto de la clase B.
// A.php
require_once 'B.php';
class A
{
public function metodo()
{
$b = new B();
/* Código que hace uso de la instancia b * /
}
}
?>
2) En un método de la clase A se recibe como parámetro un objeto de la clase B.
// A.php
require_once 'B.php';
class A
{
public function metodo(B $b)
{
/* Código que hace uso de la instancia b * /
echo $b;
}
}
?>
Relación de Asociación

Esta relación se representa con una flecha continua entre clases, ocurre cuando una clase esta compuesta por otra, es decir, crear elementos mas complejos a partir de elementos simples: A en su estructura interna lleva como atributo una instancia de la clase B. Al igual que en la relación de dependencia en la asociación A utiliza a B pero no sabe como está compuesto internamente y todo cambio realizado en B afectará a A.
Lo anterior en PHP:
// A.php
require_once 'B.php';
class A
{
private $_b;
public function __construct()
{
$this->_b = new B();
}
}
$a = new A();
?>
Varios

