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<?php
class Ciudad
{
private $_descripcion;
private $_zona;
/** mas atributos aquí **/
public function __consutruct()
{
//CODIGO AQUí
}
/** mas métodos aquí */
}
continuando con la clase Estado la cuál tiene la relación con Ciudad
Código PHP:
Ver original<?PHP
class Estado
{
private $_descripcion;
private $_numeroOficial;
/** mas atributos aquí **/
/** relación de composición */
private $_ciudades;
public function __construct()
{
//CODIGO AQUí
}
public function agregarCiudad( Ciudad $ciudad )
{
$this->_ciudades[] = $ciudad;
}
/** mas métodos aquí */
}
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 originalclass Domicilio
{
private $_callle;
private $_numero;
private $_codigoPostal;
private $_colonia;
/*** relación con estado, solo que
*** habra problema prque un estado
*** contiene muchas ciudad
**/
private $_estado;
public function __consutruct()
{
//CODIGO AQUí
}
}
y por último la clase Persona que se relaciona con el
Domicilio
Código PHP:
Ver originalclass Persona
{
private $_nombre;
private $_apellidos;
/* asocación */
private $_domicilio;
public function __consutruct()
{
//CODIGO AQUí
}
public function agregarCiudad( Domicilio $domicilio )
{
$this->_domicilio; = $domicilio
}
/** mas métodos aquí */
}
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