Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/02/2012, 13:09
7th_Sign
 
Fecha de Ingreso: noviembre-2007
Mensajes: 35
Antigüedad: 16 años, 6 meses
Puntos: 0
Codificando clases y relaciones UML

Hola a todos, estoy con el tema de UML y la POO en PHP
y haciendo unos practicas de clases me encuentro con una duda en una Clase Domicilio que estoy tratando de hacer

Explico con un ejemplillo

necesito registrar los datos generales de una persona
entre ellos son:
  • Persona
  • nombre
  • apellidos
  • genero

    Domicilio
  • calle y numero
  • colonia
  • codigo postal
  • ciudad
  • estado


entonces identifico facilmente estas clases:


clase Estado <-- es clase por en caso de que quiera almacenar mas que un simple nombre de estado
clase Ciudad <-- es una clase por en caso de que quiera almacenar mas que un nombre de ciudad

estas 2 clases encuentro una relación de composición
en dónde estado contiene muchas ciudades


Persona <-- datos de persona
Domicilio <-- para registrar los datos del domicilio

para estas 2 clases encuentro una relación de asociación

Hasta aquí todo iba bien hasta que comence a codificar

aquí el código PHP

Clase de Ciudad

Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4. class Ciudad
  5. {
  6.  
  7.     private $_descripcion;
  8.     private $_zona;
  9.     /** mas atributos aquí **/
  10.  
  11.     public function __consutruct()
  12.     {
  13.        //CODIGO AQUí
  14.     }
  15.    
  16.     /** mas métodos aquí */
  17. }


continuando con la clase Estado la cuál tiene la relación con Ciudad
Código PHP:
Ver original
  1. <?PHP
  2. class Estado
  3. {
  4.     private $_descripcion;
  5.     private $_numeroOficial;
  6.    
  7.     /** mas atributos aquí **/
  8.  
  9.     /** relación de composición */
  10.     private $_ciudades;
  11.  
  12.     public function __construct()
  13.     {
  14.         //CODIGO AQUí
  15.     }
  16.  
  17.     public function agregarCiudad( Ciudad $ciudad )
  18.     {
  19.         $this->_ciudades[] = $ciudad;
  20.     }
  21.  
  22.     /** mas métodos aquí */
  23. }


Clase domicilio, aquí es en dónde se me presenta mi problema
puesto que yo estaba colocando un atributo llamado estado, pues el estado contiene la ciudad pero cuando reflexiono un poco recuerdo que un estado contiene muchas ciudad, dejando la clase Domicilio con un error de diseño


el diseño deberia permitir que el domicilio de una persona tenga solamente una ciudad y un estado le doy vueltas al asunto y no se me ocurre como hacer esta relación

Código PHP:
Ver original
  1. class Domicilio
  2. {
  3.     private $_callle;
  4.     private $_numero;
  5.     private $_codigoPostal;
  6.     private $_colonia;
  7.  
  8.  
  9.     /*** relación con estado, solo que
  10.      *** habra problema prque un estado
  11.     ***  contiene muchas ciudad
  12.      **/
  13.     private $_estado;
  14.  
  15.  
  16.  
  17.     public function __consutruct()
  18.     {
  19.        //CODIGO AQUí
  20.     }
  21. }

y por último la clase Persona que se relaciona con el Domicilio
Código PHP:
Ver original
  1. class Persona
  2. {
  3.     private $_nombre;
  4.     private $_apellidos;
  5.  
  6.     /* asocación */
  7.     private $_domicilio;
  8.  
  9.     public function __consutruct()
  10.     {
  11.        //CODIGO AQUí
  12.     }
  13.  
  14.     public function agregarCiudad( Domicilio $domicilio )
  15.     {
  16.         $this->_domicilio; = $domicilio
  17.     }
  18.    
  19.     /** mas métodos aquí */
  20.  
  21. }


Creo que yo que es un ejemplo sencillo que debe tener una solución sencilla pero elegante solo que no puedo dar con ella.

Algún gurú del UML ue pueda orientarme con este caso?

de antemano gracias

Última edición por GatorV; 09/02/2012 a las 15:01