uma introdução a programação orientada a objetos€¦ · programação orientada a objetos...

17
Programação Orientada a Objetos Relacionamentos entre classes Prof. Vicente Paulo de Camargo

Upload: others

Post on 15-Nov-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Uma Introdução a Programação Orientada a Objetos€¦ · Programação Orientada a Objetos Relacionamentos entre classes ... Esse tipo de relacionamento existe quando um objeto

Programação Orientada a Objetos

Relacionamentos entre classes

Prof. Vicente Paulo de Camargo

Page 2: Uma Introdução a Programação Orientada a Objetos€¦ · Programação Orientada a Objetos Relacionamentos entre classes ... Esse tipo de relacionamento existe quando um objeto

RELACIONAMENTO ENTRE CLASSES

Dependencia

agregação

composição

associaçãogeneralização

Interface

Page 3: Uma Introdução a Programação Orientada a Objetos€¦ · Programação Orientada a Objetos Relacionamentos entre classes ... Esse tipo de relacionamento existe quando um objeto

RELACIONAMENTO ENTRE CLASSES

Dependencia

agregação

composição

associaçãogeneralização

Interface

Esses são os possíveis relacionamentos entre as classes existentes em um

sistema de software

Page 4: Uma Introdução a Programação Orientada a Objetos€¦ · Programação Orientada a Objetos Relacionamentos entre classes ... Esse tipo de relacionamento existe quando um objeto

RELACIONAMENTO ENTRE CLASSES (cont.)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;

}

Class Funcionario extends Pessoa{

int matricula;}

A herança simples é representada por extends na subclasse

Page 5: Uma Introdução a Programação Orientada a Objetos€¦ · Programação Orientada a Objetos Relacionamentos entre classes ... Esse tipo de relacionamento existe quando um objeto

RELACIONAMENTO ENTRE CLASSES (cont.)REALIZAÇÃO – UML E CÓDIGO

Esse tipo de relacionamento existe quando uma classe implementa uma interface

Public interface dadosProfissionais{

public abstract String getDadosCadastrais();

}

Class Medico extends Pessoaimplements dadosProfissionais

{private int numCRM;public abstract String

getDadosCadastrais(){ return this.numCRM;

}}

O termo implements representa a herança por interface

Aqui há uma herança múltipla

Page 6: Uma Introdução a Programação Orientada a Objetos€¦ · Programação Orientada a Objetos Relacionamentos entre classes ... Esse tipo de relacionamento existe quando um objeto

RELACIONAMENTO ENTRE CLASSES (cont.)ASSOCIAÇÃO – UML E CÓDIGO

Esse tipo de relacionamento existe quando um objeto da classe X pode terinstancias de objetos da mesma classe ou de outras classes.Ambos os lados permitem navegação (navegação dupla).

Public class Funcionarioextends Pessoa

{ private int matricula; private Dependente[ ] dependente;

}

Class Dependente extends Pessoa{

private int tipoParentesco;private Funcionario funcionario;

}

Um funcionário pode ter vários dependentes (* no lado de Dependente)

Um dependente só possui uma instância de Funcionario

Page 7: Uma Introdução a Programação Orientada a Objetos€¦ · Programação Orientada a Objetos Relacionamentos entre classes ... Esse tipo de relacionamento existe quando um objeto

RELACIONAMENTO ENTRE CLASSES (cont.)ASSOCIAÇÃO – UML E CÓDIGO

Neste caso, só funcionário “enxerga” Dependente.

Public class Funcionarioextends 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

Neste caso, a associação tem um sentido

Page 8: Uma Introdução a Programação Orientada a Objetos€¦ · Programação Orientada a Objetos Relacionamentos entre classes ... Esse tipo de relacionamento existe quando um objeto

RELACIONAMENTO ENTRE CLASSES (cont.)DEPENDENCIA – UML E CÓDIGO

Esse tipo de relacionamento existe quando uma classe pode ser afetada por mudanças em outra classe.

Public class Funcionarioextends Pessoa

{ private int matricula; private Dependente[ ] dependente;public boolean analisarVeiculo(Veiculo v){

.......................return true;

}}

