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

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

Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

Apresentações semelhantes


Apresentação em tema: "Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos."— Transcrição da apresentação:

1

2 Visão Geral de Orientação a Objetos com UML

3 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 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 Foco em aspectos estruturais: diagramas de classes

4 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 3 Princípios básicos de OO Representação agrupa dados e operações relacionadas (objetos e classes) Dados usualmente protegidos contra acesso indevido: objetos se comunicam através de mensagens Pela própria natureza, objetos podem ser distribuídos Potencialmente, embutem características como ­ Abstração ­ Encapsulamento ­ information hiding ­ modularidade ­ Extensibilidade (herança) ­ Polimorfismo

5 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 4 Abstração cliente animal automóvel mapa

6 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 5 Abstração Construção de um modelo para representação de uma realidade Concentração nas características essenciais, gerenciando complexidade

7 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 6 Abstração Construção de um modelo para a realidade Automovel modelo preco... atualizaPreco()...

8 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 7 Encapsulamento e Information hiding Exemplos de encapsulamento usados no nosso “dia-a-dia”

9 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 8 Encapsulamento Agrupa elementos relacionados em uma unidade sintática (cápsula, módulo, classe, pacote,...)

10 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 9 Information hiding Elimina dependência de implementação, escondendo-a do cliente Uso de interfaces Mudanças internas não têm impacto sobre os clientes Implementado via mecanismos de controle de visibilidade ­ Ex.: elementos privados em classes Java

11 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 10 Número Saldo 21.342-7 875,32 Crédito Débito Exemplo: objeto conta bancária Encapsulamento agregação de elementos Information hiding ocultamento de elementos

12 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 11 Modularidade

13 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 12 Modularidade Decomposição de um problema em partes menores, para gerenciar complexidade Cada conceito independente deve ser representado por um módulo Construção de módulos desacoplados e coesos Dividir para conquistar...

14 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 13 Extensibilidade (Herança) Figura RetânguloTriângulo Polígono ContaEspecialPoupança Conta

15 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 14 Extensibilidade (Herança) Criação de hierarquias de abstração Base conceitual para permitir extensibilidade do software Reuso de código e comportamento (subtipo) Herança comportamental (behavioural inheritance) Referência clássica: A behavioral notion of subtyping (Liskov & Wing)

16 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 15 Exemplo: objeto poupança Número Saldo 21.342-7 875,32 Crédito Débito R. Juros

17 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 16 Polimorfismo Linguagens polimórficas permitem que valores e identificadores (variáveis e operações) possuam mais de um tipo Há vários tipos de polimorfismo: ­ Paramétrico, de inclusão, overloading e coerção Referência clássica: On understanding types, data abstraction and polymorphism (Cardelli & Wegner)

18 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 17 Polimorfismo de inclusão Herança define polimorfismo ­ Objeto da subclasse usado no lugar do objeto da classe ­ Exemplo: uso de poupança em contextos onde contas são esperadas Interfaces também definem polimorfismo ­ Reuso de tipo, mas não de código

19 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 18 Polimorfismo real ou paramétrico Forma mais pura de polimorfismo O mesmo objeto ou operação usada uniformemente em diferentes contextos (tipos só determinados em tempo de execução) Exemplo: generics em Java 1.5

20 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 19 Polimorfismo via overloading e coerção Overloading permite o uso do mesmo nome para elementos semânticos ­ Exemplo: métodos ou construtores em Java Coerção é semelhante, mas inclui conversão implícita de tipos ­ Exemplo: soma envolvendo um operando inteiro e outro real

21 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 20 Conceitos básicos de OO Objeto Classe Atributo Operação Interface Componente Pacote Subsistema Relacionamentos

22 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 21 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 donut

23 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 22 Objeto em UML : Conta contaSaque : Conta contaSaque Apenas o nome da classe Apenas o nome do objeto Nome da classe e do objeto

24 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 23 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

25 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 24 Classe de Contas Bancárias

26 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 25 Classes de Objetos Quantas classes temos aqui? Fonte: Rational

27 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 26 Classe em UML Conta Nome da Classe Conta Atributos Operações numero saldo credito() debito() getSaldo() getNumero() estrutura comportamento

28 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 27 Atributo Propriedades de um objeto Armazenam estado dos objetos número saldo

29 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 28 Atributo em UML : Conta numero = 23.025-1 saldo = 500,00 : Conta numero = 21.342-7 saldo = 875,32 Conta numero: String saldo: Real Valor do Atributo Objeto

30 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 29 Operação Modela comportamento das classes Serviços que os objetos oferecem a outros objetos número saldo creditardebitar getNumero

31 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 30 Operação em UML Conta credito(valor:Real) debito(valor:Real) getSaldo(): Real getNumero(): String Especificação das operações

32 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 31 Classes: visibilidade Marcações de acesso podem ser usadas para especificar o tipo de acesso permitido aos atributos e operações + público # protegido - privado

33 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 32 Visibilidade no Rose público privado protegido

34 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 33 Interface Interfaces formalizam polimorfismo com implementações independentes Aumentam o nível de reusabilidade Viabilizam o uso de componentes Reduzem o esforço de evolução da aplicação

35 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 34 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

36 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 35 Exemplo: Independência do meio de armazenamento Isolando as coleções de negócio de mudanças na coleção de dados correspondente RepositorioContasBDRRepositorioContasOOCadastroContas > RepositorioContas

