Aula 7 Visibilidade entre objetos e Diagramas de Classes

Documentos relacionados
Revisão Diagrama de Caso de Uso. Rodolfo Adamshuk Silva 30/08/2013

Introdução à orientação a objetos

Análise de Requisitos

Diagramas de Sequência e Contrato das Operações

Fundamentos de Bancos de Dados 3 a Prova Caderno de Questões

Engenharia de Software II

MDS II Aula 04. Concepção Requisitos Diagrama de Casos de Uso (Use Cases)

Tutorial de utilização do Sistema de Abertura de Chamado Sumário

Portal dos Convênios - Siconv

Disciplina: Unidade III: Prof.: Período:

Programação Orientada a Objetos SANTOS, Rafael

Modelo Entidade Relacionamento (MER) Professor : Esp. Hiarly Alves

Modelo Lógico: Tabelas, Chaves Primárias e Estrangeiras

,QVWDODomR. Dê um duplo clique para abrir o Meu Computador. Dê um duplo clique para abrir o Painel de Controle. Para Adicionar ou Remover programas

II Semana de Ciência e Tecnologia do IFMG campus Bambuí II Jornada Científica 19 a 23 de Outubro de 2009

Análise de Sistemas 3º Bimestre (material 2)

DOCUMENTAÇÃO SISTEMA DE ADMINISTRAÇÃO DE CONSULTÓRIO MÉDICO

Análise e Projeto Orientado a Objetos. Nazareno Andrade Baseado no material dos profs. Hyggo Almeida e Jacques Sauvé

CRIAÇÃO DE TABELAS NO ACCESS. Criação de Tabelas no Access

Módulo: M_CONFIRMA_AGENDAMENTO - Confirmação dos Agendamentos

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Assessoria Técnica de Tecnologia da Informação - ATTI. Projeto de Informatização da. Secretaria Municipal de Saúde do. Município de São Paulo

UNIVERSIDADE DO VALE DO RIO DOS SINOS - UNISINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS - CENTRO 06. Funções, variáveis, parâmetros formais

Formas de Pagamento Resumida Vendas Vendedor Vendas Vendedor Resumido Vendas Vendedor Caixa Vendas por Artigos...

Gerenciador de Ambiente Laboratorial - GAL Manual do Usuário Módulo Controle de Qualidade Analítico

ATuLCo. Manual de Instruções. Gestor de Agência de Viagens. ATuLCo Gestor de Agencia de Viagens. Horário Abreu Nr António Felgueiras Nr.

COMO CRIAR UM PEDIDO DE COMPRAS

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

Sérgio Luisir Díscola Junior

UNIVERSIDADE DO TOCANTINS TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PRÁTICA EM PROGRAMAÇÃO DE SISTEMAS

Orientação a Objetos

PRÓ-REITORIA DE GRADUAÇÃO

Gerenciamento de Almoxarifado Versão OneWorld Xe. Manual Setembro de 2000

e Autorizador Odontológico

ADMINISTRAÇÃO DE BANCOS DE DADOS MÓDULO 8

Exercício. Exercício

Desenvolvimento de Software

UNIVERSIDADE FEDERAL DO VALE DO SÃO FRANCISCO UNIVASF SECRETARIA DE TECNOLOGIA DA INFORMAÇÃO STI DEPARTAMENTO DE SISTEMAS DE INFORMAÇÕES

Java na Prática. Célio Silva Aula 3

Perguntas frequentes graduação sanduíche Ciência sem Fronteiras

Modelo conceitual Aula 08

Portal de Sistemas Integrados. Manual do Usuário. Versão: 1.0

DF-e Manager Manual de uso Manifestação do destinatário Setembro de 2015

aplicação arquivo Condições Gerais de Utilização

SISTEMA CAÇA-TALENTOS MANUAL DE OPERAÇÃO PERFIL SECRETARIA

Tópicos Avançados em Banco de Dados Dependências sobre regime e controle de objetos em Banco de Dados. Prof. Hugo Souza

Exercício Prático. Modelagem UML. Givanaldo Rocha de Souza

LIBERAÇÃO DE ATUALIZAÇÃO CORDILHEIRA

AULA 1 INTRODUÇÃO A BANCO DE DADOS E VISÃO GERAL DO SQL CONCEITUANDO BANCO DE DADOS MODELO RELACIONAL

