Para discutir melhor a imagem, anotei sua imagem com alguns números. Espero que isso me ajude a ser mais claro em meus escritos.
Existem realmente três tipos de linhas usadas aqui - associação (1), composição (4-> 2) e herança (3).
Uma linha sólida conectando duas classes, como entre Client
e BookComponent
é simplesmente um relacionamento de associação. É freqüentemente usado para indicar que uma classe conhece (talvez como receba como argumento de um método) ou tenha outra classe (talvez como uma variável de instância). Sem nenhuma decoração ou com uma seta nas duas extremidades, o relacionamento é bidirecional - as duas classes compartilham o relacionamento e se conhecem. Em alguns casos, como a linha 1 da figura, o relacionamento é direcional. A Client
classe sabe BookComponent
, mas o oposto não é verdadeiro, pois BookComponent
não tem um ou conhece Client
. Observe que também existem outras anotações que podem aparecer nos relacionamentos de associação, como funções de multiplicidade ou classe.
A próxima linha é a linha que conecta BookComposite
a BookComponent
. É uma associação, bem como a linha entre Client
e BookComponent
. No entanto, as anotações nos pontos que eu identifiquei 2 e 4 adicionam informações adicionais sobre o relacionamento. Linha no ponto 1, a seta no ponto 2 significa a mesma coisa - BookComposite
está ciente das BookComponent
instâncias, mas não o contrário (uma relação direcional). A anotação no ponto 4 indica um relacionamento de agregação - BookComposite
é uma coleção de BookComponent
. No entanto, não é um relacionamento forte (como é o relacionamento de composição forte), portanto, a agregação indica que a BookComponent
pode indicar em lugares fora de BookComposite
(você não precisa de um BookComposite
para ter um BookComponent
).
Algo a ser observado é que a seta usada para mostrar associações direcionais geralmente não é uma seta preta sólida, como mostrado nesta imagem. Normalmente, eu a vejo como uma seta aberta que se parece mais com o v
que é mostrado na sua imagem.
Finalmente, o ponto 3 é o relacionamento de herança que você mencionou na sua pergunta.
Se você estiver interessado em saber mais sobre a modelagem UML, recomendo comprar o UML Distilled . É um bom livro de Martin Fowler que cobre classe, sequência, objeto, pacote, implantação, caso de uso, máquina de estado, atividade, comunicação, estrutura composta, componente, colaboração, visão geral da interação e diagramas de tempo.