diff --git a/Documentos/datelapse.html b/Documentos/datelapse.html new file mode 100644 index 0000000..37f540d --- /dev/null +++ b/Documentos/datelapse.html @@ -0,0 +1,332 @@ + + datelapse + + + + + + + + + + + + + + + + +
+
package ar.edu.unlp.info.oo1.Ejercicio_14_Intervalo_de_tiempo;
+
+import java.time.LocalDate;
+import java.time.temporal.ChronoUnit;
+
+public class DateLapse {
+	private LocalDate from;
+	private LocalDate to;
+	
+	public DateLapse(LocalDate from, LocalDate to) {
+		this.from=from;
+		this.to=to;
+	}
+	
+	public LocalDate getFrom() {
+		return this.from;
+	}
+	
+	public LocalDate getTo() {
+		return this.to;
+	}
+	
+	public int sizeInDays() {
+		return (int) this.getFrom().until(getTo(),ChronoUnit.DAYS);
+	}
+	
+	public boolean cumpleIncio(LocalDate other) {
+		if(other.isAfter(getFrom()) || other.equals(getFrom()))
+			return true;
+		else
+			return false;
+	}
+	
+	public boolean cumpleFin(LocalDate other) {
+		if(other.isBefore(getTo()) || other.equals(getTo()))
+			return true;
+		else
+			return false;
+	}
+	
+	public boolean includesDate(LocalDate other) {
+		if(this.cumpleIncio(other) && this.cumpleFin(other))
+			return true;
+		else
+			return false;
+	}
+	
+	public boolean overlaps (DateLapse periodo) {
+		if ( this.cumpleIncio(periodo.getFrom()) && this.cumpleFin(periodo.getTo()) )
+			return true;
+		else
+			return false;
+	}
+}
+
+
+
+ + + + + + + + + + + + \ No newline at end of file diff --git a/Documentos/datelapse.md b/Documentos/datelapse.md new file mode 100644 index 0000000..c4b4540 --- /dev/null +++ b/Documentos/datelapse.md @@ -0,0 +1,57 @@ +```java +package ar.edu.unlp.info.oo1.Ejercicio_14_Intervalo_de_tiempo; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.time.LocalDate; +import java.time.Month; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class DateLapseTest { + + DateLapse periodo; + LocalDate inicio = LocalDate.of(2000, Month.JANUARY, 1); + LocalDate fin = LocalDate.of(2000, Month.JANUARY, 30); + + DateLapse periodo2; + LocalDate inicio2 = LocalDate.of(2000, Month.JANUARY, 5); + LocalDate fin2 = LocalDate.of(2000, Month.JANUARY, 10); + + DateLapse fecha3; + LocalDate inicio3 = LocalDate.of(2000, Month.JANUARY, 10); + LocalDate fin3 = LocalDate.of(2000, Month.JANUARY, 5); + + @BeforeEach + void setUp() throws Exception { + periodo = new DateLapse(inicio, fin); + periodo2 = new DateLapse(inicio2, fin2); + } + + @Test + public void testDias() { + assertEquals(1, periodo.getFrom().getDayOfMonth()); + assertEquals(30, ((DateLapse) periodo).getTo().getDayOfMonth()); + } + + @Test + public void testCantidadDias() { + assertEquals(29, periodo.sizeInDays()); + assertEquals(5, periodo2.sizeInDays()); + } + + @Test + public void testContieneFecha() { + assertTrue(periodo.includesDate(inicio2)); + assertTrue(periodo.includesDate(fin2)); + assertTrue(periodo.includesDate(inicio));// incluye los valores borde + assertTrue(periodo.includesDate(fin)); + } + @Test + public void testSeSuperpone() { + assertTrue(periodo.overlaps(periodo2)); + } + +``` \ No newline at end of file diff --git a/Practica/Ejercicio 14 Intervalo de tiempo/Ejercicio-14-Intervalo-de-tiempo/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_14_Intervalo_de_tiempo/DateLapse.java b/Practica/Ejercicio 14 Intervalo de tiempo/Ejercicio-14-Intervalo-de-tiempo/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_14_Intervalo_de_tiempo/DateLapse.java index 6440ec2..7f26157 100644 --- a/Practica/Ejercicio 14 Intervalo de tiempo/Ejercicio-14-Intervalo-de-tiempo/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_14_Intervalo_de_tiempo/DateLapse.java +++ b/Practica/Ejercicio 14 Intervalo de tiempo/Ejercicio-14-Intervalo-de-tiempo/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_14_Intervalo_de_tiempo/DateLapse.java @@ -24,8 +24,29 @@ public int sizeInDays() { return (int) this.getFrom().until(getTo(),ChronoUnit.DAYS); } + public boolean cumpleIncio(LocalDate other) { + if(other.isAfter(getFrom()) || other.equals(getFrom())) + return true; + else + return false; + } + + public boolean cumpleFin(LocalDate other) { + if(other.isBefore(getTo()) || other.equals(getTo())) + return true; + else + return false; + } + public boolean includesDate(LocalDate other) { - if(other.isAfter(getFrom()) && other.isBefore(getTo())) + if(this.cumpleIncio(other) && this.cumpleFin(other)) + return true; + else + return false; + } + + public boolean overlaps (DateLapse periodo) { + if ( this.cumpleIncio(periodo.getFrom()) && this.cumpleFin(periodo.getTo()) ) return true; else return false; diff --git a/Practica/Ejercicio 14 Intervalo de tiempo/Ejercicio-14-Intervalo-de-tiempo/src/test/java/ar/edu/unlp/info/oo1/Ejercicio_14_Intervalo_de_tiempo/DateLapseTest.java b/Practica/Ejercicio 14 Intervalo de tiempo/Ejercicio-14-Intervalo-de-tiempo/src/test/java/ar/edu/unlp/info/oo1/Ejercicio_14_Intervalo_de_tiempo/DateLapseTest.java index 324fe12..5d258c6 100644 --- a/Practica/Ejercicio 14 Intervalo de tiempo/Ejercicio-14-Intervalo-de-tiempo/src/test/java/ar/edu/unlp/info/oo1/Ejercicio_14_Intervalo_de_tiempo/DateLapseTest.java +++ b/Practica/Ejercicio 14 Intervalo de tiempo/Ejercicio-14-Intervalo-de-tiempo/src/test/java/ar/edu/unlp/info/oo1/Ejercicio_14_Intervalo_de_tiempo/DateLapseTest.java @@ -11,36 +11,45 @@ public class DateLapseTest { - DateLapse fecha; - DateLapse fecha2; + DateLapse periodo; LocalDate inicio = LocalDate.of(2000, Month.JANUARY, 1); LocalDate fin = LocalDate.of(2000, Month.JANUARY, 30); + + DateLapse periodo2; LocalDate inicio2 = LocalDate.of(2000, Month.JANUARY, 5); LocalDate fin2 = LocalDate.of(2000, Month.JANUARY, 10); + DateLapse fecha3; + LocalDate inicio3 = LocalDate.of(2000, Month.JANUARY, 10); + LocalDate fin3 = LocalDate.of(2000, Month.JANUARY, 5); + @BeforeEach void setUp() throws Exception { - fecha = new DateLapse(inicio, fin); - fecha2 = new DateLapse(inicio2, fin2); + periodo = new DateLapse(inicio, fin); + periodo2 = new DateLapse(inicio2, fin2); } @Test public void testDias() { - assertEquals(1, fecha.getFrom().getDayOfMonth()); - assertEquals(30, ((DateLapse) fecha).getTo().getDayOfMonth()); + assertEquals(1, periodo.getFrom().getDayOfMonth()); + assertEquals(30, ((DateLapse) periodo).getTo().getDayOfMonth()); } @Test public void testCantidadDias() { - assertEquals(29, fecha.sizeInDays()); - assertEquals(5, fecha2.sizeInDays()); + assertEquals(29, periodo.sizeInDays()); + assertEquals(5, periodo2.sizeInDays()); } @Test public void testContieneFecha() { - assertTrue(fecha.includesDate(inicio2)); - assertTrue(fecha.includesDate(fin2)); - assertFalse(fecha.includesDate(inicio));// No incluye los valores borde - assertFalse(fecha.includesDate(fin)); + assertTrue(periodo.includesDate(inicio2)); + assertTrue(periodo.includesDate(fin2)); + assertTrue(periodo.includesDate(inicio));// incluye los valores borde + assertTrue(periodo.includesDate(fin)); + } + @Test + public void testSeSuperpone() { + assertTrue(periodo.overlaps(periodo2)); } } \ No newline at end of file diff --git a/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/DateLapse.java b/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/DateLapse.java new file mode 100644 index 0000000..5246e4e --- /dev/null +++ b/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/DateLapse.java @@ -0,0 +1,54 @@ +package ar.edu.unlp.info.oo1.Ejercicio_15_Alquiler_de_propiedades; + +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; + +public class DateLapse { + private LocalDate from; + private LocalDate to; + + public DateLapse(LocalDate from, LocalDate to) { + this.from=from; + this.to=to; + } + + public LocalDate getFrom() { + return this.from; + } + + public LocalDate getTo() { + return this.to; + } + + public int sizeInDays() { + return (int) this.getFrom().until(getTo(),ChronoUnit.DAYS); + } + + public boolean cumpleIncio(LocalDate other) { + if(other.isAfter(getFrom()) || other.equals(getFrom())) + return true; + else + return false; + } + + public boolean cumpleFin(LocalDate other) { + if(other.isBefore(getTo()) || other.equals(getTo())) + return true; + else + return false; + } + + public boolean includesDate(LocalDate other) { + if(this.cumpleIncio(other) && this.cumpleFin(other)) + return true; + else + return false; + } + + public boolean overlaps (DateLapse periodo) { + if ( this.cumpleIncio(periodo.getFrom()) && this.cumpleFin(periodo.getTo()) ) + return true; + else + return false; + } +} diff --git a/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/Persona.java b/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/Persona.java deleted file mode 100644 index 24a78bd..0000000 --- a/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/Persona.java +++ /dev/null @@ -1,41 +0,0 @@ -package ar.edu.unlp.info.oo1.Ejercicio_15_Alquiler_de_propiedades; - -/** - * De esta forma crearemos las clases del ejercicio - * - */ -public class Persona { - - private String nombre; - private String apellido; - private String dni; - - - public String getNombre() { - return nombre; - } - public void setNombre(String nombre) { - this.nombre = nombre; - } - public String getApellido() { - return apellido; - } - public void setApellido(String apellido) { - this.apellido = apellido; - } - public String getDni() { - return dni; - } - public void setDni(String dni) { - this.dni = dni; - } - - /** - * Retorna el nombre completo de la persona de la forma apellido, nombre - * @return - */ - public String getNombreCompleto() { - return this.getApellido() + ", " + this.getNombre(); - } - -} diff --git a/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/Propiedad.java b/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/Propiedad.java new file mode 100644 index 0000000..49832f2 --- /dev/null +++ b/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/Propiedad.java @@ -0,0 +1,40 @@ +package ar.edu.unlp.info.oo1.Ejercicio_15_Alquiler_de_propiedades; + +import java.time.LocalDate; +import java.util.*; + +public class Propiedad { + private String nombre; + private String descripcion; + private double precioNoche; + private String direccion; + private Usuario propietario; + private List reservas; + + public Propiedad(String nombre, String descripcion, double precioNoche, String direccion, Usuario propietario) { + this.nombre=nombre; + this.descripcion=descripcion; + this.precioNoche=precioNoche; + this.propietario=propietario; + reservas = new ArrayList<>(); + } + + public boolean estaDisponible(DateLapse periodo) { + return reservas.stream() + .noneMatch(reserva->reserva.cumple(periodo)); + } + public void agregarReserva(Reserva reserva) { + reservas.add(reserva); + } + + + public void eliminarReserva(Reserva reserva) { + this.reservas.remove(reserva); + } + + + public double getPrecioNoche() { + return this.precioNoche; + } + +} diff --git a/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/Reserva.java b/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/Reserva.java new file mode 100644 index 0000000..be248d0 --- /dev/null +++ b/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/Reserva.java @@ -0,0 +1,29 @@ +package ar.edu.unlp.info.oo1.Ejercicio_15_Alquiler_de_propiedades; + +public class Reserva { + private Propiedad propiedad; + private DateLapse periodo; + private Usuario inquilino; + + public Reserva(Propiedad propiedad, DateLapse periodo, Usuario inquilino) { + this.propiedad=propiedad; + this.periodo=periodo; + this.inquilino=inquilino; + } + + public DateLapse getPeriodo() { + return this.periodo; + } + + public boolean cumple(DateLapse periodo) { + return this.periodo.overlaps(periodo); + } + + public double calcularPrecio() { + return this.propiedad.getPrecioNoche() * this.periodo.sizeInDays(); + } + + public void eliminarReserva() { + + } +} diff --git a/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/Sistema.java b/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/Sistema.java new file mode 100644 index 0000000..9661507 --- /dev/null +++ b/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/Sistema.java @@ -0,0 +1,48 @@ +package ar.edu.unlp.info.oo1.Ejercicio_15_Alquiler_de_propiedades; + +import java.time.LocalDate; +import java.util.*; + +public class Sistema { + private List usuarios; + + public Usuario registrarUsuario(Usuario usuario) { + usuarios.add(usuario); + return usuario; + } + + public Propiedad registrarPropiedad(Propiedad propiedad, Usuario usuario) { + usuario.agregarPropiedad(propiedad); + return propiedad; + } + + public List PropiedadesDisponibles(DateLapse periodo){ + List disponibles = new ArrayList<>(); + for (Usuario usuario:this.usuarios) { + disponibles.addAll(usuario.propiedadesDisponibles(periodo)); + } + return disponibles; + } + + public Reserva hacerReserva(Propiedad propiedad, DateLapse periodo, Usuario inquilino) { + if (propiedad.estaDisponible(periodo)) { + Reserva reserva = new Reserva(propiedad, periodo, inquilino); + propiedad.agregarReserva(reserva); + inquilino.agregarReserva(reserva); + return reserva; + } + return null; + } + + public double calcularPrecioReserva(Reserva reserva) { + return reserva.calcularPrecio(); + } + + public void eliminarReserva(Reserva reserva) {//Me estanque aca + if (reserva.getPeriodo().getFrom().isAfter(LocalDate.now())) { + + } + } + + +} diff --git a/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/Usuario.java b/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/Usuario.java new file mode 100644 index 0000000..cec0ba0 --- /dev/null +++ b/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/Usuario.java @@ -0,0 +1,42 @@ +package ar.edu.unlp.info.oo1.Ejercicio_15_Alquiler_de_propiedades; +import java.util.*; +import java.util.stream.Collectors; + +public class Usuario { + private String nombre; + private String direccion; + private String dni; + private List propiedades; + private List reservas; + + public Usuario (String nombre, String direccion, String dni) { + this.nombre=nombre; + this.direccion=direccion; + this.dni=dni; + } + + public void agregarPropiedad(Propiedad propiedad) { + this.propiedades.add(propiedad); + } + + public void agregarReserva(Reserva reserva) { + this.reservas.add(reserva); + } + + public List propiedadesDisponibles(DateLapse Periodo){ + return this.propiedades.stream() + .filter(propiedad -> propiedad.estaDisponible(Periodo)) + .collect(Collectors.toList()); + } + + public List obtenerReservas(){ + return this.reservas; + } + + public void eliminarReserva(Reserva reserva) { + this.reservas.remove(reserva); + } + + + +} diff --git a/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/test/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/PersonaTest.java b/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/test/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/PersonaTest.java deleted file mode 100644 index 771c876..0000000 --- a/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/test/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/PersonaTest.java +++ /dev/null @@ -1,31 +0,0 @@ -package ar.edu.unlp.info.oo1.Ejercicio_15_Alquiler_de_propiedades; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -/** - * Aca escribiremos los test de unidad para cada clase - * - */ -public class PersonaTest { - - Persona james, guido; - - @BeforeEach - void setUp() throws Exception { - james = new Persona(); - guido = new Persona(); - james.setApellido("Glosing"); - james.setNombre("James"); - guido.setApellido("van Rossum"); - guido.setNombre("Guido"); - - } - - @Test - public void testNombreCompleto() { - assertEquals("Glosing, James", james.getNombreCompleto()); - assertEquals("van Rossum, Guido", guido.getNombreCompleto()); - } -} diff --git a/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/test/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/UsuarioTest.java b/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/test/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/UsuarioTest.java new file mode 100644 index 0000000..d13591a --- /dev/null +++ b/Practica/Ejercicio 15 Alquiler de propiedades/Ejercicio-15-Alquiler-de-propiedades/src/test/java/ar/edu/unlp/info/oo1/Ejercicio_15_Alquiler_de_propiedades/UsuarioTest.java @@ -0,0 +1,40 @@ +package ar.edu.unlp.info.oo1.Ejercicio_15_Alquiler_de_propiedades; + +import static org.junit.jupiter.api.Assertions.*; + +import java.time.LocalDate; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + + +public class UsuarioTest { + + DateLapse periodo; + LocalDate inicio= LocalDate.of(10, 2, 10);; + LocalDate fin= LocalDate.of(10, 3, 10);; + + Usuario fabian; + Propiedad casa; + Propiedad hotel; + + Sistema sistema; + + + @BeforeEach + void setUp() throws Exception { + sistema = new Sistema(); + fabian = new Usuario("Fabian", "Los Hornos", "777"); + sistema.registrarUsuario(fabian); + periodo = new DateLapse(inicio,fin); + + + casa = new Propiedad("Mansion", "Grande", 20.0, "Gonet", fabian); + hotel = new Propiedad("5 Estrellas", "Muchos pisos", 10.0, "Los Hornos", fabian); + } + + @Test + public void testPropiedades() { + + } +} diff --git a/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/pom.xml b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/pom.xml index f04d62b..c8f8596 100644 --- a/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/pom.xml +++ b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/pom.xml @@ -31,6 +31,11 @@ test + + ar.edu.unlp.info.oo1 + Ejercicio-10-Job-Scheduler + 1.0.0 + diff --git a/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Cliente.java b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Cliente.java new file mode 100644 index 0000000..44bc352 --- /dev/null +++ b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Cliente.java @@ -0,0 +1,47 @@ +package ar.edu.unlp.info.oo1.Ejercicio_17_Facturas_de_llamadas; + +import java.time.LocalDate; +import java.util.*; + +public abstract class Cliente { + private String nombre; + private String direccion; + private String numero; + private List llamadas; + + public Cliente(String nombre, String direccion) { + this.nombre=nombre; + this.direccion=direccion; + this.numero = ""; + this.llamadas = new ArrayList(); + } + + public void registrarNumero(String numero) { + this.numero = numero; + } + + public void registrarLlamada(Llamada llamada) { + this.llamadas.add(llamada); + } + + + public double montoTotal(LocalDate fecha1, LocalDate fecha2) { + double total = this.llamadas.stream() + .filter(llamada -> llamada.cumple(fecha1, fecha2)) + .mapToDouble(llamada -> llamada.calcularCosto()) + .sum(); + + return total - (total * getDescuento()); + } + + public Factura facturarLlamadas(LocalDate fecha1, LocalDate fecha2) { + double total = this.montoTotal(fecha1, fecha2); + return new Factura(this, LocalDate.now(), fecha1,fecha2,total); + } + + abstract public double getDescuento(); + + public List getLlamadas(){ + return this.llamadas; + } +} diff --git a/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/DateLapse.java b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/DateLapse.java new file mode 100644 index 0000000..affe9b5 --- /dev/null +++ b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/DateLapse.java @@ -0,0 +1,54 @@ +package ar.edu.unlp.info.oo1.Ejercicio_17_Facturas_de_llamadas; + +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; + +public class DateLapse { + private LocalDate from; + private LocalDate to; + + public DateLapse(LocalDate from, LocalDate to) { + this.from=from; + this.to=to; + } + + public LocalDate getFrom() { + return this.from; + } + + public LocalDate getTo() { + return this.to; + } + + public int sizeInDays() { + return (int) this.getFrom().until(getTo(),ChronoUnit.DAYS); + } + + public boolean cumpleIncio(LocalDate other) { + if(other.isAfter(getFrom()) || other.equals(getFrom())) + return true; + else + return false; + } + + public boolean cumpleFin(LocalDate other) { + if(other.isBefore(getTo()) || other.equals(getTo())) + return true; + else + return false; + } + + public boolean includesDate(LocalDate other) { + if(this.cumpleIncio(other) && this.cumpleFin(other)) + return true; + else + return false; + } + + public boolean overlaps (DateLapse periodo) { + if ( this.cumpleIncio(periodo.getFrom()) && this.cumpleFin(periodo.getTo()) ) + return true; + else + return false; + } +} diff --git a/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Factura.java b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Factura.java new file mode 100644 index 0000000..ccd0d19 --- /dev/null +++ b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Factura.java @@ -0,0 +1,19 @@ +package ar.edu.unlp.info.oo1.Ejercicio_17_Facturas_de_llamadas; + +import java.time.LocalDate; + +public class Factura { + private Cliente cliente; + private LocalDate fechaFacturacion; + private LocalDate fechaInicio; + private LocalDate fechaFin; + private double montoTotal; + + public Factura(Cliente cliente, LocalDate fechaFacturacion, LocalDate fechaInicio, LocalDate fechaFin, double montoTotal) { + this.cliente=cliente; + this.fechaFacturacion=fechaFacturacion; + this.fechaFacturacion=fechaInicio; + this.fechaFin=fechaFin; + this.montoTotal=montoTotal; + } +} diff --git a/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Fisico.java b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Fisico.java new file mode 100644 index 0000000..cd7a454 --- /dev/null +++ b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Fisico.java @@ -0,0 +1,20 @@ +package ar.edu.unlp.info.oo1.Ejercicio_17_Facturas_de_llamadas; + +import java.util.ArrayList; + +public class Fisico extends Cliente{ + private String dni; + + public Fisico(String nombre, String direccion, String dni) { + super(nombre, direccion); + this.dni=dni; + + } + + @Override + public double getDescuento() { + return 0; + } + + +} diff --git a/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Internacional.java b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Internacional.java new file mode 100644 index 0000000..4181c3c --- /dev/null +++ b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Internacional.java @@ -0,0 +1,27 @@ +package ar.edu.unlp.info.oo1.Ejercicio_17_Facturas_de_llamadas; + +import java.time.LocalDate; +import java.time.LocalTime; + +public class Internacional extends Llamada{ + private String origen; + private String destino; + + public Internacional(LocalDate fecha, LocalTime hora, double duracion, String llama, String recibe, String origen, String destino) { + super(fecha, hora, duracion, llama, recibe); + this.origen=origen; + this.destino=destino; + } + + @Override + public double calcularCosto() { + LocalTime ocho = LocalTime.of(8, 0); + LocalTime veinte = LocalTime.of(20, 0); + + if (super.getHora().isAfter(ocho) && super.getHora().isBefore(veinte)) { + return super.getDuracion() * 4; + } + return super.getDuracion() * 3; + } + +} diff --git a/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Interurbana.java b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Interurbana.java new file mode 100644 index 0000000..9797995 --- /dev/null +++ b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Interurbana.java @@ -0,0 +1,26 @@ +package ar.edu.unlp.info.oo1.Ejercicio_17_Facturas_de_llamadas; + +import java.time.LocalDate; +import java.time.LocalTime; + +public class Interurbana extends Llamada{ + private Integer distancia; + + public Interurbana(LocalDate fecha, LocalTime hora, double duracion, String llama, String recibe, Integer distancia) { + super(fecha, hora, duracion, llama, recibe); + this.distancia=distancia; + } + + @Override + public double calcularCosto() { + + if (this.distancia<100) { + return 5 * 2; + } + if (this.distancia>100 && this.distancia<500) { + return 5 * 2.5; + } + return 5 * 3; + } + +} diff --git a/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Juridica.java b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Juridica.java new file mode 100644 index 0000000..f6bb28d --- /dev/null +++ b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Juridica.java @@ -0,0 +1,18 @@ +package ar.edu.unlp.info.oo1.Ejercicio_17_Facturas_de_llamadas; + +public class Juridica extends Cliente{ + private String cuit; + private String tipo; + + public Juridica(String nombre, String direccion, String cuit, String tipo) { + super(nombre, direccion); + this.cuit=cuit; + this.tipo=tipo; + } + + @Override + public double getDescuento() { + return 0.1; + } + +} diff --git a/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Llamada.java b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Llamada.java new file mode 100644 index 0000000..a598d7f --- /dev/null +++ b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Llamada.java @@ -0,0 +1,37 @@ +package ar.edu.unlp.info.oo1.Ejercicio_17_Facturas_de_llamadas; + +import java.time.LocalDate; +import java.time.LocalTime; + +public abstract class Llamada { + private LocalDate fecha; + private LocalTime hora; + private Double duracion; + private String llama; + private String recibe; + + public Llamada(LocalDate fecha,LocalTime hora, Double duracion, String llama, String recibe) { + this.fecha=fecha; + this.hora=hora; + this.duracion=duracion; + this.llama=llama; + this.recibe=recibe; + } + + public boolean cumple(LocalDate fecha1, LocalDate fecha2) { + if ((fecha.isAfter(fecha1) || fecha.equals(fecha1)) && (fecha.isBefore(fecha2) || fecha.equals(fecha2))) { + return true; + } + return false; + } + + public double getDuracion() { + return this.duracion; + } + + public LocalTime getHora() { + return this.hora; + } + + abstract public double calcularCosto(); +} diff --git a/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Local.java b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Local.java new file mode 100644 index 0000000..5989d75 --- /dev/null +++ b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Local.java @@ -0,0 +1,17 @@ +package ar.edu.unlp.info.oo1.Ejercicio_17_Facturas_de_llamadas; + +import java.time.LocalDate; +import java.time.LocalTime; + +public class Local extends Llamada{ + + public Local(LocalDate fecha, LocalTime hora, double duracion, String llama, String recibe) { + super(fecha, hora, duracion, llama, recibe); + } + + @Override + public double calcularCosto() { + return super.getDuracion(); + } + +} diff --git a/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Persona.java b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Persona.java deleted file mode 100644 index 52be9c1..0000000 --- a/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Persona.java +++ /dev/null @@ -1,41 +0,0 @@ -package ar.edu.unlp.info.oo1.Ejercicio_17_Facturas_de_llamadas; - -/** - * De esta forma crearemos las clases del ejercicio - * - */ -public class Persona { - - private String nombre; - private String apellido; - private String dni; - - - public String getNombre() { - return nombre; - } - public void setNombre(String nombre) { - this.nombre = nombre; - } - public String getApellido() { - return apellido; - } - public void setApellido(String apellido) { - this.apellido = apellido; - } - public String getDni() { - return dni; - } - public void setDni(String dni) { - this.dni = dni; - } - - /** - * Retorna el nombre completo de la persona de la forma apellido, nombre - * @return - */ - public String getNombreCompleto() { - return this.getApellido() + ", " + this.getNombre(); - } - -} diff --git a/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Sistema.java b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Sistema.java new file mode 100644 index 0000000..74ec775 --- /dev/null +++ b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/main/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/Sistema.java @@ -0,0 +1,26 @@ +package ar.edu.unlp.info.oo1.Ejercicio_17_Facturas_de_llamadas; + +import java.util.*; +public class Sistema { + List numeros = new ArrayList(); + List clientes = new ArrayList(); + + public void agregarNumero(String numero) { + this.numeros.add(numero); + } + + public void altaPersonaFisica(Fisico fisico) { + fisico.registrarNumero(this.numeros.remove(0)); + this.clientes.add(fisico); + } + + public void altaPersonaJurida(Juridica juridica) { + juridica.registrarNumero(this.numeros.remove(0)); + this.clientes.add(juridica); + } + + public List getNumeros(){ + return this.numeros; + } + +} diff --git a/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/test/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/ClienteTest.java b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/test/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/ClienteTest.java new file mode 100644 index 0000000..8961e4d --- /dev/null +++ b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/test/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/ClienteTest.java @@ -0,0 +1,89 @@ +package ar.edu.unlp.info.oo1.Ejercicio_17_Facturas_de_llamadas; + +import java.time.LocalDate; +import java.time.LocalTime; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + + +public class ClienteTest { + + Local llamadaLocal; + Interurbana llamadaInterurbana; + Internacional llamadaInternacional; + + Fisico fisico; + Juridica juridica; + + LocalDate fecha; + LocalTime hora; + + Sistema sistema; + LocalDate fecha1; + LocalDate fecha2; + + @BeforeEach + void setUp() throws Exception{ + fisico = new Fisico("Juan", "Los Hornos", "4321032"); + juridica = new Juridica("Fabian", "Los Hornos", "20312340", "Sociedad Anonima"); + + fecha = LocalDate.of(2023, 1, 10); + hora = LocalTime.of(10, 0); + + + sistema=new Sistema(); + sistema.agregarNumero("1111"); + sistema.agregarNumero("2222"); + sistema.altaPersonaFisica(fisico); + sistema.altaPersonaJurida(juridica); + + fecha1 = LocalDate.of(2023, 1, 1); + fecha2 = LocalDate.of(2023, 1, 20); + + } + @Test + public void testSistema() { + sistema.agregarNumero("3333"); + sistema.agregarNumero("4444"); + assertEquals("4444", sistema.getNumeros().get(1)); + } + + @Test + public void testJuridica() { + llamadaLocal = new Local(fecha, hora, 10, "123", "321"); + juridica.registrarLlamada(llamadaLocal); + + assertEquals(1 ,juridica.getLlamadas().size()); + assertEquals(9, juridica.montoTotal(fecha1, fecha2)); + } + + @Test + public void testLocal() { + llamadaLocal = new Local(fecha, hora, 10, "123", "321"); + fisico.registrarLlamada(llamadaLocal); + + assertEquals(1 ,fisico.getLlamadas().size()); + assertEquals(10, fisico.montoTotal(fecha1, fecha2)); + } + + @Test + public void testInterurbana() { + llamadaInterurbana = new Interurbana(fecha, hora, 10, "123", "321", 2000); + fisico.registrarLlamada(llamadaInterurbana); + + assertEquals(1 ,fisico.getLlamadas().size()); + assertEquals(15, fisico.montoTotal(fecha1, fecha2)); //5 * 3 + + } + @Test + public void testInternacional() { + llamadaInternacional = new Internacional(fecha, hora, 10, "123", "321", "Argentina", "Brazil"); + fisico.registrarLlamada(llamadaInternacional); + + assertEquals(1 ,fisico.getLlamadas().size()); + assertEquals(40, fisico.montoTotal(fecha1, fecha2)); + + } +} diff --git a/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/test/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/PersonaTest.java b/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/test/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/PersonaTest.java deleted file mode 100644 index 3d2df0b..0000000 --- a/Practica/Ejercicio 17 Facturas de llamadas/Ejercicio-17-Facturas-de-llamadas/src/test/java/ar/edu/unlp/info/oo1/Ejercicio_17_Facturas_de_llamadas/PersonaTest.java +++ /dev/null @@ -1,31 +0,0 @@ -package ar.edu.unlp.info.oo1.Ejercicio_17_Facturas_de_llamadas; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -/** - * Aca escribiremos los test de unidad para cada clase - * - */ -public class PersonaTest { - - Persona james, guido; - - @BeforeEach - void setUp() throws Exception { - james = new Persona(); - guido = new Persona(); - james.setApellido("Glosing"); - james.setNombre("James"); - guido.setApellido("van Rossum"); - guido.setNombre("Guido"); - - } - - @Test - public void testNombreCompleto() { - assertEquals("Glosing, James", james.getNombreCompleto()); - assertEquals("van Rossum, Guido", guido.getNombreCompleto()); - } -} diff --git a/README.md b/README.md index 0a75d30..054f7e9 100644 --- a/README.md +++ b/README.md @@ -13,14 +13,24 @@ +### Importante para el parcial + + + + + +--- + + - [Instalar Eclipse](https://www.eclipse.org/downloads/download.php?file=/oomph/epp/2022-12/R/eclipse-inst-jre-win64.exe) Parcial el dia 14-6 a ponerse las pilas pa - [📝 Todas las autoEvaluaciones](/Documentos/autoevaluaciones.md) -- [➰ Streams](/Documentos/streams.md) +--- + ## Indice - [1️⃣ Ejercicio 1 WallPost](/Practica/Ejercicio%201%20WallPost/)