Ejercicios Básicos de Programación Orientada a Objetos Java. Clase Libro

Ejercicios Básicos Resueltos POO Java

Crea una clase llamada Libro que guarde la información de cada uno de los libros de una biblioteca. La clase debe guardar el título del libro, autor, número de ejemplares del libro y número de ejemplares prestados. La clase contendrá los siguientes métodos:
Constructor por defecto.
Constructor con parámetros.
Métodos Setters/getters
Método préstamo que incremente el atributo correspondiente cada vez que se realice un préstamo del libro. No se podrán prestar libros de los que no queden ejemplares disponibles para prestar. Devuelve true si se ha podido realizar la operación y false en caso contrario.
Método devolución que decremente el atributo correspondiente cuando se produzca la devolución de un libro. No se podrán devolver libros que no se hayan prestado. Devuelve true si se ha podido realizar la operación y false en caso contrario.
Método toString para mostrar los datos de los libros. Este método se heredada de Object y lo debemos modificar (override) para adaptarlo a la clase Libro.
Escribe un programa para probar el funcionamiento de la clase Libro.
public class Libro {
    private String titulo;
    private String autor;
    private int ejemplares;
    private int prestados;

    //constructor por defecto
    public Libro() {
    }

    //constructor con parámetros
    public Libro(String titulo, String autor, int ejemplares, int prestados) {                                    
        this.titulo = titulo;
        this.autor = autor;
        this.ejemplares = ejemplares;
        this.prestados = prestados;
    }

    //getters y setters
    public String getAutor() {
        return autor;
    }

    public void setAutor(String autor) {
        this.autor = autor;
    }

    public int getEjemplares() {
        return ejemplares;
    }

    public void setEjemplares(int ejemplares) {
        this.ejemplares = ejemplares;
    }

    public int getPrestados() {
        return prestados;
    }

    public void setPrestados(int prestados) {
        this.prestados = prestados;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    //método para realizar el prestamo de un libro
    public boolean prestamo() {
        if (prestados < ejemplares) {
            prestados++;
            return true;
        } 
        return false;
    }

    //método para realizar la devolución de un libro
    public boolean devolucion() {
        if (prestados != 0) {
            prestados--;
            return true;
        }
        return false;
    }

    //método toString sobrescrito para mostrar los datos de la clase Libro
    @Override
    public String toString() {
        return "titulo: " + titulo + "\nautor: " + autor +
                  "\nejemplares: " + ejemplares + "\nprestados: " + prestados;                                    
    }
   
}//Fin de la clase Libro

Un programa para probar la clase Libro puede ser este:
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String titulo, autor;
        int ejemplares;

        //se crea el objeto libro1 utilizando el constructor con parámetros
        Libro libro1 = new Libro("El quijote", "Cervantes", 1, 0);
        //se crea el objeto libro2 utilizando el constructor por defecto
        Libro libro2 = new Libro();

        System.out.print("Introduce titulo: ");
        titulo = sc.nextLine();
        System.out.print("Introduce autor: ");
        autor = sc.nextLine();
        System.out.print("Numero de ejemplares: ");
        ejemplares = sc.nextInt();

        //se asigna a libro2 los datos pedidos por teclado.
        //para ello se utilizan los métodos setters
        libro2.setTitulo(titulo);
        libro2.setAutor(autor);
        libro2.setEjemplares(ejemplares);

        //se muestran por pantalla los datos del objeto libro1
        //se utilizan los métodos getters para acceder al valor de los atributos
        System.out.println("Libro 1:");
        System.out.println("Titulo: " + libro1.getTitulo());
        System.out.println("Autor: " + libro1.getAutor());
        System.out.println("Ejemplares: " + libro1.getEjemplares());
        System.out.println("Prestados: " + libro1.getPrestados());
        System.out.println();

        //se realiza un préstamo de libro1. El método devuelve true si se ha podido
        //realizar el préstamo y false en caso contrario
        if (libro1.prestamo()) {
            System.out.println("Se ha prestado el libro " + libro1.getTitulo());
        } else {
            System.out.println("No quedan ejemplares del libro " + libro1.getTitulo() + " para prestar");         
        }

        //se realiza una devolución de libro1. El método devuelve true si se ha podido
        //realizar la devolución y false en caso contrario
        if (libro1.devolucion()) {
            System.out.println("Se ha devuelto el libro " + libro1.getTitulo());
        } else {
            System.out.println("No hay ejemplares del libro " + libro1.getTitulo() + " prestados");
        }

