Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf ·...

37
1 1 Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes Estrutura do sistema (classes) Representação estática da colaboração (relações) Relações associação (mais comum) agregação (um tipo de associação), generalização/especialização dependência

Transcript of Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf ·...

Page 1: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

1

1

Relações entre Classese Persistência

Prof. Cesar Augusto Tacla

2

Diagrama de classes

�Estrutura do sistema (classes)�Representação estática da colaboração

(relações)

�Relações�associação (mais comum)�agregação (um tipo de associação),�generalização/especialização�dependência

Page 2: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

2

3

Associação

Professor

Disciplina

leciona

Objetos de uma classe se associam a objetos de outra

Nome da associação

4

Multiplicidade das relações

Repr Significado

1 Exatamente uma

0.. **

Zero ou mais

1.. * Uma ou mais

0..1 Zero ou uma

5..8 Faixa específica (5, 6, 7, or 8)

4..7,9 Combinação (4, 5, 6, 7, or 9)

Page 3: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

3

5

Multiplicidade: exemplo

Professor

Disciplina

leciona 1..* 1

João

José

Maria

Matemática

Física

quim

História

6

Multiplicidade: exercício

João

José

Maria

FIAT AXY8704

FUSCA BHY9910

CORCEL ATT1020

Qual a representação em UML para o caso seguinte?

Pessoa Carro

Page 4: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

4

7

Multiplicidade: exemplo

Qual a representação em UML para o caso seguinte?

Faça um exemplo com instâncias que ilustre a representação.

Uma pessoa participa de no máximo 3

projetos, mas pode ser que não participe

de nenhum.

Um projeto pode ter vários participantes

e somente começa a existir quando o

primeiro participante é designado.

8

Navegabilidade: unidirecional

Professor

Disciplina

leciona

Não navegável

navegável

Page 5: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

5

9

Navegabilidade: bidirecional

navegável navegável

Professor

Disciplina

leciona

Direção de leitura

10

Navegabilidade: não especificada

Professor

Disciplina

leciona

Nãoespecificada

Nãoespecificada

Page 6: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

6

11

Papéis

Empresa

Pessoa

Trabalha ou emprega ?

Qual a interpretação desejada?

pessoa trabalha para Empresa ouempresa trabalha (presta um

serviço) para Pessoa;

Trabalha Emprega (contrata)

empresa emprega Pessoa oupessoa emprega (contrata) Empresa

12

Papéis

Empresa

Pessoa

empregador empregado

Papel de empresa Papel de

pessoa

Uso de papéis pode suprimir ambigüidades

Page 7: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

7

13

Associações reflexiva

Objetos de uma classe se relacionam com

objetos da mesma classe

14

Associação reflexiva: exemplo 1

Pessoas

Pessoa

0..*

filho

pai 0..1

Mário

José

Maria

Carlos

Filho(a) pai

Mário é pai de Maria

Quem é o pai de Mário?

Page 8: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

8

15

Associação reflexiva: exemplo 2

João

Maria

José

Mário

Gerente

subordinado João é gerente de Maria e José

Empregado

0..*

gerente

subordinado

1

José é gerente de Mário

Quem é gerente de João?

16

Classes Associativas

Aluno

-nome: String-matricula: int

Disciplina

-nome: String-código: String-cargaHoraria: int

Inscrição

-semestre: int-ano:int-nota:float

1..* 1..*

Quando uma relação associativa possui atributos próprios pode ser transformada em classe.

Page 9: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

9

17

Classes associativas: características

�Normalmente em relações de multiplicidade *:*

�Não é nomeada: somente a classe associativa

�Classes associativas podem estar relacionadas a outras classes.

18

Exercício 1

class Casa

CasaPessoa

Casa Pessoa

0..*

é propriedade

1

+propriedade

1..*

+proprietário

0..*

Em relação aos relacionamentos abaixo responda:

1. Qual a representação mais correta – a primeira ou a segunda relação? Por quê?

2. O que é preciso mudar na segunda relação para representar que uma casa possui diversos

proprietários ao longo do tempo?

Apostila UML, pg. 63, n. 1

Page 10: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

10

19

Exercício 2Qual a diferença de interpretação entre as duas representações? Qual seria mais

indicada para um tribunal regional eleitoral (identidade do eleitor não deve ser conhecida)?

Apostila UML, pg. 63, n. 2

class eleições

PessoaPessoa

eleitor 0..*

vota >

candidatoPresidente0..1

eleitor0..*

vota >

candidatoPresidente0..1

20

Exercício 4: classes associativas

� Modele num diagrama de classes:

� Uma companhia aérea oferece vôos

�Número do vôo

�Data e horário de partida

�Duração

� Passageiros tem programa de fidelidade

�Número do cartão de fidelidade

�Nome

