Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

biblioteca aplicacion

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<MaterialBibliografico> catalogo = new ArrayList<>();

        Libro libro1 = new Libro("Cien años de soledad", "Gabriel García Márquez", 1967, 417);
        Revista revista1 = new Revista("Nature", "Varios", 2024, 604);

        catalogo.add(libro1);
        catalogo.add(revista1);

        for (MaterialBibliografico material : catalogo) {
            material.mostrarInformacion();
            System.out.println();
        }
    }
}
public class Revista extends MaterialBibliografico {
    private int volumen;

    public Revista(String titulo, String autor, int anioPublicacion, int volumen) {
        super(titulo, autor, anioPublicacion);
        this.volumen = volumen;
    }

    public int getVolumen() {
        return volumen;
    }

    @Override
    public void mostrarInformacion() {
        System.out.println("--- Ficha Técnica de la Revista ---");
        System.out.println("Título: " + getTitulo());
        System.out.println("Autor: " + getAutor());
        System.out.println("Año de Publicación: " + getAnioPublicacion());
        System.out.println("Volumen: " + volumen);
    }
}
public class Libro extends MaterialBibliografico {
    private int numeroDePaginas;

    public Libro(String titulo, String autor, int anioPublicacion, int numeroDePaginas) {
        super(titulo, autor, anioPublicacion);
        this.numeroDePaginas = numeroDePaginas;
    }

    public int getNumeroDePaginas() {
        return numeroDePaginas;
    }

    @Override
    public void mostrarInformacion() {
        System.out.println("--- Ficha Técnica del Libro ---");
        System.out.println("Título: " + getTitulo());
        System.out.println("Autor: " + getAutor());
        System.out.println("Año de Publicación: " + getAnioPublicacion());
        System.out.println("Número de Páginas: " + numeroDePaginas);
    }
}
public abstract class MaterialBibliografico {
    private String titulo;
    private String autor;
    private int anioPublicacion;

    public MaterialBibliografico(String titulo, String autor, int anioPublicacion) {
        this.titulo = titulo;
        this.autor = autor;
        this.anioPublicacion = anioPublicacion;
    }

    public String getTitulo() {
        return titulo;
    }

    public String getAutor() {
        return autor;
    }

    public int getAnioPublicacion() {
        return anioPublicacion;
    }

    public abstract void mostrarInformacion();
}
1 respuesta

Hola Justin,

¡Tu código se ve muy bien estructurado! Estás aplicando correctamente los principios de la Orientación a Objetos en Java. Has creado una clase abstracta MaterialBibliografico que sirve como base para las clases Libro y Revista. Esto te permite definir un comportamiento común y luego especializarlo en las clases derivadas.

Aquí tienes algunos puntos positivos y consejos para mejorar o extender tu aplicación:

  1. Herencia y Polimorfismo: Estás utilizando herencia para que Libro y Revista extiendan de MaterialBibliografico, lo cual es una buena práctica. Además, el uso del método abstracto mostrarInformacion() es un buen ejemplo de polimorfismo, ya que permite que cada subclase implemente su propia versión del método.

  2. Uso de ArrayList: Estás utilizando ArrayList para almacenar diferentes tipos de MaterialBibliografico. Esto es muy útil ya que puedes iterar sobre el catálogo y llamar a mostrarInformacion() sin preocuparte por el tipo específico de objeto que estás manejando.

  3. Extensibilidad: Si en el futuro necesitas agregar más tipos de materiales bibliográficos, como Tesis o Articulo, puedes simplemente crear nuevas clases que extiendan de MaterialBibliografico y proporcionen su propia implementación de mostrarInformacion().

  4. Validaciones: Podrías considerar agregar algunas validaciones en los constructores, como asegurarte de que el año de publicación no sea negativo o que el número de páginas o volumen sea mayor que cero.

  5. Interfaz de Usuario: Si deseas mejorar la interacción con el usuario, podrías considerar agregar una interfaz gráfica o una interfaz de línea de comandos para permitir al usuario agregar o eliminar materiales del catálogo.

Espero que estos comentarios te sean útiles y te ayuden a seguir mejorando tu aplicación.