Engenharia de Software 1
08 - Modelagem de software:
Diagramas de Classe, de Objetos, de Intera¸c˜
ao, Estados e Atividades
Alexandre de Andrade Barbosa
Objetivos
Objetivos
Apresentar os conceitos necess´
arios para criar Diagramas de Classe
Exibir exemplos de Diagramas de Classe
Apresentar os conceitos necess´
arios para criar Diagramas de Objetos
Exibir exemplos de Diagramas de Objetos
Apresentar o conceito de intera¸c˜
oes e exibir como o conceito pode ser modelado
Descrever como os diagramas de seq¨
uˆ
encia e comunica¸c˜
ao podem ser utilizados
para modelar as intera¸c˜
oes entre os objetos de um sistema O.O.
Apresentar os conceitos de estado e atividade
Introdu¸c˜ao
As funcionalidades de um software O.O. s˜ao realizadas
internamente atrav´es de colabora¸c˜oes entre objetos
Atores visualizam os resultados externos
Objetos colaboram internamente para gerar os resultados
Uma forma de observar as colabora¸c˜oes em um sistema ´e atrav´es
de uma representa¸c˜ao do aspecto estrutural e est´atico
Dois diagramas UML que modelam aspectos estruturais est´aticos
s˜ao:
Introdu¸c˜ao
O modelo de casos de uso descreve:
conjunto de requisitos funcionais
entidades que interagem com o sistema
O modelo de casos de uso n˜ao fornece detalhes internos de como
deve ser o comportamento do sistema
O modelo de classes descreve:
quais classes devem compor o sistema
quais os relacionamentos entre estas classes
Introdu¸c˜ao
Modelos de intera¸c˜oes descrevem:
quais mensagens s˜ao trocadas nas intera¸c˜
oes
qual a ordem de troca de mensagens
As intera¸c˜oes que ocorrem entre objetos para executar as
funcionalidades descritas em um caso de uso s˜ao chamadas de
realiza¸c˜ao do caso de uso
Realiza¸c˜ao de um caso de uso corresponde a descri¸c˜ao do
comportamento interno do sistema
Introdu¸c˜ao
Dois diagramas s˜ao freq¨
uentemente utilizados para modelar
intera¸c˜oes no sistema:
Diagrama de seq¨
uˆencia;
Diagrama de comunica¸c˜ao
Introdu¸c˜ao
Objetos do mundo real se encontram em estados particulares em
determinados momentos
Copo: cheio...vazio
Telefone: ocupado...em espera
Aluno: aprovado...reprovado
Diagrama de classes (DC)
Um diagrama de classes ´e criado e revisado ao longo do ciclo de
desenvolvimento
Pode-se listar trˆes n´ıveis para o diagrama:
an´alise
projeto
implementa¸c˜ao
Diagrama de classes (DC)
O diagrama de classes de an´alise n˜ao apresenta detalhes da
solu¸c˜ao do problema
Diagrama de classes (DC)
Classes, atributos e m´etodos
Classe. Abstra¸c˜ao de uma entidade conceitual ou real
Uma classe define os comportamentos (m´etodos) e as
caracter´ısticas (atributos) da entidade modelada
Diagrama de classes (DC)
Classes, atributos e m´etodos
Diagrama de classes (DC)
Classes, atributos e m´etodos
Atributos representam as caracter´ısticas pertencentes a uma
determinada entidade
Um atributo deve ser representado obedecendo a seguinte
estrutura:
Estrutura: [NOME] : [TIPO]
Exemplo 1: idade : int
Diagrama de classes (DC)
Classes, atributos e m´etodos
Os m´etodos representam as a¸c˜oes que ser˜ao executadas por um
objeto
Estrutura: [NOME]([PARˆ
AMETRO: TIPO, ...): [TIPO DE RETORNO]
Diagrama de classes (DC)
Relacionamentos
Relacionamento. Liga¸c˜ao entre classes que possibilita troca de
mensagens
Para que os objetos em um sistema possam colaborar ´e
necess´ario especificar relacionamento entre suas classes
Diagrama de classes (DC)
Relacionamentos
Associa¸c˜ao. Representa relacionamentos (liga¸c˜oes) que podem
ser formados entre objetos durante a execu¸c˜ao do sistema
Diagrama de classes (DC)
Relacionamentos
Nome da associa¸c˜ao. Representa o significado da associa¸c˜ao
Dire¸c˜ao de leitura. Exibe como a associa¸c˜ao deve ser lida
Pap´eis. Identifica os pap´eis desempenhados por cada uma das
classes
Diagrama de classes (DC)
Relacionamentos
Objetos e classes de objeto participam de relacionamentos com
outros objetos e classes de objeto
Diagrama de classes (DC)
Relacionamentos
Tipos de associa¸c˜ao:
Associa¸c˜ao simples
Associa¸c˜ao recursiva
Associa¸c˜ao exclusiva
Associa¸c˜ao de classe
Agrega¸c˜ao
Diagrama de classes (DC)
Relacionamentos
Associa¸c˜ao simples - especifica que as classes possuem algum
grau de envolvimento
Diagrama de classes (DC)
Relacionamentos
Associa¸c˜ao recursiva - ocorre quando uma classe possui uma
associa¸c˜ao com ela mesma, em geral, s˜ao usados pap´eis ou ´e
fornecido um nome para a associa¸c˜ao para facilitar o
entendimento
Diagrama de classes (DC)
Relacionamentos
Associa¸c˜ao exclusiva - ocorre se o relacionamento de associa¸c˜ao
s´o pode acontecer com uma classe OU outra
Diagrama de classes (DC)
Relacionamentos
Associa¸c˜ao de classe - ocorre quando duas classes se relacionam
e o relacionamento entre estas classes possui seus pr´oprios
atributos
Diagrama de classes (DC)
Relacionamentos
Agrega¸c˜ao - especifica um relacionamento TODO-PARTE onde
existe um grau de independˆencia entre o TODO e suas PARTES
Diagrama de classes (DC)
Relacionamentos
Agrega¸c˜ao composta ou composi¸c˜ao - especifica um
relacionamento TODOPARTE onde existe um alto grau de
dependˆencia entre o TODO e suas PARTES
Exerc´ıcio
Diagrama de classes (DC)
Relacionamentos
Heran¸ca. Relacionamento entre uma classe mais geral e outra
mais espec´ıfica
Diagrama de classes (DC)
Relacionamentos
Tipos de heran¸ca:
Heran¸ca sobreposta - ocorre quando em um relacionamento de
heran¸ca uma entidade pode pertencer a mais de um sub-tipo ao
mesmo tempo
Heran¸ca disjunta - ocorre quando em um relacionamento de
heran¸ca uma entidade n˜ao pode pertencer a mais de um sub-tipo
ao mesmo tempo
Heran¸ca completa - ocorre quando todos os sub-tipos de um
relacionamento de heran¸ca foram especificados
Diagrama de classes (DC)
Relacionamentos
Na associa¸c˜ao, objetos espec´ıficos de uma classe se associam
entre si ou com objetos espec´ıficos de outras classes.
Na heran¸ca, objetos s˜ao subtipos de outros objetos
Exemplo:
Diagrama de classes (DC)
Relacionamentos
Propriedades da heran¸ca
Transitividade. Uma classe herda as propriedades de todas as
suas antecessoras
N˜ao existe limita¸c˜ao para os n´ıveis de heran¸ca
Assimetria. Se uma classe A ´e uma generaliza¸c˜ao de B, ent˜ao B
n˜ao pode ser uma generaliza¸c˜ao de A
Diagrama de classes (DC)
Relacionamentos
Exerc´ıcio
Exemplos
Diagrama de classes (DC)
Visibilidade, navegabilidade e multiplicidade
Visibilidade (modificadores de acesso)
(+) public - qualquer classe pode ter acesso
Diagrama de classes (DC)
Visibilidade, navegabilidade e multiplicidade
Visibilidade pode ser especificada para atributos e m´etodos
Exemplo A1: - idade : int
Exemplo A2: + tipoSanguineo : String
Diagrama de classes (DC)
Visibilidade, navegabilidade e multiplicidade
Navegabilidade. indica que as instˆancias de uma classe possuem
referˆencia para as instˆancias de outra classe
Diagrama de classes (DC)
Visibilidade, navegabilidade e multiplicidade
Multiplicidade. Limite (m´ınimo e m´aximo) relacionado ao
n´
umero de objetos que podem se relacionar
Diagrama de classes (DC)
Visibilidade, navegabilidade e multiplicidade
Quadro: Multiplicidades
Descri¸c˜
ao
S´ımbolo
Apenas um
1 ou vazio
Nenhum ou muitos
0..* ou *
Diagrama de classes (DC)
Visibilidade, navegabilidade e multiplicidade
Participa¸c˜ao. Indica obrigatoriedade de um objeto participar ou
n˜ao de um relacionamento
Diagrama de classes (DC)
Visibilidade, navegabilidade e multiplicidade
Classe abstrata. Classe que deve ser utilizada como uma classe
base, n˜ao deve ser instanciada diretamente
T´ecnicas para identificar classes
O diagrama de classes exibe as classes que comp˜
oem o dom´ınio
do problema e as rela¸c˜oes entre estas
O diagrama de classes apresenta uma descri¸c˜ao est´atica e
estrutural do sistema desejado
T´ecnicas para identificar classes
Possuir conhecimento sobre a nota¸c˜ao de descri¸c˜ao de classes
n˜ao ´e suficiente para criar o(s) diagrama(s) de classes do sistema
A identifica¸c˜ao de classe pode dividir-se na execu¸c˜ao de duas
atividades:
T´ecnicas para identificar classes
Algumas t´ecnicas podem ser utilizadas para identificar as classes
do sistema e criar o diagrama de classes, s˜ao exemplos:
An´alise textual de Abbott;
An´alise dos casos de uso;
T´ecnicas para identificar classes
An´
alise textual de Abbott
A an´alise textual de Abbott consiste em analisar todos os
documentos produzidos para o sistema, e:
identificar substantivos, verbos e adjetivos;
gerar uma lista com os termos;
T´ecnicas para identificar classes
An´
alise textual de Abbott
A id´eia ´e cada termo da lista poder´a ser utilizado para uma das
situa¸c˜oes descritas a seguir:
T´ecnicas para identificar classes
An´
alise textual de Abbott
Substantivos, em geral, se tornam classes ou atributos
Verbos normalmente originam opera¸c˜oes ou relacionamentos
Verbos de a¸c˜ao originam opera¸c˜oes
O sentido associado ao verbo pode identificar o tipo do
relacionamento:
T´ecnicas para identificar classes
An´
alise textual de Abbott
A an´alise textual de Abbott pode ser utilizada em qualquer
contexto
A eficiˆencia depende dos documentos que foram criados (se
foram criados)
Podem surgir problemas de:
falta de detalhes;
excesso de detalhes;
ambig¨
uidade;
outros.
Tais problemas podem gerar muitas classes candidatas
T´ecnicas para identificar classes
An´
alise dos casos de uso
A an´alise dos casos de uso ´e um caso particular da an´alise textual
de Abbott
A id´eia ´e minimizar os documentos analisados (somente casos de
uso)
Um caso de uso consiste na descri¸c˜ao de uma funcionalidade
desejada no sistema
As funcionalidades s˜ao executadas atrav´es da colabora¸c˜ao de
objetos
T´ecnicas para identificar classes
An´
alise dos casos de uso
A an´alise dos casos de uso pode ser executada da seguinte
maneira:
1
Para cada caso de uso deve-se:
identificar as classes necess´
arias para o comportamento;
distribuir o comportamento desejado entre as classes identificadas.
2
Para cada classe identificada deve-se:
descrever as responsabilidades associadas;
com base nas responsabilidades descreve-se os atributos da classe
e os relacionamentos.
T´ecnicas para identificar classes
An´
alise dos casos de uso
T´ecnicas para identificar classes
An´
alise de robustez (categoriza¸c˜
ao BCE)
An´alise de robustez foi proposta por Ivar Jacobson um dos
criadores da UML
´
E um tipo de an´alise de casos de uso
A id´eia consiste em classificar as classes (ou objetos) em trˆes
categorias, s˜ao elas:
T´ecnicas para identificar classes
An´
alise de robustez (categoriza¸c˜
ao BCE)
T´ecnicas para identificar classes
An´
alise de robustez (categoriza¸c˜
ao BCE)
Cada uma das categorias possui diferentes caracter´ısticas de
responsabilidades:
classes de fronteira - realizam a comunica¸c˜ao entre atores e
sistema
classes de controle - servem como ponte entre classes de fronteira
e entidade
T´ecnicas para identificar classes
An´
alise de robustez (categoriza¸c˜
ao BCE)
Classes de fronteira devem capturar eventos disparados por atores
e notificar atores dos resultados obtidos na execu¸c˜ao de uma
funcionalidade
Classes de controle devem monitorar as a¸c˜oes recebidas de
objetos de fronteira, al´em de coordenar a troca de mensagens
entre objetos
Classes de entidade servem para armazenar alguma informa¸c˜ao e
implementar a l´ogica de neg´ocio
Diagrama de objeto (DO)
Diagrama de objeto (DO). Corresponde a uma instˆancia de um
diagrama de classes
Representa uma fotografia do sistema em um determinado
momento
Um objeto ´e representado de maneira similar a uma classe
nome simples: identifica uma instˆancia exclusivamente com um
nome
nome de caminho: identifica uma instˆancia com um nome e seu
pacote
Diagrama de objeto (DO)
Diagrama de objeto (DO)
O estado de um objeto pode ser determinado pelos valores de
seus atributos
Diagrama de objeto (DO)
As instˆancias dos relacionamentos do diagrama de classes s˜ao
chamadas de v´ınculos
Diagrama de objeto (DO)
Os diagramas de objetos mostram um conjunto de objetos e seus
v´ınculos em um determinado ponto no tempo
Visualmente um diagrama de objetos corresponde a um conjunto
de v´ertices (objetos) e arcos (v´ınculos).
Exerc´ıcio
Crie um diagrama de classes para uma “Agˆ
encia Banc´
aria”, considerando a
descri¸c˜
ao a seguir.
Um banco deseja manter informa¸c˜
oes sobre suas agˆ
encias banc´
arias. Cada
agˆ
encia possui um cadastro de contas, clientes e empregados. Os clientes
podem ter contas de dois tipos (conta poupan¸ca ou conta corrente).
Exerc´ıcio
Intera¸c˜oes
S˜ao elementos comuns aos diagramas de intera¸c˜ao:
Intera¸c˜oes
Mensagens
Uma mensagem corresponde a especifica¸c˜ao de uma comunica¸c˜ao
entre objetos (execu¸c˜ao de uma opera¸c˜ao em outro objeto)
S´
o ´e poss´ıvel existir troca de mensagens entre dois objetos se
existe algum v´ınculo entre estes objetos
Intera¸c˜oes
Mensagens
Existem diferentes tipos de mensagens:
mensagem s´ıncrona - indica que o objeto remetente espera que o
objeto receptor processe a mensagem antes de recome¸car o seu
processamento
mensagem ass´ıncrona - indica que o objeto remetente cont´ınua
com seu processamento, ou seja, n˜ao aguarda a resposta da
mensagem para continuar sua execu¸c˜ao
mensagem de retorno - representa o retorno de uma mensagem
enviada anteriormente
Intera¸c˜oes
Mensagens
Sintaxe de uma mensagem:
[[express˜ao de seq¨
uˆencia] controle:] [v:=] nome [(argumentos)]
Os elementos entre [] s˜ao opcionais
Intera¸c˜oes
Mensagens
Express˜ao de seq¨
uˆencia - serve para indicar a ordem de envio das
mensagens
Utiliza-se um esquema de numera¸c˜ao para estabelecer a ordem
de envio
1, 2, 3, 4, ...
Intera¸c˜oes
Mensagens
Controle - indica uma condi¸c˜ao associada ao envio da mensagem
condi¸c˜ao l´ogica
quantidade de vezes que a mensagem ´e enviada
Existem dois tipos de controle:
cl´ausula condi¸c˜ao - a mensagem ´e enviada somente se a condi¸c˜ao
l´ogica for avaliada com verdadeira
cl´ausula itera¸c˜ao - a mensagem ´e enviada tantas vezes quanto
indicado na cl´ausula
Intera¸c˜oes
Mensagens
Vari´avel - representa o identificador de uma vari´avel que recebe o
valor retornado pela opera¸c˜ao que ser´a executada no objeto
Nome - identifica a opera¸c˜ao solicitada
Intera¸c˜oes
Mensagens
Exemplo:
1: adicionarItem(item)
3 [
a
>
b
]: trocar(a, b)
2 *: desenhar()
Intera¸c˜oes
Mensagens
Exemplo:
1: adicionarItem(item)
Mensagem simples com argumento
3 [
a
>
b
]: trocar(a, b)
Mensagem com cl´
ausula de condi¸c˜
ao e argumentos
Intera¸c˜oes
Atores
Os atores que participam de um caso de uso podem ser
representados em um diagrama de intera¸c˜ao
Em geral o ator dispara o evento inicial para troca de mensagens
Intera¸c˜oes
Objetos
A realiza¸c˜ao de um caso de uso envolve colabora¸c˜ao de objetos
Os objetos trocam mensagens ao longo da intera¸c˜ao
Representa¸c˜ao de objetos em um diagrama de intera¸c˜ao
Intera¸c˜oes
Classes
Na maioria das vezes somente objetos s˜ao apresentados em um
diagrama de intera¸c˜ao
Uma classe tamb´em pode responder solicita¸c˜oes (opera¸c˜oes
est´aticas)
Diagrama de Seq¨uˆencia
Elementos de um diagrama de sequˆencia
O diagrama de seq¨
uˆencia ´e um diagrama de intera¸c˜oes que d´a
ˆenfase `a ordem de tempo das mensagens
Estes diagramas cont´em:
Mensagens, Atores, Objetos, Classes (comuns aos diagramas)
Linha de vida - representa o per´ıodo de tempo em que um objeto
existe
Diagrama de Seq¨uˆencia
Elementos de um diagrama de sequˆencia
Diagrama de Seq¨uˆencia
Exemplo
Diagrama de Seq¨uˆencia
Cria¸c˜
ao e destrui¸c˜
ao de objetos
Diagrama de Seq¨uˆencia
Quadros
UML 2 introduziu a representa¸c˜ao de quadros para encapsular
um diagrama de seq¨
uˆencia
Os quadros podem ser utilizados para:
Diagrama de Seq¨uˆencia
Quadros
Diagrama de Seq¨uˆencia
Quadros
Diagrama de Seq¨uˆencia
Quadros
Diagrama de comunica¸c˜ao
Um diagrama de comunica¸c˜ao exibe as intera¸c˜oes existentes
entre objetos com ˆenfase na organiza¸c˜ao estrutural
A representa¸c˜ao gr´afica ´e semelhante ao diagrama de objetos,
por´em o diagrama de comunica¸c˜ao exibe as mensagens de uma
intera¸c˜ao
Os mesmos elementos que s˜ao exibidos em um diagrama de
seq¨
uˆencia (exceto linha de vida e foco de controle) podem
aparecer em um diagrama de colabora¸c˜ao
Diagrama de comunica¸c˜ao
As express˜oes de seq¨
uˆencia s˜ao obrigat´orias no diagrama de
comunica¸c˜ao
Diagrama de comunica¸c˜ao
Os diagramas de comunica¸c˜ao e seq¨
uˆencia s˜ao isomorfos
As diferentes formas de representa¸c˜ao alteram o foco de
percep¸c˜ao
ˆenfase na ordena¸c˜ao temporal
Tradu¸c˜ao comunica¸c˜ao e seq¨uˆencia
Tradu¸c˜ao comunica¸c˜ao e seq¨uˆencia
Exerc´ıcio
Exerc´ıcio
Exerc´ıcio
Exerc´ıcio
Crie um conjunto de diagramas de sequˆ
encia ou colabora¸c˜
ao para um sistema de
software
Pousada - reserva de um quarto
Diagrama de estados
Introdu¸c˜
ao
Um objeto muda de estado quando algum evento interno ou
externo ocorre
Diagrama de estados
Introdu¸c˜
ao
Diagramas de intera¸c˜ao exibem o comportamento de um
conjunto de objetos
Um diagrama de estados exibe os poss´ıveis estados de objetos de
uma ´
unica classe
N˜ao ´e necess´ario criar diagramas de estados para os objetos de
todas as classes do sistema
Diagrama de estados
Elementos de um diagrama
Os elementos b´asicos de um diagrama de estados s˜ao:
Estados
Transi¸c˜
oes
Evento
Diagrama de estados
Estado
Um estado ´e uma situa¸c˜ao na vida de um objeto no qual ele
satisfaz alguma condi¸c˜ao ou realiza alguma atividade
Diagrama de estados
Estado
O valor dos atributos de um objeto e seus v´ınculos determinam o
estado em que ele se encontra
Estado determinado pelos atributos