Existem três relações mais comuns entre classes: dependência (usa-A), agregação (HAS-A) e herança (IS-A).
Vamos tomar o sistema de pedidos de livrarias on -line como um exemplo para explicar os conceitos desses três relacionamentos em detalhes.
A principal função do sistema de pedidos de livrarias on -line é: os usuários registrados podem fazer login na livraria on -line para comprar livros, preencher pedidos on -line e pagar pela compra de livros. Quando a livraria confirmar que o pagamento da compra foi recebido, o livro será enviado de acordo com o endereço deixado pelo usuário. Várias categorias podem ser estabelecidas neste sistema, incluindo livros, contas, ordens, endereços etc., como mostrado na figura abaixo:
Dependência (usa-a)
As dependências são os relacionamentos mais comuns na classe. Por exemplo, a classe de pedidos precisa acessar a classe de conta de usuário, para que a classe de conta precisa ser referenciada na classe Order, ou seja, a classe de pedido depende da classe de conta, mas a classe do livro não precisa confiar na classe de conta.
Se você modificar a classe de conta, ela afetará a classe de pedido. A essência da dependência é que os métodos em uma classe podem operar instâncias de outra classe. Na programação real, é recomendável minimizar o número de classes interdependentes. Como mostrado na figura abaixo:
Agregação (has-a)
Como o pedido precisa indicar quais livros encomendar, isso envolve a categoria de livro, ou seja, inclui a categoria de livro. A diferença entre agregação e dependência é que a classe de pedidos pode não possuir todos os objetos da classe de conta, mas deve possuir todos os objetos da classe do livro, porque o objeto da classe do livro é o principal objetivo da ordem, como mostrado na figura abaixo:
herdar
A herança significa que uma classe pode chamar todos os membros de dados de outra classe e não precisa ser redefinida na classe atual. Este capítulo já explicou muito claramente.