A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Orientação a Objetos com UML

Apresentações semelhantes


Apresentação em tema: "Orientação a Objetos com UML"— Transcrição da apresentação:

1 Orientação a Objetos com UML
Visão Geral de OO com UML

2 Elementos básicos de OO em UML
Objeto Classe Atributo Operação Interface Componente Pacote Subsistema Relacionamentos Vários tipos de diagrama Os conceitos acima serão vistos durante o restante deste módulo. Visão Geral de OO com UML

3 Objeto em UML : Conta Apenas o nome da classe contaSaque
Apenas o nome do objeto contaSaque : Conta Os exemplos acima mostram as diferentes formas em que um objeto pode ser modelado em UML. Nome da classe e do objeto Visão Geral de OO com UML

4 Classe em UML O que deve ser modelado por uma classe?
Conta O que deve ser modelado por uma classe? O que é abstração e modularidade? Conta Nome da Classe numero saldo Atributos estrutura O exemplo acima mostra como modelar uma classe em UML, identificando o seu nome, atributos e operações. A representação dos atributos e operações é opcional. Operações credito() debito() getSaldo() getNumero() comportamento Visão Geral de OO com UML

5 Visibilidade Marcações de acesso podem ser usadas para especificar o tipo de acesso permitido aos atributos e operações + público # protegido privado Visão Geral de OO com UML

6 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 Uma interface define um tipo especificando apenas a assinatura (parâmetros de entrada e saída) dos métodos pertencentes a este tipo. São definidos então o nome, tipos de argumento e resultado dos métodos de uma classe mas não o código para a implementação destes métodos. Classes implementam interfaces, isto é, classes provêem implementação para os métodos especificados em uma interface. Ao implementar uma interface, uma classe deve prover implementação para todos os métodos definidos na interface, a não ser que esta classe seja abstrata. Quando uma classe implementa uma interface, provendo implementação para todos os métodos da interface, dizemos que esta classe é do tipo da interface. Pense assim: quando uma classe é do tipo de uma interface, esta classe pode ser usada em qualquer lugar que estiver sendo esperado um objeto do tipo desta interface. Dois elementos são polimórficos se eles implementam a mesma interface. Visão Geral de OO com UML

7 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 As coleções de dados dependem do meio de armazenamento utilizado. Porém, seus serviços são implementados de acordo com uma interface comum, chamada interface negócio-dados. As coleções de negócio na verdade referenciam objetos do tipo dessa interface, assim, as coleções de dados podem ser alteradas ou substituídas sem afetar as coleções de negócio que usam seus serviços. RepositorioContasBDR RepositorioContasOO Visão Geral de OO com UML

8 Interface em UML: notação alternativa
RepositorioContasBDR RepositorioContasOO RepositorioContas RepositorioContasXML Uma interface é uma coleção de operações, usadas para especificar um serviço de uma classe ou componente. Relacionamentos de realização Visão Geral de OO com UML

9 Classes, Interfaces e Classes Abstratas
Assinaturas dos métodos Classes Atributos Métodos Classes Abstratas Atributos Métodos Assinatura de Métodos Classes - possibilita herança de todo o código Classes abstratas - herança de parte do código Interfaces - implementação parte do zero; herança só de comportamento Visão Geral de OO com UML

10 Componente em UML <<EXE>> <<DLL>> Arquivo
executável <<DLL>> Componente Arquivo fonte Interface do Componente Acima alguns exemplos de componentes são ilustrados em UML. Visão Geral de OO com UML

11 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 Um pacote representa um grupo de classes relacionadas, e possivelmente outros pacotes, de acordo com algum ponto de vista ou critério. O uso de pacotes para encapsular classes relacionadas favorece modularidade e consequentemente reuso em larga escala e manutenção, sendo assim essencial para estruturar sistemas orientados a objetos complexos. Quando o número de classes do seu sistema é muito alto, você deve organizá-las em pacotes para facilitar o seu entendimento Visão Geral de OO com UML

12 Subsistema em UML Realização Subsistema <<subsystem>>
Nome do subsistema Interface Subsistemas são representados em UML com um elemento de pacote com o estereótipo <<subsystem>>. Visão Geral de OO com UML

13 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 Subsistemas e componentes: ambos encapsulam um conjunto de comportamentos modelado por interfaces. Um componente provê a realização física de um conjunto de interfaces. Componentes são elementos de implementação. Um componente é um subsistema implementado. Nome do componente Visão Geral de OO com UML

14 Relacionamentos Associação Dependência Generalização Realização
simples agregação composição Dependência Generalização Realização Existem vários tipo de relacionamentos, como mostra o slide acima. Veremos a seguir cada um destes tipos de relacionamento. Visão Geral de OO com UML

15 Associação Relação estrutural entre classes Pessoa Empresa Pessoa
Nome da associação Pessoa trabalha Empresa Associação Papéis Associações são relacionamentos estruturais entre classes porque implicam em mudanças na estrutura das classes participantes do relacionamento (com o acréscimo de um atributo) para serem implementadas. Classe Pessoa Empresa Empregado Empregador Visão Geral de OO com UML

16 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 Toda agregação é uma associação. Agregação Visão Geral de OO com UML

17 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 Toda composição é uma agregação e, consequentemente, uma associação. Empresa Departamento Composição Visão Geral de OO com UML

18 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 Cartão Criar objetos, recebê-los como parâmetros ou retorná-los como resultado de algum método normalmente implica em uma dependência com a classe do objeto. lerCartao (cartao) Relacionamento de Dependência Visão Geral de OO com UML

