Java - Programa para realizar ciertas operaciones sobre unos materiales educativos

 
Vista:
sin imagen de perfil
Val: 21
Ha aumentado su posición en 59 puestos en Java (en relación al último mes)
Gráfica de Java

Programa para realizar ciertas operaciones sobre unos materiales educativos

Publicado por Iván Andrés (12 intervenciones) el 12/03/2021 13:56:49
Tengo que entregar un taller de construcción de software, soy principiante, y aún no se algunas cosas, ya hice los demás ejercicios, sólo me falta este, y no se cómo hacerlo, agradecería mucho si alguien me ayuda.

Ejercicio:

Se desea hacer un programa para realizar ciertas operaciones sobre unos materiales educativos (libros), los cuales son comercializados por una librería y/o utilizados en una biblioteca. Para ello se requiere que por medio de una interface permita controlar las siguientes acciones:

ConseguirMaterial(): Esta acción permitirá adquirir (comprar) por parte de la librería o la biblioteca los materiales con las editoriales respectivas. Para ello se requiere hacerle la compra a un precio y por ciertas cantidades.

Transaccion(): Esta se encargará, según el tipo de negocio, de vender un libro a un cliente (en caso de la librería) o realizar un préstamo a un usuario (en caso de la biblioteca).

Cambios(): Se encargará, según el tipo de negocio, de realizar un cambio (en caso de una librería) o de hacer la devolución del libro (en caso de ser la biblioteca). Se debe informar la fecha del cambio y el nombre del nuevo libro por el que fue cambiado. Y mostrar la fecha y el valor de la multa (si aplica) en la devolución del libro.

Tenga en cuenta que cada material debe llevar un ISBN (Código), nombre, autor, precio de compra (En caso de la librería), días de préstamo y valor de la multa (en caso de la biblioteca). Las clases deben llevar sus respectivos constructores, métodos get y set y los métodos adicionales.

Por último, debe contar con un programa principal en el cual se pueda realizar ya sea una venta de un material (para una librería) y un préstamo de material (para una biblioteca).
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-1
Responder
Imágen de perfil de Kabuto
Val: 3.302
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Programa para realizar ciertas operaciones sobre unos materiales educativos

Publicado por Kabuto (914 intervenciones) el 13/03/2021 02:33:48
Hola.

En este caso, cuando habla de interface, no se refiere a una interfaz gráfica (GUI).
Se refiere a una "interface POO". En programación orientada a objetos, una interface es algo similar a una clase abstracta, un código donde se declaran (pero no se definen) una serie de métodos que vamos a querer que sean OBLIGATORIOS en las clases que vayan a implementar dicha interface.
Simplemente se pone "la firma" de estos métodos, no se define el código porque este se ha de definir en la clase que implementa la interfaz, ya que el código puede ser completamente diferente según las características de cada clase.


En este ejercicio, se proponen dos modelos de negocio similares, pero difierentes, una librería y una biblioteca.
Lo que se pretende es que en la gestión de cada negocio, ambos tengan OBLIGATORIAMENTE estas tres acciones:
- conseguir material
- transacción
- cambios

La forma en que se vayan a llevar a cabo esas acciones, ya dependerá de cada modelo de negocio, pero ambas han tenerlas.

Así pues, el código de esta interface que se pide y que podríamos llamar Materiales, en realidad es tan simple y sencillo como esto:
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
public interface Materiales {
 
	/**
	 * Esta acción permitirá adquirir (comprar) por parte de
	 * la librería o la biblioteca los materiales con las editoriales respectivas.
	 * Para ello se requiere hacerle la compra a un precio y por ciertas cantidades.
	 */
	public void conseguirMateriales();
 
	/**
	 * Esta se encargará, según el tipo de negocio,
	 * de vender un libro a un cliente (en caso de la librería) o
	 * realizar un préstamo a un usuario (en caso de la biblioteca).
	 */
	public void transaccion();
 
	/**
	 * Se encargará, según el tipo de negocio,
	 * de realizar un cambio (en caso de una librería) o
	 * de hacer la devolución del libro (en caso de ser la biblioteca).
	 * Se debe informar la fecha del cambio y el nombre del nuevo libro
	 * por el que fue cambiado. Y mostrar la fecha y el valor de la multa
	 * (si aplica) en la devolución del libro.
	 */
	public void cambios();
 
}

