Pessoal, estive pensando sobre a relação entre o diagrama de classes e o DER. Para analisarmos o caso montei os seguintes diagramas (simplificados):
1 - Diagrama de Classes
Uma programação possível para esse diagrama:
1.1 - Classe Item
public class Item {
private int codigoItem;
private String descricaoItem;
public void setCodigoItem(int codigoItem){
this.codigoItem = codigoItem;
}
public int getCodigoItem(){
return codigoItem;
}
public void setDescricaoitem(String descricaoItem){
this.descricaoItem = descricaoItem;
}
public String getCodigoItem(){
return codigoItem;
}
}
1.2 Classe Pedido
public class Pedido{
private int codigoPedido;
private List<Item> itens = new ArrayList<>();
private float quantidade;
private BigDecimal valorPedido;
public void setCodigoPedido(int codigoPedido){
this.codigoPedido = codigoPedido;
}
public int getCodigoPedido(){
return codigoPedido;
}
public void setItens(Item itens){
this.itens.add(itens);
}
public List<Item> getItens(){
return itens;
}
}
1.3 - Classe Romaneio
public class Romaneio implements Requisicao{
private int codigoRomaneio;
private List<Pedido> pedidos = new ArrayList<>();
private BigDecimal valorRomaneio = BigDecimal.ZERO;
public void setCodigoRomaneio(int codigoRomaneio){
this.codigoRomaneio = codigoRomaneio;
}
public int getCodigoRomaneio(){
return codigoRomaneio;
}
@Override
public void criarPedido(Pedido pedido){
this.pedidos.add(pedido);
}
public List<Pedido> getPedidos(){
return pedidos;
}
public void setValorRomaneio(BigDecimal valorRomaneio){
this.valorRomaneio += valorRomaneio;
}
public BigDecimal getValorRomaneio(){
return codigoRomaneio;
}
}
1.4 Interface Requisicao
public interface Requisicao{
public void criarPedido(Pedido pedido);
}
O problema surge (supondo que a codificação esteja correta) quando vai se modelar o banco de dados:
2 - MER/DER
2.1 Modelo Conceitual
2.2 Modelo Lógico
Se por um lado, no diagrama de classes, deve-se indicar nos objetos Pedido
uma lista de objetos Item
e uma lista de objetos Pedido
na classe Romaneio
. Por outro lado, pela modelagem conceitual e lógica, mais especificamente no caso do relacionamento Romaneio-Pedido, é a tabela Pedido
(que parte no diagrama de classes) que recebe informações de Romaneio
(FK). Então estou tendo dificuldades de codificar isso. Tenho que passar os romaneios para os pedidos (banco de dados), mas a classe Pedido
não tem campo do tipo Romaneio
, mas justamente o contrário, já que Romaneio
tem uma lista de Pedido
. Alguém já se deparou com essa questão? Como resolver(ram)?
Desde já agradeço.