A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

© Nabor C. Mendonça 2001 1 Projeto – Parte II - Exemplos de Diagrama de Colaboração - Visibilidade entre Objetos - Diagrama de Classe.

Apresentações semelhantes


Apresentação em tema: "© Nabor C. Mendonça 2001 1 Projeto – Parte II - Exemplos de Diagrama de Colaboração - Visibilidade entre Objetos - Diagrama de Classe."— Transcrição da apresentação:

1 © Nabor C. Mendonça 2001 1 Projeto – Parte II - Exemplos de Diagrama de Colaboração - Visibilidade entre Objetos - Diagrama de Classe

2 © Nabor C. Mendonça 2001 2 Diagramas de Colaboração para o Sistema TV n Eventos de interesse – Caso de uso Processar Venda: entrarItem(), encerrarVenda(), fazerPagamento() Note que não existe a operação do sistema iniciarVenda() Esqueça a operação startUp() – Caso de uso ProcessarVenda() :TV entrarItem() :TV terminarVenda() :TV fazerPagto() 1: ???() :POST startUp()1: ???()

3 © Nabor C. Mendonça 2001 3 n Criando uma nova Venda – Pelo Criador, TV cria Venda, e Venda cria uma coleção (vazia) para registrar objetos Item-de-Venda Diagrama de Colaboração entrarItem() 1: [nova venda] create() entrarItem(upc, qte) :TV:Venda :LinhaDeVenda 1.1: create() ControladorCriador Uma coleção vazia

4 © Nabor C. Mendonça 2001 4 n Criando um novo Item-de-Venda – Pelo padrão Criador, Venda cria objetos Item-de- Venda – TV passa parâmetro quantidade para Venda, que o repassa para Item-de-Venda como parâmetro da mensagem create – Pelo criador, TV envia mensagem criarItem-de- Venda para Venda, que então cria um novo Item-de- Venda e o adiciona à sua coleção de objetos Item- de-Venda n Encontrando uma Especificação-Produto – Pelo padrão Especialista, Catálogo-Produto faz a busca em objetos Especificação-Produto, baseada em casamento de UPCs Diagrama de Colaboração entrarItem()

5 © Nabor C. Mendonça 2001 5 n Diagrama de colaboração final Diagrama de Colaboração entrarItem()

6 © Nabor C. Mendonça 2001 6 n Definindo atributo Venda.completada Diagrama de Colaboração encerrarVenda() Observe como corpos de método (pseudo-código) podem ser definidos

7 © Nabor C. Mendonça 2001 7 n Calculando total da venda Diagrama de Colaboração encerrarVenda() Atenção: a mensagem total() não é operação de sistema

8 © Nabor C. Mendonça 2001 8 n Criando Pagamento – Pelo padrão Especialista, TV e Venda podem criar um Pagamento – Considerando também Alta Coesão e Baixo Acoplamento, Venda é a melhor escolha Diagrama de Colaboração fazerPagamento()

9 © Nabor C. Mendonça 2001 9 n Registrando a Venda – Pelo Especialista, Loja adiciona a Venda à coleção (log) de vendas completadas Diagrama de Interação fazerPagamento()

10 © Nabor C. Mendonça 2001 10 n Calculando troco – Pelo Especialista, Venda e Pagamento podem calcular troco – Considerando Baixo Acoplamento, Venda é a melhor escolha Diagrama de Interação fazerPagamento() :Venda troco := troco(valor) Sale--balance() { return valor - tot al} 1: total := total()

11 © Nabor C. Mendonça 2001 11 Visibilidade entre Objetos n Capacidade de um objeto ver ou ter uma referência para outro objeto – Necessária para comunicação (envio de mensagens) entre objetos n Quatro maneiras de um objeto B ser visível a um objeto A – Visibilidade de atributo B é um atributo de A – Visibilidade de parâmetro B é um parâmetro de um método de A – Visibilidade local B é declarado como objeto local de um método de A – Visibilidade global B é de algum modo visível globalmente

12 © Nabor C. Mendonça 2001 12 Visibilidade de Atributo n Existe de A para B quando B é um atributo de A – Permanente: persiste enquanto A e B existirem

