Autor Tema: Visualizacion, comprehension y traduccion de una realidad en un programa.  (Leído 2372 veces)

Phobos

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
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.
« Última modificación: 02 de Noviembre 2014, 23:16 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2646
    • Ver Perfil
Re:Visualizacion, comprehension y traduccion de una realidad en un programa.
« Respuesta #1 en: 02 de Noviembre 2014, 23:35 »
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!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".