Projeto – Parte II - Exemplos de Diagrama de Colaboração

Slides:



Advertisements
Apresentações semelhantes
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Advertisements

DIAGRAMA DE COLABORAÇÃO
Análise e Projeto Orientados a Objeto com UML e Padrões
Requisitos de Software
Paulo Marques Hernâni Pedroso
Engenharia Informática Programação I & Estruturas de Dados e Algoritmos 2001/ Capitulo 3 – Introdução às classes Capitulo 3 Introdução às classes.
Análise de Casos de Uso.
Interação entre objetos
Diagramas de Seqüência
Orientação a Objetos: Encapsulamento e Classificação
Java: Pacotes e Modificadores de Visibilidade
Orientação a Objetos: Encapsulamento e Classificação
Java: Pacotes e Modificadores de Visibilidade
Orientação a Objetos: Encapsulamento e Classificação
Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska.
Projeto Orientado a Objetos
1 MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE) BREVE HISTÓRICO CARACTERÍSTICAS CONCEITOS DE PROGRAMAÇÃO ORIENTADA A OBJETOS MODELAGEM DE ANÁLISE E DE.
DIAGRAMA DE ATIVIDADES
UML NO PROJETO LÓGICO DE BANCO DE DADOS: 1ª PARTE
DIAGRAMA DE CASOS DE USO PERSPECTIVA CONCEITUAL
Projeto de Software Orientado a Objetos
Modulo I Padrões GRASP Professores
Atividade de Projeto Design
Construção de Diagramas de Colaboração
Análise e Projeto Orientados a Objeto com UML e Padrões
© Nabor C. Mendonça Análise e Projeto Orientados a Objeto com UML e Padrões Parte IV Projeto (1B)
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
ANÁLISE E PROJETO ORIENTADA A OBJETOS UFRJ/IM/DCC Lab PSI mai/1999.
Prof. Alexander Roberto Valdameri
Aula 6 Subprogramas Universidade do Vale do Rio dos Sinos
1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – Noções de Engenharia de Software COINFO – CEFET-PB 9. Modelo conceitual (diagrama.
Objetivo: compreender e aplicar um modelo sequencial
Objetivo: compreender e aplicar um modelo sequencial
Projeto da Camada de Domínio
Modelagem de Interações
Classes e objetos Arrays e Sobrecarga
Classes e objetos Modelagem
Classes e objetos P. O. O. Prof. Grace.
Análise de Casos de Uso Alexandre Motnteiro.
Cadastro de produto Posto de Combustível.
Diagramas de Seqüência
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – CEFET-PB 9. Complemento de AOO 9.4 Comportamentos 9.5 Visibilidade 9.6.
Objetivo: compreender e aplicar um modelo conceitual
© Nabor C. Mendonça Análise e Projeto Orientados a Objeto com UML e Padrões Parte V Implementação (1)
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – CEFET-PB 12. Estados Objetivo: compreender a notação do diagrama de estados.
Diagrama de Classes Ilustra as especificações de software para as classes e interfaces do sistema. É obtido através da adição de detalhes ao modelo conceitual.
Salas de Matemática.
Programação Orientada à Objetos
Entendendo as definições de classe
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – CEFET-PB 11. Comunicação Objetivo: compreender a notação do diagrama de.
Entenda o processo de compra dentro do site
Tipos Abstratos de Dados
Análise e Projeto Orientados a Objeto com UML e Padrões
Projeto de Banco de Dados
1 2 Observa ilustração. Cria um texto. Observa ilustração.
© Nabor C. Mendonça Análise e Projeto Orientados a Objeto com UML e Padrões.
UNIDADE 2 UML MODELAGEM TEMPORAL
Marcio de Carvalho Victorino
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
UML - Unified Modeling Language
Análise Orientado aos Objetos Prof. Wolley W. Silva
Modelagem de Entidade/Objetos de Domínio com Diagrama de Classes
© Nabor C. Mendonça Análise e Projeto Orientados a Objeto com UML e Padrões Parte II.
Contratos Modelagem Funcional.
Diagrama de Objetos.
Diagrama de Colaboração
Projeto – Parte II - Exemplos de Diagrama de Colaboração
Transcrição da apresentação:

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

Diagramas de Colaboração para o Sistema TV 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() terminarVenda() fazerPagto() 1: ???() :POST startUp()

Diagrama de Colaboração — entrarItem() Criando uma nova Venda Pelo Criador, TV cria Venda, e Venda cria uma coleção (vazia) para registrar objetos Item-de-Venda 1: [nova venda] create() entrarItem(upc, qte) :TV :Venda :LinhaDeVenda 1.1: create() Controlador Criador Uma coleção vazia

Diagrama de Colaboração — entrarItem() 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 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() Diagrama de colaboração final 2: [nova venda] create() 2.1: [velha venda]criarLV(spec, qte) entrarItem(upc, qte) 1: spec := especificacao(upc) 2.2: create(spec, qty) 1.1: spec := find(upc) :TV :Venda :Catalogo Produto sl: LinhaDeVenda :LinhaDeVenda :Especificacao 2.3: add(sl) Criador Especialista Mensagem à coleção (container) de objetos EP

Diagrama de Colaboração — encerrarVenda() Definindo atributo Venda.completada Observe como corpos de método (pseudo-código) podem ser definidos

Diagrama de Colaboração — encerrarVenda() Calculando total da venda Atenção: a mensagem total() não é operação de sistema :Venda tot := total() 2*: [i:=1..N] st := subtotal() sli: LinhaDeVenda specprod: EspecificacaoProduto 2.1: pr := price() Especialista by Expert SalesLineItem--subtotal() { return quantity * prodSpec.price() } Sale--total() tot := 0 for each SalesLineItem, sli tot := tot + sli.subtotal() return tot SalesLineItem :LinhaDeVenda 1*: [i:=1..N] sli := next()

Diagrama de Colaboração — fazerPagamento() 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 1: fazerPagto(valor) 1.1: create(valor) :TV :Venda :Pagto fazerPagto(valor) Controlador Criador, baixo acoplamento

Diagrama de Interação — fazerPagamento() Registrando a Venda Pelo Especialista, Loja adiciona a Venda à coleção (log) de vendas completadas 2: addVenda(s) 2.1: add(s) :Loja vendaCompletada: Venda Especialista 1: fazerPagto(valor) 1.1: create(valor) :TV s :Venda :Pagto fazerPagto(valor) Controlador Criador, baixo acoplamento

Diagrama de Interação — fazerPagamento() Calculando troco Pelo Especialista, Venda e Pagamento podem calcular troco Considerando Baixo Acoplamento, Venda é a melhor escolha :Venda troco := troco(valor) Sale--balance() { return valor - tot al} 1: total := total()

Visibilidade entre Objetos Capacidade de um objeto “ver” ou ter uma referência para outro objeto Necessária para comunicação (envio de mensagens) entre objetos 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

Visibilidade de Atributo Existe de A para B quando B é um atributo de A Permanente: persiste enquanto A e B existirem entrarItem(upc, qte) 2: spec := especificacao(upc) :TV prodCatalog : ProductCatalog TV--entrarItem(upc, qte) { ... spec = prodCatalog.especificacao(upc) } class TV private ProductCatalog prodCatalog;

Visibilidade de Parâmetro 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

Visibilidade Local 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); }

