Java - Necesito ayuda por favorcito :c!

 
Vista:
sin imagen de perfil

Necesito ayuda por favorcito :c!

Publicado por Alexander (1 intervención) el 09/12/2023 17:56:57
Muy buenos días gente, la verdad tengo un problema urgente con este tema relacionado al POOs (Programación Orientada a Objetos) (y disculpen si me equivoque de foro, pero cuando busque un foro sobre la POOs, no encontré ninguno?).
Soy bastante nuevo en el tema y se me ha complicado bastante entender ciertos términos como también la codificación de este en Java, asi que se apreciaría bastante su ayuda!
Aquí tengo una imagen del ejercicio como tal, y muchas gracias de antemano por su tiempo.
2023-12-09-2
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 Richtofen

Necesito ayuda por favorcito :c!

Publicado por Richtofen (18 intervenciones) el 10/12/2023 12:40:23
En una sola clase lo tienes todo:

Los primeros puntos son los atributos de tu clase, definelos como privados si te obligan a generar los getters y setters.

Las celdas grises son los metodos, los cuales se calculan como:

calculoPrecioVenta: cantidad de productos x precio de venta
calculoPrecioCompra: cantidad de productos x precio de compra
calculoGanancia: calculoPrecioVenta x calculoPrecioCompra

Entiendo que deberias generar un constructor vacio y uno que reciba todos los atributos

Lo demás creo que es trivial, pero si tienes dudas hablame por privado y lo vemos
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
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

Necesito ayuda por favorcito :c!

Publicado por Kabuto (1381 intervenciones) el 10/12/2023 12:45:04
Hola.
Aquí lo que se pide es que escribas una clase que modele lo necesario para representar una "entrada de productos".
Cuando esta empresa registra la entrada de un producto, necesita representar una serie de datos sobre cada entrada: código de producto, valor compra, cantidad, etc...
Estos datos serían los "atributos".

Luego, utilizando esos datos, ha de poder realizar una serie de cálculos, por ejemplo, cuál es el precio de compra total de cada entrada de producto (precio compra * cantidad)
Estos cálculos serían las "funcionalidades"(los métodos).

Bien, vamos a ir elaborando el UML.
Lo primero es pensar un nombre para nuestra clase, que sea descriptivo de la entidad que va a representar. Como consiste en modelar entradas de productos, pues ese mismo puede ser su nombre.
Importante recordar que los nombres de clase comienzan con mayúscula.
01

Ya tenemos nombre, veamos los atributos.
El primero es el "código" que identifica al producto que va a entrar, así que se puede llamar codigoProducto
En el ejemplo vemos que es un código numérico, así que su tipo podría ser int o Integer.
Sin embargo, como en principio con este código no vamos a realizar operaciones matemáticas de ningún tipo(sumas, restas...) entonces suele ser recomendable usar el tipo String.
En este caso, tanto int como String nos va a servir perfectamente, así que elige el que quieras. Yo elijo String.

El siguiente atributo es la "descripción" del producto. Su tipo será String sin duda ya que será una cadena de texto.

Seguimos con la "unidad de medida". De nuevo usaremos String, ya que será una cadena que explique cómo se mide este producto: litros, kilogramos, piezas,....

Después viene el "precio de compra" y el "precio de venta". Con estos atributos si que podemos esperar tener que hacer operaciones aritméticas así que habrá que escoger un tipo numérico. Al tratarse de precios expresados en alguna moneda que se puede fraccionar, lo mejor será usar el tipo double para ambos atributos.

Por último, la "cantidad" de producto que se registra en esta entrada. También necesitaremos representarlo con un tipo numérico y como las "unidades de medida" del producto son unidades enteras (podemos recibir 1 litro, 2 litros.., pero no 0,5 litros) pues usaremos el tipo int.

Pues con esto, ya tenemos definidos los atributos de nuestra clase.
Importante recordar que los atributos, así como las variables, comienzan con minúscula.

02


Ahora vamos a ver las funcionalidades, esto incluye constructores y métodos.
Respecto a los constructores, podemos crear tantos como podamos necesitar(o no crear ninguno). Esto ya depende de las necesidades del programa y del gusto del programador.
Lo habitual es tener al menos dos constructores:
Uno que no reciba parámetros y se ocupe de inicializar los atributos a unos valores por defecto (valor 0 para numéricos, cadena vacía para los String,...)
Otro que sí reciba los parámetros necesarios para crear un objeto y asigne esos parámetros a los correspondientes atributos.

Importante recordar que los nombres de los constructores han de coincidir con el nombre de la clase y por tanto comenzar con letra mayúscula.

Tras los constructores, pasamos a ver los métodos.
Primero, escribiremos los métodos set/get que son casi "obligatorios" para la mayoría de clases.
Estos métodos son los que permiten asignar/modificar valores a los atributos (SET) así como obtener dichos valores (GET) para mostrar en pantalla, operar con ellos o lo que sea.