Copyright - IS Intelligent Software

Fundamentos de Programação. Diagrama de blocos

Lógica de Programação. Profas. Simone Campos Camargo e Janete Ferreira Biazotto

2.1. Incluir uma Proposta de Concessão de Diárias e Passagens PCDP com diárias e passagens.

Conteúdo programático

FastCube 2.0 Programmer Manual

1 Visão Geral. 2 Instalação e Primeira Utilização. Manual de Instalação do Gold Pedido

Instruções para o cadastramento da Operação de Transporte e geração do Código Identificador da Operação de Transporte CIOT.

UNIMED LITORAL MANUAL DE PROCESSOS E SISTEMAS DE INFORMAÇÃO

NOVA VERSÃO SAFE DOC MANUAL

Solicitação de Autorização Intercâmbio

PROCEDIMENTOS PARA INCLUSÃO DE PERIÓDICOS NO PORTAL DE PERIÓDICOS FCLAR UNESP

Registro de Retenções Tributárias e Pagamentos

Manual de Utilização. Ao acessar o endereço chegaremos a seguinte página de entrada: Tela de Abertura do Sistema

O que é um banco de dados? Banco de Dados. Banco de dados

Métricas de Software

Manual SAGe Versão 1.2

3.2. Bibliotecas. Biblioteca Professor Antônio Rodolpho Assenço, campus Asa Sul: Os espaços estão distribuídos da seguinte forma:

HEMOVIDA (CICLO DO SANGUE - Gerenciamento de estoque para grandes eventos)

Termo genérico que se aplica a vários tipos de diagramas que enfatizam interações de objetos.

RMS Software S.A. - Uma empresa TOTVS

Manual do usuário Certificado Digital

Diagrama de Componentes e Implantação

REITORA Ulrika Arns. VICE-REITOR Almir Barros da Silva Santos Neto. DIRETOR DO NTIC Leonardo Bidese de Pinho

Ayuda Sua ONG na mão

Manual de preenchimento da planilha de cálculo do índice de nacionalização

Comandos de Eletropneumática Exercícios Comentados para Elaboração, Montagem e Ensaios

Driver Next Versão 1.0 de Português

Manual Remessa Bancária

Os passos a seguir servirão de guia para utilização da funcionalidade Acordo Financeiro do TOTVS Gestão Financeira.

BANCO DE DADOS I AULA 2. Willamys Araújo willamysaraujo7@gmail.com

Sistemas Distribuídos

OBJETIVO GERAL DA DISCIPLINA

DOCUMENTO DE REQUISITO DE SOFTWARE

M =C J, fórmula do montante

Contrata Consultor na modalidade Produto

GTMMI, Lda. Condições Gerais de Venda

Classificação de Ativo Orçamento e Provisão de Despesa

Banco de Dados I. Prof. Edson Thizon

Leiaute de arquivos XML para Carta-Circular 3254

Programação Orientada a Objetos. Professor Leonardo Cabral - Larback

Inteligência Artificial

ROTEIRO PARA REGISTRO NO CONTAS ONLINE Programa Caminho da Escola Parte I Execução Financeira Data de atualização: 21/6/2012

Manual do Usuário (Firma Inspetora) Versão 1.8. CMCP - Controle da Marcação Compulsória de Produtos

Transcrição:

Departamento de Sistemas de Computação Universidade de São Paulo SSC 124 Análise e Projeto Orientados a Objetos Aula 7 Visibilidade entre objetos e Diagramas de Classes Responsável Prof. Seiji Isotani (sisotani@icmc.usp.br)

