Geração de Código.

Slides:



Advertisements
Apresentações semelhantes
Aula 8 Contratos.
Advertisements

Projeto 1.
Diagrama de Classes.
UML – MODELAÇÃO DA ESTRUTURA Professor Sandro Carvalho.
Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques Seminário LES – 7 de abril de.
Orientação a Objetos: Encapsulamento e Classificação
UML Diagrama de Classes elementos básicos. Contexto Os diagramas de classes fazem parte do da visão estática da UML. Os elemento desta visão são conceitos.
Mapeamento Objeto Relacional
Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones.
Contratos em Projeto OO
Abstract Factory Intenção: fornecer uma interface comum para a criação de famílias de objetos relacionados ou dependentes, sem especificar suas classes.
Padrões GoF – Factory Method
Atividade de Projeto Design
Linguagem de Programação II
(Linguagem de Modelagem Unificada)
Engenharia de Requisitos Requisito – sistema Caso de uso - usuário
Introdução Visão Geral do Método.
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
Contratos Modelagem Funcional.
Camada de Persistência
Projeto da Camada de Domínio
Modelagem de Interações
Engenharia de Software
TÉCNICAS DE PROGRAMAÇÃO II
Tecnologias de Linguagens para Banco de Dados I
Diagramas de Sequência e Comunicação
Análise de Sistemas Análise e Projeto Prof. Jeime Nunes Site:
Engenharia de Software e Sistemas de Informação e Gestão
Prof. Dr. Daniel D. Abdala Baseada nas transparências de professor Leandro Becker.
Copyright Leandro Becker Prof. Dr. Daniel Abdala Baseado nas transparencias de Leandro Buss Becker.
DIAGRAMA DE CLASSE Modelagem de Software
Profa Simone Sawasaki Tanaka
Análise e Projeto de Sistemas
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
Profª Daniela TLBD.
Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.
Diagramas de Atividade
Programação Orientada à Objetos
Princípios de Análise e Projeto Orientados a Objetos com UML
SISTEMAS DISTRIBUIDOS Aula 4
Aula prática 14 Orientação a Objetos – C++ Parte 2
O Processo Unificado (UP)
Campus de Caraguatatuba Aula 2: Introdução a Tecnologia de BD
Introdução a Banco de Dados Aula 04
Diagrama de Colaboração. Diagramas de Interação Expressam informações bastante similares porém de maneira diferente Diagrama de seqüência: – Interação.
Construtores e Destrutores
Trabalho de Persistência para o EPOS. Problema Proposto Implementar no Epos objetos persistentes, ou seja, fazer com que o sistema, ao ser reiniciado,
Tarciane Andrade Análise de Casos de Uso Tarciane Andrade
Factory.
Projetando Objetos com Responsabilidades
Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.
Expansão dos Casos de Uso
Modelagem Conceitual descreve a informação que o sistema vai gerenciar.
Atividade de Projeto Design. O Que é Projeto OO? É desvendar a caixa-preta de um objeto :Sistema Como o objeto complexo :Sistema deveria ser definido?
Diagramas de Colaboração entre Objetos Motivação.
Objetos em Bancos de Dados Relacionais Alcides Calsavara.
Copyright © 2006 Qualiti. Todos os direitos reservados. Projetar Classes.
20/04/2017 Orientação a Objetos 1 1.
Projeto de Banco de Dados
Módulo II Capítulo 1: Orientação a Objetos
Gerenciamento de Configuração de Software
Fundamentos de Engenharia de SW Diagramas da UML Usados no Projeto de Software.
Diagrama de Classes Herança Dependências.
Fundamentos de Banco de Dados Prof. André Cypriano M. Costa
Java Como Programar, 8/E Deitel/Deitel, 8e. Java – Como programar Copyright © 2010 Pearson Education Slide 1.
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
Análise e Design de Software Site:
GRASP: Projeto de Objetos com Responsabilidade – Parte 2.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Universidade de Passo Fundo Tecnologia em Sistemas de Informação TSI109- Fundamentos de Banco de Dados (Restrições de Integridade) Prof. Alexandre Tagliari.
Transcrição da apresentação:

Geração de Código

Geração de Código Uma vez definidos os diagramas de colaboração e o diagrama de classes de projeto, a geração de código é uma tarefa passível de automatização. Trata-se aqui de gerar o código das classes correspondentes à camada de domínio da aplicação, ou seja, as classes que realizam toda a lógica do sistema a partir das operações de sistema. As demais camadas (persistência, interface, etc.) são geradas em outra fase do processo. Pode-se admitir, porém, que, uma vez gerada a camada de domínio, todas as demais camadas serão derivadas e dependentes desta.

Classes

