Commit inicial

This commit is contained in:
Isidoro Nevares Martín 2026-05-25 12:15:24 +02:00
commit 478909272c
18 changed files with 369 additions and 0 deletions

58
.classpath Normal file
View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="test" value="true"/>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="test" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/java-21-openjdk-amd64">
<attributes>
<attribute name="module" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="target/generated-sources/annotations">
<attributes>
<attribute name="ignore_optional_problems" value="true"/>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="m2e-apt" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
<attributes>
<attribute name="ignore_optional_problems" value="true"/>
<attribute name="test" value="true"/>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="m2e-apt" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>

34
.project Normal file
View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>eedd_ordinaria_ra4</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
<filteredResources>
<filter>
<id>1772465433562</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>

View File

@ -0,0 +1,3 @@
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding/<project>=UTF-8

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
org.eclipse.jdt.apt.aptEnabled=false

View File

@ -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

View File

@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1

24
pom.xml Normal file
View File

@ -0,0 +1,24 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.lapaloma.biblioteca</groupId>
<artifactId>eedd_ordinaria_ra4</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -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());
}
}

View File

@ -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;
}
}

View File

@ -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";
}
}

View File

@ -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";
}
}

View File

@ -0,0 +1,4 @@
Manifest-Version: 1.0
Build-Jdk-Spec: 21
Created-By: Maven Integration for Eclipse

View File

@ -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

View File

@ -0,0 +1,24 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.lapaloma.biblioteca</groupId>
<artifactId>eedd_ordinaria_ra4</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

Binary file not shown.

Binary file not shown.

Binary file not shown.