O que já foi visto até agora Casos de Uso Completo Abstrato Diagrama de Casos de Uso Emprestar Livro Ator Principal: Atendente Interessados e Interesses: Caso de Uso: Emprestar Livro - Atendente: deseja registrar que um ou mais livros estão em posse de um leitor, para controlar se a devolução será feita no tempo determinado. - Leitor: deseja emprestar um ou mais livros, de forma rápida e segura. - Bibliotecário: deseja controlar o uso dos livros, para que não se percam e para que sempre se saiba com que leitor estão no momento. Pré-Condições: O Atendente é identificado e autenticado. Atendente Devolver Livro Leitor Garantia de Sucesso (Pós-Condições): Os dados do novo empréstimo estão armazenados no Sistema. Os livros emprestados possuem status emprestado Cenário de Sucesso Principal: Bibliotecária Incluir Livro Comprar Livro Consultar Livro 1. O Leitor chega ao balcão de atendimento da biblioteca e diz ao atendente que deseja emprestar um ou mais livros da biblioteca. 2. O Atendente seleciona a opção para realizar um novo empréstimo. 3. O Atendente solicita ao leitor sua carteira de identificação, seja de estudante ou professor. 4. O Atendente informa ao sistema a identificação do leitor. 5. O Sistema exibe o nome do leitor e sua situação. 6. O Atendente solicita os livros a serem emprestados. 7. Para cada um deles, informa ao sistema o código de identificação do livro. 8. O Sistema informa a data de devolução de cada livro. 9. Se necessário, o Atendente desbloqueia os livros para que possam sair da biblioteca. 10. O Leitor sai com os livros. Fluxos Alternativos: (1-8). A qualquer momento o Leitor informa ao Atendente que desistiu do empréstimo. 3. O Leitor informa ao Atendente que esqueceu a carteira de identificação. 1. O Atendente faz uma busca pelo cadastro do Leitor e pede a ele alguma informação pessoal para garantir que ele é mesmo quem diz ser. 4. O Leitor está impedido de fazer empréstimo, por ter não estar apto. 1.Cancelar a operação. 7a. O Livro não pode ser emprestado, pois está reservado para outro leitor. 1. O Atendente informa ao Leitor que não poderá emprestar o livro e pergunta se deseja reservá-lo. 2. Cancelar a operação (se for o único livro) 7b. O Livro não pode ser emprestado, pois é um livro reservado somente para consulta. 1. Cancelar a operação (se for o único livro) 2

O que já foi visto até agora Casos de Uso com substantivos e verbos sublinhados Caso de Uso 1 1. O Leitor chega ao balcão de atendimento da biblioteca e diz ao atendente que deseja emprestar um ou mais livros da biblioteca. 2. O Atendente seleciona a opção para adicionar um novo empréstimo. 3. O Atendente solicita ao leitor sua carteirinha, seja de estudante ou professor. 4. O Atendente informa ao sistema a identificação do leitor. 5. O Sistema exibe o nome do leitor e sua situação. 6. O Atendente solicita os livros a serem emprestados. 7. Para cada um deles, informa ao sistema o código de identificação do livro. 8. O Sistema informa a data de devolução de cada livro. 9. O Atendente desbloqueia os livros para que possam sair da biblioteca. 10. O Leitor sai com os livros. Caso de Uso n Atendente nome Bibliotecaria nome 1..1 0..n registra refere-se a > 1..1 Modelo Conceitual 1..1 Leitor nome tipo : char registra 0..n 0..n ^ faz 1..1 0..n 1..1 faz Reserva período situacao : char 0..1 Empréstimo/Devolução data do empréstimo 1..1 0..n situação : Char Livro titulo : String[30] autor : String[30] ano : int ISBN : string[20] editora : int tipo : char possui 0..1 corresponde a corresponde a 0..1 1..1 possui 1..n 0..1 LinhaDoEmpréstimo data_prevista_devolução data_entrega_real 0..n < refere-se a 1. O Leitor chega ao balcão de atendimento da biblioteca e diz ao atendente que deseja emprestar um ou mais livros da biblioteca. 2. O Atendente seleciona a opção para adicionar um novo empréstimo. 3. O Atendente solicita ao leitor sua carteirinha, seja de estudante ou professor. 4. O Atendente informa ao sistema a identificação do leitor. 5. O Sistema exibe o nome do leitor e sua situação. 6. O Atendente solicita os livros a serem emprestados. 7. Para cada um deles, informa ao sistema o código de identificação do livro. 8. O Sistema informa a data de devolução de cada livro. 9. O Atendente desbloqueia os livros para que possam sair da biblioteca. 10. O Leitor sai com os livros. 0..n CopiaDoLivro nro sequencial situacao : char liberadoparaemprestimo : char 1..1 3

O que já foi visto até agora Modelo Conceitual + Casos de Uso Diagrama de Seqüência do Sistema (para cada caso de uso) :Atendente 1: iniciarempréstimo(id_leitor) Sistema 2: emprestarlivro(id_livro) * mais livros a emprestar 3: encerrarempréstimo() 4

