Programação Orientada a Objetos Relacionamentos entre classes Prof. Vicente Paulo de Camargo
RELACIONAMENTO ENTRE CLASSES Interface agregação Dependencia composição generalização associação
RELACIONAMENTO ENTRE CLASSES Interface agregação Dependencia Esses são os possíveis relacionamentos entre as classes existentes em um sistema de software composição generalização associação
GENERALIZAÇÃO UML E CÓDIGO JAVA Duas classes possuem esse relacionamento quando uma é derivada da outra, representando uma herança class Pessoa String nome; int idade; A herança simples é representada por extends na subclasse Class Funcionario extends Pessoa int matricula;
REALIZAÇÃO UML E CÓDIGO Esse tipo de relacionamento existe quando uma classe implementa uma interface Public interface dadosprofissionais public abstract String getdadoscadastrais(); Aqui há uma herança múltipla O termo implements representa a herança por interface Class Medico extends Pessoa implements dadosprofissionais private int numcrm; public abstract String getdadoscadastrais() return this.numcrm;
ASSOCIAÇÃO UML E CÓDIGO Esse tipo de relacionamento existe quando um objeto da classe X pode ter instancias deobjetos da mesma classe ou de outras classes. Um funcionário pode Ambos os lados permitem navegação (navegação dupla). ter vários dependentes (* no lado de Dependente) Public class Funcionario extends Pessoa private int matricula; private Dependente[ ] dependente; Class Dependente extends Pessoa private int tipoparentesco; private Funcionario funcionario; Um dependente só possui uma instância de Funcionario
ASSOCIAÇÃO UML E CÓDIGO Neste caso, só funcionário enxerga Dependente. Neste caso, a associação tem um sentido Public class Funcionario extends Pessoa private int matricula; private Dependente[ ] dependente; Class Dependente extends Pessoa private int tipoparentesco; Um funcionário pode ter vários dependentes, mas dependente não possui instância de Funcionario devido ao sentido da associação para o Dependente
DEPENDENCIA UML E CÓDIGO Esse tipo de relacionamento existe quando uma classe pode ser afetada por mudanças em outra classe. Public class Funcionario extends Pessoa private int matricula; private Dependente[ ] dependente; public boolean analisarveiculo (Veiculo v)... return true; Essa classe não possui instância de Veiculo, mas utiliza-o como parâmetro em método
COMPOSIÇÃO E AGREGAÇÃO COMPOSIÇÃO: Um objeto pode ser formado por outros objetos LIVRO é formado por um ou mais CAPÍTULOS AGREGAÇÃO: Um objeto pode ter outros objetos CARRO possui PORTA, MOTOR e PNEU
COMPOSIÇÃO Um livro é composto de um ou mais capítulos Um capítulo não existe sem o livro Se não existir capítulo, não existe livro REPRESENTAÇÃO: Linha com losango preenchido no lado dominante
COMPOSIÇÃO CÓDIGO SEMELHANTE A ASSOCIAÇÃO
AGREGAÇÃO CÓDIGO SEMELHANTE À ASSOCIAÇÃO Carro possui Motor, Porta e Pneu Motor, Porta e Pneu existem como objetos independentes REPRESENTAÇÃO: Linha com losango vazio no lado dominante
AGREGAÇÃO
COMPOSIÇÃO, AGREGAÇÃO E ASSOCIAÇÃO NOTAS Agregação e Composição podem ser substituídas por uma Associação, pois... Agregação e Composição são tipos de associações Representam relacionamento TEM UM Carro tem um Motor Livro tem um Capitulo NÃO ESQUECER QUE HERANÇA É UM RELACIONAMENTO É UM
COMPOSIÇÃO, MODELANDO O BANCO DE DADOS: As classes A agregação permite Estabelecer atores dentro de um filme, Podendo até remover ator de um filme. Um ator não é exclusivo de um filme Pode-se ter um ator em diferentes filmes A composição permite estabelecer Comentário em um filme. No entanto, Neste caso, um comentário é exclusivo De um filme. Um comentário só faz parte de um determinado filme. Um comentário não faz parte de outros filmes
COMPOSIÇÃO, MODELANDO O BANCO DE DADOS: O DER Resultante Do diagrama de classes pode-se gerar o DER. Sendo que a agregação implicou na geração da tabela filme_ator entre filme e ator no Diagrama de Entidade correspondente. A composição gerou um relacionamento 1:N entre filme e comentário. A associação gerou um relacionamento 1:N entre produtor (que recebe a seta) e o filme. 1 filme N N N 1 Filme_ator 1 N comentario ator 1 produtor
RELACIONAMENTO ENTRE CLASSES F I M