Galera sou novo em modelagem em UML e estou com uma duvida. Seguinte, tenho uma classe que faz parte da composição(todo/parte), e ela é a ‘parte’ da outra classe principal(“todo”). porem surgiu agora a necessidade de essa classe fazer parte de outra composicao todo/parte e nao sei se pode fazer isso. Segue um exemplo:
1º - “Cliente” tem um ou mais “endereco” --> composicao onde a parte forte é "Cliente"
2º - “Empresa” tem um “endereco” --> composicao onde a parte forte é “Empresa”
Note nesse exemplo que a classe Empresa surgiu dp e tbm precisa de um endereco, porem a classe endereco ja esta em outra composicao. A duvida é, posso criar uma segunda composicao envolvendo a classe endereco?Ou seria melhor criar outra classe “endereco”?
Obrigado pela resposta amigo. Sei que a nivel d banco de dados e relacionamento entre as classes(programaçao) isso eh mais que comum. Porem, nunca vi uma representacao em diagrama de classes assim, pesquisei bastante na net e nao achei esse caso. Fiquei entao com medo d ser “errado” representar um relacionamento duplo d composicao com mesma classe em UML.
Sim, se eu remover o cliente o endereço tbm sera apagado. Nao existe uma tabela fixa de endereco onde o usuario vai poder escolher e selecionar pois nao tem necessidade, entao o endereco e cadastrado especificamente para o cliente em questao. Ou seja, apagou cliente, apagou endereco. Porem como a ideia e um sistema que possa ser alugado para varias empresas, surgiu a necessidade de cadastrar a empresa que esta usando o sistema, para que possa usar esses dados nos relatorios emitidos, onde vai constar o endereco e etc da empresa que esta emitindo. Por isso usei a composicao, e preciso d composicao duas vezes usando o “endereco”. Como nunca vi esse exemplo em UML fiquei achando q nao era certo representar assim em UML.
Então kra, pra vc não deixar isso assim…cria atributos dentro da classe cliente e empresa…tipo…
Endereço
Número
Complemento
CEP
por aih vai…pq vc ter uma classe q vai ser feita pra fazer a mesma coisa q os atributos e vc vai excluir o cliente e não vai usar o endereço, então não é necessário tê-lo.