O que já foi visto até agora Diagrama de Seqüência do Sistema (para cada caso de uso) Contrato da Operação (para cada operação) :Atendente Sistema Operação: encerrarempréstimo() 1: iniciarempréstimo(id_leitor) 2: emprestarlivro(id_livro) * mais livros a emprestar 3: encerrarempréstimo() Referências Cruzadas: Caso de uso: Emprestar Livro Pré-Condições: Um leitor apto a emprestar livros já foi identificado; pelo menos um livro já foi identificado e está disponível para ser emprestado. Pós-Condições: um novo empréstimo foi registrado; o novo empréstimo foi relacionado ao leitor já identificado na operação iniciar o empréstimo ; a situação dos livros emprestados foi alterada para emprestado. 5

O que já foi visto até agora Contrato da Operação (para cada operação) Diagrama de Comunicação (para cada operação) Operação: encerrarempréstimo() Referências Cruzadas: Caso de uso: Emprestar Livro Pré-Condições: Um leitor apto a emprestar livros já foi identificado; pelo menos um livro já foi identificado e está disponível para ser emprestado. Pós-Condições: um novo empréstimo foi registrado; o novo empréstimo foi relacionado ao leitor já identificado na operação iniciar o empréstimo ; a situação dos livros emprestados foi alterada para emprestado. emprestafita(fcodigo)----> 1: fita:=get(fcodigo) fitas: Fita :Videolocadora 5: associaitem() emprestimocorrente: Emprestimo 2: empresta(fita) 4: criar() 3: adiciona(fita) 6: associafita(fita) clientecorrente: Cliente item: ItemDeEmprestimo 6

Visibilidade entre Objetos 7

Visibilidade entre Objetos Visibilidade: capacidade de um objeto ver ou fazer referência a outro Para que um objeto A envie uma mensagem para o objeto B, é necessário que B seja visível para A Tipos de visibilidade por atributo: B é um atributo de A por parâmetro: B é um parâmetro de um método de A localmente declarada: B é declarado como um objeto local em um método de A global: B é, de alguma forma, globalmente visível. 8

Visibilidade por atributo Persiste por muito tempo É a forma mais comum Geralmente se deve às associações existentes no modelo conceitual Ex: Empréstimo tem um atributo para poder enviar mensagens ao Leitor que efetuou o empréstimo. 9

Exemplo emprestarcopia(codcopia) :Emprestimo 1:d:=calcularDataDevolução() :Leitor class Emprestimo { private Leitor leitor; public void emprestarcopia( ); } public void emprestarcopia(int codcopia) { LinhaDoEmprestimo linh; d = leitor.calculardatadevolucao(); } 10

Visibilidade por parâmetro É relativamente temporária, persiste enquanto persistir o método. emprestafita(fcodigo)----> :Videolocadora 5: associaitem() fita é visível para emprestimocorrente somente temporariamente, por te-la recebido como fitas: Fita parâmetro 1: fita:=get(fcodigo) emprestimocorrente: Emprestimo 2: empresta(fita) 4: criar() 3: adiciona(fita) 6: associafita(fita) clientecorrente: Cliente item: ItemDeEmprestimo 11

emprestafita(fcodigo)----> :Videolocadora 5: associaitem() 1: fita:=get(fcodigo) 2: empresta(fita) emprestimocorrente: Emprestimo 4: criar() fitas: Fita 3: adiciona(fita) 6: associafita(fita) clientecorrente: Cliente item: ItemDeEmprestimo public void adiciona(fita fita) { ItemDeEmprestimo item = new ItemDeEmprestimo(); this.associaitem(); item.associafita(fita); } fita é passada como parâmetro para que emprestimocorrente tenha visibilidade de Fita.

Visibilidade localmente declarada Visibilidade relativamente temporária Duas formas: criar uma nova instância local e atribuí-la a uma variável local atribuir o objeto retornado pela invocação de um método a uma variável local. 13

criação de instância local public void adiciona(fita fita) { ItemDeEmprestimo item = new ItemDeEmprestimo(); this.associaitem(); item.associafita(fita); }

