240 likes | 342 Views
7. Análise e projeto orientados a objetos 7.1 Técnica de modelagem de objetos (TMO) 7.2 Características básicas da TMO 7.3 O modelo dos objetos 7.4 O modelo dinâmico 7.5 O modelo funcional 7.6 Um exemplo completo de TMO.
E N D
7. Análise e projeto orientados a objetos7.1 Técnica de modelagem de objetos (TMO)7.2 Características básicas da TMO7.3 O modelo dos objetos7.4 O modelo dinâmico7.5 O modelo funcional7.6 Um exemplo completo de TMO Objetivo: compreender os termos essenciais da análise orientada a objetos e a forma como estão relacionados com o projeto de desenvolvimento
A análise orientada a objetos é um modo de estudar problemas com a utilização de modelos fundamentados em conceitos do mundo real nos quais os objetos agrupam conjuntamente dois elementos • Estrutura • Comportamento • Difere do modo tradicional com ênfase no funcional e em objetos focalizados nos problemas das linguagens de programação • A metodologia baseada em objetos é acompanhada por uma notação gráfica e consiste na construção de um modelo de DOMÍNIO DA APLICAÇÃO com noções específicas como classe, polimorfismo e herança
Exemplo: Objetos de pessoas Classe pessoa Atributos: Nome Profissão Endereço Comportamentos: Andar Comprar Receber salário Classe Polígono Atributos: Vértice Cor de preenchimento Espessura da borda Comportamentos: Desenhar Apagar Mover Objetos de polígonos
7.1 Técnica de modelagem de objetos (TMO) • Há várias metodologias orientadas a objeto • Uma que trabalha com ênfase em um modelo no DOMÍNIO DA APLICAÇÃO é a de Rumbaugh e será a que nós nos basearemos • Etapas da TMO • 1) Análise • Parte do enunciado para construir o modelo de uma situação real • Ênfase no “o quê” e não no “como” • Um bom modelo pode ser criticado por não programadores • Atributos e operações são visíveis ao usuário • Como deve ser descrita em termos de atributos e operaçõe uma classe de objetos como “janela”?
2) Projeto do sistema • Decisões de alto nível da arquitetura geral • Sub-sistemas baseados na estrutura de análise e na arquitetura proposta • Como objetos da classe “janela” seriam modificados? • 3) Projeto dos objetos • Modelo de projeto baseado no módulo de análise com alguma implementação • Estrutura de dados e algoritmos de cada classe • Como as operações de “janela” são especificadas agora?
4) Implementação • Deve ser mecânica • Deve ser a parte mais fácil e de menor importância • Detalhes da linguagem de programação não devem trazer restrições • Como “janela” deveria ser implementada? Em que se deve pensar no momento da implementação?
A TMO usa três tipos de modelos • 1) Modelo de objetos • Nós são classes • Arcos são relacionamentos • 2) Modelos dinâmicos • Nós são estados • Arcos são transições causadas por eventos • 3) Modelo funcional • Nós são processos • Arcos são fluxos de dados
7.2 Características básicas da TMO • 1) Abstração • Concentrar-se nos aspectos essenciais e ignorar os acidentais • Permite liberdade de decisões, evitando detalhes • Preocupa-se com o domínio da aplicação e não com os detalhes do projeto ou da implementação • Todas as palavras e linguagens são abstrações – descrições incompletas do mundo real • Devem se ater a algum propósito
2) Encapsulamento • Separação dos aspectos externos de um objeto, acessíveis por outros objetos, de seus detalhes internos • Torna a modificação da implementação possível • 3) Dados e comportamento em conjunto • É a essência da orientação a objeto; faz com que uma implementação não precise considerarm implementação de uma determinada operação • Manutenção fácil e desnecessário repetir a escolha de um procedimento
4) Compartilhamento • Uma hierarquia de classes em vez da separação da hierarquia da estrutura de dados e da hierarquia de procedimentos • Faz mais do que permitir reutilização, pois possibilita clareza conceitual • 5) Ênfase na estrutura de objetos e não nos procedimentos • O objeto (o que é) é dependente dos detalhes e frequentemente muda • Quando os requisitos envolvem os objetos se tornam mais estáveis • Similar às técnicas de modelagem da informação
6) Sinergia • Utilização dos conceitos de orientação a objetos de forma complementar e em conjunto • Estilo diferente • Encapsulamento como alicerce • Herança utilizando empacotamento para viabilização de código
7.3 O modelo dos objetos • Incorpora a estrutura estática de um sitema de objetos, os relacionamentos entre eles e os atributos e operações de cada classe de objetos • Tenciona-se se aproximar do mundo real • Novos conceitos fundamentais: objeto, classe, ligação, associação, generalização e herança
Objetos • A modelagem tem como função principal descrevê-los • O que faz sentido no contexto da aplicação • Os objetos se distinguem pela sua própria existência e não pela propriedade descritiva • Às vezes, são confundidos com grupos, mas merecem explicitação • Instância • Classe
Classes • Um grupo de objetos com propriedades semelhantes (atributos) • Mesmo comportamento (operações) • Mesmos relacionamentos com outros objetos • Mesma semântica • Ex.: pessoa, empresa, animal, processo, janela etc • Substantivos • É possível a existência de objetos com idênticos atributos e relacionamentos; não de classes • Cadeira e cachorro podem pertencer à mesma classe?
Diagramas de objetos • Notação gráfica formal para a modelagem de objetos e os seus inter-relacionamentos • Há dois tipos: • Diagramas de classe – esquema que descreve muitas instâncias possíveis e suas classes • Diagramas de instâncias – descreve como os objetos de um conjunto se relacionam entre si
Cada objeto conhece sua classe, que é uma propriedade implícita e seus procedimentos podem ser sempre melhorados Pessoa Classes (Pessoa) João (Pessoa) Maria Objetos (Pessoa)
Atributos • Valor de dado guardado pelo objeto de uma classe • Ex.: idade, peso, cor, endereço, anos • Um atributo deve ser um puro valor de dados e não um objeto • Ex.: Brasil e Brasília • Valores puros de dados não têm identidade
Os identificadores explícitos de cada objeto NÃO SÃO OBRIGATÓRIOS em um modelo de objetos Pessoa nome ID: id de pessoa mudar-cargo mudar-endereço Erro!
Operações e métodos • Operações: função ou transformação que pode ser aplicada a objetos ou por estes a uma classe • Quais seriam as operações da classe empresa? • Quais seriam as operações de “janela”? • Cada operação tem um objeto-alvo como argumento implícito • A mesma operação pode ser aplicada a objetos diferentes: POLIMORFISMO • Método: implementação de uma operação para uma classe • Como pode ser aplicado um método “imprimir”?
Uma operação pode ter argumentos além do objeto-alvo • Quando houver uma operação com métodos em várias classes, é importante uma assinatura • Que cuidados devem ser observados ao se definir um método? • As características são os atributos e as operações • As operações são: • Com efeito colateral • Cálculo do valor funcional sem mudar o objeto (consulta) Pessoa nome idade mudar-cargo mudar-endereço Arquivo nome do arquivo tamanho em bytes última atualização imprimir Objeto geométrico cor posição mover (delta: Vetor) selecionar (p: Ponto): Booleano girar (ângulo)
Consultas sem argumentos são atributos derivados • Como pode ser definido um atributo derivado de um “quadro”? • A escolha de atributos básicos é arbitrária e deve ser feita para evitar superespecificação • Ligações e associações • Ligações e associações são meios para se estabelecer relacionamentos entre objetos e classes • Ligação: conexão física ou conceitual entre instâncias de objetos • Ex.: Ana Maria estuda no CEFET
Associação: grupos de ligações com semântica e estrutura comuns • Ex.:Uma pessoa estuda em uma escola • Uma ligação é uma instância de uma associação • Associações são intrinsecamente bidirecionais mas podem ser lidas de formas diferentes • Ex.: trabalha • Associação um-para-um: Tem-capital País nome Cidade nome Diagrama de classes Tem-capital (País) Canadá (Cidade) Ottawa Tem-capital (País) França (Cidade) Paris Diagrama de instâncias Tem-capital (Cidade) Dakar (País) Senegal
Existem associações binárias, ternárias e de outras ordens • As associações binárias devem ser as mais utilizadas • Associação ternária: Projeto Linguagem Diagrama de classes Pessoa (Projeto) Sistema de contabilidade (Linguagem) Cobol (Pessoa) Maria Diagrama de instâncias (Linguagem) C (Projeto) Pograma CAD
Multiplicidade • Especifica quantas instâncias de uma classe relacionam-se a uma única instância de uma classe asociada • Pode ser uma, muitas, um conjunto de intervalos associados • Exemplos: • 1 • 1+ • 3-5 • 2,4,18