Orientação a Objetos com UML Elementos básicos de OO em UML • • • • • • • • • • Objeto Classe Atributo Operação Interface Componente Pacote Subsistema Relacionamentos Vários tipos de diagrama Análise e Projeto OO com UML e Padrões| 2 Objeto em UML : Conta Apenas o nome da classe contaSaque : Conta contaSaque Apenas o nome do objeto Nome da classe e do objeto Análise e Projeto OO com UML e Padrões| 3 Classe em UML Conta • 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 Análise e Projeto OO com UML e Padrões| 4 Visibilidade • Marcações de acesso podem ser usadas para especificar o tipo de acesso permitido aos atributos e operações + # - público protegido privado Análise e Projeto OO com UML e Padrões| 5 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, subsistemas e componentes implementam interfaces – provêem implementação para os métodos especificados em uma interface • Idealmente, interfaces deveriam prover contratos Análise e Projeto OO com UML e Padrões| 6 Exemplo: Independência do meio de armazenamento • Isolando as coleções de negócio de mudanças na coleção de dados correspondente CadastroContas <<interface>> RepositorioContas RepositorioContasBDR RepositorioContasOO Análise e Projeto OO com UML e Padrões| 7 Interface em UML: notação alternativa RepositorioContasBDR RepositorioContasOO RepositorioContas RepositorioContasXML Relacionamentos de realização Análise e Projeto OO com UML e Padrões| 8 Classes, Interfaces e Classes Abstratas Interfaces • Assinaturas dos métodos Classes • Atributos • Métodos Classes Abstratas • Atributos • Métodos • Assinatura de Métodos Análise e Projeto OO com UML e Padrões| 9 Componente em UML Arquivo fonte <<EXE>> Arquivo executável <<DLL>> Componente Interface do Componente Análise e Projeto OO com UML e Padrões| 10 Pacote • • • • 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 Análise e Projeto OO com UML e Padrões| 11 Subsistema em UML Realização Subsistema <<subsystem>> Interface Nome do subsistema Análise e Projeto OO com UML e Padrões| 12 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 Projeto <<subsystem>> Nome do subsistema Implementação Nome do componente Análise e Projeto OO com UML e Padrões| 13 Relacionamentos • Associação – simples – agregação – composição • Dependência • Generalização • Realização Análise e Projeto OO com UML e Padrões| 14 Associação • Relação estrutural entre classes Nome da associação Pessoa trabalha Empresa Associação Papéis Classe Pessoa Empresa Empregado Empregador Análise e Projeto OO com UML e Padrões| 15 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 Análise e Projeto OO com UML e Padrões| 16 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 Não permite compartilhamento Todo Parte Empresa Departamento Composição Análise e Projeto OO com UML e Padrões| 17 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 Análise e Projeto OO com UML e Padrões| 18 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 Análise e Projeto OO com UML e Padrões| 19 Multiplicidade • 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 Análise e Projeto OO com UML e Padrões| 20 Tipos de Multiplicidade • Não especificada • Exatamente um • Zero ou mais • Muitos (mesmo que 0..*) • Um ou mais • Zero ou um • Intervalo determinado • Valores múltiplos 1 0..* * 1..* 0..1 2..4 2, 4..6 Análise e Projeto OO com UML e Padrões| 21 Exemplo: Multiplicidade Multiplicidade Empresa 1 1..* Pessoa Análise e Projeto OO com UML e Padrões| 22 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 e acoplam o modelo Análise e Projeto OO com UML e Padrões| 23 Exemplo: Navegação Empresa 1 1..* Pessoa Navegação Análise e Projeto OO com UML e Padrões| 24 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) – Herança comportamental (behavioural inheritance) – Referência clássica: A behavioral notion of subtyping (Liskov & Wing) Análise e Projeto OO com UML e Padrões| 25 Generalização • Uma subclasse pode – adicionar atributos, operações e relacionamentos – redefinir operações herdadas • Tipos de herança: simples e múltipla Análise e Projeto OO com UML e Padrões| 26 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 Análise e Projeto OO com UML e Padrões| 27 Herança Múltipla • Classes herdando de mais de uma classe Mamífero AnimalVoador Herança múltipla Cachorro Gato Morcego Passarinho Gaviao Análise e Projeto OO com UML e Padrões| 28 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? Análise e Projeto OO com UML e Padrões| 29 Realização • Indica que um elemento serve como contrato que o outro deve seguir Exemplos: Classe Subsistema Componente Realização Caso de uso Realização de Caso de uso Análise e Projeto OO com UML e Padrões| 30 Exercício - Arquitetura • 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 Análise e Projeto OO com UML para Sistemas RT| 31 Diagramas UML • Diagramas de UML usados no curso (apresentados sob demanda) – Casos de uso – Classes – Sequência – Comunicação (Colaboração) – Pacotes – Estados – Componentes (usado em SOA) Análise e Projeto OO com UML e Padrões| 32