Essa classe não possui instância deVeiculo, mas utiliza-o como parâmetro em método

Page 9: Uma Introdução a Programação Orientada a Objetos€¦ · Programação Orientada a Objetos Relacionamentos entre classes ... Esse tipo de relacionamento existe quando um objeto

RELACIONAMENTO ENTRE CLASSES (cont.)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

Page 10: Uma Introdução a Programação Orientada a Objetos€¦ · Programação Orientada a Objetos Relacionamentos entre classes ... Esse tipo de relacionamento existe quando um objeto

RELACIONAMENTO ENTRE CLASSES (cont.)COMPOSIÇÃO

Um livro é composto de um ou mais capítulosUm capítulo não existe sem o livroSe não existir capítulo, não existe livroREPRESENTAÇÃO:Linha com losango preenchido no lado “dominante”

Page 11: Uma Introdução a Programação Orientada a Objetos€¦ · Programação Orientada a Objetos Relacionamentos entre classes ... Esse tipo de relacionamento existe quando um objeto

RELACIONAMENTO ENTRE CLASSES (cont.)COMPOSIÇÃO – CÓDIGO SEMELHANTE A ASSOCIAÇÃO

Page 12: Uma Introdução a Programação Orientada a Objetos€¦ · Programação Orientada a Objetos Relacionamentos entre classes ... Esse tipo de relacionamento existe quando um objeto

RELACIONAMENTO ENTRE CLASSES (cont.)AGREGAÇÃO – CÓDIGO SEMELHANTE À ASSOCIAÇÃO

Carro possui Motor, Porta e PneuMotor, Porta e Pneu existem como objetos independentesREPRESENTAÇÃO:Linha com losango vazio no lado “dominante”

Page 13: Uma Introdução a Programação Orientada a Objetos€¦ · Programação Orientada a Objetos Relacionamentos entre classes ... Esse tipo de relacionamento existe quando um objeto

RELACIONAMENTO ENTRE CLASSES (cont.)AGREGAÇÃO

Page 14: Uma Introdução a Programação Orientada a Objetos€¦ · Programação Orientada a Objetos Relacionamentos entre classes ... Esse tipo de relacionamento existe quando um objeto

RELACIONAMENTO ENTRE CLASSES (cont.)COMPOSIÇÃO, AGREGAÇÃO E ASSOCIAÇÃO

NOTASAgregação e Composição podem ser substituídas poruma Associação, pois...Agregação e Composição são tipos de associaçõesRepresentam relacionamento “TEM UM”Carro “tem um” MotorLivro “tem um” Capitulo

NÃO ESQUECER QUE HERANÇA É UM RELACIONAMENTO “É UM”

Page 15: Uma Introdução a Programação Orientada a Objetos€¦ · Programação Orientada a Objetos Relacionamentos entre classes ... Esse tipo de relacionamento existe quando um objeto

RELACIONAMENTO ENTRE CLASSES (cont.)COMPOSIÇÃO, MODELANDO O BANCO DE DADOS: As classes

A agregação permiteEstabelecer atores dentro de um filme,Podendo até remover ator de um filme.Um ator não é exclusivo de um filmePode-se ter um ator em diferentes filmes

A composição permiteestabelecerComentário em um filme. Noentanto,Neste caso, um comentário éexclusivoDe um filme.Um comentário só faz parte deum determinado filme.Um comentário não faz parte deoutros filmes

Page 16: Uma Introdução a Programação Orientada a Objetos€¦ · Programação Orientada a Objetos Relacionamentos entre classes ... Esse tipo de relacionamento existe quando um objeto

RELACIONAMENTO ENTRE CLASSES (cont.)COMPOSIÇÃO, MODELANDO O BANCO DE DADOS: O DER Resultante

filme

Filme_ator ator

produtor

comentario

1

N

1

N 1N

1 N

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.

Page 17: Uma Introdução a Programação Orientada a Objetos€¦ · Programação Orientada a Objetos Relacionamentos entre classes ... Esse tipo de relacionamento existe quando um objeto

RELACIONAMENTO ENTRE CLASSES

F I M