2: emprestimocorrente := getemprestimocorrente emprestafita(fcodigo)----> :Videolocadora clientecorrente: Cliente 3: criar() 1: fita:=get(fcodigo) 5: associaitem(item) 4: associafita(fita) fitas: Fita emprestimocorrente: Emprestimo item: ItemDeEmprestimo atribuição de objeto retornado à variável local public void emprestafita(int fcodigo) { Emprestimo emprestimocorrente; emprestimocorrente = clientecorrente.getemprestimocorrente(); }

Visibilidade Global Menos comum Relativamente permanente (persiste enquanto A ou B existirem) Forma óbvia e menos desejável: atribuir uma instância de objeto a uma variável global. 16

Notação de Visibilidade em UML <<associação>> é usada para visibilidade de atributo :msg() :A :B <<associação>> :msg() :A :B <<parâmetro>> :msg() :A :B <<local>> :msg() :A :B <<global>> 17

Diagrama de Classes de Projeto 18

Diagrama de Classes de Projeto O Diagrama de Classes de Projeto apresenta especificações para classes de software e interfaces (ex: interfaces Java) de uma aplicação Informação típica: classes, associações e atributos interfaces, com operações e constantes métodos tipos dos atributos navegabilidade dependências 19

Definição (cont.) Modelo Conceitual abstrações de conceitos, ou objetos, do mundo real conceitos são também chamados de classes conceituais Diagrama de Classes de Projeto definição de classes como componentes de software classes de software 20

Definição (cont.) Na prática, o Diagrama de classes pode ser construído à medida que a fase de projeto avança, a partir dos diagramas de comunicação Cada classe que aparece no diagrama de comunicação automaticamente é incluída no diagrama de classes de projeto Os atributos são inicialmente, os que estão no modelo conceitual 21

Associações e Navegabilidade Associações e navegabilidade entre classes são indicadas pelos diagramas de comunicação Navegabilidade indica possibilidade de navegação unidirecional por meio de uma associação entre classes geralmente implica visibilidade por atributos A multiplicidade e os nomes das associações são retirados do Modelo Conceitual Notação: seta contínua 22

Associações e Navegabilidade Indícios de associação e com presença de navegabilidade: A envia mensagem para B A cria B A precisa manter uma conexão com B 23

Como determinar a navegabilidade? Verificar o envio de mensagens de objetos que possuem visibilidade por atributo Desenhar a seta no sentido da classe que envia a mensagem para a classe que recebe a mensagem 24

Atendente nome 1..1 0..n registra 1..1 Leitor nome tipo : char ^ faz 0..n 0..n faz 1..1 0..n Reserva período situacao : char 0..1 Empréstimo/Devolução data do empréstimo situação : Char 0..1 corresponde a corresponde a 0..1 1..1 possui Bibliotecaria nome refere-se a > 1..1 registra 1..1 0..n 1..1 Livro titulo : String[30] autor : String[30] ano : int ISBN : string[20] editora : int tipo : char possui 1..n 0..1 LinhaDoEmpréstimo data_prevista_devolução data_entrega_real 0..n < refere-se a 0..n CopiaDoLivro nro sequencial situacao : char liberadoparaemprestimo : char 1..1

Navegabilidade adicionarcopia(copialivro)---> : Emprestimo 1: d:=calculardatadevolução() 2: criar(d, copialivro) :Leitor linh: LinhaDoEmprestimo Este diagrama de comunicação implica nas navegabilidades: Emprestimo Leitor Emprestimo LinhaDoEmprestimo 26

1: *[enquanto encontrou=false] linh:==proximo() devolvercopia(codcopia)---> : Emprestimo :LinhaDoEmprestimo 2: cc:=codigocopia() 4: [encontrou] atualizadatadev(datadehoje) 6: mudarsituacao('devolvida') 3: codigocopia() linh: LinhaDoEmprestimo cop: CopiaDeLivro 5: sinalizadevolucao() Este diagrama de comunicação implica nas navegabilidades: Emprestimo LinhaDoEmprestimo LinhaEmprestimo CopiaDoLivro

Diagrama de Classes com navegabilidade Leitor nome tipo 1..1 0..* faz possui Emprestimo data_do_emprestimo situacao : char 1..1 Note que a navegabilidade é independente do sentido de leitura do nome da associação LinhaDoEmprestimo data_prevista_devolução data_entrega_real 1..* 0..* refere-se a 1..1 (com base apenas nos 2 diagr. de comunicação mostrados) CopiaDoLivro nro_sequencial situacao : char liberadoparaemprestimo : cha 28