� Sobrenome

� Passageiros recebem milhas por vôo em função da sua duração

Page 11: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

11

21

Solução exercício

Vôo

-num: int-data: Date-duração: int

Passageiro

-nome: String-sobrenome: String-numCartao: int

CréditoMilha

quantidade: int

0..* 0..*

22

Levantamento das associações

�Examinar�Regras do negócio, �Modelo do domínio�Requisitos funcionais�Casos de uso�Diagramas de interação

Page 12: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

12

23

Levantamento de associações

�Exemplo: �regras do negócio de uma biblioteca�“um aluno pode emprestar no máximo quatro

obras”

Aluno

Livro

Empresta 0..4 0..1

24

Levantamento das associaçõessd análise casos de uso

:meteorologista:IUConv ersao :CtrlConv ersao :Historico :Conv ersaoCF

solicitar valor Celsius

valor Celsius?

c

c

converter valor c

guardar conversao

valor Fahrenheitmostrar valor convertido

valor Fahrenheit

Page 13: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

13

25

Implementação de associaçõesunidirecional 1:1

class Professor {

private Disciplina disc = new Disciplina(“FP2”);

// disciplina pode ser instanciado em outro local

// outros atributos

// métodos

}E se fosse bidirecional?

Professor DisciplinaLeciona 11

26

Implementação bidirecional 1:1

1. class Professor {

2. private Disciplina disc;

3. public associar (Disciplina disc) {

4. this.disc = disc;

5. }

6. // métodos

7. }

8. class Disciplina {

9. private Professor prof;

10. public associar (Professor prof) {

11. this.prof = prof;

12. }

13. // métodos

14. }

Page 14: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

14

27

Unidirecional 0..1 : 0..5

class Professor

Professor Disciplina

0..1

leciona

0..5

28

Unidirecional 0..1 : 0..5Implementação 1

1.class Professor {

2. private Disciplina[] disciplinas = {

3. new Disciplina(),

4. new Disciplina(),

5. new Disciplina(),

6. new Disciplina(),

7. New Disciplina(),

8. };

9.}

A instanciação pode

ocorrer em outros

pontos da classe

class Professor

Professor Disciplina

0..1

leciona

0..5

Page 15: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

15

29

Unidirecional 0..1 : 0..5Implementação 2

1.class Professor {

2. private Disciplina[] disciplinas;

3.

4. public void associar(Disciplina[] disc) {

5.

6. if (disc.length > 5)

7. return;

8. disciplinas = disc;

9. }

10.}

class Professor

Professor Disciplina

0..1

leciona

0..5

30

Multiplicidade 1:*

1.class Professor {

2. private Vector<Disciplina> disciplinas =

3. new Vector<Disciplina>(5, 3);

4. public void adicionarDisciplinas(Disciplina[] disc){

5. for (int i=0; i < disc.length; i++)

6. disciplinas.add(disc[i]);

7. ...

8. }

9.}

class classes

Professor Disciplina

1 *

http://java.sun.com/docs/books/tutorial/java/generics/erasure.html

Page 16: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

16

31

Bidirecional multiplicidade *:*

1.public class Projeto {

2. public Vector<Pessoa> emprega;

3. ...

4.}

5.public class Pessoa {

6. public Vector<Projeto> participa;

7. ...

8.}

class muitos para muitos

Projeto Pessoa+emprega

0..*

+participa

0..*

32

Associações reflexivasclass associação reflexiv a

Professor Disciplina

1 *

+preRequisito0..*

+temPrerequisito0..*

1.public class Disciplina {

2. public Vector<Disciplina> temComoPreReq;

3. public Vector<Disciplina> ehPreReqDe;

4. ...

5.}

+temComoPreReq+ehPreReqDe

Page 17: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

17

33

Exercício

� Implementar as relações da transparência anterior de acordo com a grade do curso

Disciplina

FP2APOOEDFÍSICA

Tem pré-requisitos

FP1

é pré-requisito de

APOOED

Professor

TACLA

Solução JAssociaoReflexPrePosRequisitos

34

Classes Associativas

class classe associativa

ProjetoPessoa

Participacao

- cargaHoraria: int- dataEntrada: Date- dataSaida: Date

+emprega

0..*

+participa

0..*

Equivale à...

Diagrama de classes na atividade de Análise

Page 18: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

18

35

Classes Associativas (2)

class classe associativ a (proj )

Projeto PessoaParticipacao

- cargaHoraria: int- dataEntrada: Date- dataSaida: Date

1

possui

0..* 1

participa

0..*

Implementação >>>>

Diagrama de classes na atividade de Projeto

36

Classes Associativas (3)

1.public class Projeto {

2.public Vector<Participacao> m_Participacao;

3. ...

4. }

