Diagrama de Classes (Análise de casos de uso)tacla/UML/0070-DiagClasses-slides1.pdf · Estrutura...

40
Diagrama de Classes (Análise de casos de uso) Prof. Cesar Augusto Tacla

Transcript of Diagrama de Classes (Análise de casos de uso)tacla/UML/0070-DiagClasses-slides1.pdf · Estrutura...

Diagrama de Classes(Análise de casos de uso)

Prof. Cesar Augusto Tacla

Diagrama de classes

�Estrutura do sistema (classes)�Representação estática da colaboração

(relações)

�Relações�associação (mais comum)�agregação (um tipo de associação),�generalização/especialização�dependência

Associação

Professor

Disciplina

leciona

Objetos de uma classe se associam a objetos de outra

Nome da associação

Multiplicidade das relações

����������� � � � �����������

����������������� � � ���������

������������

� ������������

���������������

��!����!����

� �� � ��������

Multiplicidade: exemplo

Professor

Disciplina

leciona 1..* 1

João

José

Maria

Matemática

Física

quim

História

Multiplicidade: exercício

João

José

Maria

FIAT AXY8704

FUSCA BHY9910

CORCEL ATT1020

Qual a representação em UML para o caso seguinte?

Pessoa Carro

Multiplicidade: exemplo

Qual a representação em UML para o caso seguinte?Faça um exemplo com instâncias que ilustre a representação.

Uma pessoa participa de no máximo 3 projetos, mas pode não participar.

Um projeto pode ter vários participantes e somente pode começa a existir quando o primeiro participante é designado.

Navegabilidade: unidirecional

Professor

Disciplina

leciona

Não navegável

navegável

Navegabilidade: bidirecional

navegável navegável

Professor

Disciplina

leciona

Direção de leitura

Navegabilidade: não especificada

Professor

Disciplina

leciona

Nãoespecificada

Nãoespecificada

Papéis

Empresa

Pessoa

Trabalha ou emprega ?

Qual a interpretação desejada?

pessoa trabalha para Empresa ouempresa trabalha (presta um serviço) para Pessoa;

Trabalha Emprega (contrata)

empresa emprega Pessoa oupessoa emprega (contrata) Empresa

Papéis

Empresa

Pessoa

empregador empregado

Papel de empresa Papel de

pessoa

Uso de papéis pode suprimir ambigüidades

Levantamento das associações

�Examinar�Regras do negócio, �Modelo do domínio�Requisitos funcionais�Casos de uso�Diagramas de interação

Associações reflexiva

Objetos de uma classe se relacionam com objetos da mesma classe

Associação reflexiva: exemplo 1

Pessoas

Pessoa

0..*

filho

pai 0..1

Mário

José

Maria

Carlos

Filho(a) pai

Mário é pai de Maria

Quem é o pai de Mário?

Associação reflexiva: exemplo 2

João

Maria

José

Mário

Gerente

subordinado João é gerente de Maria e José

Empregado 0..*

gerente

subordinado

1

José é gerente de Mário

Quem é gerente de João?

Classes associativas

Quando uma relação associativa possui atributos próprios pode ser transformada em classe.

Classes associativas: características

�Frequentes em relações de multiplicidade *:*

�Não é nomeada: somente a classe associativa

�Classes associativas podem estar relacionadas a outras classes.

Classes associativas: exercício

� Uma companhia aérea oferece vôos�Número do vôo�Data e horário de partida�Duração

� Passageiros tem programa de fidelidade�Número do cartão de fidelidade�Nome�Sobrenome

� Passageiros recebem milhas por vôo função da duração

Levantamento de associações

�Exemplo: �regras do negócio de uma biblioteca�“um aluno pode emprestar no máximo quatro

obras”

Aluno

Livro

Empresta 0..4 0..1

Levantamento das associaçõessd análise casos de uso

:meteorologista:IUConv ersao :CtrlConv ersao :Historico :Conv ersaoCF

solicitar valor Celsius

valor Celsius?

c

c

converter valor c

guardar conversao

valor Fahrenheitmostrar valor convertido

valor Fahrenheit

Classes de análise e associaçõesclass Classes de análise (associações)

ConversaoCFCtrlConversao

Historico

IUConversao

:IUHistorico CtrlHistorico

0..10pertence

1

1 111

1 11 1

AGREGAÇÃO

� Composição/pertinência�associação

� Parte� Todo� Propagação

class Classe

Janela

Botão ComboBox ScrollBar

3

1

1

1

0..1

1

Exercício: desenhe uma instância possível da classe janela

Agregação: adornos

class Classe

Time Jogador

**

Qual a interpretação?

Tipos de agregação

�Composição

�Associação

class Classe

Janela

Botão ComboBox ScrollBar

3

1

1

1

0..1

1

class Classe

Time Jogador

**

Agregação por composição

�Relação forte�Destruição do todo se propaga para as partes�Tempo de vida do todo = das partes

Exemplo: agregação por composição

class Aluno {public String nome;private Endereco endereço = new Endereco(“R. JP”,518, “APTO 14”, “Curitiba”);

}

Agregação por associação

�Relação mais fraca que anterior�Tempos de vida diferentes

Agregação: diferença

Levantamento de agregações

� Decomposição� dividir classe complexa

� Composição� Coleção de objetos reunidos� barra de rolagem + menu + text area = janela

� Partes comuns� classes com subconjunto de atributos

semelhantes

Agregação: partes comuns

Classes de análise e relações class Classes de análise (associações)

ConversaoCFCtrlConversao

Historico

IUConversao

:IUHistorico CtrlHistorico

0..10

1

1 111

1 11 1

GENERALIZAÇÃO

� Classes compartilham atributos e comportamentos

� É um tipo de

� Herda atributos e métodos

Relação de generalização

GENERALIZAÇÃO

Sobreposição do método calcularIPVA

Taxonomia: hierarquia de classesAtributos e operações comuns

Atributos e operações específicas

Qualidade de uma hierarquia

�Estável: critérios de classificação não mudam ao longo do tempo.

�Extensível: é fácil incluir novas classes derivadas na hierarquia

�Dica: respeitar o princípio da substituição

Princípio da substituição

Qualquer instância de uma classe derivada pode ser tratada como se fosse uma instância de uma classe base sem alterar a semânticade um programa escrito para a classe base.

ExemploCírculo e polígonos podem ser tratados comoFormaGeométrica

Exemplo: taxonomia mal feita

Livro

LivroEmprestado LivroDisponível

�Não construir hierarquias em função de estados das classes

Herança múltipla

ObjetoVoador

Av ião Helicóptero Pássaro

Animal