37 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 36 Interface em UML: notação alternativa RepositorioContas Relacionamentos de realização RepositorioContasOO RepositorioContasXMLRepositorioContasBDR

38 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 37 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 ­ subclasses não abstratas são obrigadas a fornecer uma implementação para eles

39 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 38 Classes, Interfaces e Classes Abstratas Classes Atributos Métodos Classes Abstratas Atributos Métodos Assinatura de Métodos Interfaces Assinaturas dos métodos

40 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 39 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

41 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 40 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

42 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 41 Componente em UML Interface do Componente Arquivo fonte > Componente > Arquivo executável

43 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 42 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

44 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 43 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 auto- contida uma classe é Sistemas devem ter baixo acoplamento e alta coesão ­ bom para manutenção

45 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 44 Subsistema União de ­ pacote (agrupa outros elementos) ­ classe (comportamento) Realiza uma ou mais interfaces, que definem o seu comportamento

46 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 45 Subsistema em UML Subsistema Interface Realização > Nome do subsistema

47 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 46 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 Implementação Nome do componente > Nome do subsistema

48 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 47 Relacionamentos Associação ­ simples ­ agregação ­ composição Dependência Generalização Realização

49 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 48 Associação Relação estrutural entre classes Pessoa Empresa trabalha Associação Nome da associação Classe Empregado Empregador Papéis

50 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 49 Agregação Tipo especial de associação Relacionamento todo-parte O todo possui um nível de abstração maior que a parte DepartamentoEmpresa TodoParte Agregação

51 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 50 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 DepartamentoEmpresa TodoParte Composição

52 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 51 Associação x Agregação x Composição Como você modelaria: ­ Dependente e Funcionário? ­ Pedido e Item do pedido? ­ Funcionário e Cartão de ponto? ­ Carro, Roda, Direção e Carburador? Na dúvida, use agregação! Na dúvida, use associação!

53 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 52 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 CartãoLeitoraCartao lerCartao (cartao) Relacionamento de Dependência

54 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 53 Dependência Pode existir relacionamento de dependência entre vários elementos de UML Classe Pacote PacoteFornecedor Componente FornecedorCliente PacoteCliente Dependência Fonte: Rational FornecedorCliente

55 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 54 Exercício - Relacionamentos Modele os relacionamentos existentes entre as classes abaixo: UniversidadeDepartamento AlunoDisciplina Professor Curso Turma

56 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 55 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

57 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 56 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

58 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 57 Exemplo: Multiplicidade Pessoa Empresa Multiplicidade 1..*1

59 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 58 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

60 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 59 Exemplo: Navegação Pessoa Empresa Navegação 1..*1

61 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 60 Exercício - Multiplicidade Acrescente a multiplicidade nos relacionamentos encontrados no exercício anterior.

62 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 61 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)

63 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 62 Generalização Uma subclasse pode ­ adicionar atributos, operações e relacionamentos ­ redefinir operações herdadas Tipos de herança: simples e múltipla

64 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 63 Herança Simples Classes herdando de apenas uma outra classe Círculo raio centro desenhar() Retângulo vertices desenhar() diagonal() Figura cor largura da linha desenhar() girar(graus) selecionar() Subclasses Superclasse (pai) Relacionamento de Generalização Quadrado

65 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 64 Herança Múltipla Classes herdando de mais de uma classe Mamífero AnimalVoador Herança múltipla Cachorro GatoMorcegoPassarinho Gaviao

66 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 65 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?

67 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 66 Realização Subsistema Classe Caso de uso Indica que um elemento serve como contrato que o outro deve seguir Exemplos: Componente Realização de Caso de uso

68 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 67 Exercício - Arquitetura Modele um diagrama de classes, com todos os relacionamentos, de uma aplicação bancária, envolvendo: ­ Classes Conta, Poupanca e Cliente, com as respectivas coleções ­ Fachada ­ Interface

69 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 68 Mecanismos adicionais de UML Estereótipos Notas Propriedades (Tagged values) Restrições OCL (Object Constraint Language)

70 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 69 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 >

71 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 70 Estereótipos - Exemplo Classes de fronteira: ClasseFronteira > ClasseFronteira

72 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 71 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: LeitoraCartao Esta classe é uma abstração do dispositivo de hardware que será usado para ler efetivamente as informações do cartão magnético.

73 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 72 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} LeitoraCartao {location=server}

74 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 73 Restrições Pessoa Empresa {subset} Funcionário Diretor 1..* 1 31 Usadas para criação de novas regras sobre elementos do modelo Ou modificação de regras existentes

75 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 74 OCL (Object Constraint Language) Empresa É 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

76 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 75 Diagramas UML Diagramas usados no curso serão apresentados sob demanda ­ Seqüência ­ Colaboração ­ Classes (já apresentado) ­ Pacotes ­ Estados ­ Estrutura

77 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 76 Paradigma de Orientação a Objetos Favorece modularidade, manutenibilidade e reuso Aproxima-se do mundo real Uso do mesmo conceito em várias fases do desenvolvimento Mas não é adequado para capturar requisitos, planejar o projeto e realizar testes funcionais

78 Respostas dos Exercícios

79 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 78 Relacionamentos Resposta do exercício Universidade Departamento Aluno Disciplina Professor Curso Turma

80 Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 79 Multiplicidade Resposta do exercício Universidade Departamento Aluno Disciplina Professor Curso Turma 1..3 ** * 1 * * 1 1 * *1 1 1 * *


Carregar ppt "Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos."

Apresentações semelhantes


Anúncios Google