19 Dependência Pode existir relacionamento de dependência entre vários elementos de UML Classe Cliente Fornecedor Componente Cliente Fornecedor Pacote PacoteCliente PacoteFornecedor Dependência Fonte: Rational Visão Geral de OO com UML

20 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 Multiplicidade indica, numa associação, quantos objetos de uma classe podem estar associados com uma instância da outra classe participante da associação. Visão Geral de OO com UML

21 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 O * pode ser substituído por um ‘n’ em algumas ferramentas CASE para indicar muitos. 2..4 2, 4..6 Visão Geral de OO com UML

22 Exemplo: Multiplicidade
Pessoa Empresa 1 1..* 1 instância da classe Empresa está associada a 1 ou mais instâncias de Pessoa (1 empresa possui 1 ou mais pessoas ligadas a ela). 1 instância da classe Pessoa está relacionada a apenas 1 instância da classe Empresa (1 pessoa está ligada a apenas 1 empresa). Visão Geral de OO com UML

23 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 A navegabilidade indica que instâncias do relacionamento podem “enxergar” as outras instâncias. Visão Geral de OO com UML

24 Exemplo: Navegação Pessoa Empresa Navegação 1 1..*
As instâncias de Empresa conhecem as pessoas que fazem parte delas, mas, dada uma determinada pessoa (uma intância da classe Pessoa), ela não pode acessar, diretamente, a empresa da qual faz parte. Navegação Visão Geral de OO com UML

25 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) Diferentes classes geralmente possuem características e comportamento (modelados através de atributos e métodos) em comum. Para evitarmos escrever o mesmo código diversas vezes, foi criado um mecanismo para reaproveitar essas similaridades. Herança é este mecanismo. O relacionamento de generalização ou especialização indica que objetos do tipo filho podem ser usados no lugar de objetos do tipo pai. Generalização é mais conhecido como relacionamento “é um tipo de” (is-a- kind-of). Uma subclasse (classe filha) herda a estrutura e o comportamento da sua superclasse (classe pai). Generalização é o nome do relacionamento e herança, o nome do mecanismo. Existem dois tipo de herança: simples e múltipla, apresentados a seguir. Visão Geral de OO com UML

26 Generalização Uma subclasse pode Tipos de herança: simples e múltipla
adicionar atributos, operações e relacionamentos redefinir operações herdadas Tipos de herança: simples e múltipla Além de herdar a estrutura e comportamento da sua classe pai, uma classe filha pode adicionar atributos, operações e relacionamentos em sua definição, e até redefinir operações herdadas. Visão Geral de OO com UML

27 Herança Simples Classes herdando de apenas uma outra classe Figura
cor largura da linha desenhar() girar(graus) selecionar() Superclasse (pai) Relacionamento de Generalização Retângulo vertices desenhar() diagonal() Círculo raio centro desenhar() Subclasses Quadrado Visão Geral de OO com UML

28 Herança Múltipla Classes herdando de mais de uma classe Herança
Mamífero AnimalVoador Herança múltipla Cachorro Morcego Passarinho Gaviao Gato Visão Geral de OO com UML

29 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? São problemas como esses que desaconselham o uso de herança múltipla, pois essas indefinições tornam o código confuso, ambíguo e passível de erros. Visão Geral de OO com UML

30 Realização Indica que um elemento serve como contrato que o outro deve seguir Exemplos: Subsistema Componente Classe Realização Caso de uso Realização de Caso de uso Visão Geral de OO com UML

31 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 Visão Geral de OO com UML

32 Mecanismos adicionais de UML
Estereótipos Notas Propriedades (Tagged values) Restrições OCL (Object Constraint Language) Por fim, veremos alguns dos mecanismos adicionais de UML: estereótipos, notas, rótulos e restrições. Visão Geral de OO com UML

33 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>> Visão Geral de OO com UML

34 Estereótipos - Exemplo
Classes de fronteira: <<boundary>> ClasseFronteira ClasseFronteira Veremos este e outros estereótipos padrão de UML no decorrer do curso. Visão Geral de OO com UML

35 Notas Anotação utilizada para adicionar informação a diagramas
Pode ser afixionada a qualquer elemento de UML Pode ser ligada a um elemento com uma linha tracejada Exemplo: Esta classe é uma abstração do dispositivo de hardware que será usado para ler efetivamente as informações do cartão magnético. LeitorCartao Visão Geral de OO com UML

36 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) Você pode criar suas próprias propriedades Cliente {persistence} LeitorCartao {location=server} Visão Geral de OO com UML

37 Restrições Usadas para criação de novas regras sobre elementos do modelo Ou modificação de regras existentes Pessoa funcionários Empresa 1..* 1 {subset} diretores 3 1 Visão Geral de OO com UML

38 OCL (Object Constraint Language)
É 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 Empresa context Empresa inv diretoresNecessarios: self.diretor->size() == 3 OCL pode ser usada para substituir restrições gráficas UML e também para definir restrições sobre as operações de uma classe. Invariantes podem ser definidos para classes com o objetivo de evitar instâncias com valor(es) inválido(s) em algum(ns) atributo(s). Pré- e pós-condições são usadas para definir, respectivamente, as restrições sobre a chamada de uma operação e qual o estado posterior do objeto após a execução da operação. Visão Geral de OO com UML

39 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) Visão Geral de OO com UML

40 Processos e Padrões Orientação a objetos e DBC são paradigmas promissores, mas Reuso Extensibilidade Escalabilidade ... exigem Processos Técnicas Disciplina Experiências anteriores de sucesso (padrões)!


Carregar ppt "Orientação a Objetos com UML"

Apresentações semelhantes


Anúncios Google