Taller#
Tema Principal#
Diagramas de Clases y Objetos para una tienda simple.
Objetivo:#
El propósito de este taller es que los estudiantes identifiquen y traduzcan los componentes del código Java en diagramas UML de clases y objetos, con un enfoque en la representación de relaciones de herencia y asociación. Este ejercicio les permitirá visualizar cómo se estructuran y relacionan las clases en un sistema con más detalle.
Instrucciones:#
Se proporciona un código en Java que simula la gestión de una librería, ahora con relaciones de herencia y asociación.
El estudiante deberá:
Crear el diagrama de clases UML, identificando las relaciones de herencia y asociación.
Crear el diagrama de objetos UML, representando instancias de las clases y su interacción.
Código a Analizar:#
// Clase Producto
public class Producto {
private String nombre;
private double precio;
public Producto(String nombre, double precio) {
this.nombre = nombre;
this.precio = precio;
}
public String getNombre() {
return nombre;
}
public double getPrecio() {
return precio;
}
}
// Clase Libro (Hereda de Producto)
public class Libro extends Producto {
private String autor;
public Libro(String nombre, String autor, double precio) {
super(nombre, precio);
this.autor = autor;
}
public String getAutor() {
return autor;
}
}
// Clase Revista (Hereda de Producto)
public class Revista extends Producto {
private int numeroEdicion;
public Revista(String nombre, int numeroEdicion, double precio) {
super(nombre, precio);
this.numeroEdicion = numeroEdicion;
}
public int getNumeroEdicion() {
return numeroEdicion;
}
}
// Clase Cliente
public class Cliente {
private String nombre;
private String email;
public Cliente(String nombre, String email) {
this.nombre = nombre;
this.email = email;
}
public String getNombre() {
return nombre;
}
public String getEmail() {
return email;
}
}
// Clase Pedido (Asociación con Producto y Cliente)
public class Pedido {
private Producto producto; // Asociación con Producto (Libro o Revista)
private Cliente cliente;
public Pedido(Producto producto, Cliente cliente) {
this.producto = producto;
this.cliente = cliente;
}
public Producto getProducto() {
return producto;
}
public Cliente getCliente() {
return cliente;
}
public void detallesPedido() {
System.out.println("Cliente: " + cliente.getNombre() + " ha pedido el producto '"
+ producto.getNombre() + "' con un precio de " + producto.getPrecio());
}
}
// Clase Principal
public class Main {
public static void main(String[] args) {
Libro libro = new Libro("El Quijote", "Miguel de Cervantes", 29.99);
Revista revista = new Revista("National Geographic", 203, 5.99);
Cliente cliente = new Cliente("Juan Pérez", "juan.perez@example.com");
Pedido pedido1 = new Pedido(libro, cliente);
Pedido pedido2 = new Pedido(revista, cliente);
pedido1.detallesPedido();
pedido2.detallesPedido();
}
}
Ejercicio#
Taller 5
Tareas
Diagrama de Clases UML:
Identifique las clases Producto, Libro, Revista, Cliente, y Pedido.
Modele la herencia entre la clase base
Producto
y sus subclasesLibro
yRevista
.Establezca las relaciones de asociación entre
Pedido
yProducto
, y entrePedido
yCliente
.Defina correctamente los atributos y métodos de cada clase, con las visibilidades adecuadas (
private
,public
).
Diagrama de Objetos UML:
Cree un diagrama de objetos que muestre las instancias de
Libro
,Revista
,Cliente
, yPedido
creadas en el métodomain
. Por lo menos tres objetos por clase, excepto del main.Modele la asociación entre los objetos en esta ejecución (por ejemplo, el
pedido1
está asociado a una instancia deLibro
y a una instancia deCliente
).
Entrega
Los estudiantes deberán entregar:
Un diagrama de clases UML que represente la estructura del código con herencia y asociaciones.
Un diagrama de objetos UML que modele las instancias de los objetos en el método
main
.Adjuntar una explicación breve justificando las relaciones y decisiones de modelado.
Pantallazos con el código funcionando. Realizar algunas pruebas
Criterios de Evaluación
Claridad y precisión del diagrama de clases (40%):
Identificación correcta de las relaciones de herencia y asociación.
Uso adecuado de visibilidad para los atributos y métodos.
Exactitud del diagrama de objetos (40%):
Representación adecuada de las instancias y relaciones entre objetos en tiempo de ejecución.
Presentación y justificación del trabajo (20%):
Entrega clara, con diagramas bien estructurados y una explicación coherente.
Conclusión:#
Este taller permite que los estudiantes practiquen la traducción de un código Java con relaciones de herencia y asociación a diagramas UML de clases y objetos, desarrollando habilidades clave para el diseño y comprensión de sistemas orientados a objetos.