13 © Nabor C. Mendonça 2001 13 Visibilidade de Parâmetro n Existe de A para B quando B é passado como um parâmetro para um método de A – Temporária: persiste apenas dentro do escopo do método de A 1: [nova venda] create() 3: criarLinhaVenda(spec, qte) entrarItem(upc, qty) 2: spec := especificacao(upc) 3.1: create(spec, qte) :TV:Venda :Product Catalog sl : SalesLineItem Sale--makeLineItem(ProductSpecification spec, int qty) {... sl = new SalesLineItem(spec, qty);... } SalesLineItem--SalesLineItem(ProductSpecification spec, int qty) {... productSpec = spec; // parameter to attribute visibility... }

14 © Nabor C. Mendonça 2001 14 Visibilidade Local n Existe de A para B quando B é declarado como um objeto local dentro de um método de A – Temporária: persiste apenas dentro do escopo do método de A – Duas maneiras comuns de alcançar 1. Criar nova instância e atribuir para variável local 2. Atribuir objeto de retorno de um método para variável local 1: [nova venda] create() 3: criarLinhaVenda(spec, qte) entrarItem(upc, qte) 2: spec := especificacao(upc) :TV:Venda :Product Catalog TV--entrarItem(upc, qte) {... // local visibility via assignment of returning object ProductSpecification spec = prodCatalog.especificacao(upc);... }

15 © Nabor C. Mendonça 2001 15 Visibilidade Global n Existe de A para B quando B é global para A – Permanente: persiste enquanto A e B existirem – Forma menos comum de visibilidade em sistemas OO

16 © Nabor C. Mendonça 2001 16 Notação de Visibilidade na UML n Uso opcional de estereótipos específicos :A:B 1: msg() :C 2: msg() :D 3: msg() «association» «parameter» «local» :E 4: msg() «global» «association» é usado para visibilidade de atributo

17 © Nabor C. Mendonça 2001 17 Diagramas de Classe n Um diagrama de classe especifica as classes de software do sistema n Inclui – Classes, relacionamentos e atributos – Classe Fachada (métodos: operações do sistema) – Métodos – Informação sobre o tipo (classe) dos atributos – Navegabilidade (visibilidade de atributos) – Dependências (os outros tipos de visibilidade) n UML não diferencia modelo conceitual de diagrama de classe (o termo classe de implementação ou classe de software é usado para distinguir o segundo do primeiro)

18 © Nabor C. Mendonça 2001 18 Diagrama de Classe n Diagrama parcial para as classes TV e Venda no sistema TV Obs: métodos new() são implícitos

19 © Nabor C. Mendonça 2001 19 Como Fazer um Diagrama de Classe n Regras úteis 1. Identificar todas as classes participando na solução proposta pelos diagramas de interação Muitas classes são derivadas de conceitos ou entidades 2. Desenhe as classes num diagrama de classe 3. Inclua os atributos identificados no modelo conceitual, para cada conceito 4. Adicione métodos tal como identificados nos diagramas de interação 5. Adicione os tipos dos atributos e métodos (funções) 6. Adicione os relacionamentos necessários à visibilidade de atributos

20 © Nabor C. Mendonça 2001 20 Como Fazer um Diagrama de Classe n Regras úteis (cont.) 7. Adicione setas de navegabilidade para indicar a direção da visibilidade de atributos 8. Adicione relacionamentos de dependência (linhas pontilhadas, dirigidas) para indicar outros tipos de visibilidade

21 © Nabor C. Mendonça 2001 21 Modelo de Conceitual X Diagrama de Classe n Modelo conceitual: abstração de conceitos do mundo real n Diagrama de classe: especificação de componentes de software

22 © Nabor C. Mendonça 2001 22 Criando o Diagrama de Classe do Sistema TV n Identificando classes e atributos TV Venda data isComplete tempo LinhaVenda quantidade CatalogoProduto quantidade EspecificacaoProduto descricao preco UPC Loja endereco nome Pagamento valor

23 © Nabor C. Mendonça 2001 23 Criando o Diagrama de Classe do Sistema TV n Adicionando nomes dos métodos que aparecem nos diagramas de colaboração LinhaVenda quantidade subtotal() CatalogoProduto especificacao() EspecificacaoProduto descricao preco upc Loja endereco nome adicionarVenda() Pagamento valor TV encerrarVenda() entrarItem() fazerPagto() Venda data isComplete tempo ehCompleta() criarLinhaVenda() fazerPagto() total() troco() especificacao()

24 © Nabor C. Mendonça 2001 24 Criando o Diagrama de Classe do Sistema TV n Métodos create – Métodos de instanciação (construtores) específicos para cada linguagem de programação – Métodos new() são normalmente omitidos n Métodos Observer e Mutator – get e set, respectivamente – Omitidos (2N métodos desinteressantes para os N atributos) n Métodos de coleção (multiobjects) – Parte da definição de coleção (classes de biblioteca do tipo container: Vetor, Hashtable, etc.) – Omitidos (nos diagramas de colaboração, ajudam a clarear as operações de sistema)

25 © Nabor C. Mendonça 2001 25 Criando o Diagrama de Classe do Sistema TV n Definindo os tipos dos atributos

26 © Nabor C. Mendonça 2001 26 Criando o Diagrama de Classe do Sistema TV n Adicionando relacionamentos, navegabilidade e dependências

27 © Nabor C. Mendonça 2001 27 Preparando-se Para A Mini-prova #7 n Desenhe os diagramas de colaboração das operações de seu sistema n Anote os métodos n Anote as visibilidades n Com os métodos, as visibilidades e o modelo conceitual do seu sistema, construa o diagrama de classes do mesmo


Carregar ppt "© Nabor C. Mendonça 2001 1 Projeto – Parte II - Exemplos de Diagrama de Colaboração - Visibilidade entre Objetos - Diagrama de Classe."

Apresentações semelhantes


Anúncios Google