Por tanto, cada atributo tendrá asociado un método GET y otro método SET.

Los métodos SET, por lo general, no van a retornar ningún valor así que su tipo será void. Pero sí han de recibir al menos un parámetro como argumento, que será el valor que se ha de asignar al correspondiente atributo. Por ejemplo:
1
public void setDescripcion(String descripcion);

Los métodos GET, por lo general, no van a necesitar recibir ningún parámetro(puede haber excepciones). Pero sí han de retornar siempre un valor, así que su tipo dependerá del atributo al que está asociado.. Por ejemplo:
1
public String getDescripcion();

Tras definir los constructores y los get/set, ahora hay que pensar si aún se necesitan definir más funcionalidades.
El enunciado dice que por cada entrada de producto, tenemos que poder hacer tres cálculos:
-precio compra total --> (precioCompra * cantidad)
-precio venta total --> (precioVenta * cantidad)
-ganancia --> (precioVentaTotal - precioCompraTotal)

En estos tres métodos, vamos a estar calculando importes monetarios que son fraccionables, así que usaremos el tipo double para todos ellos.
Y, aunque no pertenecen a los GET "obligatorios", también se ocupan de proporcionarnos un valor así que podemos comenzar su nombre usando el prefijo "get-". Esto no es ninguna norma, en realidad podemos elegir el nombre que nos de la gana.

La única norma a contemplar es que los nombre de todos los métodos han de comenzar con minúscula:

03


Pues teniendo ya el diseño UML de nuestra clase, podemos pasar a codificarla en Java.
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
public class EntradaProducto {
	//Atributos
	private String codigoProducto;
	private String descripcion;
	private String unidadMedida;
	private double precioCompra;
	private double precioVenta;
	private int cantidad;
 
	//Constructor sin parámetros
	public EntradaProducto() {
		codigoProducto = "";
		descripcion = "";
		unidadMedida = "";
		precioCompra = 0;
		precioVenta = 0;
		cantidad = 0;
	}
 
	//Constructor con parámetros
	public EntradaProducto(String codigoProducto, String descripcion, String unidadMedida, double precioCompra,
			double precioVenta, int cantidad) {
		this.codigoProducto = codigoProducto;
		this.descripcion = descripcion;
		this.unidadMedida = unidadMedida;
		this.precioCompra = precioCompra;
		this.precioVenta = precioVenta;
		this.cantidad = cantidad;
	}
 
	//Setters
	public void setCodigoProducto(String codigoProducto) {
		this.codigoProducto = codigoProducto;
	}
 
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
 
	public void setUnidadMedida(String unidadMedida) {
		this.unidadMedida = unidadMedida;
	}
 
	public void setPrecioCompra(double precioCompra) {
		this.precioCompra = precioCompra;
	}
 
	public void setPrecioVenta(double precioVenta) {
		this.precioVenta = precioVenta;
	}
 
	public void setCantidad(int cantidad) {
		this.cantidad = cantidad;
	}
 
	//Getters
	public String getCodigoProducto() {
		return codigoProducto;
	}
 
	public String getDescripcion() {
		return descripcion;
	}
 
	public String getUnidadMedida() {
		return unidadMedida;
	}
 
	public double getPrecioCompra() {
		return precioCompra;
	}
 
	public double getPrecioVenta() {
		return precioVenta;
	}
 
	public int getCantidad() {
		return cantidad;
	}
 
	//Métodos
	public double getTotalCompra() {
		return precioCompra * cantidad;
	}
 
	public double getTotalVenta() {
		return precioVenta * cantidad;
	}
 
	public double getGanancia() {
		return getTotalVenta() - getTotalCompra();
	}
 
}

Podemos también escribir un pequeño programa para poner a prueba nuestra clase:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Prueba {
 
	public static void main(String[] args) {
 
		EntradaProducto entrada = new EntradaProducto("2345", "Vino tinto Jumillano", "litros",
				4.3, 6.5, 100);
 
		System.out.println("Producto entrado: " + entrada.getDescripcion());
		System.out.println("Cantidad: " + entrada.getCantidad() + " " + entrada.getUnidadMedida());
		System.out.println("Total Compra: " + entrada.getTotalCompra());
		System.out.println("Total Venta: " + entrada.getTotalVenta());
		System.out.println("Ganancia: " + entrada.getGanancia());
 
		System.out.println("\n\n\t\tFIN DE PROGRAMA");
 
	}
 
}


Y eso es todo. Si hay algo que no explicado bien, o que no se entiende, o lo que sea..., no dudes en preguntar.
En cualquier asegúrate de comprender todo el proceso que hemos seguido.

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
0
Comentar