Estructura del Proyecto
1. Paquete: modelos
Clase Item:
package com.aluracursos.library.modelos;
public abstract class Item { private String titulo; private String autor; private String codigo;
public Item(String titulo, String autor, String codigo) {
this.titulo = titulo;
this.autor = autor;
this.codigo = codigo;
}
public String getTitulo() {
return titulo;
}
public String getAutor() {
return autor;
}
public String getCodigo() {
return codigo;
}
public abstract void mostrarInformacion();
}
Clase Libro: package com.aluracursos.library.modelos;
public class Libro extends Item { private int numeroPaginas;
public Libro(String titulo, String autor, String codigo, int numeroPaginas) {
super(titulo, autor, codigo);
this.numeroPaginas = numeroPaginas;
}
public int getNumeroPaginas() {
return numeroPaginas;
}
@Override
public void mostrarInformacion() {
System.out.println("Título: " + getTitulo());
System.out.println("Autor: " + getAutor());
System.out.println("Código: " + getCodigo());
System.out.println("Número de Páginas: " + getNumeroPaginas());
}
}
Clase Revista: package com.aluracursos.library.modelos;
public class Revista extends Item { private int numeroEdicion;
public Revista(String titulo, String autor, String codigo, int numeroEdicion) {
super(titulo, autor, codigo);
this.numeroEdicion = numeroEdicion;
}
public int getNumeroEdicion() {
return numeroEdicion;
}
@Override
public void mostrarInformacion() {
System.out.println("Título: " + getTitulo());
System.out.println("Autor: " + getAutor());
System.out.println("Código: " + getCodigo());
System.out.println("Número de Edición: " + getNumeroEdicion());
}
}
Clase Periodico: package com.aluracursos.library.modelos;
public class Periodico extends Item { private String fechaPublicacion;
public Periodico(String titulo, String autor, String codigo, String fechaPublicacion) {
super(titulo, autor, codigo);
this.fechaPublicacion = fechaPublicacion;
}
public String getFechaPublicacion() {
return fechaPublicacion;
}
@Override
public void mostrarInformacion() {
System.out.println("Título: " + getTitulo());
System.out.println("Autor: " + getAutor());
System.out.println("Código: " + getCodigo());
System.out.println("Fecha de Publicación: " + getFechaPublicacion());
}
}
2. Paquete: interfaces
Interfaz Prestamo: package com.aluracursos.library.interfaces;
public interface Prestamo { void prestar(); void devolver(); boolean estaPrestado(); }
3. Implementar la Interfaz en Clases
Modificar Clase Libro: package com.aluracursos.library.modelos;
import com.aluracursos.library.interfaces.Prestamo;
public class Libro extends Item implements Prestamo { private int numeroPaginas; private boolean prestado;
public Libro(String titulo, String autor, String codigo, int numeroPaginas) {
super(titulo, autor, codigo);
this.numeroPaginas = numeroPaginas;
this.prestado = false;
}
public int getNumeroPaginas() {
return numeroPaginas;
}
@Override
public void mostrarInformacion() {
System.out.println("Título: " + getTitulo());
System.out.println("Autor: " + getAutor());
System.out.println("Código: " + getCodigo());
System.out.println("Número de Páginas: " + getNumeroPaginas());
}
@Override
public void prestar() {
this.prestado = true;
System.out.println("Libro prestado.");
}
@Override
public void devolver() {
this.prestado = false;
System.out.println("Libro devuelto.");
}
@Override
public boolean estaPrestado() {
return prestado;
}
}
4. Paquete: calculos
Clase CalculadoraPrestamos: package com.aluracursos.library.calculos;
import com.aluracursos.library.interfaces.Prestamo;
public class CalculadoraPrestamos { private int totalPrestamos = 0;
public void calcularPrestamo(Prestamo item) {
if (item.estaPrestado()) {
totalPrestamos++;
}
}
public int getTotalPrestamos() {
return totalPrestamos;
}
}