69
Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Fluxo de Análise e Projeto Engenharia de Software Alexandre Vasconcelos, André Santos, Augusto Sampaio, Hermano Moura, Paulo Borba

Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Embed Size (px)

Citation preview

Page 1: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Engenharia de Software

Alexandre Vasconcelos, André Santos, Augusto

Sampaio, Hermano Moura, Paulo Borba

Page 2: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Tópicos

1 - Visão Geral de Orientação a Objetos e UML

2 - Visão Geral do Fluxo de Análise e Projeto

3 - Atividade Analisar de Caso de Uso

4 - Atividade Projetar Arquitetura

5 - Atividade Projetar Caso de Uso

6 - Atividade Projetar Subsistema

7 - Atividade Projetar Classe

Aspectos de Concorrência, Distribuição e Projeto de Base de Dados não serão abordados

Page 3: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Referências

• Descrição do fluxo de análise e projeto – Link para o RUP a partir da página do curso

• Capítulos 8 e 9 do livro The Unified Software Development Process– Uma observação importante é que o CD do RUP

apresenta um único fluxo para análise e projeto, enquanto no livro são dois fluxos independentes

• The Unified Modeling Language User Guide– Introdução e consultas eventuais à notação de UML

Page 4: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

1 - Visão Geral de Orientação a Objetos e UML

Page 5: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

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

Page 6: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Princípios básicos de OO

• Abstração

• Encapsulamento

• Modularidade

• Herança

Page 7: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Abstração

• Construção de um modelo para representação de uma realidade

• Concentração nas características essenciais, gerenciando complexidade

Page 8: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Abstração - Objetos do mundo real

cliente

gado

automóvel

Page 9: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Abstração - construção de um modelo para a realidade

Automovelmodelopreco...atualizaPreco()...

Page 10: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Encapsulamento

• Elimina dependência de implementação, escondendo-a do cliente

• Uso de interfaces

• Mudanças internas não têm impacto sobre os clientes

Page 11: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Encapsulamento - Objeto televisão

Page 12: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Número Saldo

21.342-7 875,32

Crédito

Débito

Encapsulamento: Objeto conta bancária

Page 13: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Modularidade

• Decomposição de um problema em pequenos pedaços, para gerenciar complexidade

• Cada conceito independente deve ser representado por um módulo

• Construção de módulos desacoplados

• Dividir para conquistar ...

Page 14: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Modularidade

Page 15: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Herança

• Criação de hierarquias de abstração

• Permite ordenar hierarquias relacionadas

• Base conceitual para permitir extensibilidade do software

• Reuso de código e comportamento (subtipo)

Page 16: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Herança

Figura

RetânguloTriângulo

Polígono

ContaEspecialPoupança

Conta

Page 17: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Herança: Objeto poupança

Número Saldo

21.342-7 875,32

Crédito

Débito

R. Juros

Page 18: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Conceitos básicos de OO

• Objeto• Classe• Interface• Componente• Pacote• Subsistema• Relacionamentos

Page 19: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

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

Page 20: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Classes de Objetos

• Quantas classes temos aqui?

Fonte: Rational

Page 21: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Classe de Contas Bancárias

Page 22: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Classe em UML

Conta

Nome da Classe Conta

Atributos

Operações

numerosaldo

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

estrutura

comportamento

Page 23: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

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

Page 24: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Objeto em UML

: Conta

ContaSaque :Conta

ContaSaqueApenas o nome daclasse

Apenas o nome doobjeto

Nome da classe e doobjeto

Page 25: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Objeto em UML

: ContaDeposito

numero = 23.025-1saldo = 500,00

: ContaSaque

numero = 21.342-7saldo = 875,32

Conta

numerosaldo

Valor do Atributo

Objeto

Page 26: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Polimorfismo

• Escondendo diferentes implementações através de uma única interface

Manufacturer BManufacturer CManufacturer A

Fonte: Rational

interface bem definida

Page 27: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Interface

• Interfaces formalizam polimorfismo

• Interfaces permitem o uso de arquitetura baseada em componentes

Relacionamento de realização

Círculo

Pirâmide

Cubo

DesenharMoverModificarTamanhoRotacionar

<<interface>>

Forma

Fonte: Rational

Page 28: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Exemplo: Repositório de Contas

ListaContas

RepositorioBDR

RepositorioBDOO

IncluirRemovercreditodebito

<<interface>>

Repositorio

Fonte: Rational

Page 29: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

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

Page 30: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Interface em UMLCírculo

Pirâmide

Cubo

DesenharMoverModificarTamanhoRotacionar

RepresentaçãoCanônica

Representaçãocom ícone

Forma

<<interface>> Forma

Círculo

Pirâmide

Cubo

Fonte: Rational

Page 31: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

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– devem ser implementados em subclasses não

abstratas

