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

Instanciar , hederar o operador de resolucion???

Estas en el tema de Instanciar , hederar o operador de resolucion??? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. en estos casos para poder usar los metodos de otra clase se pueden hacer tanto con herencia o enviando un parametro Object1 al constructor de ...
  #1 (permalink)  
Antiguo 07/05/2010, 10:44
 
Fecha de Ingreso: abril-2010
Mensajes: 17
Antigüedad: 14 años, 6 meses
Puntos: 5
Exclamación Instanciar , hederar o operador de resolucion???

en estos casos para poder usar los metodos de otra clase se pueden hacer tanto con herencia o enviando un parametro Object1 al constructor de otra clase Object2 y se conseguiria el mismo efecto o sino usando el operador de resolucion.
Entonces cual usar y cuando y como puedo representarlo como diagrama UML osea Asociacion (por direccion y cardinalidad), agregacion y composicion?

primer caso:1
Código PHP:
class Obj1{
    function 
getVal() { ... }
}
 
class 
Obj2{
    var 
$obj1;
    function 
__construct(&$obj1) {  $this->obj1=&$obj1;  }
 
    function 
doVal () {  $this->obj1->getVal();  }
}
 
$obj1=new Obj1;
 
$obj2=new Obj2($obj1); 
//ejecuta getVal() de Obj1 similar efecto ha hacer Obj1 extend Obj2
Código PHP:
$obj2->doVal (); 
Segundo caso:2
Código PHP:
class Obj1{
    
mostrar(){ ... }
}
 
class 
Obj2{
    var 
$obj1;
    var 
$content;
    function 
__construct() {   $this->obj1=new Obj1;  }
 
    function 
setMostrar() { $this->content=$this->obj1->mostrar(); }

//en este caso var $content de Obj2 ahora podra usar el metodo de Obj1

Tercer Caso:3
Código PHP:
class Revisar{
    function 
ver() { echo ($this->error);  }
}
 
class 
Setup{
    var 
$errMsj='Mensaje Error';
    function 
verErr() {
        if ( 
DEBUG == ) {  Revisar::ver();  }
    }
}
define ('DEBUG',1);
$setup= &new Setup;
$setup->verErr(); 

//En este caso el operador de resolucion tmb hace casi la misma idea de los
//ejm anteriores solo q el metodo ver() es llamado pero recibe el parametro
//$errMsj de la otra clase(Setup)



Espero me pueden quitar estas dudas... al respecto.. y que implca usar el simbolo & en las clases (por ejm en: $setup= &new Setup; o en: function __construct(&$obj1) { ...} espero sus respuestas... Saludos... desde Peru.. de antemano gracias..... )

Última edición por aries_19_mad; 07/05/2010 a las 11:27 Razón: Se deformo el contenido
  #2 (permalink)  
Antiguo 07/05/2010, 10:47
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Instanciar , hederar o operador de resolucion???

Eso se conoce como referencia.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 07/05/2010, 11:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Instanciar , hederar o operador de resolucion???

Por otro lado, respecto a tu duda si instanciar, heredar o usar ::, te explico.

Instancia si tus clases no tienen parentesco alguno, hereda si la clase tiene parentesco. Por ejemplo si tienes una clase Pajaro y la quieres usar desde tu clase Carro lo correcto es que la pases como parámetro o la instancies, ya que no tienen relacion, en cambio si tienes tus clases Pajaro y Perico ahí si puedes heredar.

Respecto a usar el operador de resolución, este solo se puede aplicar cuando las funciones son estaticas, y se usarían respecto a las reglas de si necesitas o no instanciar tu aplicación.

Saludos.
  #4 (permalink)  
Antiguo 07/05/2010, 12:05
 
Fecha de Ingreso: abril-2010
Mensajes: 17
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Instanciar , hederar o operador de resolucion???

Bueno con respecto a las 2 anterios creo que me lo has dejado claro... pero podrias darme un ejm un poco mas real de como usarias el operador de resolucion.... orientado un poco al analisis te lo agradeceria bastante........

y saludos a todos hacen un buen trabajo... sigan asi....

Última edición por aries_19_mad; 07/05/2010 a las 12:07 Razón: Mensaje de gratitud
  #5 (permalink)  
Antiguo 07/05/2010, 12:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Instanciar , hederar o operador de resolucion???

Como te comente se usa cuando tienes funciónes estaticas, es decir métodos o funciones dentro de una clase que no son necesarias que instancies una copia de una clase, por ejemplo un getter es para obtener una propiedad o valor de una clase, pero para obtenerlo necesitas primero trabajar con la clase.

Pero supongamos que tienes un método, calcula() que no necesita instanciarse de la clase, o imprime() que solo funciona con algún parámetro que le envies, esa puede ser estatica, un claro ejemplo son los patrones factory y singleton, ambos usan funciones estaticas Class::getInstance(), o Factory::factory($class) para realizar sus procesos.

Saludos.
  #6 (permalink)  
Antiguo 07/05/2010, 12:26
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Instanciar , hederar o operador de resolucion???

Te recomiendo que leas sobre static. También lee este material para que te dé más ideas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 07/05/2010, 13:04
 
Fecha de Ingreso: abril-2010
Mensajes: 17
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Instanciar , hederar o operador de resolucion???

Sr Gator , Sr Abimaelrc muchas gracias... muy bien explicado... Gracias por su tiempo hacen un gran trabajo.... cualquier otra inquietud se los hare llegar para todos aparender mas y mas.... lo cual es la idea....
gracias y Saludos Cordiales....
  #8 (permalink)  
Antiguo 07/05/2010, 13:49
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años, 5 meses
Puntos: 32
Respuesta: Instanciar , hederar o operador de resolucion???

Que tal Aries,

La POO no se aprende de forma mecánica, no es "heredo para disponer de métodos" o para "reusar código", lo correcto es analizar los problemas "de la realidad" para luego ver cual es la mejor o la forma correcta de representarlos en el modelo de objetos.

Y las relaciones también se definen en base a la "realidad", no hay otra forma, lo otro es aprender "sintaxis" y no conceptos para entender cómo aplicar esa sintaxis.

Saludos!
__________________
Blog phpsenior.com Cursos a Distancia surforce.com

Etiquetas: agregacion, composicion, diagramas, instancia, operador, resolución, uml, herencia
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 17:43.