5.public class Pessoa {

6. public Vector<Participacao> m_Participacao;

7. ...

8.}

9.public class Participacao {

10. private int cargaHoraria;

11. private Date dataEntrada;

12. private Date dataSaida;

13. public Projeto projeto;// se relação for bidirecional

14. Public Pessoa pessoa; // se relação for bidirecional

15. ...

16.}

Page 19: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

19

37

AGREGAÇÃO

� Composição/pertinência�associação

� Parte� Todo� Propagação

class Classe

Janela

Botão ComboBox ScrollBar

3

1

1

1

0..1

1

Exercício: desenhe

uma instância

possível da classe

janela

38

Agregação: adornos

class Classe

Time Jogador

**

Qual a interpretação?

Page 20: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

20

39

Tipos de agregação

�Composição

�Associação

class Classe

Janela

Botão ComboBox ScrollBar

3

1

1

1

0..1

1

class Classe

Time Jogador

**

40

Agregação por composição

�Relação forte

�Destruição do todo se propaga para as partes�Tempo de vida do todo = das partes

Page 21: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

21

41

Exemplo: agregação por composição

class Linha {

public String id;

private Ponto pt1 = new Ponto(10, 20);

private Ponto pt2 = new Ponto(15, 30);

class Ponto {

}

}

Linha Ponto1 2

42

Agregação por associação

�Relação mais fraca que anterior�Tempos de vida diferentes

Page 22: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

22

43

Agregação: diferença

44

Levantamento de agregações

� Decomposição� dividir classe complexa

� Composição� Coleção de objetos reunidos� barra de rolagem + menu + text area = janela

� Partes comuns� classes com subconjunto de atributos

semelhantes

Page 23: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

23

45

Exercício 1

Qual a diferença de interpretação entre os relacionamentos livro-sobrecapa e livro-páginas?

Apostila UML, pg. 64, n. 4

46

Exercício 2

Todo aluno matriculado em trabalho de diplomação será orientado por um professor. Alguns professores orientam vários alunos e outros, nenhum. Qual dos diagramas melhor representa esta relação?

Apostila UML, pg. 64, n. 4

Page 24: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

24

47

Agregação por composição

class agregação por composição

HistoricoPagsWeb URLVisitada

- URL: String0..*1

Implementação >>>

48

Agregação por composição (2)1.class URLVisitada {

2. private String url;

3.

4. URLVisitada (String url) {

5. this.url = url;

6. }

7.}

8.class Historico {

9. // cria três objetos da classe URLVisitada

10. private URLVisitada[] historico = { // ou coleção

11. new URLVisitada("http://www.uol.com.br"),

12. new URLVisitada("http://www.terra.com.br"),

13. new URLVisitada("http://www.lemonde.fr"),

14. };

15.…

16.}Implementação >>>

Page 25: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

25

49

Agregação por composição (3)1.class Historico {

2. private class URLVisitada {

3. private String url;

4. private Date data;

5. private int freq;

6. URLVisitada (String umaURL) {

7. url = umaURL;

8. }

9. ...

10. }

11. private Vector<URLVisitada> historico =

12. new Vector<URLVisitada>(4, 2);

13. ...

14.

15.}

como private, a URLVisitada só pode ser instanciada dentro do escopo do todo

Classe

aninhada

50

Agregação por associação

� Idêntica à implementação de associação

Page 26: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

26

51

GENERALIZAÇÃO

� Classes compartilham atributos e comportamentos

� É um tipo de

� Herda atributos e métodos

Relação de generalização

52

GENERALIZAÇÃO

Sobreposição do método calcularIPVA

Page 27: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

27

53

Taxonomia: hierarquia de classesAtributos e operações comuns

Atributos e operações específicas

54

Qualidade de uma hierarquia

�Estável: critérios de classificação não mudam ao longo do tempo.

�Extensível: é fácil incluir novas classes derivadas na hierarquia

�Dica: respeitar o princípio da substituição

Page 28: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

28

55

Princípio da substituição

Qualquer instância de uma classe derivada

pode ser tratada como se fosse uma instância

de uma classe base sem alterar a semântica

de um programa escrito para a classe base.

56

ExemploCírculo e polígonos podem ser tratados comoFormaGeométrica

Page 29: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

29

57

Exemplo: taxonomia mal feita

Livro

LivroEmprestado LivroDisponível

�Não construir hierarquias em função de estados das classes

58

Herança múltipla

ObjetoVoador

Av ião Helicóptero Pássaro

Animal

Page 30: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

30

59

Dependência

�Variável local�Parâmetro de operação (método)� Instanciação

�Atributos indicam associação

60

Dependência: exemplosclass Dependência

ClasseA

+ operacao(ClasseC) : void

ClasseB

ClasseC ClasseD

«local»

«parameter»«instantiate»