Page 32: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

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

Page 33: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

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

Page 34: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Componente em UML

Source FileName

<<EXE>>Executable

Name

<<DLL>>Component

Name

Component Interface

Page 35: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Pacote

• Mecanismo para organizar elementos em grupos

• Facilita entendimento do sistema• Favorece modularidade e reuso

em larga escala

• Essencial para estruturar sistemas complexos

Package Name

Page 36: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

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

Page 37: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Subsistema

• União de– pacote (agrupa outros elementos)– classe (comportamento)

• Realiza uma ou mais interfaces, que definem o seu comportamento

Page 38: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Subsistema em UML

Subsistema

Interface

Realização

<<subsystem>>

Subsystem Name

Page 39: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

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

Page 40: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Relacionamentos

• Associação– simples– agregação– composição

• Dependência

• Generalização

• Realização

Page 41: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Associação

• Relação estrutural entre classes

Pessoa

Pessoa Empresa

Empresa

trabalha

Associação

Nome da associação

Classe

Empregado Empregador

Papéis

Page 42: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Agregação

• Tipo especial de associação• Relacionamento todo-parte• O todo possui um nível de abstração maior que a parte

DepartamentoEmpresa

Todo Parte

Agregação

Page 43: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

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

DepartamentoEmpresa

Todo Parte

Composição

Page 44: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

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) Relacionamentode Dependência

Page 45: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Dependência

• Pode existir relacionamento de dependência entre vários elementos de UML

Classe

Pacote

PacoteFornecedor

Componente

Cliente Fornecedor

FornecedorCliente

PacoteClienteDependência

Fonte: Rational

Page 46: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Exercício - Relacionamentos

• Modele os relacionamentos existentes entre as classes abaixo:

Universidade Departamento

Estudante Disciplina Instrutor

Page 47: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

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

Page 48: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

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

Page 49: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Exemplo: Multiplicidade

PessoaEmpresa

Multiplicidade

1..*1

Page 50: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

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

Page 51: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Exemplo: Navegação

PessoaEmpresa

Navegação

1..*1

Page 52: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Exercício - Multiplicidade

• Acrescente a multiplicidade nos relacionamentos encontrados no exercício anterior.

Page 53: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

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)

Page 54: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Generalização

• Uma subclasse pode – adicionar atributos, operações e

relacionamentos– redefinir operações herdadas

• Tipos de herança: simples e múltipla

Page 55: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Herança Simples

• Classes herdando de apenas uma outra classe

Círculoraiocentro

desenhar()

Retânguloverticesdesenhar()diagonal()

Figuracorlargura da linhadesenhar()girar(graus)selecionar()

Subclasses

Superclasse(pai)

Relacionamentode Generalização

Quadrado

Page 56: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Herança Múltipla

• Classes herdando de mais de uma classe

ObjetoVoador Animal

Herançamúltipla

Avião Helicóptero Pássaro Lobo Cavalo

Fonte: Rational

Page 57: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

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?

Page 58: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Realização

Realização

SubsistemaComponenteClasse

Caso de uso Realização de Caso de uso

• Indica que um elemento serve como contrato que o outro deve seguir

Exemplos:

Page 59: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Exercício - Generalização

• Modele a hierarquia de classes de uma aplicação bancária com contas correntes (contas comuns, sem cheque especial), poupanças e contas especiais (contas com certo crédito).

Page 60: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Mecanismos adicionais de UML

• Estereótipos

• Notas

• Propriedades (Tagged values)

• Restrições

Page 61: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

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

Page 62: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Estereótipos - Exemplo

• Classes de fronteira:

ClasseFronteira

<<boundary>>ClasseFronteira

Page 63: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Notas

• Anotação utilizada para adicionar informação a diagramas– Pode ser associada 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.

Page 64: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

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}

Page 65: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Paradigma de Orientação a Objetos

• Benefícios– Favorece modularidade, extensibilidade,

compatibilidade e reuso, suportando a evolução do sistema

– Aproxima-se do mundo real– Uso do mesmo conceito em todas as fases

do desenvolvimento

Page 66: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

Respostas dos Exercícios

Page 67: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

RelacionamentosResposta do exercício

Universidade Departamento

Estudante Disciplina Instrutor

vinculado

inscrito ministra

alocado no

coordena

Page 68: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

MultiplicidadeResposta do exercício

Universidade Departamento

Estudante Disciplina Instrutor

vinculado

inscrito ministra

alocado no

coordena

* * * 1..*

0..11..*

0..1

1..*1..*

1..*1

1..*

* 1..*

Page 69: Fluxo de Análise e Projeto Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados. Engenharia de Software Alexandre Vasconcelos, André Santos,

Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.

Fluxo de Análise e Projeto

GeneralizaçãoResposta do exercício

Conta-corrente

Conta

Poupança

Conta especial