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

CLASS para sistema de biblioteca

Estas en el tema de CLASS para sistema de biblioteca en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Amigos tengo rollo algo montado, apenas estoy aprendiendo a usar clases en php y ya me mandaron a hacer algo que me tiene loco. Tengo ...
  #1 (permalink)  
Antiguo 01/09/2008, 08:44
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Exclamación CLASS para sistema de biblioteca

Amigos tengo rollo algo montado, apenas estoy aprendiendo a usar clases en php y ya me mandaron a hacer algo que me tiene loco. Tengo que hacer una simulación para una biblioteca donde se pueda permitir controlar la información sobre todos sus libros, de los cuales se pretende guardar: (Titulo, Autor, Cantidad de Paginas y Cantidad de Copias que existen) usando dos clases:
Class biblioteca: - libros:array
- adicionarlibro(entrada $libro : object

Class libro: - titulo: string
- autor: string
- cantpaginas: int
- cantcopias: int

Dado esto tendría que hacer lo siguiente:

Hacer las clases con las siguientes características
- De cada clase defina los atributos y sus tipos según corresponda.
- En la clase Biblioteca la función del método AdicionarLibro() es insertar dentro del arreglo Libros[ ] un nuevo objeto Libro ya creado con todos sus datos. Programar la funcionalidad de este método.
- Para cada atributo de la clase Libro es necesario que implemente el correspondiente método get y set
- Implemente un constructor de la forma más óptima para la clase Libro

Dicho esto, pues me propuse caerme a golpes con la computadora y saque lo siguiente
Código PHP:

<?php
class biblioteca
{
private 
$Libros = array();
  
//constructor de la clase libro
  
function __construct($newlibro,$num)
  {
  
$this->Libros=$nuevolibro;
  }
 
// operaciones de la clase Biblioteca
 // ponedor de nuevo libro

   
function SacarLibro(){
    return 
implode(','$this->Libros);
   }
};
class 
libro extends biblioteca
{

}

$biblio=new Biblioteca();
$biblio->AdicionarLibro("Introduccion a PHP 5",1);
$biblio->AdicionarLibro("Introduccion a MYSQL 5",4);
print 
$biblio->SacarLibro();
?>
<body>
</body>
</html>
<?php
class Libro
{
private 
$titulo;
private    
$autor;
private    
$cantpaginas;
private    
$cantcopias;
    
//constructor de la clase libro
  
function __construct($title,$aut,$CanPagin,$CanCop)
  {
  
$this->titulo=$title;
  
$this->autor=$aut;
  
$this->cantpaginas=$CanPagin;
  
$this->cantcopias=$CanCop;
  }
// operaciones de la clase Biblioteca
// ponedor de titulo
  
function setTitulo($title)
  {
    
$this->$titulo $title;
  }
// extractor de titulo
    
function getTitle()
  {
    return 
$this->titulo;
  }
  
// ponedor de autor
  
function setAutor($aut)
  {
    
$this->$autor $aut;
  }
 
// extractor de autor
    
function getAutor()
  {
    return 
$this->autor;
  }
  
// ponedor de cantidad de paginas
  
function setCantpaginas($CanPag)
  {
    
$this->$cantpaginas $CanPag;
  }
 
// extractor de cantidad de paginas
    
function getCantpaginas()
  {
    return 
$this->cantpaginas;
  }
 
// ponedor de cantidad de Copias
  
function setcantcopias($CanCop)
  {
    
$this->$cantcopias $CanCop;
  }
 
// extractor de cantidad de Copias
    
function getcantcopias()
  {
    return 
$this->$cantcopias;
  }
    
};
?>
Pero al ejecutarlo me da error y consultando con el tutor pues me indico lo siguiente (cosa que de verdad ya estoy bloqueado y no caigo como poder arreglar todo) además de que me indicaron que debo separar las clases en dos archivos para después aplicarlos con inlcude() donde tenga que hacer uso del archivo:
Cita:
Antes de explicarle su problema quisiera mostrarle una aproximación al diseño de clases del ejercicio 2 de esta semana y como se debe modelar.

La idea es crear una clase Biblioteca donde esta contenga dentro de sus atributos privados un arreglo de libros.

Por ejemplo:
class Biblioteca {
private $Libros = array();

function AdicionarLibro($aLibro) {
// aqui se adiciona dentro del arreglo $Libros el objeto $aLibro que se pase por parámetro
}
.
.
.
}

Y luego crear una clase Libro que no tiene nada que ver con la clase Biblioteca pues como se ve son 2 cosas diferentes ya que la biblioteca contiene un listado de todos los libros existentes dentro de ella es por esto que cuando se adiciona un libro este se guarda dentro de un arreglo en la clase biblioteca
class Libro {
private $autor;
private $titulo;
private $cantpaginas;
private $cantcopias;
// Ojo que el constructor debe tener 2 guiones abajo consecutivos __
function __construct($atitulo, $aautor, $acantpaginas, $acantcopias) {
// aqui asigno a los atributos privados los parámetros que se pasan en el constructor.
}

function setAutor($aautor) {
//aqui asigno al atributo privado $autor el valor que se le pasa por parámetro
}

function getAutor() {
//aqui devuelvo el valor del atributo privado autor el cual es usado para mostrar los resultados en pantalla.
}

}

Después debe hacer algo como esto para poder insertar los libros:
$l1= new Libro('Introduccion a PHP5', 'David Sklar', 415, 5);
$l2= new Libro('PHP Profesionales', 'Ashish', 720, 1);
$l3= new Libro('Estructura de Datos en Pascal', 'M. Tenenbaum', 560, 3);
$l4= new Libro('Programación en PASCAL', 'Byron S. Gottfried', 398, 1);
$l5= new Libro('PHP5 and MySQL Bible', 'Tim Converse', 1083, 1);

$Bib = new Biblioteca();
$Bib->AdicionarLibro($l1);
$Bib->AdicionarLibro($l2);
$Bib->AdicionarLibro($l3);
$Bib->AdicionarLibro($l4);
$Bib->AdicionarLibro($l5);

Y debe existir un procedimiento que imprima todos los libros considero que esta función debe estar dentro de la clase Biblioteca.
Si algun alma caritativa tendra un poco de tiempo y quiera ayudarme a encontrar una solucion a este codigo lo agradeceria muchisimo

Última edición por jam1138; 01/09/2008 a las 10:50
  #2 (permalink)  
Antiguo 01/09/2008, 10:54
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Respuesta: CLASS para sistema de biblioteca

Pues honestamente, no entiendo la complicación. Te están dando la solución perfectamente explicada, solo tienes que convertirla a código.... ¿podrías concretar tu duda?. Te sugiero leer con cuidado y calma para comprenderlo.

Suerte
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 01/09/2008, 11:51
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: CLASS para sistema de biblioteca

es que mi problema va justo a eso... mi problema esta llevarlo a codigo porque sinceramente me esta costando un poco enteder la formacion y aplicacion de clases
  #4 (permalink)  
Antiguo 01/09/2008, 12:06
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Respuesta: CLASS para sistema de biblioteca

No, lo que te esta costando es el concepto de objetos. Supongo ya pasarán aquí ha "educarte" . El error en tu código es que haces una herencia innecesaria... como te digo, te lo explican perfectamente (creo yo, hasta mal hacen con eso, pues poco dejan a la imaginación).

Te dicen primero necesitas una clase Libro:
Código PHP:
class Libro
{
    private 
$titulo;

    function 
__construct($titulo)
    {
        
$this->titulo=$titulo;
    }

Con la que crearás objetos tipo Libro (libros!):
Código PHP:
include 'laClassLibro.php';

$libro1= new Libro('Titulo de libro 1'); // Un libro
$libro2= new Libro('Titulo de libro 2'); // Otro libro
$libro3= new Libro('Titulo de libro 3'); // Otro libro 
Por otro lado, tendrás una clase biblioteca con un método para almacenar libros:
Código PHP:
<?php
class Biblioteca
{
    private 
$libros = array();

    function 
AdicionarLibro($aLibro)
    {
        
array_push($this->libros$aLibro);
    }
}
... y, simplemente, los almacenas!
Código PHP:
include 'laClaseBiblioteca.php';

$biblioteca = new Biblioteca;
$biblioteca->AdicionarLibro($libro1); // $libro1 previamente instanciado como en el código anterior
$biblioteca->AdicionarLibro($libro2); // etc, etc, etc... 
Eso es lo que te piden, eso es lo que te explican, no hago mas que repetirlo. Piénsalo con calma, analízalo, pruébalo y entiendelo.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 02/09/2008, 10:59
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: CLASS para sistema de biblioteca

Gracias por tu explicacion Jam1138. Ahora para poder ver estos resultados deberia mandarlos tanto a un archivo txt como poder verlos en la web.

mando a correr dentro [php]echo $biblioteca->AdicionarLibro()[php] de un archivo donde almaceno los dos include para poder tratar de ver los resultados primero a la web y me da el siguiente error
Warning: Missing argument 1 for Biblioteca::AdicionarLibro(), called in C:\wamp\www\New Folder\ver.php on line 16 and defined in C:\wamp\www\New Folder\classbiblioteca.inc.php on line 7

solo que no termino de entenderlo, hasta este momento en la linea 16 tengo el echo que esta invocando a imprimir los valores instanciados, o me equivoco?
  #6 (permalink)  
Antiguo 02/09/2008, 12:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: CLASS para sistema de biblioteca

Hola zubintro,

El método adicionarLibro solo es para agregar libros, si lo que tu deseas es mostrarlo necesitas crear un nuevo método para mostrar los libros, lo ideal es usar un foreach.

Saludos.
  #7 (permalink)  
Antiguo 02/09/2008, 16:21
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: CLASS para sistema de biblioteca

Gracias por tu respuesta Gatorv, encontre una solucion para mostrar los datos y todo el ejercicio me quedo asi

Una primera clase llamada classlibro
Código PHP:
<?php 
class Libro ////Defino la clase para crear el objeto Libro
{
    private 
$titulo;
    private 
$autor;
    private 
$paginas;
    private 
$copias;

    function 
__construct($atitulo$aautor$apaginas$acopias) {
        
$this->titulo $atitulo;
        
$this->autor $aautor;
        
$this->paginas $apaginas;
        
$this->copias $acopias;
    }
/////////////Funciones conjuntas para cada argumento y definir su atributo privado///////////////
    
function setTitulo($atitulo) {
        
$this->titulo $atitulo;
    }     
    function 
getTitulo() {
        return 
$this->titulo;
    }
/////////////Funciones conjuntas para cada argumento y definir su atributo privado///////////////
    
function setAutor($aautor) {
        
$this->autor $aautor;
    }
    function 
getAutor() {
        return 
$this->autor;
    }
/////////////Funciones conjuntas para cada argumento y definir su atributo privado///////////////
    
function setPaginas($apaginas) {
        
$this->paginas $apaginas;
    }     
    function 
getPaginas() {
        return 
$this->paginas;
    }
/////////////Funciones conjuntas para cada argumento y definir su atributo privado///////////////
    
function setCopias ($acopias) {
        
$this->Copias $acopias;
    }     
    function 
getCopias() {
        return 
$this->copias;
    }
//////////////////////////////////////////////////////////////////////////////////////////////////
}
?>
Seguido de otra clases llamada classbiblio
Código PHP:
<?php
class Biblioteca
{
////////////////////////////////////////////////////////////////////////////////////////////////    
    
function getCantLibros() { //esta funcion no permitira mostrar el arreglo si existen argumentos cargados
        
return count($this->Libros);        
    }
////////////////////////////////////////////////////////////////////////////////////////////////
    
private $libros = array(); //Con esta clase se almacenan los datos en el array

//////////////////////////////////////////////////////////////////////////////////////////////
    
function AdicionarLibro($aLibro)// aqui se adiciona dentro del arreglo $Libros el objeto $aLibro que se pase por parámetro
    
{
        
$this->Libros[] = $aLibro;
    }
//////////////////////////////////////////////////////////////////////////////////////////////    
    
function MostrarLibro($lib) {
      print 
"<tr bgcolor='Gray'><td>".$lib->getTitulo()."</td><td>".$lib->getAutor()."</td><td>".$lib->getPaginas()."</td><td>".$lib->getCopias()."</td></tr>";
    }
//////////////////////////////////////////////////////////////////////////////////////////////////
    
function Mostrar()     {    // Funcion para mostrar todos los libros de la biblioteca 
        
print "<table>";
        print 
"<tr bgcolor='yellow'><th>Titulo</th><th>Autor</th><th>Paginas</th><th>Copias</th></tr>";        
//Se define la variable $i para identificar si hay registros cargados para mostrar el array
        
for ($i=0$i<=($this->getCantLibros()-1);$i++) { 
          print 
$this->MostrarLibro($this->Libros[$i]); 
         }  
        print 
"</table>"
    } 

?>
Y por ultimo un archivo donde cargo los valores y aplico las funciones
Código PHP:
<?php 
include 'classLibro.inc.php'//Cargamos libro por libro definiendo los argumentos declarados en la funcion classlibro
$libro1= new Libro('Introduccion a PHP5''David Sklar'4155); // Ejemplo de la carga de un registro
$libro2= new Libro('PHP Profesionales''Ashish'7208);
$libro3= new Libro('Estructura de Datos en Pascal''M. Tenenbaum'5603);
$libro4= new Libro('Programación en PASCAL''Byron S. Gottfried'3985);
$libro5= new Libro('PHP5 and MySQL Bible''Tim Converse'10832);

include 
'classBiblioteca.inc.php'//Invocamos la clase para ejecutar el array y almacenar los datos
$biblio = new Biblioteca;
$biblio->AdicionarLibro($libro1);// $libro1 previamente instanciado como en el código
$biblio->AdicionarLibro($libro2);
$biblio->AdicionarLibro($libro3);
$biblio->AdicionarLibro($libro4);
$biblio->AdicionarLibro($libro5);
$biblio->Mostrar(); //Esto llama la funcion que muestra lo almacenado en el arreglo Libro que se 

?>
Creo que esta vez si no presento ningun problema ya que me esta funcionando bastante bien gracias a todos.

Ahora mi problema es el siguiente, como podria desarrollar dentro de estas clases, un metodo para incorporar valores mediante un formulario y de que manera puedo hacer para que estos se almacenen en un archivo txt?? gracias a los que me puedan ayudar!.
  #8 (permalink)  
Antiguo 02/09/2008, 16:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: CLASS para sistema de biblioteca

Lee en el manual de PHP, tienes a tu disposición los métodos fopen/fwrite/fclose, también tienes las funciones serialize, y unserialize para guardar los datos.

Saludos.
  #9 (permalink)  
Antiguo 02/09/2008, 17:52
Avatar de jpunk  
Fecha de Ingreso: octubre-2005
Ubicación: Bogota
Mensajes: 335
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: CLASS para sistema de biblioteca

hey zubintro que libro seguis.....

suena interesante que pongan practicas.

gracias...
  #10 (permalink)  
Antiguo 03/09/2008, 15:06
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Pregunta formulario para ingresar registros en clase

Hola, continuando con el tema de las clases y la ayuda que me puedan dar para hacer lo siguiente, necesito desarrollar un formulario para ingresar registros que queden almacenados en un archivo TXT, tengo las sigueintes clases

Clase libro.php donde creo los objetos para poder mostrar
Código PHP:
<?php 
class Libro ////Defino la clase para crear el objeto Libro
{
    private 
$titulo;
    private 
$autor;
    private 
$paginas;
    private 
$copias;

    function 
__construct($atitulo$aautor$apaginas$acopias) {
        
$this->titulo $atitulo;
        
$this->autor $aautor;
        
$this->paginas $apaginas;
        
$this->copias $acopias;
    }
/////////////Funciones conjuntas para cada argumento y definir su atributo privado///////////////
    
function setTitulo($atitulo) {
        
$this->titulo $atitulo;
    }     
    function 
getTitulo() {
        return 
$this->titulo;
    }
/////////////Funciones conjuntas para cada argumento y definir su atributo privado///////////////
    
function setAutor($aautor) {
        
$this->autor $aautor;
    }
    function 
getAutor() {
        return 
$this->autor;
    }
/////////////Funciones conjuntas para cada argumento y definir su atributo privado///////////////
    
function setPaginas($apaginas) {
        
$this->paginas $apaginas;
    }     
    function 
getPaginas() {
        return 
$this->paginas;
    }
/////////////Funciones conjuntas para cada argumento y definir su atributo privado///////////////
    
function setCopias ($acopias) {
        
$this->Copias $acopias;
    }     
    function 
getCopias() {
        return 
$this->copias;
    }
//////////////////////////////////////////////////////////////////////////////////////////////////
}
?>
Clase biblioteca donde se ordenan las funciones y se indica como mostrar el arreglo
Código PHP:
<?php
class Biblioteca
{
////////////////////////////////////////////////////////////////////////////////////////////////    
    
function getCantLibros() { //esta funcion no permitira mostrar el arreglo si existen argumentos cargados
        
return count($this->Libros);        
    }
////////////////////////////////////////////////////////////////////////////////////////////////
    
private $libros = array(); //Con esta clase se almacenan los datos en el array

//////////////////////////////////////////////////////////////////////////////////////////////
    
function AdicionarLibro($aLibro)// aqui se adiciona dentro del arreglo $Libros el objeto $aLibro que se pase por parámetro
    
{
        
$this->Libros[] = $aLibro;
    }
//////////////////////////////////////////////////////////////////////////////////////////////    
    
function MostrarLibro($lib) {
      print 
"<tr bgcolor='Gray'><td>".$lib->getTitulo()."</td><td>".$lib->getAutor()."</td><td>".$lib->getPaginas()."</td><td>".$lib->getCopias()."</td></tr>";
    }
//////////////////////////////////////////////////////////////////////////////////////////////////
    
function Mostrar()     {    // Funcion para mostrar todos los libros de la biblioteca 
        
print "<table>";
        print 
"<tr bgcolor='yellow'><th>Titulo</th><th>Autor</th><th>Paginas</th><th>Copias</th></tr>";        
//Se define la variable $i para identificar si hay registros cargados para mostrar el array
        
for ($i=0$i<=($this->getCantLibros()-1);$i++) { 
          print 
$this->MostrarLibro($this->Libros[$i]); 
         }  
        print 
"</table>"
    } 

?>
Y por ultimo tenia el siguiente archivo donde se almacenan los registros a mostrar y se indica la orden para mostrarlos. Este archivo es uno de los que tengo que cambiar para pasar los registros a un archivo txt y de donde se puedan tomar para la visualizacion
Código PHP:
<?php 
include('check.php');

include 
'classLibro.inc.php'//Cargamos libro por libro definiendo los argumentos declarados en la funcion classlibro
$libro1= new Libro('Introduccion a PHP5''David Sklar'4155); // Ejemplo de la carga de un registro
$libro2= new Libro('PHP Profesionales''Ashish'7208);
$libro3= new Libro('Estructura de Datos en Pascal''M. Tenenbaum'5603);
$libro4= new Libro('Programación en PASCAL''Byron S. Gottfried'3985);
$libro5= new Libro('PHP5 and MySQL Bible''Tim Converse'10832);

include 
'classBiblioteca.inc.php'//Invocamos la clase para ejecutar el array y almacenar los datos
$biblio = new Biblioteca;
$biblio->AdicionarLibro($libro1);// $libro1 previamente instanciado como en el código
$biblio->AdicionarLibro($libro2);
$biblio->AdicionarLibro($libro3);
$biblio->AdicionarLibro($libro4);
$biblio->AdicionarLibro($libro5);
$biblio->Mostrar(); //Esto llama la funcion que muestra lo almacenado en el arreglo Libro que se 
?>
Mi problema es que no se por donde empezar, digamos que no caigo en cuenta para las lineas de codigo... alguien tiene alguna idea??
  #11 (permalink)  
Antiguo 03/09/2008, 16:32
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 4 meses
Puntos: 43
Respuesta: formulario para ingresar registros en clase

Hola zubintro !

Puedes crear una clase que tenga como responsabilidad el guardar las instacias de tipo Libro en un archivo de texto.

Para no acoplar tu sistema a implementaciones concretas puedes abstraer ese concepto y modelar una 'interface' para que puedas guardar tus instancias en distintos medios persistentes como un XML o una Base de Datos.

Por ejemplo, podrías definir tu 'interface' así:

Código PHP:
interface ISaver {
    function 
save();

Las implementaciones concretas:

Código PHP:
class TxtSaver implements ISaver {
       
       private 
$biblioteca

       
public function __construct($biblioteca) {
             
$this->biblioteca $biblioteca;
       }       

       public function 
save() {
                
$iterator $this->biblioteca->getIterator();
                while(
$iterator->hasNext()) {
                     
$libro $iterator->next();
                     
//Instrucciones para salvar el Libro en un archivo de texto.
               

       }


Más adelante te piden que los guardes en un XML, solamente implementas la 'interface' y defines los comportamientos específicos.

Código PHP:
class XmlSaver implements ISaver {
       
       public function 
save() {
            
//etc...
       
}



Un saludote !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
  #12 (permalink)  
Antiguo 03/09/2008, 21:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: CLASS para sistema de biblioteca

Temas unidos por favor no dupliques temas.
  #13 (permalink)  
Antiguo 04/09/2008, 09:02
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: CLASS para sistema de biblioteca

Gracias jahepi por tu respuesta pero tengo algunas dudas, no se si puedas explicame un poco mejor tu post, por ejemplo obviamente necesito un interfaz de formulario para cargar los datos la cual estaria definida con los mismos valores de la clase libro donde pasaria las variables del formulario como
$atitulo=$_POST['titulo'] ..... $aautor=$_POST['autor']..... y asi sucesivamente con todos los valores del formulario para esto en la pagina del formulario deberia cargar con un include la clase libro, o me equivoco??

En este caso me dices que como primer paso definir el formulario con el codigo
Código PHP:
interface ISaver 
    function 
save(); 

y la verdad no entiendo como podria hacerlo.

En el caso de las otras dos clases que e sugieres, la cosa seria donde las invocas? seria en el mismo formulario?
  #14 (permalink)  
Antiguo 04/09/2008, 15:34
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 4 meses
Puntos: 43
Respuesta: CLASS para sistema de biblioteca

Cita:
Iniciado por zubintro Ver Mensaje
Gracias jahepi por tu respuesta pero tengo algunas dudas, no se si puedas explicame un poco mejor tu post, por ejemplo obviamente necesito un interfaz de formulario para cargar los datos la cual estaria definida con los mismos valores de la clase libro donde pasaria las variables del formulario como
$atitulo=$_POST['titulo'] ..... $aautor=$_POST['autor']..... y asi sucesivamente con todos los valores del formulario para esto en la pagina del formulario deberia cargar con un include la clase libro, o me equivoco??

En este caso me dices que como primer paso definir el formulario con el codigo
Código PHP:
interface ISaver 
    function 
save(); 

y la verdad no entiendo como podria hacerlo.

En el caso de las otras dos clases que e sugieres, la cosa seria donde las invocas? seria en el mismo formulario?
Hola zubintro !

Perdón por haberte confundido, cuando hablo de 'interface' no me refiero a la interfaz de usuario.

Interface es un tipo abstracto donde se especifíca la interfaz pública (métodos públicos) de la clase que la implemente, si una clase implementa valga la reduncia una 'interface', debemos definir los comportamientos específicos de cada método público, en otras palabras la clase firma un contrato de implementación.

Ahorita mejor deja el uso de 'interfaces' para un estudio posterior y enfócate nada mas en definir una clase que tenga como responsabilidad el guardar los libros que se encuentran en la biblioteca.

En el punto de entrada de tu programa lo visualizo así:

Código PHP:
<?php 
include('check.php');
include(
'LibrarySaver.php'); //Incluimos la clase encargada de guardar los libros.

include 'classLibro.inc.php'//Cargamos libro por libro definiendo los argumentos declarados en la funcion classlibro
$libro1= new Libro('Introduccion a PHP5''David Sklar'4155); // Ejemplo de la carga de un registro
$libro2= new Libro('PHP Profesionales''Ashish'7208);
$libro3= new Libro('Estructura de Datos en Pascal''M. Tenenbaum'5603);
$libro4= new Libro('Programación en PASCAL''Byron S. Gottfried'3985);
$libro5= new Libro('PHP5 and MySQL Bible''Tim Converse'10832);

include 
'classBiblioteca.inc.php'//Invocamos la clase para ejecutar el array y almacenar los datos
$biblio = new Biblioteca;
$biblio->AdicionarLibro($libro1);// $libro1 previamente instanciado como en el código
$biblio->AdicionarLibro($libro2);
$biblio->AdicionarLibro($libro3);
$biblio->AdicionarLibro($libro4);
$biblio->AdicionarLibro($libro5);
$biblio->Mostrar(); //Esto llama la funcion que muestra lo almacenado en el arreglo Libro que se 

//Salvamos los libros.
$saver = new LibrarySaver($biblio);
$saver->save();
?>
Clase LibrarySaver.
Código PHP:
class LibrarySaver {
       
       private 
$biblioteca

       
public function __construct($biblioteca) {
             
$this->biblioteca $biblioteca;
       }       

       public function 
save() {
                
//Vemos que libros hay en la biblioteca.
                
$iterator $this->biblioteca->getIterator(); 
                while(
$iterator->hasNext()) {
                     
$libro $iterator->next();
                     
//Instrucciones para salvar cada Libro en un archivo de texto.
               

       }


Un saludote !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
  #15 (permalink)  
Antiguo 05/09/2008, 07:11
Avatar de chitoso  
Fecha de Ingreso: mayo-2008
Ubicación: Montevideo, Uruguay
Mensajes: 205
Antigüedad: 15 años, 11 meses
Puntos: 5
Respuesta: CLASS para sistema de biblioteca

Un aporte nomás, para imprimir los libros también podrías redefinir el método __toString() de Libro. Luego haces

$lib = new Libro();
echo $lib;
__________________
Pasión por la Música
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 02:07.