Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/04/2008, 09:25
Avatar de enriqueplace
enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Re: Asociacion de clases

Estimado, UML es independiente del lenguaje de programación, el único requisito es que el lenguaje soporte POO y PHP5 lo hace (bueno, hasta hace poco agregaron namespaces, así que ya estamos bastante completitos ).

Sobre UML hay muchas corrientes, la actual es simplificar al máximo el uso del diagrama, casi quedándonos con las relaciones básicas, como asociaciones, agregaciones y dependencias. Es decir, muchos desarrolladores no le dan mucha importancia a la "composición" y se quedan simplemente con "agregación" (también dependerán del contexto del lenguaje, como el "stateless", ya que luego de cada ejecución indudablemente todo "muere").

La agregación ("la flecha que en su base tiene un rombo") siempre se traduce en un atributo que es de tipo Array (contenedores de "algo") y de alguna forma siempre un método de tipo "add" para agregar los objetos que serán contenidos.

Código PHP:
<?php
class Mueble
{
    private 
$cajon = array();

    public function 
addElementoGuardable $elemento )
    {
        
$this->cajon[] = $elemento;
    }
}

interface 
ElementoGuardable
{
   public function 
__toString();
}
class 
Tijera implements ElementoGuardable
{
    public function 
__toString()
    {
        return 
"soy tijera!";
    }
}

$Mueble = new Mueble();
$Mueble->add( new Tijera() );
$Mueble->add( new Tijera() );

var_dump$Mueble );

?>

// resultado 

object(Mueble)#1 (1) {
  ["cajon:private"]=>
  array(2) {
    [0]=>
    object(Tijera)#2 (0) {
    }
    [1]=>
    object(Tijera)#3 (0) {
    }
  }
}
La asociación ("flecha continua") se traduce en definir un atributo de una clase de tipo objeto de otra, y la dependencia ("flecha discontinua") se da cuando recibes por parámetro un objeto o cuando creas una instancia dentro de un método ("relación de uso", "lo usas y lo tiras", "nace con el método y muere al terminar", etc).

Pero, lo más importante de todo, aunque estos conceptos no hay casi discusión de su traducción a código, un diagrama UML siempre está sujeto a interpretación y dependerá su detalle de acuerdo al público objetivo del mismo (expertos, novatos, etc).

Espero haber aportado algo.

PD: Sugiero que busques por POO PHP5 UML, y creo que en este foro ya hemos hablado también de este tema, así que puedes buscar por UML a ver que encuentras.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com

Última edición por enriqueplace; 26/01/2009 a las 08:36