Introducción a UML y 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.

PHP:
<?php
// 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.

PHP:
<?php
// 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:

PHP:
<?php
// A.php
require_once 'B.php';
    class A
    {
        private $_b;
       
        public function __construct()
        {
            $this->_b = new B();
        }
    }

$a = new A();
?>
Varios

Post Relacionados

Trackback URL: http://www.eltiliche.net/2008/10/introduccion-a-uml-y-php/trackback/

Mi Opinión