• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2022

Share "Visão Geral de Orientação a Objetos com UML"

Copied!
79
0
0

Texto

(1)

Visão Geral de

Orientação a Objetos com

UML

(2)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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

(3)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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

(4)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Abstração

cliente

animal

automóvel

mapa

(5)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Abstração

Construção de um modelo para representação de uma realidade Concentração nas características essenciais, gerenciando

complexidade

(6)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Abstração

Construção de um modelo para a realidade

Automovel modelo

preco ...

atualizaPreco()

...

(7)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Encapsulamento e Information hiding

Exemplos de encapsulamento

usados no nosso “dia-a-dia”

(8)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Encapsulamento

Agrupa elementos relacionados em uma unidade sintática (cápsula,

módulo, classe, pacote, ...)

(9)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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

(10)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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

(11)

O O e U M L | 1 1 Q u a lit i S o ft w a re P ro c e ss e s M o d u la ri d a d e

(12)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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 ...

(13)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Extensibilidade (Herança)

Figura

Retângulo Triângulo

Polígono

ContaEspecial Poupança

Conta

(14)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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)

(15)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Exemplo: objeto poupança

Número Saldo

21.342-7 875,32

Crédito

Débito

R. Juros

(16)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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)

(17)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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

(18)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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

(19)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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

(20)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Conceitos básicos de OO

Objeto Classe Atributo Operação Interface

Componente Pacote

Subsistema

Relacionamentos

(21)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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

(22)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Objeto em UML

: Conta

contaSaque : Conta

contaSaque Apenas o nome da

classe

Apenas o nome do objeto

Nome da classe e do

objeto

(23)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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

(24)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Classe de Contas Bancárias

(25)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Classes de Objetos

Quantas classes temos aqui?

Fonte: Rational

(26)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Classe em UML

Conta

Nome da Classe Conta Atributos

Operações

numero saldo

credito() debito() getSaldo() getNumero()

estrutura

comportamento

(27)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Atributo

Propriedades de um objeto

Armazenam estado dos objetos

número

saldo

(28)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Atributos: notação

Atributos podem ser identificados apenas com nomes

Atributos podem ter seus tipos (ou classes) especificados e valores padrão definidos

Parede altura : real largura : real

Conta

numero

Saldo

(29)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Objetos com atributos valorados

: Conta

numero = 23.025-1 saldo = 500,00

: Conta

numero = 21.342-7 saldo = 875,32

Conta

numero saldo

Valor do Atributo

Objeto

• Atributos dos objetos são valorados

na construção de cenários de execução

(30)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Operação

Modela

comportamento das classes

Serviços que os objetos

oferecem a

outros objetos

número saldo

creditar debitar

getNumero

(31)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Operação em UML

Conta

credito() debito() getSaldo() getNumero()

Especificação das operações

Como para os atributos, pode-se especificar uma operação apenas com seu nome

Pode-se também especificar a assinatura da

operação: seus parâmetros com os tipos, e o tipo

de retorno

(32)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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.

Visibilidade no Rose

Pe s s o a no m e : Strin g cpf : Strin g

tele fo n e : Strin g incluir()

con s u lta r() atu a lizar() público

privado

protegido

(34)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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.

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.

Exemplo: Independência do meio de armazenamento

Isolaando as coleções de negócio de mudanças na coleção de dados correspondente

RepositorioContasBDR RepositorioContasOO CadastroContas

<<interface>>

RepositorioContas

(37)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Interface em UML:

notação alternativa

RepositorioContas

Relacionamentos de realização

RepositorioContasOO

RepositorioContasXML

RepositorioContasBDR

(38)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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.

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.

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.

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.

Componente em UML

Interface do Componente

Arquivo fonte <<DLL>>

Componente

<<EXE>>

Arquivo

executável

(43)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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.

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.

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.

Subsistema em UML

Subsistema

Interface

Realização

<<subsystem>>

Nome do subsistema

(47)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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

<<subsystem>>

Nome do

subsistema

(48)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Relacionamentos

Associação

­ simples

­ agregação

­ composição

Dependência

Generalização

Realização

(49)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Associação

