Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java...

34
Linguagem de Programação II / Java – Relacionamento entre classes Linguagem de Programação II Relacionamento entre classes Prof. Alessandro Borges

Transcript of Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java...

Page 1: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Linguagem de Programação II

Relacionamento entre classes

Prof. Alessandro Borges

Page 2: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Tópicos

Relacionamento entre Classes

Associação

Definição

Cardinalidade / Multiplicidade

Conectividade

Tipos de Associação

Exemplos de Associação em Java

Mensagens

Definição

Representação Gráfica – Diagrama de Classes

Exemplos

2

Page 3: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Associação

Definição3

Page 4: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

É uma conexão entre classes.

Os objetos de uma classe estão ligados a objetos de outras classes

pode haver troca de informações (mensagens) e compartilhamento de métodos.

Ocorre normalmente

entre duas classes (binária),

entre uma classe com ela mesma (unária) e

entre várias classes (ternária/N-ária).

“Equivale” aos relacionamentos E-R.

Relacionamento entre Classes –

Associação

4

Page 5: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Exemplos

Cliente Produto

ContaCorrente HistoricoTransações

Compra

Possui

Relacionamento entre Classes –

Associação

5

Page 6: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Associação

Cardinalidade / Multiplicidade6

Page 7: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Consiste na quantidade mínima e máxima de objetos que podem ser

conectados pela instância de uma associação.

Exemplo:

Pessoa EmpresaTrabalha na

1..* 0..*

MultiplicidadeMultiplicidade

Cardinalidade / Multiplicidade entre

Classes

7

Page 8: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Exemplos:

Cliente Pedido1 0..*

Cardinalidade / Multiplicidade entre

Classes8

Faz

Page 9: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Exemplos:

Pode haver um cliente que esteja associado a vários pedidos.

Pode haver um cliente que não esteja associado a pedido algum.

Um pedido está associado a um, e somente um, cliente.

Cliente Pedido1 0..*

Cardinalidade / Multiplicidade entre

Classes9

Faz

Page 10: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Associação

Conectividade10

Page 11: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Corresponde ao tipo de associação

existentes entre classes: “muitos para muitos”, “um para muitos” e “um para um”.

Conectividade Em um Extremo No outro Extremo

Um para um0..1

1

0..1

1

Um para muitos0..1

1

*

1..*

0..*

Muitos para muitos

*

1..*

0..*

*

1..*

0..*

Conectividades entre Classes11

Page 12: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Exemplos:

Empregado Departamento

1 0..1

Um para um

Empregado Departamento

0..* 1

Um para muitos

Empregado Departamento

0..* 1..*

Muitos para muitos

Conectividades entre Classes12

Page 13: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Associação

Tipos de Associação13

Page 14: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Associação Binária

Associações entre duas classes

Mais comum

Exemplo:

Tipos de Associação14

Page 15: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Associação Unária (ou Reflexiva)

Ocorre quando uma classe relaciona com si mesmo.

Exemplo:

Tipos de Associação15

Page 16: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Associação

Exemplos de Associação em Java16

Page 17: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Pessoa.java

Endereco.java

Pessoa EnderecoPossui

0..1

Associação “um para um” em Java17

public class Pessoa{

private Endereco endereco = new Endereco();

}

public class Endereco{

private Pessoa pessoa = new Pessoa();

}

0..1

Page 18: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Pessoa.java

Endereco.java

Pessoa EnderecoPossui

1..5

Associação “um para muitos” em Java18

0..1

public class Pessoa{

private Endereco[] enderecos = new Endereco[5];

}

public class Endereco{

private Pessoa pessoa = new Pessoa();

}

Page 19: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Pessoa.java

Endereco.java

Pessoa EnderecoPossui

1..*

Associação “um para muitos” em Java19

public class Pessoa{

private ArrayList<Endereco> enderecos =

new ArrayList<Endereco>();

}

public class Endereco{

private Pessoa pessoa = new Pessoa();

}

0..1

Page 20: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Pessoa.java

Endereco.java

Associação “muitos para muitos” em

Java

20

public class Pessoa{

private Endereco[] enderecos = new Endereco[5];

}

public class Endereco{

private Pessoa[] pessoas = new Pessoa[2];

}

Pessoa EnderecoPossui

1..51..2

Page 21: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Pessoa.java

Endereco.java

Pessoa EnderecoPossui

0..*

Associação “muitos para muitos” em

Java

21

public class Pessoa{

private ArrayList<Endereco> enderecos =

new ArrayList<Endereco>();

}

public class Endereco{

private ArrayList<Pessoa> pessoas =

new ArrayList<Pessoa>();

}

1..*

Page 22: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Associação

Exercícios22

Page 23: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Exercício

Escreva um programa em Java que implemente o Diagrama de

Classes da UML apresentado abaixo.

23

Page 24: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Exercício

Altere as classes do exercício considerando o Diagrama de

Classes abaixo.

24

Page 25: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Mensagem entre classes

Definição25

Page 26: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Mensagem entre classes

Objetos de classes comunicam-se entre si através de

mensagens

26

Objeto Carro

Método Andar()

Objeto Motor

Método Ligar()

Para que o Carro ande é necessário que o Motor esteja ligado!!!

Page 27: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Mensagem entre classes

Uma mensagem especifica que um determinado

método de um objeto precisa utilizar um ou mais

métodos de outro objeto

Podem ser passados objetos como parâmetros e,

opcionalmente, algum resultado ou valor pode ser

retornado

A troca de mensagens acontece através dos métodos

27

Page 28: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Mensagem entre classes

Para enviar uma mensagem deve-se:

Identificar o objeto que receberá a mensagem

Identificar o método que o objeto deverá executar

Passar os argumentos requeridos pelo método

28

Page 29: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Mensagem entre Classes

Representação Gráfica29

Page 30: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Representação Gráfica

Diagrama de Classes

30

Carro

- modelo: String

- marca: String

- motor: Motor

+ Carro()+ GETs()

+ SETs()

+ Andar()

+ Parar()

Motor

- potencia: String

- combustivel: String

- ligado: Boolean

+ Motor()+ GETs()

+ SETs()

+ Ligar()

+ Deligar()

Page 31: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Mensagem entre Classes

Exemplo31

Page 32: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Representação Gráfica

Diagrama de Classes

public class Carro(){

private String modelo;

private Motor motor;

public Carro(){

}

public void Andar(){

motor.Ligar();

SOUT(“Carro Andando...”);

}

public void Parar(){

motor.Desligar();

SOUT(“Carro Parando...”);

}

}

32

Page 33: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Representação Gráfica

Diagrama de Classes

public class Carro(){

private String modelo;

private Motor motor;

public Carro(){

}

public void Andar(){

motor.Ligar();

SOUT(“Carro Andando...”);

}

public void Parar(){

motor.Desligar();

SOUT(“Carro Parando...”);

}

}

33

Executa o Método

‘Ligar’ da Classe ‘Motor’

Executa o Método

‘Desligar’ da Classe ‘Motor’

Page 34: Linguagem de Programação IIalessandro.borges/LP_II/... · Linguagem de Programação II / Java –Relacionamento entre classes Pessoa.java Endereco.java Pessoa Endereco Possui 1..5

Linguagem de Programação II / Java – Relacionamento entre classes

Linguagem de Programação II

Relacionamento entre classes

Prof. Alessandro Borges