Enlaces
Esta en:

documentos
Arriba
Bind-9
Bind-8
Ad+bind
Dhcp
Kdephp
Shell
Trucos
Php
Documentos
Cuestiones php
Fedora
Legal
W2000 xp
COMOS
Errores dns

RV: [PHP-ES] "Hola mundo" con objetos

Write haof XML files: Joan <joan.teixido_at_ya.com>
Fecha: Wed, 4 Oct 2006 11:49:54 +0200

Buenas,

Esta disertacion me parece alucinante y a la vez fantástica!! Gracias. Estoy
intentando entender como programar con objetos y el uso q yo hacia era solo
de repositorio de funciones y poca coas más. Con este mail, aunque no he
entendido mucho el funcionamiento de las interfases y otras cosas que habéis
comentado, al menos veo que hay un mundo enorme detrás de OOP.

Gracias por la discusión y espero que continue, aunque me ha parecido de un
nivel muy alto.

Joan

-----Missatge original-----
De: Martin Alterisio [mailto:malterisio777_at_gmail. com]
Enviat: dijous, 28 / setembre / 2006 21:53 Per a: Fco. Javier Sánchez-Ostiz
Erviti
a/c: Lista discusion PHP
Tema: Re: [PHP-ES] "Hola mundo" con objetos

Creo que no has entendido de que va OOP, tus objetos no son abstracciones
correctas.

Primero y principal definas el problema a resolver: saludar al mundo.
Abstraigamos el problema a sus objetos componentes: alguien que saludo y
algo que es saludado.
Acá estamos trabajando por generalización, ya que el objetivo primordial es
facilitar la reutilizacion de los objetos, para lo cual es conveniente
pensar que nuestro "saludador" podria ser usado para saludar a algo mas que
el mundo.

Por eso primero definamos como deben ser los objetos "saludables" (no en el
sentido de salud si no a los que les podemos decir "hola"... sí lo invente,
no vayan a fijarse en el diccionario). Para eso definimos la siguiente
interfase:

  interface Salutable {
    public function getSalutationName();
  }

En la interfase tenemos lo que necesitamos para poder saludar a una entidad
cualquiera: el nombre con el que debemos referirnos cuando lo saludamos.

Luego creamos el objeto que represente el mundo:

  class World implements Salutable {
    public function getSalutationName() {
      return "World";
    }
  }

Y ahora nos hace falta un saludador, pero como no estamos seguros de que
forma conviene saludar, decidimos que el saludador debe ser una clase
abstracta dejando a la implementación decidir la manera apropiada de
saludar:

  abstract class Saluter {
    abstract public function greet(Salutable $receiver);
  }

En nuestro caso necesitamos un saludador formal ya que no podemos tratar con
poco respeto al mundo (el objetivo es saludar normalmente al mundo no un
"hey! wazzup world?", entonces:

  class FormalSaluter extends Saluter {
    public function greet(Salutable $receiver) {
      echo "Hello " . $receiver->getSalutationName() . "\n";
    }
  }

Finalmente hacemos que nuestros objetos se saluden:

  $saluter = new FormalSaluter();
  $world = new World();
  $saluter->greet($world);

----
Otras cosas que deberian tenerse en cuenta segun el caso:
* PHP tiene type hinting pero es bastante limitado, en este caso no podemos
indicarle que el nombre debe ser proveido como string. Tal vez sería
conveniente usar un objeto wrapper para los strings, así nos aseguramos que
el tipo de dato devuelto es el correcto.
* En este caso parece más apropiado que el saludador sea una clase abstracta
ya que el saludo es de una vía (el mundo no te responde), pero si los
saludos fueran de ida y vuelta sería conveniente que el saludador se una
interfase.
* El saludo en este caso se envia a la salida estandard pero tal vez sea más
adecuado indicarle donde saludar, pero tendriamos que definir la abstracción
de los entornos donde se puede saludar.
2006/9/28, "Fco. Javier Sánchez-Ostiz Erviti" <desarrollo_at_inmonet.net>:
>
> Buenas tardes a la gente del foro. Quizás os parezca una tontería, 
> pero estoy aprendiendo a programar orientado a objetos y me he 
> preguntado; ¿Cómo publicar un "Hola mundo" en la pantalla? A mi se me 
> han ocurrido estas tres;
>
> class HolaMundo{
>     public $HolaVar;
>
>     public function Hola(){
>         $this->HolaVar = 'Hola mundo';
>         }
>     }
>
> $NuevoMundo = new HolaMundo();
> $NuevoMundo->Hola();
> echo $NuevoMundo->HolaVar;
>
> echo "<BR> \n";
>
> class HolaMundo2{
>     function __construct(){
>         echo "Hola mundo";
>         }
>     }
>
> $NuevoMundo2 = new HolaMundo2();
>
> echo "<BR> \n";
>
> class HolaMundo3{
>     private $HolaVar3;
>
>     private function GenererVar(){
>         $this->HolaVar3 = 'Hola mundo';
>         }
>
>     public function MostrarVar(){
>         $this->GenererVar();
>         }
>
>     public function Mostrar(){
>         return $this->HolaVar3;
>         }
>     }
>
> $NuevoMundo3 = new HolaMundo3();
> $NuevoMundo3->MostrarVar();
> echo $NuevoMundo3->Mostrar();
>
> ¿Alguna más rebuscada? ¿y más sencillas? ahí dejo la 
> pregunta-encuesta;
>
> Javi
>
> --
> PHP Spanish Localization Talk Mailing List (http://www.php.net/) To 
> unsubscribe, visit: http://www.php.net/unsub.php
>
>
-- 
PHP Spanish Localization Talk Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Nearby mié oct 04 2006 - 12:23:31 CEST

Este archivo fue generado por hypermail 2.2.0 : mié nov 07 2007 - 20:55:36 CET


Página Principal
Google

Web
dns.bdat.net

Visita nuestro proveedor:
www.bdat.net

Publicidad:

Impresenteibols:Humor Jazz, música en vivo