Foros del Web » Programando para Internet » PHP »

Ejercicio de Programación Orientada a Objetos

Estas en el tema de Ejercicio de Programación Orientada a Objetos en el foro de PHP en Foros del Web. Muy buenas a todos. Tengo que hacer un ejercicio y no sé cómo realizarlo. Me piden lo siguiente: Crea una página web con metodología POO ...
  #1 (permalink)  
Antiguo 16/12/2011, 06:03
 
Fecha de Ingreso: diciembre-2010
Mensajes: 51
Antigüedad: 13 años, 4 meses
Puntos: 9
Pregunta Ejercicio de Programación Orientada a Objetos

Muy buenas a todos. Tengo que hacer un ejercicio y no sé cómo realizarlo. Me piden lo siguiente:

Crea una página web con metodología POO para gestionar el alquiler de películas
de un videoclub, como aún no hemos llegado a la unidad de conexión con
bases de datos, lo que pedimos en este feedback es que al constructor de cada
elemento de película se le pase todos los datos (título, año, director, alquilada
sí/no, precio, fecha de devolución) y, además, que se pueda interactuar con ella
y solicitar:

 El nombre de la película.
 El año y director.
 El precio.
 Si está alquilada en estos momentos o no.
 Fecha prevista de devolución.
 El recargo por devolución retrasada, que se calculará a 1,2 euros el día
de retraso.

A ver si podéis orientarme un poco en la realización del ejercicio.
Mil gracias y saludos.
__________________
– You're on your own again.
  #2 (permalink)  
Antiguo 16/12/2011, 06:45
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Ejercicio de Programación Orientada a Objetos

Empieza pensando el esquema de la base de datos que vas a usar. Lamentablemente aquí no resolvemos problemas por otros, solo orientamos o ayudamos con dudas especificas. Cuando tengas algo de código hecho, ven y te ayudaremos.

Saludos
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #3 (permalink)  
Antiguo 16/12/2011, 06:50
 
Fecha de Ingreso: diciembre-2010
Mensajes: 51
Antigüedad: 13 años, 4 meses
Puntos: 9
Respuesta: Ejercicio de Programación Orientada a Objetos

Dudas específicas:

¿Cómo hago para hacer que se recargue a 1,2 euros al día una película por cada retraso? ¿Qué función debo emplear más o menos?

Creo que no has leído el ejercicio... No puedo usar bases de datos.

Un saludo.
__________________
– You're on your own again.
  #4 (permalink)  
Antiguo 16/12/2011, 06:53
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Ejercicio de Programación Orientada a Objetos

Tendrias algo asi:

Una clase pelicula, donde cada atributo de cada instancia seria los que definiste vos, con sus getters y setters respectivos, y en el constructor se le setean todos los datos iniciales

Código PHP:
Ver original
  1. <?php
  2. class Pelicula
  3. {
  4.  
  5.     var $nombre;
  6.     var $ano;
  7.     var $director;
  8.     var $precio;
  9.     var $alquilada;
  10.     var $fechaDevolucion;
  11.     var $recargo;
  12.  
  13.     function __construct($nombre, $ano, $director, $precio, $alquilada, $fechaDevolucion)
  14.     {
  15.         $this->setNombre($nombre);
  16.         $this->setAno($ano);
  17.         $this->setDirector($director);
  18.         $this->setPrecio($precio);
  19.         $this->setAlquilada($alquilada);
  20.         $this->setFechaDevolucion($fechaDevolucion);
  21.     }
  22.  
  23.     public function getNombre()
  24.     {
  25.         return $this->nombre;
  26.     }
  27.  
  28.     public function setNombre($nombre)
  29.     {
  30.         $this->nombre = $nombre;
  31.     }
  32.  
  33.     public function getAno()
  34.     {
  35.         return $this->ano;
  36.     }
  37.  
  38.     public function setAno($ano)
  39.     {
  40.         $this->ano = $ano;
  41.     }
  42.  
  43.     public function getDirector()
  44.     {
  45.         return $this->director;
  46.     }
  47.  
  48.     public function setDirector($director)
  49.     {
  50.         $this->director = $director;
  51.     }
  52.  
  53.     public function getPrecio()
  54.     {
  55.         return $this->precio;
  56.     }
  57.  
  58.     public function setPrecio($precio)
  59.     {
  60.         $this->precio = $precio;
  61.     }
  62.  
  63.     public function getAlquilada()
  64.     {
  65.         return $this->alquilada;
  66.     }
  67.  
  68.     public function setAlquilada($alquilada)
  69.     {
  70.         $this->alquilada = $alquilada;
  71.     }
  72.  
  73.     public function getFechaDevolucion()
  74.     {
  75.         return $this->fechaDevolucion;
  76.     }
  77.  
  78.     public function setFechaDevolucion($fecha_devolucion)
  79.     {
  80.         $this->fechaDevolucion = $fecha_devolucion;
  81.     }
  82.  
  83.     public function getRecargo()
  84.     {
  85.         return $this->recargo;
  86.     }
  87.  
  88.     public function setRecargo($recargo)
  89.     {
  90.         $this->recargo = $recargo;
  91.     }
  92.  
  93. }
  94.  
  95. ?>

