Olá Wagner, tudo bem com você?
Vou tentar auxiliar em suas dúvidas :)
Estou com duvidas como representar uma classe abstrata e os seus relacionamentos com classes
Representamos classes abstratas na UML da mesma maneira, a única diferença é que o nome da classe será indicado com itálico, e os relacionamentos continuam da mesma forma
Em relação a classe anônima, acredito que normalmente iremos utilizar em um diagrama de objetos, e neste caso iremos indicar que se trata de um objeto anônimo utilizando :
antes do nome da classe a que ele pertence
Ex: :ClasseAnonima
Aqui um pouco mais sobre o Diagrama de Objetos
Estou com dificuldade em entender a diferença no código entre composição e agregação.
Realmente nem sempre será tão visível no código esse tipo de relação, isso é até uma das vantagens e necessidades de termos o nosso código documentado, pois as relações que não são tão visíveis no código se tornam mais fáceis (principalmente a relação de 1 para 1, 1 para muitos, etc.)
Então muitas vezes ao bater o olho no código não vamos identificar de primeira qual o tipo de relação que os objetos tem, mas podemos enxergar da seguinte maneira:
- Composição: como representa uma relação forte entre
parte-todo
, onde a parte não "sobrevive" sem o todo
Tipicamente em nosso código será quando criamos um objeto de uma classe para utilizar em outro e não faz sentido criar esse objeto se não para isso, por exemplo:
Suponha que tenhamos uma classe Transação
e todos os métodos dela dependem de uma Conta
, temos uma relação forte onde a parte depende do todo e não iremos criar uma transação se não para isso :)
- Agregação: representa uma relação
parte-todo
, onde a parte pode existir sem o todo
Isto é, podemos utilizar um objeto com outra classe, mas eles não dependem um do outro para existir, por exemplo:
Uma classe Eletrodoméstico
e uma classe Loja
, por mais que eles possam ser agregados, um sobrevive sem o outro
Agora uma recomendação :)
Se você gosta dessa parte de UML e acredita que auxilia no seu aprendizado, aqui na alura nós temos alguns cursos focados apenas nessa ferramenta :)
Abraços e Bons Estudos!