Java - por favor me podrian ayudar en un ejercicio de java en programacion Orientada a Objetos

 
Vista:
sin imagen de perfil

por favor me podrian ayudar en un ejercicio de java en programacion Orientada a Objetos

Publicado por hernan (6 intervenciones) el 25/02/2023 12:25:29
trabajo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

por favor me podrian ayudar en un ejercicio de java en programacion Orientada a Objetos

Publicado por Kabuto (1385 intervenciones) el 26/02/2023 11:54:02
Hola.
Lo primero necesitas una clase Producto.
Sus atributos podrían ser nombre, formato (si se vende en tarros, botellas, unidades, paquetes...), unidades compradas y unidades vendidas.
El stock existente se puede calcular restando las unidades vendidas a las compradas.

Entre sus métodos, además de los getters, tendríamos un método para comprar y otro para vender.

Comprar es fácil, recibe una cantidad y se suma al atributo de unidades compradas.

Pero vender hay que tener en cuenta que la cantidad solicitada no sea superior al stock disponible. Este método podemos hacerlo de tipo boolean para que retorne TRUE si la venta se ha podido hacer o FALSE si no ha sido posible al no haber unidades suficientes.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
public class Producto {
 
	private String nombre;
	private String formato; //Kg, tarros, botellas, unidades....
	private int compras;
	private int ventas;
 
	public Producto(String nombre, String formato) {
		this.nombre = nombre;
		this.formato = formato;
		compras = 0;
		ventas = 0;
	}
 
	public String getNombre() {
		return nombre;
	}
 
	public String getFormato() {
		return formato;
	}
 
	public String getDescripcion() {
		return nombre + " " + formato;
	}
 
	public int getCompras() {
		return compras;
	}
 
	public int getVentas() {
		return ventas;
	}
 
	public int getStock() {
		return compras - ventas;
	}
 
	public void comprar(int cantidad) {
		compras += cantidad;
	}
 
	public boolean vender(int cantidad) {
		if (cantidad > getStock())
			return false; //No hay suficiente stock para cubrir las unidades de venta
		else {
			ventas += cantidad;
			return true;
		}
	}
 
}


Luego un programa principal para poder comprar y vender productos

Usaremos un ArrayList para registrar los productos.
Podemos ofrecer un menú con las opciones comprar, vender, listar stock y terminar programa.

Con un switch comprobamos la opción elegida, la cuál cada una se ejecutará en métodos separados.

La opción de comprar consistirá en pedir nombre, formato y unidades a comprar.
Entonces primero comprobaremos mediante el nombre si este producto ya está registrado.
Si no está registrado, crearemos uno nuevo.
Si está registado, pues actualizaremos la unidades de compra al producto ya existente.

La opción de vender es parecida.
Pedimos primero el nombre y comprobamos si existe el producto.
Si no existe, avisamos y regresamos al menú principal.

Si existe, entonces ahora pedimos la cantidad a vender y hacemos la venta. El método vender() de Producto es de tipo boolean y nos informará si la venta se ha podido realizar o no por falta de stock, así que hay que recoger este boolean e informar en pantalla según el caso.

La opción de listar stock lo que hará es primero comprobar si hay productos registrados o no.
Si los hay, recorrerá cada producto uno a uno y mostrará en pantalla los datos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import java.util.ArrayList;
import java.util.Scanner;
 
public class Tienda {
 
	private static ArrayList<Producto> productos = new ArrayList<Producto>();
	private static Scanner teclado = new Scanner(System.in);
 
	public static void main(String[] args) {
 
		int opcion = 0;
 
		while (opcion != 4) {
			System.out.println("\n\t\tMENU TIENDA");
			System.out.println("\t\t---- ------\n");
			System.out.println("(1) -- Comprar Producto");
			System.out.println("(2) -- Vender Producto");
			System.out.println("(3) -- Listar stock de Productos");
			System.out.println("(4) -- TERMINAR PROGRAMA");
			System.out.print("Opcion: ");
			opcion = Integer.parseInt(teclado.nextLine());
 
			switch(opcion) {
			case 1:
				comprarProducto();
				break;
			case 2:
				venderProducto();
				break;
			case 3:
				listarStock();
				break;
			case 4:
				System.out.println("\n\t\tFIN DE PROGRAMA");
				break;
			default:
				System.out.println("Opción equivocada");
			}
 
		}
 
	}
 
	private static void comprarProducto() {
		System.out.println("\n\t\tCOMPRAR PRODUCTO");
		System.out.print("Nombre de producto: ");
		String nombre = teclado.nextLine().toUpperCase();
		System.out.print("Formato de producto(kg,unid,tarros,...): ");
		String formato = teclado.nextLine();
		System.out.print("Cantidad: ");
		int cantidad = Integer.parseInt(teclado.nextLine());
 
		//Comprobamos si ya existe producto, o es uno nuevo que hay que registrar
		Producto buscar = null;
		for (Producto prd: productos) {
			if (prd.getNombre().equals(nombre)) {
				buscar = prd;
				break; //Búsqueda finalizada
			}
		}
 
		if (buscar == null) { //Es nuevo, hay que registrarlo
			Producto nuevo = new Producto(nombre, formato);
			nuevo.comprar(cantidad);
 
			productos.add(nuevo);
			System.out.println("\n\tNuevo producto registrado\n");
		}
		else { //Ya existe en el registro de productos
			buscar.comprar(cantidad);
			System.out.println("\n\tCompra registrada\n");
		}
 
 
	}
 
	private static void venderProducto() {
		System.out.println("\n\t\tVENDER PRODUCTO");
		System.out.print("Nombre de producto: ");
		String nombre = teclado.nextLine().toUpperCase();
		//Buscamos el producto
		Producto buscar = null;
		for (Producto prd: productos) {
			if (prd.getNombre().equals(nombre)) {
				buscar = prd;
				break; //Búsqueda finalizada
			}
		}
 
		if (buscar == null) //No existe, programa volverá al menu principal sin hacer nada
			System.out.println("No se encuentra producto con el nombre: " + nombre);
		else {//Existe, pedimos cantidad
			System.out.print("Indique cantidad de " + buscar.getFormato() + " a vender: ");
			int cantidad = Integer.parseInt(teclado.nextLine());
			if (buscar.vender(cantidad))
				System.out.println("\n\tVenta registrada\n");
			else
				System.out.println("\n\tNo hay stock para cubrir la venta\n");
		}
	}
 
	private static void listarStock() {
		System.out.println("\n\t\tSTOCK PRODUCTOS");
		System.out.println("\t\t----- ---------\n");
 
		if (productos.isEmpty())
			System.out.println("\n\tNo hay productos registrados\n");
		else {
			System.out.printf("%20s\t%7s\t%7s\t%7s\n", "PRODUCTO   ", "COMPRAS", "VENTAS", "ALMACEN");
			for (Producto prd: productos)
				System.out.printf("%20s\t%7d\t%7d\t%7d\n", prd.getDescripcion(), prd.getCompras(),
						prd.getVentas(), prd.getStock());
		}
 
	}
 
 
}


Y eso es todo, pregunta si algo no se entiende.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar