Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/09/2008, 08:44
zubintro
 
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