Visibilidade Global 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

Notação de Visibilidade na UML 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

Diagramas de Classe Um diagrama de classe especifica as classes de software do sistema 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) 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)

Obs: métodos new() são implícitos Diagrama de Classe Diagrama parcial para as classes TV e Venda no sistema TV TV entrarItem(upc, qte)) Sale date isComplete : Boolean time criarLinhaVenda(spec, qte) Registra Tipo de atributo Navegabilidade Três seções para definição de classe 1 Método Obs: métodos new() são implícitos

Como Fazer um Diagrama de Classe 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

Como Fazer um Diagrama de Classe 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

Modelo de Conceitual X Diagrama de Classe Modelo conceitual: abstração de conceitos do mundo real Diagrama de classe: especificação de componentes de software TV encerrarVenda() entrarItem() fazerPagto() Venda date isComplete : Boolean time criarLinhaVenda() Registra Modelo Conceitual Diagrama de Classe Conceito Componente de software 1

Criando o Diagrama de Classe do Sistema TV Identificando classes e atributos TV Venda data isComplete tempo LinhaVenda quantidade CatalogoProduto EspecificacaoProduto descricao preco UPC Loja endereco nome Pagamento valor

Criando o Diagrama de Classe do Sistema TV 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() total() troco() especificacao()

Criando o Diagrama de Classe do Sistema TV Métodos create Métodos de instanciação (construtores) específicos para cada linguagem de programação Métodos new() são normalmente omitidos Métodos Observer e Mutator get e set, respectivamente Omitidos (2N métodos desinteressantes para os N atributos) 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)

Criando o Diagrama de Classe do Sistema TV Definindo os tipos dos atributos LinhaVenda quantidade : Integer subtotal() : Real CatalogoProduto especificacao(upc: Integer) : EspecificacaoProduto EspecificacaoProduto descricao : Text preco : Real upc : UPC Loja endereco : Endereco nome : Text adicionarVenda(s : Venda) Pagamento valor : Real TV encerrarVenda() entrarItem(upc : Integer, qte : Integer) fazerPagamento(valor : Real) Venda data : Date isComplete : Boolean tempo : Time ehCompleta() criarLinhaVenda(spec : EspecificacaoProduto , qte : Integer) fazerPagto(valor : Real) total() : Real Tipo de retorno do método void; não retorna valor

Criando o Diagrama de Classe do Sistema TV Adicionando relacionamentos, navegabilidade e dependências SalesLineItem quantity : Integer subtotal() ProductCatalog specification() ProductSpecification description : Text price : Quantity upc : UPC Store address : Address name : Text addSale() Payment amount : Quantity Contains 1.. * POST endSale() enterItem() makePayment() Sale date : Date isComplete : Boolean time : Time becomeComplete() makeLineItem() total() Registers Houses Uses Looks-in Paid-by Describes 1 Logs-completed 4

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