Page 31: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

31

61

Exercício

�Desenhe o diagrama de classes para as relações das classes marcadas em vermelhopublic class Aluno {

public Curso curso;

public int CEP;

public void setCEP(Endereco end) {

CEP = end.CEP;

}

public int calcularIdade() {

// retorna idade em meses

Date d = getCurrentDate();

...

}

}

62

Exercício (solução)

Aluno

Date Endereço

Curso1

matriculado

<<parâmetro>><<local>>

Multiplicidade no lado aluno não foi colocada

pois não temos informação – indefinida -

Page 32: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

32

63

Realização

«entity»Historico

+ adicionar(ConversaoCF) : void- writeObject() : void

«interface»

Serializable

«instantiate»

1

«entity»Historico

+ adicionar(ConversaoCF) : void- writeObject() : void

«interface»

Serializable

«instantiate»

1

1.public interface Serializable {

2. ...

3.}

4.public class Histórico implements Serializable {

5. ...

6.}

64

Exercício (enunciado)Programa cliente para envio de emails

O programa deve permitir ao usuário:

1. enviar emails a um ou mais destinatários selecionados de uma agenda composta por

contatos no formato (nome, endereço email). A agenda pode ser definida no próprio

código, mas deve ser mostrada para que o usuário possa selecionar os destinatários.

2. consultar todos os emails enviados a um determinado destinatário. Ao clicar em

uma entrada da agenda, o programa deve mostrar todos os emails enviados ao

destinatário selecionado sem ter que percorrer toda a lista de emails enviados.

Detalhes

Um email é composto pelos três campos a seguir: remetente, destinatários, assunto e

corpo.

Page 33: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

33

65

Exercício (cont.)

� Para enviar emails�Utilizar a API JavaMail (há várias implementações desta API)�Uma delas (e suas diferentes versões) são encontradas em

http://java.sun.com/products/javamail/downloads/index.html� Baixar o .zip� Extrair o mail.jar� Colocar na pasta de projeto� No NetBeans, importar biblioteca

� alternativa ao JavaMail http://commons.apache.org/email/

JAVARepositorio\JMailClient: solução que envia email. Tem um frame , mas ainda não funciona.

66

Exercício (tarefas)

� Tarefa 1�No enunciado dado, marque todos os substantivos

candidatos a classes (entregar o texto marcado)

�Refletir sobre quais classes são necessárias e como elas conversam para que o programa realize sua função.

�Construir um diagrama de classes em um editor qualquer de UML. Não esquecer dos relacionamentos, multiplicidade e nome nas associações

Page 34: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

34

67

Exercício (instruções)

� Instruções gerais:�Pode ser feito em <x>

�Valor <v>

�Data de entrega/apresentação: <dd/mm>

�Apresentar�Enunciado com os substantivos candidatos a classes

marcados (impresso)�diagrama de classes preliminar (impresso)�diagrama de classes final (impresso)�código fonte e funcionamento (em sala)

68

Exercício (exemplo de envio)

Agenda

João [email protected]

Maria [email protected]

José [email protected]

Destinatários:

Assunto: nonono nono nono on

João e José,

Favor comparecer com urgência na sala B109.

[]s

Tereza

Ao enviar email, o usuário seleciona os destinatários da agenda

De:

Page 35: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

35

69

Exercício (exemplo de consulta)

Agenda

João [email protected]

Maria [email protected]

José [email protected]

Emails enviados ao João

Destinatários data assunto

João, José 14/4/2007 nono non onon ono

João, Maria 14/4/2007 bla blalba

Supor que o João foi selecionado na agenda. O programa mostra todos os emails

que lhe foram enviados (pode haver outros destinatários).

PERSISTÊNCIA

�Consiste em salvar os objetos de uma sessão para tê-los disponíveis nas sessões seguintes de uso do programa.

70

Page 36: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

36

FORMAS E PERSISTÊNCIA

�Banco de dados: relacional ou objetos

�Arquivo: vários formatos (txt);

�aqui nos interessa a forma serializable

que permite salvar um objeto tal qual ele está na memória.

71

SERIALIZABLE

�Exemplo em� JAVARepositorio\SerializableExemplo�Observar

�Que os métodos writeObject e readObject são opcionais. É interessante utilizá-los quando quer-se modificar algo no objeto no momento da escrita ou da leitura (fugir dos defaults)

�Que é possível salvar mais de um objeto no mesmo arquivo.

72

Page 37: Relações entre Classes e Persistência - DAINFtacla/UML/0015-RelacoesEntreClasses.pdf · Relações entre Classes e Persistência Prof. Cesar Augusto Tacla 2 Diagrama de classes

37

Exercício cliente email (cont.)

� Tarefa 2�Implementar e testar o programa�Persistir a agenda e as mensagens

73