Como incluir os métodos nas classes? Operações são incluídas nas classes controladoras Métodos são incluídos nas classes que recebem a mensagem Linguagens de programação distintas podem ter sintaxes distintas para métodos recomendável: usar sintaxe básica UML nomemétodo(par 1, Par 2, Par n ) 29

Como incluir os métodos nas classes? Não incluir: Métodos enviados à coleções (dependem da implementação) Método criar (linguagem OO provê o criador) métodos de acesso a atributos, por exemplo, setnome, getnome, etc. assume-se que cada atributo tem necessariamente esses métodos 30

Inclusão de métodos adicionarcopia(copialivro)---> : Emprestimo 1: d:=calculardatadevolução() 2: criar(d, copialivro) :Leitor linh: LinhaDoEmprestimo Este diagrama de comunicação implica nos seguintes métodos: Emprestimo adicionarcopia() Leitor calculardatadevolucao() Obs: criar não foi incluido porque é método construtor. 31

1: *[enquanto encontrou=false] linh:==proximo() devolvercopia(codcopia)---> : Emprestimo :LinhaDoEmprestimo 2: cc:=codigocopia() 4: [encontrou] atualizadatadev(datadehoje) 6: mudarsituacao('devolvida') 3: codigocopia() linh: LinhaDoEmprestimo cop: CopiaDeLivro 5: sinalizadevolucao() Este diagrama de comunicação implica nos métodos: Emprestimo devolvercopia() LinhaEmprestimo codcopia() LinhaEmprestimo atualizadatadev() CopiaDeLivro sinalizadevolucao() Como ficaria o código? Obs: proximo, mudarsituacao e codigocopia não foram incluidos porque são métodos de coleção, set e get, respectivamente. atualizadatadev não é simplesmente um set! Além de chamar o set, ele chama o sinalizadevolucao!!

Diagrama de Classes resultante -nome: String -tipo: char Leitor +calculardatadevolucao(): Date 1 0..* faz 1 Emprestimo -data_do_emprestimo: Date -situacao: char +adicionarcopia() +devolvercopia() 1..* possui LinhaDoEmprestimo -data_prevista_devolucao: Date -data_entrega_real: Date +codcopia(): integer +atualizardatadev() refere-se a 0..* 1 CopiaDoLivro -nro_sequencial: integer -situacao: char -liberadoparaemprestimo: char +sinalizadevolucao() (com base apenas nos 2 diagr. de comunicação mostrados) 33

Atributos Pode-se acrescentar tipos de atributos, parâmetros e retornos de métodos, observando os diagr. de comunicação Atributos identificados durante o projeto podem ser incluídos se uma ferramenta CASE for utilizada para geração automática de código, os tipos detalhados são necessários se o diagrama for usado exclusivamente por desenvolvedores de software, o excesso de informação pode poluir o diagrama e dificultar seu entendimento 34

Observações Embora uma visibilidade por atributo venha a ser implementada posteriormente como um atributo na classe origem, isso não deve ser mostrado no diagrama de classes Novas classes podem surgir nos diagramas de comunicação, portanto deve-se pensar em nomes para elas, bem como nas multiplicidades das associações correspondentes. 35

Relacionamento de Dependência No Diagrama de Classes, o relacionamento de dependência representa a visibilidade entre classes que não é implementada por atributo visibilidade por parâmetro visibilidade local ou global Um objeto de uma classe A tem conhecimento ou enxerga um objeto da classe B Notação: seta tracejada 36

Exemplo: Dependência -nome: String -tipo: char Leitor +calculardatadevolucao(): Date LinhaDoEmprestimo -data_prevista_devolucao: Date -data_entrega_real: Date +codcopia(): integer +atualizardatadev() 1 0..* refere-se a 0..* faz Empréstimo tem visibilidade a uma copia do livro pois recebe-a como parâmetro em um dos diag. de comunicação: 1..* adicionarcopiadelivro(copiadelivro) possui 1 1 Emprestimo -data_do_emprestimo: Date -situacao: char +adicionarcopia() +devolvercopia() CopiaDoLivro -nro_sequencial: integer -situacao: char -liberadoparaemprestimo: char +sinalizadevolucao() 37