Atributos

Métodos para alterar e acessar

Porque não usar atributos públicos? Deve-se observar que para viabilizar o funcionamento do mecanismo de persistência é fundamental que os atributos sejam acessados e modificados unicamente pelas operações de alteração e consulta. Em hipótese alguma outro método, mesmo métodos da própria classe poderão acessar ou alterar estas variáveis diretamente. Isso acontece porque quando da implementação do mecanismo de persistência será necessário ter controle sobre qualquer alteração sofrida pelos objetos, para verificar se estão inconsistentes com o banco de dados. A melhor forma de garantir isso é sabendo exatamente quais os pontos do código onde os atributos são modificados.

Associações As associações do DCP são transformadas em variáveis de instância, da mesma forma que os atributos, e terão métodos para alteração e consulta. Os atributos geram sempre variáveis cujos tipos são básicos (alfanuméricos) As associações geram tipos que são classes de objetos ou estruturas de dados. Considerando as diferentes multiplicidades de papel e outras características das associações, haverá algumas distinções a fazer quanto aos métodos associados.

Associações devem implementar no mínimo Um método para criar ou redefinir a associação Um método para remover a associação (exceto para associações para 1) Um método para obter objetos associados

Acesso aos elementos das coleções Em relação aos métodos que consultam associações com multiplicidade *, observou-se nos diagramas de colaboração que as mensagens de consulta do tipo getClienteComNome eram enviadas à coleção em si. Porém, é indesejável implementar esta consulta desta maneira, pois visto que este método é específico da coleção de clientes, seria necessário especializar a classe genérica com a estrutura de dados que representa a coleção para cada um dos tipos de valor que ela pudesse conter. Assim, a aplicação teria classes como ColecaoDeClientes, ColecaoDeFitas, ColecaoDeEmprestimos, etc. Essa abordagem é inconveniente pela proliferação de estruturas praticamente idênticas.

Como resolver este problema Uma opção para evitar esse efeito indesejável é implementar o método de consulta na classe que está na origem da associação. Assim, ao invés de implementar getClienteComNome em uma subclasse de Colecao, implementa-se este método na classe Videolocadora visto esta estar na origem da associação. Desta forma, tanto associações quanto atributos são consultados por métodos da classe prefixados com get.

Associação unidirecional para 1 A associação unidirecional para 1, deve ser armazenada em uma variável de instância na classe de origem da associação e seu tipo deve ser a classe de destino. Assim, uma associação unidirecional para 1 de ItemDeEmprestimo para Emprestimo corresponderá a uma variável de instância na classe ItemDeEmprestimo declarada com tipo Emprestimo.

Associação unidirecional para 1 Como associação é estritamente para 1, então não é possível destruir a associação, e, portanto, o método para destruir a associação não deve ser implementado. Como a associação para 1 é obrigatória para o objeto na origem, o método criador da classe deve ter como parâmetro o elemento a ser associado para que desde o momento da criação todas as instâncias da classe na origem da associação estejam consistentes.

Associação unidirecional para 1

Associação Unidirecional para 0..1 É possível destruir a associação e, portanto deve ser implementado o método correspondente. Não é necessário passar um objeto como parâmetro para o método criador, pois a associação para 0..1 não é obrigatória.

Associação Unidirecional para 0..1

Associação Unidirecional para * Corresponde à implementação de um conjunto

Associação Unidirecional para *

Um método alternativo para acesso

Associação Unidirecional <<ordered>>

Associação Unidirecional Qualificada

Associação Unidirecional com Classe de Associação

Associação Unidirecional com Multiplicidade 1 na Origem a destruição da associação só será possível quando o objetivo for também destruir o objeto no destino da associação No caso de associações de 1 para 0..1 ou de 1 para 1 deve-se tomar este mesmo cuidado em relação à operação de criação/redefinição de associação

Associação Bidirecional

Método Delegado Deve-se sempre observar o diagrama de colaboração onde ele apareceu. Toda mensagem com número x, que chega a uma instância da classe A deve ser implementada como a seqüência das mensagens x.1, x.2, ..., x.n, que saem da instância de A e são enviadas a outros objetos.

Métodos Delegados e Operações de Sistema

Até que ponto desenvolver os diagramas de colaboração? Desenvolver o diagrama até chegar às mensagens básicas de criação e destruição de instâncias e de associações e de mudança de valor de atributo. Essas mensagens básicas são normalmente terminais no diagrama de colaboração, sendo as mensagens intermediárias as mensagens delegadas. Faz-se exceção, porém ao caso da operação de criação de instâncias que, conforme foi visto, pode implementar outras mensagens básicas à guisa de inicialização dos atributos e associações do objeto sendo criado.