Engenharia de Software Alexandre Vasconcelos, André Santos, Augusto Sampaio, Hermano Moura, Paulo Borba Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Tópicos 1 - Visão Geral de Orientação a Objetos e UML 2 - Visão Geral do Fluxo de Análise e Projeto 3 - Atividade Analisar de Caso de Uso 4 - Atividade Projetar Arquitetura 5 - Atividade Projetar Caso de Uso 6 - Atividade Projetar Subsistema 7 - Atividade Projetar Classe Aspectos de Concorrência, Distribuição e Projeto de Base de Dados não serão abordados Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Referências • Descrição do fluxo de análise e projeto – Link para o RUP a partir da página do curso • Capítulos 8 e 9 do livro The Unified Software Development Process – Uma observação importante é que o CD do RUP apresenta um único fluxo para análise e projeto, enquanto no livro são dois fluxos independentes • The Unified Modeling Language User Guide – Introdução e consultas eventuais à notação de UML Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. 1 - Visão Geral de Orientação a Objetos e UML Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Objetivos • Apresentar os princípios do paradigma de orientação a objetos • Apresentar os conceitos de orientação a objetos com a notação UML correspondente Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Princípios básicos de OO • • • • Abstração Encapsulamento Modularidade Herança Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Abstração • Construção de um modelo para representação de uma realidade • Concentração nas características essenciais, gerenciando complexidade Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Abstração - Objetos do mundo real gado cliente automóvel Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Abstração - construção de um modelo para a realidade Automovel modelo preco ... atualizaPreco() ... Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Encapsulamento • Elimina dependência de implementação, escondendo-a do cliente • Uso de interfaces • Mudanças internas não têm impacto sobre os clientes Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Encapsulamento - Objeto televisão Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Encapsulamento: Objeto conta bancária Crédito Saldo Número 875,32 21.342-7 Débito Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Modularidade • Decomposição de um problema em pequenos pedaços, para gerenciar complexidade • Cada conceito independente deve ser representado por um módulo • Construção de módulos desacoplados • Dividir para conquistar ... Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Modularidade Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Herança • Criação de hierarquias de abstração • Permite ordenar hierarquias relacionadas • Base conceitual para permitir extensibilidade do software • Reuso de código e comportamento (subtipo) Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Herança Figura Conta Polígono Poupança Triângulo Retângulo Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. ContaEspecial Herança: Objeto poupança Crédito Saldo Número 875,32 21.342-7 R. Juros Débito Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Conceitos básicos de OO • • • • • • • Objeto Classe Interface Componente Pacote Subsistema Relacionamentos Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Classe • Descrições de objetos com propriedades e comportamento comuns • Abstração que – enfatiza o que é relevante – suprime o que não interessa • Classes são fábricas de objetos • Objetos são agrupados em classes Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Classes de Objetos • Quantas classes temos aqui? Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Fonte: Rational Classe de Contas Bancárias Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Classe em UML Conta Nome da Classe Atributos Operações Conta numero saldo credito() debito() getSaldo() getNumero() Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. estrutura comportamento Objeto • Modelo de um objeto real – entidade física, conceitual ou de software • Possui comportamento, estado e identidade • Exemplo: objetos conta e poupança apresentados Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Objeto em UML : Conta Apenas o nome da classe ContaSaque : Conta ContaSaque Apenas o nome do objeto Nome da classe e do objeto Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Objeto em UML Objeto Valor do Atributo : ContaSaque numero = 21.342-7 saldo = 875,32 Conta numero saldo : ContaDeposito numero = 23.025-1 saldo = 500,00 Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Polimorfismo • Escondendo diferentes implementações através de uma única interface Manufacturer A Manufacturer B Manufacturer C interface bem definida Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Fonte: Rational Interface • Interfaces formalizam polimorfismo • Interfaces permitem o uso de arquitetura baseada em componentes <<interface>> Círculo Forma Desenhar Mover ModificarTamanho Rotacionar Pirâmide Cubo Relacionamento de realização Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Fonte: Rational Exemplo: Repositório de Contas <<interface>> ListaContas Repositorio Incluir Remover credito debito RepositorioBDR RepositorioBDOO Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Fonte: Rational Interface • Interfaces definem um tipo especificando apenas a assinatura de seus métodos • Interfaces não possuem atributos e seus métodos não têm corpo • Classes implementam interfaces – provêem implementação para os métodos especificados em uma interface Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Interface em UML Círculo Representação com ícone Pirâmide Forma Representação Canônica <<interface>> Forma Desenhar Mover ModificarTamanho Rotacionar Cubo Círculo Pirâmide Cubo Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Fonte: Rational Classe abstrata • Classe abstrata é aquela que não possui instância • Em geral, possui pelo menos um método abstrato • Métodos abstratos não têm corpo – devem ser implementados em subclasses não abstratas Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Classes abstratas x Interfaces • Herança de tipos x herança de código • Classes descrevem propriedades fundamentais de um objeto • Interfaces descrevem papéis desempenhados por um objeto em determinadas situações • Interfaces são úteis para implementar herança múltipla Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Componente • Parte não trivial, quase independente, substituível de um sistema, que provê a realização de (uma/um conjunto de) interface(s) • Exemplos – um código fonte – um componente de tempo de execução – um componente executável Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Componente em UML Source File Name <<DLL>> Component Name <<EXE>> Executable Name Component Interface Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Pacote • Mecanismo para organizar elementos em grupos • Facilita entendimento do sistema • Favorece modularidade e reuso em larga escala • Essencial para estruturar sistemas complexos Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Package Name Coesão e Acoplamento • Acoplamento é a medida de quão conectadas duas classes são – cuidado com herança • Coesão é a medida de quão autocontida uma classe é • Sistemas devem ter baixo acoplamento e alta coesão – bom para manutenção Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Subsistema • União de – pacote (agrupa outros elementos) – classe (comportamento) • Realiza uma ou mais interfaces, que definem o seu comportamento Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Subsistema em UML Realização Subsistema <<subsystem>> Interface Subsystem Name Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Subsistemas e Componentes • Ambos encapsulam um comportamento modelado por interfaces • Subsistemas representam componentes no modelo de projeto • Componentes são a realização física dos subsistemas Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Projeto <<subsystem>> Nome do subsistema Implementação Nome do componente Relacionamentos • Associação – simples – agregação – composição • Dependência • Generalização • Realização Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Associação • Relação estrutural entre classes Nome da associação Pessoa trabalha Empresa Associação Papéis Classe Pessoa Empresa Empregado Empregador Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Agregação • Tipo especial de associação • Relacionamento todo-parte • O todo possui um nível de abstração maior que a parte Todo Parte Empresa Departamento Agregação Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Composição • • • • Tipo especial de agregação Relação de posse mais forte O todo é responsável pela criação da parte A parte não vive sem o todo Todo Parte Empresa Departamento Composição Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Dependência • Relacionamento não estrutural (uso) – mais fraco que associação • Uma dependência entre dois elementos indica que mudança em um elemento pode causar mudanças no outro LeitoraCartao lerCartao (cartao) Cartão Relacionamento de Dependência Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Dependência • Pode existir relacionamento de dependência entre vários elementos de UML Classe Cliente Pacote PacoteCliente Componente Fornecedor Cliente PacoteFornecedor Fornecedor Dependência Fonte: Rational Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Exercício - Relacionamentos • Modele os relacionamentos existentes entre as classes abaixo: Universidade Estudante Departamento Disciplina Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Instrutor Multiplicidade • Multiplicidade define quantos objetos participam do relacionamento – O número de instâncias de uma classe relacionada a uma instância de outra classe – Especificado em cada uma das pontas da associação Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Tipos de Multiplicidade • Não especificada • Exatamente um 1 • Zero ou mais 0..* • Muitos (mesmo que 0..*) * • Um ou mais 1..* • Zero ou um 0..1 • Intervalo determinado 2..4 • Valores múltiplos 2, 4..6 Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Exemplo: Multiplicidade Multiplicidade Empresa 1 1..* Pessoa Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Navegação • Especifica a direção da associação • Associações e agregações são bidirecionais por default, mas é desejável que a navegação seja restringida a apenas uma direção • Associações bidirecionais são mais difíceis de implementar Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Exemplo: Navegação Empresa 1 1..* Pessoa Navegação Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Exercício - Multiplicidade • Acrescente a multiplicidade nos relacionamentos encontrados no exercício anterior. Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Generalização • Relacionamento entre classes onde uma classe compartilha a estrutura (atributos e relacionamentos) e comportamento (operações) de outras classes • Define uma hierarquia de abstrações • Relacionamento “é um tipo de” (is-a-kind-of) Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Generalização • Uma subclasse pode – adicionar atributos, operações e relacionamentos – redefinir operações herdadas • Tipos de herança: simples e múltipla Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Herança Simples • Classes herdando de apenas uma outra classe Figura Superclasse (pai) Subclasses cor largura da linha desenhar() girar(graus) selecionar() Círculo raio centro desenhar() Relacionamento de Generalização Retângulo vertices desenhar() diagonal() Quadrado Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Herança Múltipla • Classes herdando de mais de uma classe ObjetoVoador Animal Herança múltipla Avião Helicóptero Pássaro Lobo Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Cavalo Fonte: Rational Herança Múltipla • O que acontece quando as superclasses possuem o mesmo método (métodos com o mesmo nome)? • O que acontece quando se tenta executar um método que não está definido na subclasse? Em que hierarquia de superclasses deve-se procurar o método? Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Realização • Indica que um elemento serve como contrato que o outro deve seguir Exemplos: Classe Componente Subsistema Realização Caso de uso Realização de Caso de uso Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Exercício - Generalização • Modele a hierarquia de classes de uma aplicação bancária com contas correntes (contas comuns, sem cheque especial), poupanças e contas especiais (contas com certo crédito). Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Mecanismos adicionais de UML • • • • Estereótipos Notas Propriedades (Tagged values) Restrições Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Estereótipos • Mecanismo utilizado para estender os elementos de UML • Define um novo modelo de elemento em termos de outro já existente • Como – criando um novo ícone – utilizando a notação <<novo_elemento>> Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Estereótipos - Exemplo • Classes de fronteira: <<boundary>> ClasseFronteira ClasseFronteira Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Notas • Anotação utilizada para adicionar informação a diagramas – Pode ser associada a qualquer elemento de UML – Pode ser ligada a um elemento com uma linha tracejada Exemplo: LeitoraCartao Esta classe é uma abstração do dispositivo de hardware que será usado para ler efetivamente as informações do cartão magnético. Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Propriedades (Tagged Values) • Servem para estender elementos UML, adicionando informações sobre eles • Exemplos já definidos em UML: – Persistence – Location (ex: no cliente, no servidor) Cliente {persistence} LeitoraCartao {location=server} • Você pode criar suas próprias propriedades Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Paradigma de Orientação a Objetos • Benefícios – Favorece modularidade, extensibilidade, compatibilidade e reuso, suportando a evolução do sistema – Aproxima-se do mundo real – Uso do mesmo conceito em todas as fases do desenvolvimento Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Respostas dos Exercícios Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Relacionamentos Resposta do exercício Universidade coordena Departamento vinculado Estudante alocado no inscrito Disciplina ministra Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Instrutor Multiplicidade Resposta do exercício Universidade Departamento 1 coordena 0..1 1..* 1..* 1..* 1..* vinculado alocado no 1..* * Estudante Disciplina inscrito * 1..* * ministra * 1..* Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Instrutor 0..1 Generalização Resposta do exercício Conta Conta-corrente Poupança Conta especial Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.