commit 478909272cb1e3e3927065ca64326b46e043e27e Author: Isidoro Nevares Martín Date: Mon May 25 12:15:24 2026 +0200 Commit inicial diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..5424aa7 --- /dev/null +++ b/.classpath @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..0fff158 --- /dev/null +++ b/.project @@ -0,0 +1,34 @@ + + + eedd_ordinaria_ra4 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + + + 1772465433562 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..e9441bb --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.apt.core.prefs b/.settings/org.eclipse.jdt.apt.core.prefs new file mode 100644 index 0000000..d4313d4 --- /dev/null +++ b/.settings/org.eclipse.jdt.apt.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.apt.aptEnabled=false diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..1b6e1ef --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.processAnnotations=disabled +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..c5d29ff --- /dev/null +++ b/pom.xml @@ -0,0 +1,24 @@ + + 4.0.0 + org.lapaloma.biblioteca + eedd_ordinaria_ra4 + 0.0.1-SNAPSHOT + + UTF-8 + 1.8 + 1.8 + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + ${maven.compiler.source} + ${maven.compiler.target} + + + + + diff --git a/src/main/java/eedd/ra4/ordinaria/AppLibreria.java b/src/main/java/eedd/ra4/ordinaria/AppLibreria.java new file mode 100644 index 0000000..37d35f2 --- /dev/null +++ b/src/main/java/eedd/ra4/ordinaria/AppLibreria.java @@ -0,0 +1,51 @@ +package eedd.ra4.ordinaria; + +import eedd.ra4.ordinaria.vo.LibroDigital; +import eedd.ra4.ordinaria.vo.LibroFisico; + +/** + * AppLibreria: Clase que realiza el tratamiento de una biblioteca. + * + */ +public class AppLibreria { + public static void main(String[] args) { + // Variables candidatas para renombramiento + LibroFisico lf = new LibroFisico(); + lf.setTitulo("El Quijote"); + lf.setAutor("Miguel de Cervantes"); + lf.setDisponible(true); + lf.precio= 25.0; + lf.codigoISBN = "978-8491051210"; + lf.pesoKg = 0.8; + + LibroDigital ld = new LibroDigital(); + ld.setTitulo("Programación Java"); + ld.setAutor("Ana Programadora"); + ld.setDisponible(true); + ld.precio= 15.0; + ld.formato = "EPUB"; + ld.tamanoMB = 2.4; + + System.out.println("=== ANTES DE APLICAR PROMOCIONES ==="); + System.out.println(lf.obtenerInfo()); + System.out.println(ld.obtenerInfo()); + + lf.aplicarIva(); + lf.aplicarPromocion(lf); + + ld.aplicarIva(); + ld.aplicarDescuentoDigital(); + + System.out.println("\n=== DESPUÉS DE APLICAR PROMOCIONES ==="); + System.out.println("Libro físico: " + lf.obtenerInfo()); + System.out.println("Costo envío: " + lf.calcularCostoEnvio() + "€"); + System.out.println("Precio final: " + lf.obtenerPrecioFinal() + "€"); + + System.out.println("\nLibro digital: " + ld.obtenerInfo()); + System.out.println("Tiempo descarga (2 MB/s): " + ld.calcularTiempoDescarga(2.0) + " segundos"); + + System.out.println("\n=== VALIDACIONES ==="); + System.out.println("ISBN válido: " + lf.validarISBN()); + System.out.println("Libro digital válido: " + ld.esValido()); + } +} diff --git a/src/main/java/eedd/ra4/ordinaria/vo/Libro.java b/src/main/java/eedd/ra4/ordinaria/vo/Libro.java new file mode 100644 index 0000000..64688d9 --- /dev/null +++ b/src/main/java/eedd/ra4/ordinaria/vo/Libro.java @@ -0,0 +1,60 @@ +package eedd.ra4.ordinaria.vo; + +/** + * Libro: Clase base que representa un libro en la biblioteca. + * + */ + +public class Libro { + private String titulo; + private String autor; + private boolean disponible; + public double precio; + + /** + * Aplica el IVA al precio del libro. + */ + public void aplicarIva() { + precio += 10 / 100; // porcentaje IVA + } + + public void aplicarPromocion(LibroFisico libroFisico) { + + double descuento = 20; // 20 es el descuento promoción + + libroFisico.precio -= descuento; + } + + + /** + * Obtiene información básica del libro. + */ + public String obtenerInfo() { + return "Titulo: " + getTitulo() + ", Autor: " + getAutor() + ", Precio: " + precio + "€"; + } + + public String getTitulo() { + return titulo; + } + + public void setTitulo(String titulo) { + this.titulo = titulo; + } + + public String getAutor() { + return autor; + } + + public void setAutor(String autor) { + this.autor = autor; + } + + + public boolean isDisponible() { + return disponible; + } + + public void setDisponible(boolean disponible) { + this.disponible = disponible; + } +} diff --git a/src/main/java/eedd/ra4/ordinaria/vo/LibroDigital.java b/src/main/java/eedd/ra4/ordinaria/vo/LibroDigital.java new file mode 100644 index 0000000..f9757f3 --- /dev/null +++ b/src/main/java/eedd/ra4/ordinaria/vo/LibroDigital.java @@ -0,0 +1,50 @@ +package eedd.ra4.ordinaria.vo; + +/** + * LibroDigital: Clase que representa un libro en formato digital. + * Métodos específicos para libros digitales. + */ +public class LibroDigital extends Libro { + public String formato; + public double tamanoMB; + + // Constante para descuento por descarga digital + public static final int DESCUENTO_DIGITAL = 10; + // Constante para tamaño máximo permitido + public static final double TAMAÑO_MAXIMO_MB = 500.0; + + /** + * Aplica descuento adicional a libros digitales. + */ + public void aplicarDescuentoDigital() { + precio -= DESCUENTO_DIGITAL; + if (precio < 0) { + precio=0; + } + } + + /** + * Verifica si el libro digital es válido. + * @return true si el formato y tamaño son válidos + */ + public boolean esValido() { + return formato != null && !formato.isEmpty() && tamanoMB > 0 && tamanoMB <= TAMAÑO_MAXIMO_MB; + } + + /** + * Calcula el tiempo de descarga estimado (en segundos). + * @param velocidadMBps Velocidad de descarga en MB/s + * @return Tiempo estimado en segundos + */ + public double calcularTiempoDescarga(double velocidadMBps) { + if (velocidadMBps <= 0) { + return 0; + } + return tamanoMB / velocidadMBps; + } + + @Override + public String obtenerInfo() { + return super.obtenerInfo() + ", Formato: " + formato + ", Tamaño: " + tamanoMB + "MB"; + } +} diff --git a/src/main/java/eedd/ra4/ordinaria/vo/LibroFisico.java b/src/main/java/eedd/ra4/ordinaria/vo/LibroFisico.java new file mode 100644 index 0000000..3332cc5 --- /dev/null +++ b/src/main/java/eedd/ra4/ordinaria/vo/LibroFisico.java @@ -0,0 +1,39 @@ +package eedd.ra4.ordinaria.vo; + +/** + * LibroFisico: Clase que representa un libro en formato físico. + * Métodos específicos para libros físicos. + */ +public class LibroFisico extends Libro { + public String codigoISBN; + public double pesoKg; + + /** + * Calcula el costo de envío basado en el peso. + * @return Costo del envío + */ + public double calcularCostoEnvio() { + return 3.5 + (pesoKg * 0.5); // Gasto envío base + (pesoKg * porcentaje envío por peso) + } + + /** + * Obtiene el precio final incluyendo envío. + * @return Precio final del libro físico + */ + public double obtenerPrecioFinal() { + return precio + calcularCostoEnvio(); + } + + /** + * Valida el código ISBN. + * @return true si el ISBN es válido, false en caso contrario + */ + public boolean validarISBN() { + return codigoISBN != null && codigoISBN.length() > 0; + } + + @Override + public String obtenerInfo() { + return super.obtenerInfo() + ", ISBN: " + codigoISBN + ", Peso: " + pesoKg + "kg"; + } +} diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF new file mode 100644 index 0000000..a5622f8 --- /dev/null +++ b/target/classes/META-INF/MANIFEST.MF @@ -0,0 +1,4 @@ +Manifest-Version: 1.0 +Build-Jdk-Spec: 21 +Created-By: Maven Integration for Eclipse + diff --git a/target/classes/META-INF/maven/org.lapaloma.biblioteca/eedd_ordinaria_ra4/pom.properties b/target/classes/META-INF/maven/org.lapaloma.biblioteca/eedd_ordinaria_ra4/pom.properties new file mode 100644 index 0000000..d831411 --- /dev/null +++ b/target/classes/META-INF/maven/org.lapaloma.biblioteca/eedd_ordinaria_ra4/pom.properties @@ -0,0 +1,7 @@ +#Generated by Maven Integration for Eclipse +#Mon May 25 10:22:39 CEST 2026 +artifactId=eedd_ordinaria_ra4 +groupId=org.lapaloma.biblioteca +m2e.projectLocation=/home/lapalomafp/eclipse-workspace/eedd_ordinaria_ra4 +m2e.projectName=eedd_ordinaria_ra4 +version=0.0.1-SNAPSHOT diff --git a/target/classes/META-INF/maven/org.lapaloma.biblioteca/eedd_ordinaria_ra4/pom.xml b/target/classes/META-INF/maven/org.lapaloma.biblioteca/eedd_ordinaria_ra4/pom.xml new file mode 100644 index 0000000..c5d29ff --- /dev/null +++ b/target/classes/META-INF/maven/org.lapaloma.biblioteca/eedd_ordinaria_ra4/pom.xml @@ -0,0 +1,24 @@ + + 4.0.0 + org.lapaloma.biblioteca + eedd_ordinaria_ra4 + 0.0.1-SNAPSHOT + + UTF-8 + 1.8 + 1.8 + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + ${maven.compiler.source} + ${maven.compiler.target} + + + + + diff --git a/target/classes/eedd/ra4/ordinaria/AppLibreria.class b/target/classes/eedd/ra4/ordinaria/AppLibreria.class new file mode 100644 index 0000000..97a2e3a Binary files /dev/null and b/target/classes/eedd/ra4/ordinaria/AppLibreria.class differ diff --git a/target/classes/eedd/ra4/ordinaria/vo/Libro.class b/target/classes/eedd/ra4/ordinaria/vo/Libro.class new file mode 100644 index 0000000..8c89afd Binary files /dev/null and b/target/classes/eedd/ra4/ordinaria/vo/Libro.class differ diff --git a/target/classes/eedd/ra4/ordinaria/vo/LibroDigital.class b/target/classes/eedd/ra4/ordinaria/vo/LibroDigital.class new file mode 100644 index 0000000..145b28e Binary files /dev/null and b/target/classes/eedd/ra4/ordinaria/vo/LibroDigital.class differ diff --git a/target/classes/eedd/ra4/ordinaria/vo/LibroFisico.class b/target/classes/eedd/ra4/ordinaria/vo/LibroFisico.class new file mode 100644 index 0000000..2b19c1e Binary files /dev/null and b/target/classes/eedd/ra4/ordinaria/vo/LibroFisico.class differ