Temas > Programacion > Php > Colaboracion de objetos en php
Julio


Colaboración de objetos
Hasta ahora nuestros ejemplos han presentado una sola clase,
de la cual hemos definido uno o varios objetos. Pero una aplicación
real consta de muchas clases.
Veremos que hay dos formas de relacionar las clases. La primera
y la que nos concentramos en este concepto es la de
COLABORACIóN. Cuando dentro de una clase definimos un atributo
o una variable de otra clase decimos que esta segunda clase colabora
con la primera. Cuando uno a trabajado por muchos años con la
metodología de programación estructurada es difícil subdividir un
problema en clases, tiende a querer plantear una única clase que
resuelva todo.
Presentemos un problema:Una página web es común que contenga
una cabecera, un cuerpo y un pié de página. Estas tres secciones
podemos perfectamente identificarlas como clases. También podemos
identificar otra clase pagina. Ahora bien como podemos relacionar
estas cuatro clases (pagina, cabecera, cuerpo, pie), como podemos
imaginar la cabecera, cuerpo y pie son partes de la pagina. Luego
podemos plantear una clase pagina que contenga tres atributos de
tipo objeto. En forma simplificada este problema lo podemos plantear
así:
<?php
class Cabecera {
   [atributos y métodos]
}
class Cuerpo {
   [atributos y métodos]
}
class Pie {
   [atributos y métodos]
}
class Pagina {
   private $cabecera;
   private $cuerpo;
   private $pie;
   [métodos]
}
$pag=new Pagina();
?>
Como podemos ver declaramos cuatro clases (Cabecera, Cuerpo,
Pie y Pagina), fuera de cualquier clase definimos un objeto de la
clase Pagina:
<?php
$pag=new Pagina();
?>
Dentro de la clase Pagina definimos tres atributos de tipo objeto
de las clases Cabecera, Cuerpo y Pie respectivamente. Luego
seguramente dentro de la clase Pagina crearemos los tres objetos
y llamaremos a sus métodos respectivos.
Veamos una implementación real de este problema:
<html>
<head>
<title>Pruebas</title>
</head>
<body>
<?php
class Cabecera {
   private $titulo;
   public function __construct($tit)
   {
      $this->titulo=$tit;
   }
   public function mostrar()
   {
      echo `<h1 style="text-align:center">`.$this->titulo.`</h1>`;
   }
}
class Cuerpo {
   private $lineas=array();
   public function insertarParrafo($li)
   {
      $this->lineas[]=$li;
   }
   public function mostrar()
   {
      for($f=0;$f<count($this->lineas);$f++)
      {
         echo `<p>`.$this->lineas[$f].`</p>`;
      }
   }
}
class Pie {
   private $titulo;
   public function __construct($tit)
   {
      $this->titulo=$tit;
   }
   public function mostrar()
   {
      echo `<h4 style="text-align:left">`.$this->titulo.`</h4>`;
   }
}
class Pagina {
   private $cabecera;
   private $cuerpo;
   private $pie;
   public function __construct($texto1,$texto2)
   {
      $this->cabecera=new Cabecera($texto1);
      $this->cuerpo=new Cuerpo();
      $this->pie=new Pie($texto2);
   }
   public function insertarCuerpo($texto)
   {
      $this->cuerpo->insertarParrafo($texto);
   }
   public function mostrar()
   {
      $this->cabecera->mostrar();
      $this->cuerpo->mostrar();
      $this->pie->mostrar();
   }
}
$pagina1=new Pagina(`Título de la Página`,`Pie de la página`);
$pagina1->insertarCuerpo(`Esto es una prueba que debe aparecer 
dentro del cuerpo de la página 1`);
$pagina1->insertarCuerpo(`Esto es una prueba que debe aparecer
dentro del cuerpo de la página 2`);
$pagina1->insertarCuerpo(`Esto es una prueba que debe aparecer
dentro del cuerpo de la página 3`);
$pagina1->insertarCuerpo(`Esto es una prueba que debe aparecer
dentro del cuerpo de la página 4`);
$pagina1->insertarCuerpo(`Esto es una prueba que debe aparecer
dentro del cuerpo de la página 5`);
$pagina1->insertarCuerpo(`Esto es una prueba que debe aparecer
dentro del cuerpo de la página 6`);
$pagina1->insertarCuerpo(`Esto es una prueba que debe aparecer
dentro del cuerpo de la página 7`);
$pagina1->insertarCuerpo(`Esto es una prueba que debe aparecer
dentro del cuerpo de la página 8`);
$pagina1->insertarCuerpo(`Esto es una prueba que debe aparecer
dentro del cuerpo de la página 9`);
$pagina1->mostrar();
?>
</body>
</html>
La primer clase llamada Cabecera define un atributo llamada $titulo
que se carga en el constructor, luego se define otro método que
imprime el HTML:
<?php
class Cabecera {
   private $titulo;
   public function __construct($tit)
   {
      $this->titulo=$tit;
   }
   public function mostrar()
   {
      echo `<h1 style="text-align:center">`.$this->titulo.`</h1>`;
   }
}
?> 













¿Has olviado tu contraseña?

Pulsa aquí para registrate




Google






LunMarMieJueVieSabDom
    123
45678910
11121314151617
181920 21222324
252627282930 

Jueves 21 de Noviembre 2024
Semana 47

..............................................................................................................................................................................................................................................
(Contacto)..
Esta web utiliza cookies para obtener datos estadísticos de la navegación de sus usuarios. Política de privacidad y Aviso legal