Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Phobos en 02 de Noviembre 2014, 21:18
-
Hola gente,
Estoy estudiando ingenieria en telematica y por ende aprendiendo programacion en Java, ahora me encuentro dandole a la programacion orientada a objetos, concepto que al principio me causo dificultades por el nivel de abstraccion pero que ya manejo, junto con la mayoria de las herramientas, desde, yo que se, las operaciones bases, constructores, getters y setters hasta polimorfismos, packages, herencia entre otros. Como el titulo lo indica, tengo un problema llevando la letra de un problema a la realidad, me gustaria saber si tienen tips para darme, para lograr esto de mejor y mas eficiente manera, y sobretodo si me pueden ayudar con este problema en especifico que no logro entender la realidad del problema me gustaria pensar que fue mal escrito en parte, pero pense que con experiencia, uno de ustedes podria quizas hacerme entender de que trata:
Se desea realizar un sistema que asista a los pequeños comercios en la definición de sus listas de precios y promociones que brindan a sus clientes finales.
Para ello se deberá realizar una aplicación que permita administrar artículos de los cuales interesa conocer un código (que lo identifica), una descripción y precio de costo.
A su vez es de interés definir listas de precios de los cuales interesa conocer un código que la identifica como también la definición de los precios para cada uno de los artículos.
Por último los comercios ofrecen promociones puntuales, que por distintas razones ofrecen un descuento en el precio de un artículo (como por ejemplo por recambio de stock). Estas promociones tendrían que poder gestionarse de igual manera que el resto de las entidades y interesa conocer un nombre, articulo que aplica y un porcentaje de descuento.
Con el fin de poder realizar una validación de la correcta definición de precios, se solicita disponer de una funcionalidad que permita simular la generación de un ticket de venta. Para ello se deberá tener una funcionalidad que permita ingresar código de articulo y su respectiva cantidad, tantas veces como artículos se desee tener en el ticket de venta y disponer de una acción de simular. Esta simulación debería brindar como resultado el precio individual de cada artículo, el precio total del ticket y por último la ganancia generada de esta venta.
La ganancia es deducida a partir de la suma de los precio finales de venta de un articulo – su costo.
Las funcionalidades se deberán presentar con un menú a través de la consola de comandos. Tendrá que tener un loop un su clase principal el cual soportará las siguientes acciones desplegadas de la siguiente forma:
a. Alta de producto
En esta opción se deberá solicitar la información de un producto y registrarlo dentro del sistema.
b. Alta de lista de precios
En esta opción se deberá solicitar la información de una lista de precios. Para ello obligatoriamente se deberá indicar un precio para cada producto dentro del sistema.
c. Alta de promoción
En esta opción se deberá solicitar la información de una promoción, para ello se indicará un código de articulo y un % de descuento.
d. Simular venta
En esta opción se deberá solicitar códigos de artículos y cantidades hasta que se desee totalizan. Un ejemplo de interacción para este flujo sería el siguiente:
Programación 1
Ingrese Producto: 234
Ingrese Cantidad:2
Desea ingresar un articulo más: Si.
Ingrese producto:456
Ingrese Cantidad: 1
Desea ingresar un articulo más: No
Resultado de simulación :
Producto 234 x 2 $U 360
Producto 456 x 1 $U 300
===================
Total $U 660
Ganancia obtenida: $U 40
La definición de artículos y listas de precios para obtener este resultado es:
Artículos:
1.
• Código: 234
• Descripción: Producto 234
• Costo: 180
2.
• Código: 456
• Descripción: Producto 456
• Costo: 260
Lista de precios:
• Lista de precios
o Articulo: 234, Precio: 200
o Articulo: 456, Precio: 300
Promoción:
• Promoción 1
o Articulo: 234, descuento: 10%
Lo que yo doy por entendido es que se debe crear un programa al cual uno puede dar de alta articulos que contaran con tres atributos: costo (no al cliente, al comerciante), descripcion y un codigo de indentificacion.
No entiendo la necesidad de una lista de precios, porque no tener los precios en los articulos? Si tenemos muchos articulos dar de alta la lista cada ves que usamos el programa es engorroso, claramente no estoy entendiendo bien que se me pide.
Y finalmente la promocion seria simplemente agarrar un articulo y modificarle el precio dado un porcentaje que provee el usuario, o almenos eso supongo.
Que creen ustedes? Muchas gracias desde ya por la ayuda.
-
Hola, tal y como lo veo yo deberías tener las siguientes clases:
CLASE ARTICULO
Atributos:
- String CodigoId
- String Descripcion
- Double PrecioCosto
Métodos:
Aparte de los getters, setters, etc.
double calcularPrecioArticulo(...) { }
CLASE LISTADEARTICULOS
Atributos:
- String codigoLista
- List<Articulo> listaDeArticulos;
Métodos
Aparte de los getters, setters, etc.
HashMap obtenerListaDePrecios() {
//Devuelve un map donde la clave es el artículo ó el id artículo y el value el precio
}
CLASE PROMOCION
Atributos:
- String nombre
- Articulo articuloAlQueAplica
CLASE GENERADOR DE TICKETS DE VENTA
Se encargará de realizar las tareas de generación de un ticket de venta
CLASE CON EL MAIN
Se encargará de mostrar el menú y dirigir el programa
Esto es a grosso modo, a medida que vayas avanzando habrá que ir dándole más detalle.
Tal y como dices tú el enunciado parece que tiene un error: el precio es un atributo de un artículo, posiblemente se calculará el precio a partir de su precio de costo. No sería un buen diseño tener los precios "por separado" en una lista de precios.
Sí puedes tener si lo deseas una lista de artículos, y que eso sea una clase con un método obtenerListaDePrecios. Pero un precio siempre lógicamente tiene que estar ligado a un artículo, no tiene sentido que exista por sí solo. Ahora bien, para cumplir con el enunciado puedes simplemente llamar a LISTADEARTICULOS como LISTADEPRECIOS y así haces lo que te piden pero de forma lógica.
La promoción sí veo que se puede definir como una clase independiente. Luego en artículo podría tener una lista de promociones aplicables a ese artículo.
Para repasar conceptos te recomiendo consultes este curso: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188
Y para generar la aplicación te recomiendo que empieces por lo más sencillo, por ejemplo inicialmente no pienses en promociones ni en listas de precios, empieza con las clases básicas. Si quieres vete pegando el código que vayas generando y trataremos de ir dándote orientación.
Salu2!