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=188Y 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!