        //se realiza otro préstamo de libro1
        if (libro1.prestamo()) {
            System.out.println("Se ha prestado el libro " + libro1.getTitulo());
        } else {
            System.out.println("No quedan ejemplares del libro " + libro1.getTitulo() + " para prestar");
        }

        //se realiza otro préstamo de libro1. En este caso no se podrá realizar ya que
        //solo hay un ejemplar de este libro y ya está prestado. Se mostrará por
        //pantalla el mensaje No quedan ejemplares del libro…
        if (libro1.prestamo()) {
            System.out.println("Se ha prestado el libro " + libro1.getTitulo());
        } else {
            System.out.println("No quedan ejemplares del libro " + libro1.getTitulo() + " para prestar");         
        }
        //mostrar los datos del objeto libro1
        System.out.println("Libro 1:");
        System.out.println("Titulo: " + libro1.getTitulo());
        System.out.println("Autor: " + libro1.getAutor());
        System.out.println("Ejemplares: " + libro1.getEjemplares());
        System.out.println("Prestados: " + libro1.getPrestados());
        System.out.println();

        //mostrar los datos del objeto libro2
        System.out.println("Libro 2:");
        System.out.println("Titulo: " + libro2.getTitulo());
        System.out.println("Autor: " + libro2.getAutor());
        System.out.println("Ejemplares: " + libro2.getEjemplares());
        System.out.println("Prestados: " + libro2.getPrestados());
        System.out.println();
}//Fin de la clase Fraccion

