Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Cómo se traducirían estas relaciones a código

Estas en el tema de Cómo se traducirían estas relaciones a código en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenos días: Estuve realizando un curso de PHP POO, donde, al menos yo entendí, que para por ejemplo: Una relación de dependencia A-->B . Es ...
  #1 (permalink)  
Antiguo 16/04/2012, 02:52
 
Fecha de Ingreso: octubre-2007
Mensajes: 118
Antigüedad: 16 años, 6 meses
Puntos: 11
Cómo se traducirían estas relaciones a código

Buenos días:

Estuve realizando un curso de PHP POO, donde, al menos yo entendí, que para por ejemplo:

Una relación de dependencia A-->B . Es una relación de uso donde A usa a B, y en código sería que se pasa como parámetro en un método un objeto de B , en un método se instancia B.

Luego en las relaciones de asociación, tal y como lo entendí. Es que para las relaciones 1:1, sería A->B, y en código (en PHP, porque en JAVA que es donde lo estoy viendo ahora, es diferente porque permite instanciar objetos en atributos de clase) sería en el constructor, crear un objeto B.

Luego en las relaciones 1:N , según entendí eran de agregación , pero aquí me viene el problema. En el curso que estoy realizando ahora, las relaciones de asociacion las denotan con cardinalidades todas y hay diagramas que tienen relaciones de asociacion 1:N y relaciones de agregación, el problema es que no viene como se traduciría a código y los propios diagramas vienen incompletos y no salen ni atributos ni métodos para verlo.

Hay diferencia real entre relaciones de asociación 1:N y agregación? Cual sería en código?

¿y para las relaciones M:N? no las contemplé en su día pero no he visto nada relacionado con ello?

Si es muy largo de explicar o de poner un ejemplo, alguna página que me ayude a aclarar esto?

Un saludo y gracias.
  #2 (permalink)  
Antiguo 16/04/2012, 10:44
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Cómo se traducirían estas relaciones a código

Cita:
Es una relación de uso donde A usa a B, y en código sería que se pasa como parámetro en un método un objeto de B , en un método se instancia B.
Podés recibir por parámetro un objeto o instanciar en un método.

Dependencia
Código PHP:
class A

    public function 
metodo()
    { 
        
$b = new B();
        
$b->algo();
    }
}

class 
A

    public function 
metodo(B $objetoB)
    { 
        
$objetoB->algo();
    }

Asociación
Código PHP:
Ver original
  1. class A {
  2.     private $_b;
  3.    
  4.     public function __construct()
  5.     {
  6.         $this->_b = new B();
  7.     }
  8.    
  9.     public function getB()
  10.     {
  11.         return $this->_b;
  12.     }
  13. }

Agregación
Código PHP:
Ver original
  1. class Factura {
  2.     private $_colItems = array();
  3.    
  4.     public function addItems(Item $item)
  5.     {
  6.         $this->_colItems[] = $item;
  7.     }
  8.    
  9.     public function getItems()
  10.     {
  11.         return $this->_colItems;
  12.     }
  13. }

Cita:
el problema es que no viene como se traduciría a código y los propios diagramas vienen incompletos y no salen ni atributos ni métodos para verlo
Pasa que no agregan porque no tiene importancia o no aporta nada, por ejemplo en la agregacion de Item a Factua, se supone que en la clase Factura debe tener un método para para agregar items y por lo general es un addItems(Item $item), si tiene importancia si lo van a agregar


Sobre la cardinalidad de asociacion y agregación preguntale a tu profesor las diferencias, cuando usar, porqué etc. porque es medio confusa, al menos para mi.

Por otro lado: ¿Dónde haces el curso de Java?

Última edición por Dany_s; 16/04/2012 a las 10:49
  #3 (permalink)  
Antiguo 17/04/2012, 06:40
 
Fecha de Ingreso: octubre-2007
Mensajes: 118
Antigüedad: 16 años, 6 meses
Puntos: 11
Respuesta: Cómo se traducirían estas relaciones a código

Hola Dany, muchas gracias por contestar.
Me tuve que expresar mal en el enunciado del mensaje, porque esas relaciones : dependencia , asociacion y agregacion si las tenía claras.

Es en asociación con cardinalidad 1:N, donde por un lado, entendí que era el equivalente de usar las relaciones de agregación y luego por otro lado he visto diagramas que usan ambas relaciones (asociacion 1:N y agregación) , y aquí es donde tengo la duda si se implementan de igual modo en código o no

Al igual que en las relaciones de asociación con cardinalidad M:N, que no he visto ejemplos y no se si como se implementan.


El curso de Java, es un grado superior a distancia que estoy cursando, aunque el tema de UML es en una asignatura de Entornos de Desarrollo.

Un saludo.
  #4 (permalink)  
Antiguo 17/04/2012, 08:50
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Cómo se traducirían estas relaciones a código

fijate acá hay explicación con ejemplos e implementacion en java y c http://www.unirioja.es/cu/jearansa/0...IPR_Tema02.pdf
  #5 (permalink)  
Antiguo 18/04/2012, 05:50
 
Fecha de Ingreso: octubre-2007
Mensajes: 118
Antigüedad: 16 años, 6 meses
Puntos: 11
Respuesta: Cómo se traducirían estas relaciones a código

Voy a echarle un vistazo, ya te comento. Gracias! :D

Etiquetas: clase, php, poo, relaciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:21.