V1#
Punto 1: Aplicación de los 4 Pilares de la Programación Orientada a Objetos (POO) [30 pts]#
Desarrolla una aplicación en Java donde se implemente una clase llamada «Producto» para simular la gestión de productos en una tienda. Debes utilizar los cuatro pilares fundamentales de la programación orientada a objetos: abstracción, encapsulamiento, herencia, y polimorfismo.
Crea una interfaz llamada
Item
que tenga los atributosnombre
yprecio
, además de dos métodos abstractosmostrarDetalles()
yestaDisponible()
.La clase
Producto
debe heredar deItem
e incluir atributos comocategoria
ycantidadEnStock
.Utiliza encapsulamiento para proteger los atributos, permitiendo acceso a través de los métodos
getters
ysetters
.Implementa una subclase llamada
ProductoElectronico
que sobrescriba el métodomostrarDetalles()
e incluya un atributo adicionalgarantia
.Aplica polimorfismo mostrando cómo un objeto de tipo
ProductoElectronico
puede ser tratado como unItem
, verifica que las funcionesmostrarDetalles()
funciona y que da diferente resultados dependiendo el objeto*que la llame.
Requisitos adicionales:
Implementa un constructor en cada clase.
Instancia objetos en el método
main()
y muestra ejemplos de polimorfismo en acción.
Ejemplo de salida esperada:
Producto: Laptop, Precio: $1200, Categoría: Electrónica, Garantía: 2 años.
Producto: Libro, Precio: $20, Categoría: Literatura.
interface Item{
// como es una interfaz estos son public y final, no se
// pueden cambiar y tienen que ser definidos sus valores
public String nombre = "Item";
public double precio = 0;
//public Item(){}
public abstract boolean estaDisponible();
public abstract void mostartDetallers();
}
class Producto implements Item{
private String categoria;
private int cantidadEnStock;
// se puede sobreescribir nombre y precio pero toca desde aca
//public String nombre;
//public double precio;
public Producto(String categoria, int cantidadEnStock){
this.categoria = categoria;
this.cantidadEnStock = cantidadEnStock;
}
public void setCategoria(String categoria){
this.categoria = categoria;
}
public String getCategoria(){
return categoria;
}
public void setCantidadEnStock(int cantidadEnStock){
this.cantidadEnStock = cantidadEnStock;
}
public int getCantidadEnStock(){
return cantidadEnStock;
}
@Override
public boolean estaDisponible(){
if(cantidadEnStock>0){return true;}
else{return false;}
};
@Override
public void mostartDetallers(){
System.out.println("El producto es %s y tiene un precio de %.1f.%n".formatted(nombre, precio));
System.out.println("Pertenece a la categoria %s y hay %d en la tienda.%n".formatted(categoria, cantidadEnStock));
};
}
class ProductoElectronico extends Producto{
public int garantia;
public ProductoElectronico(String categoria, int cantidadEnStock, int garantia){
super(categoria, cantidadEnStock);
this.garantia = garantia;
}
@Override
public boolean estaDisponible(){
if(getCantidadEnStock()>0){return true;}
else{return false;}
};
@Override
public void mostartDetallers(){
System.out.println("El producto es %s y tiene un precio de %.1f.%n".formatted(nombre, precio));
System.out.println("Tiene una garantia de %d meses.%n".formatted(garantia));
};
}
/*o se podia
class ProductoElectronico implements Item{
// codigo similar a producto
}
*/
class TestProductos{
public static void main(String[] args){
ProductoElectronico nevera = new ProductoElectronico("Electrodomesticos", 10, 12);
System.out.println(nevera.estaDisponible());
nevera.mostartDetallers();
System.out.println("");
Producto camisa = new Producto("Ropa", 0);
System.out.println(camisa.estaDisponible());
camisa.mostartDetallers();
}
}
TestProductos testProductos = new TestProductos();
testProductos.main(null);
true
El producto es Item y tiene un precio de 0.0.
Tiene una garantia de 12 meses.
false
El producto es Item y tiene un precio de 0.0.
Pertenece a la categoria Ropa y hay 0 en la tienda.
Punto 2: Manipulación de Cadenas [30 pts]#
Desarrolla un programa en Java que permita a un usuario ingresar una cadena de texto y, con ella, realice las siguientes operaciones:
Eliminar espacios en blanco: Implementa un método que elimine todos los espacios en blanco de la cadena ingresada.
Contar las vocales: Implementa un método que cuente cuántas vocales (a, e, i, o, u) tiene la cadena.
Reemplazar caracteres: Implementa un método que permita al usuario reemplazar una letra específica por otra.
El programa debe interactuar con el usuario y mostrar los resultados para cada una de las operaciones. Usa los métodos de la clase String
para manipular las cadenas.
Ejemplo de entrada:
Ingresa una cadena: amor
Ejemplo de salida esperada:
Cadena sin espacios: amor
Número de vocales: 2
Ingresa una letra para reemplazar: a
Ingresa la nueva letra: e
Cadena modificada: emor
public String RemoverEspacios(String cadena){
String cadena_sin_espacios = "";
for(int i=0; i<cadena.length(); i++){
if(cadena.charAt(i) != ' '){
cadena_sin_espacios += cadena.charAt(i);
}
}
return cadena_sin_espacios;
}
public int contarVocales(String cadena){
int vocales = 0;
for(int i=0; i<cadena.length(); i++){
if(cadena.charAt(i) == 'a' || cadena.charAt(i) == 'e' || cadena.charAt(i) == 'i' ||
cadena.charAt(i) == 'o'|| cadena.charAt(i) == 'u'){
vocales += 1;
}
}
return vocales;
}
public String ReemplazarLetra(String cadena){
System.out.print("Ingresa una letra para reemplazar: ");
// Scanner myObj = new Scanner(System.in);
// String letra1 = myObj.nextLine(); // Read user input
String letra1 = "a";
System.out.println(letra1);
System.out.print("Ingresa la nueva letra: ");
//String letra2 = myObj.nextLine(); // Read user input
String letra2 = "e";
System.out.println(letra2);
return cadena.replace(letra1, letra2);
}
import java.util.Scanner;
//Scanner myObj = new Scanner(System.in);
System.out.print("Ingresa una cadena: ");
String cadena = " el amor es para todos y todas";
//String cadena = myObj.nextLine(); // Read user input
System.out.println(cadena+"\n");
System.out.println("Cadena sin espacios: "+RemoverEspacios(cadena));
System.out.println("Número de vocales: "+contarVocales(cadena)+"\n");
String cadena_modificada = ReemplazarLetra(cadena);
System.out.println("Cadena modificada: "+cadena_modificada);
Ingresa una cadena:
el amor es para todos y todas
Cadena sin espacios: elamoresparatodosytodas
Número de vocales: 10
Ingresa una letra para reemplazar:
a
Ingresa la nueva letra:
e
Cadena modificada: el emor es pere todos y todes
Punto 3: Arreglos Bidimensionales y Búsquedas [40 pts]#
En este ejercicio, debes crear un programa para gestionar las ventas de productos en una tienda. Implementa un sistema que use un arreglo bidimensional para almacenar las ventas de productos por día de la semana, donde cada fila corresponde a un producto y cada columna a un día de la semana.
Declara un arreglo bidimensional donde las filas representen productos y las columnas las ventas diarias:
int[][] ventas = { {12, 15, 20, 10, 25, 30, 40}, // ProductoA {5, 7, 8, 6, 10, 11, 15}, // ProductoA {3, 4, 2, 5, 6, 8, 9} // ProductoA }; // este codigo es equivalente a int[] ProductoA = {12, 15, 20, 10, 25, 30, 40}; int[] ProductoB = {5, 7, 8, 6, 10, 11, 15}; int[] ProductoC = {3, 4, 2, 5, 6, 8, 9};
Implementa un método que calcule el total de ventas por producto durante la semana.
Implementa un método para encontrar el día en que se registraron las mayores ventas para cada producto.
Implementa un método de búsqueda que permita encontrar cuántas ventas de un producto específico hubo en un día dado, devolviendo la posición (producto, día). Si no se encuentra, el programa debe informarlo.
Crea un menú para que el usuario pueda:
Calcular el total de ventas por producto durante la semana.
Mostrar el día con mayores ventas por producto.
Buscar el número de ventas de un producto en un día específico.
Ejemplo de salida esperada:
Menú:
1. Calcular total de ventas por producto
2. Mostrar día con mayores ventas por producto
Opción: 1
Total de ventas para el Producto 1: 152
Total de ventas para el Producto 2: 62
Total de ventas para el Producto 3: 37
int[] ProductoA = {12, 15, 20, 10, 25, 30, 40};
int[] ProductoB = {5, 7, 8, 6, 10, 11, 15};
int[] ProductoC = {3, 4, 2, 5, 6, 8, 9};
int[] ProductoD = {3, 4, 2, 15, 6, 8, 9};
public int VentasPorSemana(int[] Producto){
int sum = 0;
for(int i=0; i<Producto.length; i++ ){
sum += Producto[i];
}
return sum;
}
public String MayorVenta(int[] Producto){
int mayor = 0;
int mayor_index = 0;
String[] dias_semana = {"Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo"};
for(int i=0; i<Producto.length; i++ ){
if(Producto[i]>mayor){
mayor = Producto[i];
mayor_index = i;
}
}
return dias_semana[mayor_index];
}
import java.util.Scanner;
public void Menu(){
System.out.print("""
Menú:
1. Calcular total de ventas por producto
2. Mostrar día con mayores ventas por producto
""");
// System.ount.println("Opción: ");
//Scanner myObj = new Scanner(System.in);
//int opcion = myObj.nextInt(); // Read user input
int opcion = 1;
System.out.println("Opción: "+opcion);
if(opcion==1){
System.out.println("""
Del ProductoA se vendieron en toda la semana %d
Del ProductoB se vendieron en toda la semana %d
Del ProductoC se vendieron en toda la semana %d
Del ProductoD se vendieron en toda la semana %d
""".formatted(VentasPorSemana(ProductoA), VentasPorSemana(ProductoB),
VentasPorSemana(ProductoC), VentasPorSemana(ProductoD)));
}
else if(opcion==2){
System.out.println("""
Para el ProductoA el día de la semana con más ventas es %s
Para el ProductoA el día de la semana con más ventas es %s
Para el ProductoA el día de la semana con más ventas es %s
Para el ProductoA el día de la semana con más ventas es %s
""".formatted(MayorVenta(ProductoA), MayorVenta(ProductoB),
MayorVenta(ProductoC), MayorVenta(ProductoD)));
}
}
Menu();
//MayorVenta(ProductoA);
Menú:
1. Calcular total de ventas por producto
2. Mostrar día con mayores ventas por producto
Opción: 1
Del ProductoA se vendieron en toda la semana 152
Del ProductoB se vendieron en toda la semana 62
Del ProductoC se vendieron en toda la semana 37
Del ProductoD se vendieron en toda la semana 47
// Este punto 4 no tocaba hacerlo
public int DiaSemanaIndex(String dia){
String[] dias_semana = {"Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo"};
int index = 0;
for(int i=0; i<dias_semana.length; i++ ){
if(dias_semana[i]==dia){
index = i;
}
}
return index;
}
public void VentasProductoDia(String Producto, String dia){
int index_dia = DiaSemanaIndex(dia);
if(Producto == "A"){
System.out.println("Producto %s vendio %d el dia %s.%n".formatted(Producto, ProductoA[index_dia], dia));
}
else if(Producto == "B"){
System.out.println("Producto %s vendio %d el dia %s.%n".formatted(Producto, ProductoB[index_dia], dia));
}
else if(Producto == "C"){
System.out.println("Producto %s vendio %d el dia %s.%n".formatted(Producto, ProductoC[index_dia], dia));
}
else{
// no existe el producto
System.out.println("Producto %s no encontrado.%n".formatted(Producto));
}
}
VentasProductoDia("A", "Viernes");
VentasProductoDia("C", "Martes");
//DiaSemanaIndex("Domingo")
Producto A vendio 25 el dia Viernes.
Producto C vendio 4 el dia Martes.