25 comentarios:

  1. Respuestas
    1. hola me podrias ayudar con este ejercicio?
      Punto 4.
      Se requiere un programa en Java que almacene 5 rectángulos en un arreglo y permita
      calcular el promedio de las áreas y el promedio de los perímetros de los 5 rectángulos.

      mi correo es jusebos73@gmail.com gracias

      Eliminar
    2. puedes mandar a imprimir System.out.println(lib1);
      puedes mandar a imprimir System.out.println(lib1);

      y con el metodo toSring definir el formato de cuando se mande a imprimir.

      Saludos...!

      Eliminar
  2. Muchas Gracias, por este tipo de ejercicios, la verdad resuelvo muchas dudas.

    ResponderEliminar
  3. Buen Aporte, muchas gracias. también me gusto el blog
    http://pokerjava.blogspot.pe/

    ResponderEliminar
  4. muy bueno funciona ok , verdad gracias

    ResponderEliminar
  5. no entiendo como vincular a los 2 clases ayudaaaaaa

    ResponderEliminar
    Respuestas
    1. bruno,no sé exactamente si ésta tu duda,pero intenta cambiar el``package´´ o el paquete para que coincidan.

      Eliminar
    2. Disculpa me podrias ayudar con esto?
      BookCenter es una antigua librer´ıa que recien est ´ a comenzando a manejar la informaci ´ on de sus ´
      libros y sus ventas de manera digital. La informacion de los libros se almacena en la lista ´ libros
      cuyos elementos son tuplas que contienen: (id libro, autor, valor NETO libro, tipo):
      libros = [("np01","Nicanor Parra", 15500,"poesia"),
      ("np02", "Nicanor Parra", 12500,"poesia"),
      ("gm01", "Gabriela Mistral", 15500,"poesia"),
      ("ggm01", "Gabriel Garcia Marquez", 14500,"novela"),
      ...]
      Ademas existe la lista ´ titulos cuyos elementos son tuplas que asocian los t´ıtulos de los libros
      con su identificador:
      titulos = [("Poemas y antipoemas", "np01"),
      ("Ecopoemas", "np02"),
      ("Tala", "gm01"),
      ("Cien anios de soledad", "ggm01")
      ...]
      Las ventas se registran en la siguiente lista:
      ventas = [("vta-101",(2018,1,27), ["np01","gm01"]),
      ("vta-102",(2018,1,25),["gm01","ggm01"]),
      ("vta-104",(2018,1,26), ["np01","np02"]),
      ("vta-106",(2018,1,27), ["np01","np02"])
      ...]
      cuyos elementos son tuplas que contienen: (id venta, fecha, lista libros vendidos). Lamentable-
      mente el sistema NO fue desarrollado por los alumnos de IWI-131, as´ı que ocurrio un error de ´
      sistema que no registro el monto total de la venta. Para solucionar esta situaci ´ on se les solicita ´
      construir la funcion´ agregar ventas(libros, titulos, ventas) la que recibe las tres
      listas descritas anteriormente, y retorna una nueva lista, cuyos elementos son tuplas que contienen:
      (fecha, id venta, total venta con IVA, lista titulos libros). Los elementos de esta nueva lista deben
      estar ordenados de forma ascedente segun la fecha, como se muestra en el ejemplo: ´
      >>> ventas2 = agregar_ventas(libros, titulos, ventas)
      >>> print ventas2
      [((2018, 1, 25), ’vta-102’, 35700.0, [’Tala’, ’Cien anios de soledad’]),
      ((2018, 1, 26), ’vta-104’, 33320.0, [’Poemas y antipoemas’, ’Ecopoemas’]),
      ((2018, 1, 27), ’vta-101’, 36890.0, [’Poemas y antipoemas’, ’Tala’]),
      ((2018, 1, 27), ’vta-106’, 33320.0, [’Poemas y antipoemas’, ’Ecopoemas’])
      ...]
      Nota: Recuerde que para obtener el precio con IVA se le debe agregar el 19 % al valor NETO.

      Eliminar
    3. te has confundido, te falta un parentesis en la linea 782

      Eliminar
  6. Mi viejo gracias. Pero una pregunta: es necesario ingresar por teclados los datos del libro 2 si el stter te los pide?

    ResponderEliminar
  7. todos resueltos. gracias :) , no tienes mas avanzados ?

    ResponderEliminar
  8. Hola me puedes ayudar con este ejercicio:
    Una tienda de emparedados incluye jamón, pan y queso en ellos, bajo un precio básico, el cliente puede elegir su acompañante entre guisantes y bebidas. Si el cliente elige guisantes, el precio básico del emparedado se incrementa así: $5500 si el guisante es papás a la francesa, $5000 si el guisante es yuca frita y $4200 si el guisante es plátano frito. Si el cliente elije gaseosa, como bebida el valor del emparedado se incrementa un 15% con respecto al valor básico, y si pide malteada el emparedado aumenta un 20%.

    Con POO.
    ES URGENTE, GRACIAS.

    ResponderEliminar
  9. como se unen los dos programas?
    no entiendo

    ResponderEliminar
  10. Desarrollar un programa en java que simule el préstamo,devolución y estado (prestado, no prestado) de una tienda de contenidos digitales (videos, audio, juegos, animaciones , otros)

    ayudame con este.

    ResponderEliminar
  11. Hola. Una pregunta, es necesario crear el objeto libro2?

    ResponderEliminar
  12. Debes realizar un programa bajo la filosofía Orientada a Objetos para una casa de cambio, donde te permita calcular los siguientes tipos de cambio:

    ResponderEliminar
  13. No tendrás el archivo SRC por fa

    ResponderEliminar
  14. me ayuda en este ejercicio en c#


    Cree una clase Libro que modele la información que se mantiene en una biblioteca sobre
    cada libro: título, autor, ISBN (único para cada libro), páginas, edición, editorial. La clase
    debe tener: propiedades, constructores. Además, se pide crear un pequeño sistema usando
    listas para:
    a. Insertar libros
    b. Modificar libros
    c. Listar libros
    d. Borrar libros

    ResponderEliminar
  15. 1. Definir una clase Libro para manejar la información asociada a un libro. La información de interés para un libro es: el título, el autor y el precio. Los métodos de interés son:Un constructor para crear un objeto libro, con título y autor como parámetros.  Imprimir en pantalla el título, los autores y el precio del libro.Métodos get y set para cada atributo de un libro. Se debe extender la clase Libro definiendo las siguientes clases: Libros de texto con un nuevo atributo que especifica el curso al cual está asociado el libro. Libros de texto de Politécnico Gran Colombiano: subclase de la clase anterior. Esta ○subclase tiene un atributo que especifica cuál facultad lo publicó. Novelas: pueden ser de diferente tipo, histórica, romántica, policíaca, realista, ciencia ficción o aventuras. Para cada una de las clases anteriores se debe definir su constructor y redefinir adecuadamente el método para visualizar del objeto

    ResponderEliminar