Relação estrutural entre classes

Pessoa

Pessoa Empresa

Empresa

trabalha

Associação Nome da associação

Classe

Empregado Empregador

Papéis

(50)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Agregação

Tipo especial de associação Relacionamento todo-parte

O todo possui um nível de abstração maior que a parte

Departamento Empresa

Todo Parte

Agregação

(51)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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

Departamento Empresa

Todo Parte

(52)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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.

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ão LeitoraCartao

lerCartao (cartao) Relacionamento

de Dependência

(54)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Dependência

Pode existir relacionamento de

dependência entre vários elementos de UML

Classe

Pacote

PacoteFornecedor

Componente

Fornecedor Cliente

PacoteCliente

Dependência

Fonte: Rational

Fornecedor

Cliente

(55)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Exercício - Relacionamentos

Modele os relacionamentos

existentes entre as classes abaixo:

Universidade Departamento

Aluno Disciplina Professor

Curso

Turma

(56)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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.

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.

Exemplo: Multiplicidade

Pessoa Empresa

Multiplicidade

1..*

1

(59)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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.

Exemplo: Navegação

Pessoa Empresa

Navegação

1..*

1

(61)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Exercício - Multiplicidade

Acrescente a multiplicidade nos

relacionamentos encontrados no

exercício anterior.

(62)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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.

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.

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.

Herança Múltipla

Classes herdando de mais de uma classe

Mamífero AnimalVoador

Herança múltipla

Cachorro Gato Morcego Passarinho Gaviao

(66)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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.

Realização

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.

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.

Mecanismos adicionais de UML

Estereótipos Notas

Propriedades ( Tagged values)

Restrições

(70)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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>>

(71)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Estereótipos - Exemplo

Classes de fronteira:

ClasseFronteira

<<boundary>>

ClasseFronteira

(72)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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.

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.

Restrições

Pessoa Empresa

{subset}

Funcionário

Diretor

1..* 1

3 1

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.

Diagramas UML

Diagramas usados no curso serão apresentados sob demanda

­ Seqüência

­ Colaboração

­ Classes (já apresentado)

­ Pacotes

­ Estados

­ Estrutura

(76)

Copyright ©2006 Qualiti. Todos os direitos reservados.

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

(77)

Respostas dos Exercícios

(78)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Relacionamentos

Resposta do exercício Universidade Departamento

Aluno Disciplina

Professor Curso

Turma

(79)

Copyright ©2006 Qualiti. Todos os direitos reservados.

Multiplicidade

Resposta do exercício Universidade Departamento

Aluno Disciplina

Professor Curso

Turma

1..3

*

* 1

*

1

1

*

* 1

1 1

*

*

Referências

Documentos relacionados

Pela Decreto do Parlamento Nacional n.º 45/III que VETO os investimentos privados vão poder beneficiar de isenção em 100% do imposto sobre vendas; isenção em 100% do imposto sobre os

Assim, este estudo buscou identificar a adesão terapêutica medicamentosa em pacientes hipertensos na Unidade Básica de Saúde, bem como os fatores diretamente relacionados

Se você vai para o mundo da fantasia e não está consciente de que está lá, você está se alienando da realidade (fugindo da realidade), você não está no aqui e

Estaca de concreto moldada in loco, executada mediante a introdução no terreno, por rotação, de um trado helicoidal contínuo. A injeção de concreto é feita pela haste

Promovido pelo Sindifisco Nacio- nal em parceria com o Mosap (Mo- vimento Nacional de Aposentados e Pensionistas), o Encontro ocorreu no dia 20 de março, data em que também

Vários trabalhos têm demonstrado que a mortali- dade por síndrome ascítica é maior nos machos do que nas fêmeas, acreditando-se que este fato esteja relacionado com a maior

1º - HOMOLOGAR o afastamento da Professora do Magistério Superior LUCIANA DA SILVA MORAES SARDEIRO, com ônus limitado, matrícula Siape nº 2406953, lotada no Campus de Capanema,

Este novo banco terá sua sede em Xangai na China e tem como intuito financiar projetos de infraestrutura e desenvolvimento sustentável, não apenas para os países