Orientação a objetos identidade abstração classificação encapsulamento herança polimorfismo persistência Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 6 Prentice Hall Objetos e classes • Todo objeto tem um nome (também chamado de referência ou indicador). • Objetos podem ter atributos (como cor, tamanho e origem). • Objetos podem ter operações e comportamentos (como decolar, aterrissar e ser consertado). • Cada objeto é uma instância de uma classe. • A implementação específica de uma operação para uma certa classe é chamado de método Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 6 Prentice Hall Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 6 Prentice Hall Projeto orientado a objetos Normalmente utiliza uma especificação de requisitos orientada a objetos Identifica e representa as classes e os objetos, inclusive os detalhes dos atributos e os comportamentos de cada um Também identifica as interações e relações Insere aspectos computacionais Insere alguns detalhes da biblioteca de classes Considera os requisitos não-funcional e aprimora o projeto de maneira adequada aos requisitos Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 6 Prentice Hall Casos de uso Os diagramas devem ter quatro elementos: atores casos extensões usos Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 6 Prentice Hall Identificando os participantes Quais usuários ou grupos utilizam o sistema para realizar uma tarefa? Quais usuários ou grupos são necessários para que o sistema possa realizar suas funções? Quais sistemas externos utilizam o sistema para realizar uma tarefa? Quais sistemas externos, usuários ou grupos enviam informações para o sistema? Quais sistemas externos, usuários ou grupos recebem informações do sistema? Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 6 Prentice Hall A UML no processo OO Diagramas de workflow Modelo de objetos Diagramas de seqüência Diagramas de colaboração Diagramas de pacotes Diagramas de componentes Diagramas de implantação Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 6 Prentice Hall Itens que podem sugerir a primeira identificação das classes de objetos Estruturas Sistemas externos Dispositivos Papéis Procedimentos operacionais Lugares Organizações Coisas que são manipuladas pelo sistema que está sendo construído Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 6 Prentice Hall Diretrizes para decidir o que incluir em uma lista de classes O que necessita ser processado de uma determinada maneira? Quais itens têm vários atributos? Quando você tem mais de um objeto em uma classe? O que tem como base os próprios requisitos e não é derivado de seu entendimento dos requisitos? Quais atributos e operações são sempre aplicáveis a uma classe ou a um objeto? Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 6 Prentice Hall Diretrizes para identificar comportamentos Verbos no imperativo Verbos na voz passiva Ações Coisas ou eventos lembrados Papéis Procedimentos operacionais Serviços fornecidos por uma organização Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 6 Prentice Hall Nome da classe: abastecimento Categoria: serviço Documentos externos: Controle de exportação: Público Cardinalidade: n Hierarquia: Superclasses: serviços Associações: combustível em associação <nome> Nome da operação: preço Membro público de: abastecimento Documentação: // Calcula o preço final do combustível Pré-condições: galões > 0 diagrama de objetos: (não especificado) Semântica: preço_final = galões * preço diagrama de objeto: (não especificado) Concurrência: seqüencial Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 6 Interface pública: Operações: preço Interface privada: Atributos: galões preço Implementação: Atributos: galões preço Máquina de estado: não Concorrência: seqüencial Persistência: transitória Prentice Hall Considerações para um projeto do programa Requisitos não-funcionais Componentes que podem ser reutilizados a partir de sistemas previamente construídos Componentes que podem ser reutilizados em outros sistemas além do que atualmente está em desenvolvimento Requisitos da interface com o usuário Estrutura de dados e detalhes sobre o gerenciamento Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 6 Prentice Hall Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 6 Prentice Hall Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 6 Prentice Hall Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 6 Prentice Hall