Resumo da Aula 10

Sumário

(Continuação do Resumo da Aula 9.)

Diagramas de sequência

Os diagramas de sequência representam como que um filme das interacções entre os objectos para atingir um determinado fim.  Existe um outro tipo de diagrama que também mostra evoluções temporais: o diagrama de actividade.  Este diagrama já foi falado no semestre passado.

 

!!Por completar

  1. Linha de vida
  2. Indicação de actividade (actividade recursiva)
  3. Invocação de operações
  4. Retorno
  5. Construção
  6. Destruição

!!Diagrama relativo às agências de aluguer.  Diagrama do caso do editor?  Diagrama do caso da folha de cálculo?

Diagramas de actividade

!!Por completar

!!Mencionar que foram já vistos no semestre passado.

Desenvolvimento de um modelo

!!Por completar.

A capacidade de abstracção é muito importante para aumentar a clareza de um programa.  Num programa orientado para objectos os conceitos envolvidos na descrição do problema são tipicamente representados por classes.  As instâncias da classe são conhecidas por objectos e pretendem modelar os objectos envolvidos no problema a resolver.

A abstracção é usada em programação em muitos locais.  Pode-se inclusivamente dizer que os programa correspondem muitas vezes a camadas de abstracção que permitem ao programador preocupar-se em cada nível apenas com aquilo que é essencial.

É muito importante resistir à tentação de introduzir no modelo pormenores que são irrelevantes para o problema em causa.  Ao desenvolver um programa de gestão de recursos humanos, por exemplo, a cor dos olhos dos colaboradores de uma empresa é irrelevante.  Para quê introduzir esse atributo no modelo de um colaborador?  O sexo dos colaboradores ainda é relevante, mas presumivelmente apenas para automatizar a escrita da saudação nas cartas que lhes forem dirigidas (i.e., Sr. ou Sra.).

!!Modelo de análise ou de desenho?

!! Falar em "casos de uso" como forma de obter melhor informação acerca do problema e de desenvolver alguma intuição para o desenho.

!!Exemplo: Programa para gestão de uma agência de aluguer de veículos.  Veículo: Automóvel mercadoria/Automóvel ligeiro/Motociclo?  Classes?  O que os distingue?  Comportamento?  Pessoa/Condutor Pessoa/Cliente.  Clientes (identificados por B.I.)  Dizer que o exemplo irá acompanhar a discussão.

Veiculo (é parte da Frota)
Automóvel (é um Veículo)
Motociclo (é um Veículo)
Frota (é constituída por Veículos)
Agência (tem um frota de veículos que podem estar alugados ou livres)

3.1  Identificação de classes ou conceitos

!!Substantivos ou frases substantivas.

!!Nomes comuns podem por vezes ser "papeis" que um objecto tem relativamente a outro.  Nesse caso, não correspondem a classes, mas sim a atributos e a associações entre duas classes.  Exemplo: Veículo, dono, Pessoa...

!!Frases substantivas: muitas vezes correspondem a atributos de classes.

!!Nomes próprios: instâncias.

3.2  Identificação de relações

!! Identificando as relações: verificar frases com que unimos os conceitos.  Procurar "ser", "ter", "ser constituído por", etc.

!!Verbos que não denotam acção.  Verbos que denotam estados, por vezes.  Mas ver predicados abaixo.

!!Relação "é parecido com" e "é como" leva a identificar classes que são, provavelmente, "irmãs", ou seja, especializações de uma generalização comum, provavelmente abstracta.

3.3  Identificação de operações

!!Verbos.

!!Identificando as operações: verbos que denotam acções são modificadores, normalmente, verbos que denotam estados (temporários ou permanentes) são inspectores predicados, normalmente.

!!(Ver classificação aspectual de verbos.)

3.4  Identificação de propriedades

!! Noção de propriedade: inspectores.

!! Inspectores não correspondem forçosamente a atributos.

!!4

3.5  Identificação de atributos

!!Adjectivos: Mudam para um qualquer objecto?  Reflectem o estado do conceito.  Exemplo: Veiculo alugado/livre. Não mudam?  Existe uma classe especializada (exemplo FormaColorida).  Pôr isto em relações!

!!Alternativa quando muda: substantivizar (?) o adjectivo!  Um veiculo alugado é um veículo com um aluguer!  Logo, existe um conceito Aluguer!  E um o veiculo pode-se associar a zero ou um alugueres!  Há ainda a possibilidade de passarem a classe: alugado vs. associado a um aluguer.

!!alugado adj. = p.p. de alugar: verbo.  Alugar: associar a um aluguer.

!!Adjectivos.  O adjectivo "verde" é representado como?  "O Veículo é verde"... O adjectivo "alugado" como é representado como?  "O veículo está alugado"?

!!Adjectivo: valor de uma dada propriedade.  Carro verde.  Operação inspectora para a cor, ou predicado: carro.cor(), carro.éVerde() (propriedade permanente: atributo constante), carro.estáVerde() (propriedade transitória: atributo variável, ou propriedade calculável).  Propriedade diferenciadora do conceito: carro anfíbio.  I.e., que introduz novos comportamentos e propriedades inexistentes.  Nova classe CarroAnfíbio.

!!O adjectivo pode mudar ao longo do tempo para um dado objecto?  Então reflectem o estado do objecto.  Exemplo: Veiculo alugado/livre.  Veículo verde/azul (pode-se pintar).

!!Adjectivo não pode mudar ao longo do tempo para um dado objectos?  Então pode existir uma classe especializada (exemplo FormaColorida).  Alternativamente pode-se guardar um estado imutável: uma constante.  Se os veículos não se pudessem pintar, mais valia ter um veículo com uma cor constante que fazer classes especializadas VeiculoVerde, VeiculoAmarelo, etc...

!!Alternativa quando muda: substantivizar (?) o adjectivo!  Um veiculo alugado é um veículo com um aluguer!  Logo, existe um conceito Aluguer!  E um o veiculo pode-se associar a zero ou um alugueres!  E um aluguer pode-se referir a vários veículos!  Interessante!

!!Discutir um possível estado:
Veículos:
2 Motociclos e 2 Automóveis.
2 Alugueres:
1.  1 Motociclo
2.  2 Automóveis
3 Clientes, um deles sem aluguer.

Leitura recomendada

Capítulos 5 (só parte de diagramas de sequência) e 11 de [3].

Referências

[1]  "OMG Unified Modeling Language Specification", versão 1.4, Setembro de 2001.  http://www.omg.org/cgi-bin/doc?formal/01-09-67

[2]  James Rumbaugh, Ivar Jacobson e Grady Booch, "The Unified Modeling Language Reference Manual", Addison-Wesley, Reading, Massachusetts, 1999.

[3]  Martin Fowler e Kendall Scott, "UML Distilled: A Brief Guide to the Standard Object Modeling Language", 2ª edição, Addison-Wesley, Reading, Massachusetts, 1999.

[4]  Grady Booch, James Rumbaugh e Ivar Jacobson, "The Unified Modeling Language User Guide", Addison-Wesley, Reading, Massachusetts, 1999.