Listo. Ya está. Como dije, no se define el código de cada método, porque se hará dentro de las clases que implementen esta interfaz.
Solo se declara la firma: nombre, tipo de método y parámetros que han de recibir (o no) como argumentos entre los paréntesis.

Ahora lo que toca pensar, es cuáles serían las clases que han de implementar esta interface.
Viendo el resto del enunciado, no parece que se pretenda realizar un programa demasiado realista, tan solo algo simulado con la intención de demostrar para qué se usan las interfaces POO.

Un posible UML podría ser este:
imagen_2021-03-13_020852

Es decir, habría una clase llamada Material (un Material es un libro) con los tres atributos comunes y sus métodos get y set.

Luego habría una clase Biblioteca (libro de Biblioteca) con los atributos de dias de prestamo y multa.
Y otra clase Libreria (libro de Librería) con el atributo precio de compra.
Ambas heredan de Material.

Luego habría una clase para gestionar el material(libros) de Biblioteca y otra clase para la gestión de Librería.
Cada una contaría con un ArrayList con los libros de la clase correspondiente (relación de agregación).

Y además, estas clases serían quienes van a implementar cada una, la interface Materiales

Así que, más o menos, esta podría ser la clase Material:
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
public class Material {
 
	private String isbn;
	private String nombre;
	private String autor;
 
	public Material(String isbn, String nombre, String autor) {
		this.isbn = isbn;
		this.nombre = nombre;
		this.autor = autor;
	}
 
	public String getIsbn() {
		return isbn;
	}
 
	public void setIsbn(String isbn) {
		this.isbn = isbn;
	}
 
	public String getNombre() {
		return nombre;
	}
 
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
 
	public String getAutor() {
		return autor;
	}
 
	public void setAutor(String autor) {
		this.autor = autor;
	}
 
}

Esta podría ser la clase Libreria, que hereda de Material:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Libreria extends Material{
 
	private float precioCompra;
 
	public Libreria(String isbn, String nombre, String autor, float precio) {
		super(isbn, nombre, autor); //Atributos para la superclase
		precioCompra = precio;
	}
 
	public void setPrecioCompra(float precio) {
		precioCompra = precio;
	}
 
	public float getPrecioCompra() {
		return precioCompra;
	}
 
}

Esta sería la clase GestionLibreria, que agrega la clase Libreria en forma de ArrayList.
Y además, implementa la interfaz Materiales. Al implementar esta interfaz, el compilador obliga a sobrescribir (override) los tres métodos pertenecientes a esta interfaz.
Es decir, es aquí donde se decide como es el código de estos métodos:
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
public class GestionLibreria implements Materiales{
 
	private ArrayList<Libreria> libreria;
 
	public GestionLibreria() {
		libreria = new ArrayList<Libreria>();
	}
 
	@Override
	public void conseguirMateriales() {
		// TODO Código para comprar libros a las editoriales
 
	}
 
	@Override
	public void transaccion() {
		// TODO Código para vender un libro a un cliente
 
	}
 
	@Override
	public void cambios() {
		// TODO Código para cambiar un libro a un cliente
 
	}
 
}
Para los materiales de biblioteca, sería lo mismo.
Una clase Biblioteca con sus atributos específicos que hereda de Material
Y una clase GestionBiblioteca con un ArrayList agregando objetos de la clase Biblioteca y que implementa la interfaz Materiales

El código de cada método que hay que implementar, ya lo decides tú como hacerlo.
Como digo, no parece que el enunciado espere que se haga nada complicado ni realista. Simular una compra en la que el ArrayList reciba libros de la clase correspondiente, devolver un libro a la biblioteca y calcular la posible multa... el enunciado no especifica reglas para esto, así que lo deja a tu criterio.
Puedes hacer algo sencillo para la consola de texto, o algo más elaborado con una GUI con ventanas y botones.

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
sin imagen de perfil
Val: 21
Ha aumentado su posición en 59 puestos en Java (en relación al último mes)
Gráfica de Java

Programa para realizar ciertas operaciones sobre unos materiales educativos

Publicado por Iván Andrés (12 intervenciones) el 19/03/2021 00:06:46
GRACIAS!!!
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