Orientação a Objetos com UML Elementos básicos de OO em UML Copyright © 2006 Qualiti. Todos os direitos reservados. Objeto Classe Atributo Operação Interface Componente Pacote Subsistema Relacionamentos Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 2 : Conta Apenas o nome da classe contaSaque : Conta contaSaque Apenas o nome do objeto Nome da classe e do objeto Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 3 Copyright © 2006 Qualiti. Todos os direitos reservados. Objeto em UML Classe em UML • O que deve ser modelado por uma classe? • O que é abstração e modularidade? Nome da Classe Atributos Operações Conta numero saldo credito() debito() getSaldo() getNumero() estrutura comportamento Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 4 Copyright © 2006 Qualiti. Todos os direitos reservados. Conta Marcações de acesso podem ser usadas para especificar o tipo de acesso permitido aos atributos e operações + # - público protegido privado Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 5 Copyright © 2006 Qualiti. Todos os direitos reservados. Visibilidade 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, subsistemas e componentes implementam interfaces - provêem implementação para os métodos especificados em uma interface Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 6 Copyright © 2006 Qualiti. Todos os direitos reservados. Interface Exemplo: Independência do meio de armazenamento Copyright © 2006 Qualiti. Todos os direitos reservados. Isolando as coleções de negócio de mudanças na coleção de dados correspondente CadastroContas <<interface>> RepositorioContas RepositorioContasBDR RepositorioContasOO Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 7 Interface em UML: notação alternativa RepositorioContasOO RepositorioContas RepositorioContasXML Relacionamentos de realização Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 8 Copyright © 2006 Qualiti. Todos os direitos reservados. RepositorioContasBDR Classes, Interfaces e Classes Abstratas • Assinaturas dos métodos Classes • Atributos • Métodos Classes Abstratas • Atributos • Métodos • Assinatura de Métodos Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 9 Copyright © 2006 Qualiti. Todos os direitos reservados. Interfaces Arquivo fonte <<EXE>> Arquivo executável <<DLL>> Componente Interface do Componente Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 10 Copyright © 2006 Qualiti. Todos os direitos reservados. Componente em UML Mecanismo para organizar elementos em grupos Facilita entendimento do sistema Favorece modularidade e reuso em larga escala Essencial para estruturar sistemas complexos nome do pacote nome do pacote Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 11 Copyright © 2006 Qualiti. Todos os direitos reservados. Pacote Realização Subsistema <<subsystem>> Interface Nome do subsistema Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 12 Copyright © 2006 Qualiti. Todos os direitos reservados. Subsistema em UML Subsistemas e Componentes Projeto <<subsystem>> Nome do subsistema Implementação Nome do componente Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 13 Copyright © 2006 Qualiti. Todos os direitos reservados. Ambos encapsulam um comportamento modelado por interfaces Subsistemas representam componentes no modelo de projeto Componentes são a realização física dos subsistemas Relacionamentos Associação Copyright © 2006 Qualiti. Todos os direitos reservados. - simples - agregação - composição Dependência Generalização Realização Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 14 Associação Relação estrutural entre classes Pessoa trabalha Copyright © 2006 Qualiti. Todos os direitos reservados. Nome da associação Empresa Associação Papéis Classe Pessoa Empresa Empregado Empregador Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 15 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 Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 16 Copyright © 2006 Qualiti. Todos os direitos reservados. Agregaçã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 Não permite compartilhamento Todo Parte Empresa Departamento Composição Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 17 Copyright © 2006 Qualiti. Todos os direitos reservados. Composição 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 Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 18 Copyright © 2006 Qualiti. Todos os direitos reservados. - 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 Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 19 Copyright © 2006 Qualiti. Todos os direitos reservados. Dependência Multiplicidade define quantos objetos participam do relacionamento - O número de instâncias de uma classe relacionadas a uma instância de outra classe - Especificado em cada uma das pontas da associação Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 20 Copyright © 2006 Qualiti. Todos os direitos reservados. Multiplicidade Tipos de Multiplicidade Não especificada Zero ou mais Muitos (mesmo que 0..*) Um ou mais Zero ou um Intervalo determinado Valores múltiplos 1 Copyright © 2006 Qualiti. Todos os direitos reservados. Exatamente um 0..* * 1..* 0..1 2..4 2, 4..6 Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 21 Multiplicidade Empresa 1 1..* Pessoa Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 22 Copyright © 2006 Qualiti. Todos os direitos reservados. Exemplo: Multiplicidade Navegaçã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 Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 23 Copyright © 2006 Qualiti. Todos os direitos reservados. Especifica a direção da associação Empresa 1 1..* Pessoa Navegação Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 24 Copyright © 2006 Qualiti. Todos os direitos reservados. Exemplo: Navegaçã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) - Herança comportamental (behavioural inheritance) - Referência clássica: A behavioral notion of subtyping (Liskov & Wing) Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 25 Copyright © 2006 Qualiti. Todos os direitos reservados. Generalização Generalização Uma subclasse pode - Copyright © 2006 Qualiti. Todos os direitos reservados. - adicionar atributos, operações e relacionamentos redefinir operações herdadas Tipos de herança: simples e múltipla Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 26 Herança Simples Classes herdando de apenas uma outra classe 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 Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 27 Copyright © 2006 Qualiti. Todos os direitos reservados. Figura Herança Múltipla Mamífero AnimalVoador Herança múltipla Cachorro Gato Morcego Passarinho Gaviao Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 28 Copyright © 2006 Qualiti. Todos os direitos reservados. Classes herdando de mais de uma classe 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? Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 29 Copyright © 2006 Qualiti. Todos os direitos reservados. Herança Múltipla Realização Exemplos: Classe Subsistema Componente Realização Caso de uso Realização de Caso de uso Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 30 Copyright © 2006 Qualiti. Todos os direitos reservados. Indica que um elemento serve como contrato que o outro deve seguir Defina uma arquitetura simplificada de uma aplicação bancária, com: - Pelo menos 2 tipos de conta (corrente, poupança) e um cadastro de contas - Cliente e um cadastro de clientes - Operações para criar, remover, debitar, creditar, transferir, ... - Adoção do padrão fachada Qualiti Software Processes Análise e Projeto OO com UML para Sistemas RT| 31 Copyright © 2006 Qualiti. Todos os direitos reservados. Exercício - Arquitetura Estereótipos Notas Propriedades (Tagged values) Restrições OCL (Object Constraint Language) Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 32 Copyright © 2006 Qualiti. Todos os direitos reservados. Mecanismos adicionais de UML 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>> Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 33 Copyright © 2006 Qualiti. Todos os direitos reservados. Estereótipos Estereótipos - Exemplo <<boundary>> ClasseFronteira ClasseFronteira Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 34 Copyright © 2006 Qualiti. Todos os direitos reservados. Classes de fronteira: Notas - Pode ser afixionada a qualquer elemento de UML Pode ser ligada a um elemento com uma linha tracejada Exemplo: LeitorCartao Esta classe é uma abstração do dispositivo de hardware que será usado para ler efetivamente as informações do cartão magnético. Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 35 Copyright © 2006 Qualiti. Todos os direitos reservados. Anotação utilizada para adicionar informação a diagramas Servem para estender elementos UML, adicionando informações sobre eles Exemplos já definidos em UML: - Persistence Location (ex: no cliente, no servidor) Você pode criar suas próprias propriedades Cliente {persistence} LeitorCartao {location=server} Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 36 Copyright © 2006 Qualiti. Todos os direitos reservados. Propriedades (Tagged Values) Usadas para criação de novas regras sobre elementos do modelo Ou modificação de regras existentes funcionários Pessoa 1..* 1 Empresa {subset} diretores 3 1 Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 37 Copyright © 2006 Qualiti. Todos os direitos reservados. Restrições É uma linguagem usada para definir restrições sobre elementos do modelo ou modificação de restrições existentes - Invariantes de classe - Pré e pós-condições de operações context Empresa inv diretoresNecessarios: self.diretor->size() == 3 Empresa Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 38 Copyright © 2006 Qualiti. Todos os direitos reservados. OCL (Object Constraint Language) Diagramas de UML usados no curso (apresentados sob demanda) - Casos de uso - Classes - Sequência - Comunicação (Colaboração) - Pacotes - Componentes (usado em SOA) Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 39 Copyright © 2006 Qualiti. Todos os direitos reservados. Diagramas UML Processos e Padrões Orientação a objetos e DBC são paradigmas promissores, mas Copyright © 2006 Qualiti. Todos os direitos reservados. - Reuso - Extensibilidade - Escalabilidade ... exigem - Processos - Técnicas - Disciplina - Experiências anteriores de sucesso (padrões)! Qualiti Software Processes 40