Y luego en otro php donde se crearian los objetos seria algo asi:
Donde se instancia el objeto pelicula y se le pasan al constructor todos los datos, y despues accedes con los getters para obtener los datos del objeto.

Código PHP:
Ver original
  1. <?php
  2. require_once 'pelicula.class.php';
  3. $pelicula = new Pelicula("Matrix", "2002", "Hnos Wasaski", 50, false, date("Y-m-d", strtotime("2012-01-15")));
  4.  
  5. echo $pelicula->getNombre() . "<br/>";
  6. echo $pelicula->getAno() . "<br/>";
  7. echo $pelicula->getDirector() . "<br/>";
  8. echo $pelicula->getPrecio() . "<br/>";
  9. echo ($pelicula->getAlquilada() ? 'SI' : 'NO'). "<br/>";
  10. echo $pelicula->getFechaDevolucion();
  11. ?>

Cualquier cosa avisame!
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #5 (permalink)  
Antiguo 16/12/2011, 07:04
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Ejercicio de Programación Orientada a Objetos

Me olvide lo del recargo aca te dejo la clase y el php de la instancia modificados. Fijate si te sirve:

Código PHP:
Ver original
  1. <?php
  2.  
  3. class Pelicula
  4. {
  5.  
  6.     var $nombre;
  7.     var $ano;
  8.     var $director;
  9.     var $precio;
  10.     var $alquilada;
  11.     var $fechaDevolucion;
  12.     var $recargo;
  13.  
  14.     function __construct($nombre, $ano, $director, $precio, $alquilada, $fechaDevolucion)
  15.     {
  16.         $this->setNombre($nombre);
  17.         $this->setAno($ano);
  18.         $this->setDirector($director);
  19.         $this->setPrecio($precio);
  20.         $this->setAlquilada($alquilada);
  21.         $this->setFechaDevolucion($fechaDevolucion);
  22.         $this->setRecargo($this->calcularRecargo());
  23.     }
  24.  
  25.     public function getNombre()
  26.     {
  27.         return $this->nombre;
  28.     }
  29.  
  30.     public function setNombre($nombre)
  31.     {
  32.         $this->nombre = $nombre;
  33.     }
  34.  
  35.     public function getAno()
  36.     {
  37.         return $this->ano;
  38.     }
  39.  
  40.     public function setAno($ano)
  41.     {
  42.         $this->ano = $ano;
  43.     }
  44.  
  45.     public function getDirector()
  46.     {
  47.         return $this->director;
  48.     }
  49.  
  50.     public function setDirector($director)
  51.     {
  52.         $this->director = $director;
  53.     }
  54.  
  55.     public function getPrecio()
  56.     {
  57.         return $this->precio;
  58.     }
  59.  
  60.     public function setPrecio($precio)
  61.     {
  62.         $this->precio = $precio;
  63.     }
  64.  
  65.     public function getAlquilada()
  66.     {
  67.         return $this->alquilada;
  68.     }
  69.  
  70.     public function setAlquilada($alquilada)
  71.     {
  72.         $this->alquilada = $alquilada;
  73.     }
  74.  
  75.     public function getFechaDevolucion()
  76.     {
  77.         return $this->fechaDevolucion;
  78.     }
  79.  
  80.     public function setFechaDevolucion($fecha_devolucion)
  81.     {
  82.         $this->fechaDevolucion = $fecha_devolucion;
  83.     }
  84.  
  85.     public function getRecargo()
  86.     {
  87.         return $this->recargo;
  88.     }
  89.  
  90.     public function setRecargo($recargo)
  91.     {
  92.         $this->recargo = $recargo;
  93.     }
  94.  
  95.     private function calcularRecargo()
  96.     {
  97.         $datetime1 = new DateTime();
  98.         $datetime2 = new DateTime($this->getFechaDevolucion());
  99.         $interval = $datetime1->diff($datetime2);
  100.         return $this->getPrecio() * $interval->format('%a');
  101.     }
  102.  
  103. }
  104.  
  105. ?>

Código PHP:
Ver original
  1. <?php
  2. require_once 'pelicula.class.php';
  3. $pelicula = new Pelicula("Matrix", "2002", "Hnos Wasaski", 50, false, date("Y-m-d", strtotime("2011-12-17")));
  4.  
  5. echo $pelicula->getNombre() . "<br/>";
  6. echo $pelicula->getAno() . "<br/>";
  7. echo $pelicula->getDirector() . "<br/>";
  8. echo $pelicula->getPrecio() . "<br/>";
  9. echo ($pelicula->getAlquilada() ? 'SI' : 'NO'). "<br/>";
  10. echo $pelicula->getFechaDevolucion() . "<br />";
  11. echo $pelicula->getRecargo();
  12. ?>

Anda jugando con la fecha de devolucion para ver lo del recargo, si no es exactamente lo que buscas, pensa un poquito la logica y sale seguro ;)
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com

Etiquetas: constructores, feedback, poo
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:46.