From 478909272cb1e3e3927065ca64326b46e043e27e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isidoro=20Nevares=20Mart=C3=ADn?= Date: Mon, 25 May 2026 12:15:24 +0200 Subject: [PATCH] Commit inicial --- .classpath | 58 +++++++++++++++++ .project | 34 ++++++++++ .settings/org.eclipse.core.resources.prefs | 3 + .settings/org.eclipse.jdt.apt.core.prefs | 2 + .settings/org.eclipse.jdt.core.prefs | 9 +++ .settings/org.eclipse.m2e.core.prefs | 4 ++ pom.xml | 24 +++++++ .../java/eedd/ra4/ordinaria/AppLibreria.java | 51 +++++++++++++++ .../java/eedd/ra4/ordinaria/vo/Libro.java | 60 ++++++++++++++++++ .../eedd/ra4/ordinaria/vo/LibroDigital.java | 50 +++++++++++++++ .../eedd/ra4/ordinaria/vo/LibroFisico.java | 39 ++++++++++++ target/classes/META-INF/MANIFEST.MF | 4 ++ .../eedd_ordinaria_ra4/pom.properties | 7 ++ .../eedd_ordinaria_ra4/pom.xml | 24 +++++++ .../eedd/ra4/ordinaria/AppLibreria.class | Bin 0 -> 2449 bytes .../classes/eedd/ra4/ordinaria/vo/Libro.class | Bin 0 -> 1693 bytes .../eedd/ra4/ordinaria/vo/LibroDigital.class | Bin 0 -> 1434 bytes .../eedd/ra4/ordinaria/vo/LibroFisico.class | Bin 0 -> 1234 bytes 18 files changed, 369 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 .settings/org.eclipse.jdt.apt.core.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 pom.xml create mode 100644 src/main/java/eedd/ra4/ordinaria/AppLibreria.java create mode 100644 src/main/java/eedd/ra4/ordinaria/vo/Libro.java create mode 100644 src/main/java/eedd/ra4/ordinaria/vo/LibroDigital.java create mode 100644 src/main/java/eedd/ra4/ordinaria/vo/LibroFisico.java create mode 100644 target/classes/META-INF/MANIFEST.MF create mode 100644 target/classes/META-INF/maven/org.lapaloma.biblioteca/eedd_ordinaria_ra4/pom.properties create mode 100644 target/classes/META-INF/maven/org.lapaloma.biblioteca/eedd_ordinaria_ra4/pom.xml create mode 100644 target/classes/eedd/ra4/ordinaria/AppLibreria.class create mode 100644 target/classes/eedd/ra4/ordinaria/vo/Libro.class create mode 100644 target/classes/eedd/ra4/ordinaria/vo/LibroDigital.class create mode 100644 target/classes/eedd/ra4/ordinaria/vo/LibroFisico.class 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 0000000000000000000000000000000000000000..97a2e3a5f94a3079888391310a31beb90de2bdde GIT binary patch literal 2449 zcma)7ZF3V<6n<_g%{D9$(idJW3l>O8OIq3rZK*VES}mk)prz6x>NeSiTQ_^-?j{N< zD5!{|;=6*c_^u-#)M=QJ8NYPK5B?0tFa8J}&&{UN(oV;n+1-2ZIrp4I@^5ir9KvMA#{A={DCR(QG!(r)-19K9n;AX7s!sF?A~)8JU_fk}gBV zA#QQ^euh<{hH-}SK9Mr~ScOUzt5LzQKF%#;IG33+>@j`HG#G+$k<`s`>44^?#d7xy zcNnzz%BSce4;h_X47H(C@jIs(b!~2?yBfxQ*ub!386$ZSkyjA|+~G;#M*x)ysu}$K zrgkjHXM{_~4xm=WMr>lJbPRWlyE#)Z)P$Dvq+km})eukT3{y)PTAyL(b;~szX=a;> zd!!kK%tUjpu;t=*6&iLhtfj>mce29bML^0!lMUk)JslJbdMZhCmx|rkL*Qm@BgyFq zET*7=VO__8gG~q9I$E0BTlTj!OVzN7Ml{hqk|M>^VsNx~SVFu6nu^1JU6apsxv53P ze$T$)h@)vA+8B1O09uTvxvQIgv`W+tkb{IR(zc$_lYH)HOFKfekiuF8oy3x;rEBvF zDPb2y+oXJZMbEzZTef1Cf+)qaKXIbBl7xLKV)7=wX<=t{S5)+@YArre_@IhGd1A#S zr5hA3>5kG4@D7c6uh$1c##n3Zd3XU<H<(|_j9+Ao7*Rv*1>h_?7Gl0ib=$N7#mX-Vp@9GSTYqeoMg_hTu}>`PsyfD&)t;i)~WfyVabxPNsh8Ao`6mK*0Wi|N-;Domtso*D>>+r zCR`Oc3A5q~FZmTbNeR*?99L+Dm7lv=^cuif73c6YQI?8MGH2>`QKjF?%ekMV)G{e3BgYr_9_*B1=YKijHOZ=lEXD5vTF8fkoLATo{xs4s5co!p3Mk8ux z^!3p^LVrg8)q8J2`H==?6d)AEpwSu{tDXY=*V3#K>#*M2T(+JJkx@2r8-a;iRI0C7p}(6S=5Jvp;_#u$-Y@M-$pAbw+}T2?|O-bdnr*a#7BKY_% zWV~IX0B3<9?+KnN;F;is0`8JN?@2E$FMWxm-U05~_OcXI9XgB!Q0`Kp5 z_TMYu`r>1K?3w=bKf#@VoX2(oe=QV(Uk0F>a&$8`P!|qTf2~3jYS4~abWzWbViN{P zI)p7$@wZ}<8u%3IV3LhIG2t9`;sWY%3A=C^dvFyYe2WJBhQ0WcTJYc0y6O;NyV1-J pqlKNM4l9YEdBMi#_=08%JBBau6;Yv`)#Gb?L)2kpM^fm!e*xKhY?%N6 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..8c89afdf8d9ec680731ff4a53b46f1aa72514511 GIT binary patch literal 1693 zcma)5+fEZv6kVs3woHeM6+v!V}bk06|_F8-G%l!WP;}?Jh>;&Nx7%|O!KIs?>N!!Uw%W$NT zJhGD+nRVAd;!S+;bgi9WD!W8fDjZ1hl*? z6>Upq3#NcLAgt(^IZ2pE@v8=WN#Nzt`{!Ke?YUn_p4jtVBy%}kl+vU$$(|Kcf z6p@UbGYb1kA@5bE-~A{{0%Ms=%Ah9AC>CVSaMDLc7X$`%Xb7{ms(aV5KiiaM2~5W> zquP=snX{MU`+>CuHj%$BjA1Z{8v^5(NT}ch!UfgW^V`IKq!Q@Lo26XYv|M&BY-e55 zGM%*bfw%rxymbIUOtHY`xonhWA#XY%+!hGE@y53l)i8;;>UTomTC9~SzOS)avpVK5 zK^=#tTR|#ZQpa7)bB;!_Xj*xJxpo9CoK+pmA>1e9Y;;}iic%u*K*yrW6Jj3E9l|3{ zZZ^8>txZMll1j^gj>b~0wb#j?aIgM+IaWfS>R9t=UAwZPY5_KMbRs|nrSqDU_nD5M z@`mX36bR_DlxkRGF6)7ce5oUZE`e@FHoo`A4%9Yldv@8$nOjn=zUF;Pchp2MPHYFa z#t)woK+C66dM62aG9F=`sw4am`0U{=$y4y`OngW0HyS=%;WOYlLx|AUD*?EQe%?6H z8u&3&DR4OP?gRrpxl;_(DKt`n1R8;LnsANgI)(^V8s3t|&$G85!|54Pjm8d7F&TuDk zj}O`l%6_P9R&s{Nkrmo!Sp7;+V@t*xYMHOq!ZofYs`v8*>&@V)25@H$yop2=yvkIn zX@SJdDc0-tS6Ufon-U(wKqabHd%zpH8YK6;jgVBckh!)(w%Q9xH4B+%x_cK0Q9GxE rJjaVRLej@g?ObdtddgoN5N9n&zLw#MT~ zJn;=YfmXm5AOR8^R=W}}NIdXSi0bhK%teuRXqKY#h}1Atl7k{Dn(B!uHw zKA*Le??{jPl3N?fs>+71%Cac~?j{junAj$cA-S&n77r9dw)%i?aLeUh(^?69={4sV zQUPyqPt{5ctjsV{UR+tYwRp3>e6L)&TB#SS^j={YT2Njm;9juG-L8lc%QOYoi?!m% zC(HM0#oLt{nNni@@jQJ47!sGHCxa^tvAns;5MNM^NF#=vfnkg=?5avn-0Zd*!msm& zD>Of4b9YtuN%!b69^985hNk-wvp4;vUnB8?-MPU0xT@Xt~j$m1ZXEjx>? zcJN5&6bvMF!7=K}?z-HsOVMg8&5ip_PMYM)CTTvjAzWokhdZ@Wn|j@;8iDYHU-8z7 zK`w9pI=3WFQL{gDD0QXl2w$sw#=uEfn(tWy=Ww2wZRp7@uQMFY_W>?99tb;_`%R5B zX7HyT)UFOT7)dIH^;v82AhGBr|Wfh37Dw_+4%vgC1POeJ%ys zM8d4oT7G=1dYEO6xyZ1e1luO_D#Jjnq)Ai^T!*E%TlL@>(krU#+hR%TRU7I56P?sL z;vh{-?{%CkjXK<68Xwtx*nu>??j(Nz2Hl6~ee0f~Xxayi(3zzOi!38MSa^@!Z^M*P zIuqez5@X~Wy#VaNUb-;?+)BO^f&mkSwRafL;g9A&7%z~UdG;KsLWXV{G6oHqC9Xh@ z;6~{;hH--X4nGmW9|+^wIMta9o75!lhHU~SVITU0!`f_O>Tm2L&&)i1iDB*Jka_k3 zgYj3fS0T#xMh^51XHoCIPFW0!<6D28K-hEu7nY%yf2hk8fXEZuHsHP01xqs$O*@|N?a z!NAt&upn&VEiy#&gBG95#=cBMKx_na~B zK(rVps+VXBN+1Cl$~W4U?yfp5&sn!S!tw84i!ZCx4*L4Ra7{%5$@tPA-$Ra!Q}?*d z-5r-3f*NA$mW;ch;wF-^EZ?t?>$Zvvh8PAqx+P5A4Vpm}zLyCTD*6ytFo}B!OfjU- z_DDq@1p->!Zg>a2v5*9pv09cS??ZDE<*m0fP2xF2aylow zFrSn0Wfco}K^5xFCbvz7nTrxb*9WYg@NyDMK5&QTC;+~cz!iFn{Mvbm|I=vRB1a9W zU_-?#OcTX(0yYh9&1t&^-w<-h(xIWBl?}u=yi)NM90Xk{4 zGwCg!K>b2S1XpN{`_2Rg$yS2^q;Zu_G*}p-RVL5%;!;^;i(fI4#psdoiGGA3=@2A! z3b}p?DIw-xpb%lK*u|}LgwYT|IVI%$8l{X)%9k|^6XDJ;49cyGyC2aPJB}XHk7%f- zTnIMYgBAT4Cd;DvqE%A&C{0qeADG#r?r7ie@B~jX&$^foZkW$32KGo7%b8WOyIB8B RDdF-bL-%Q?;y3-M%0F;&^GW~! literal 0 HcmV?d00001