Vous êtes sur la page 1sur 43

Universidade Estadual de Campinas

UNICAMP
Centro de Computação

Guia sobre Orientação a Objetos

Eliel Gonçalves
eliel@ccuec.unicamp.br

[GuiaOrientaçãoObjetos:V1.0:01/05/2007:DDS:CNARQ]

DIRETORIA DE DESENVOLVIMENTO DE SOFTWARE


↸ Rua Saturnino de Brito, n° 45 – Cidade Universitária Zeferino Vaz – Barão Geraldo – Campinas – SP
 (0XX19) 3521.2283 -  3289.2577 -  13084-971 -  6132
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

1. Introdução

O que é orientado a objeto ?


• O software é organizado como uma coleção de objetos separados que incorporam a
estrutura e o comportamento de dados.
• Enfoque diferente do convencional.
• Características: identidade, classificação, polimorfismo e herança.

Identidade

• Os dados são divididos em entidades discretas e distintas denominadas objetos. Cada


objeto tem sua própria identidade, mesmo que possuam o mesmo conjunto de atributos.
• Exemplos: um parágrafo de um documento, uma janela no monitor de vídeo, uma
bicicleta.

Classificação

• Objetos com a mesma estrutura de dados (atributos) e o mesmo comportamento


(operações) são agrupados, ou classificados, em uma classe.
• Qualquer escolha de classe é arbitrária e depende da aplicação.
• Cada classe descreve um conjunto de objetos individuais.
• Cada objeto é uma instância de uma classe.
• Cada instância de classe tem o seu próprio valor para cada atributo, mas compartilha os
nomes de atributos e operações com outras instâncias da mesma classe.
• Exemplo - classe “Bicicleta”
Atributos: tamanho do quadro, tamanho da roda, engrenagem, material
Operações: mudar a marcha, mover, consertar
• Exemplo - Classe “Polígono”
Atributos: número de vértices, cor da borda, cor de preenchimento
Operações: desenhar, apagar, mover

Polimorfismo
• Polimorfismo significa que a mesma operação pode atuar de modos diversos em classes
diferentes. Em outras palavras: diferentes objetos respondem de maneira diferente à
mesma mensagem.
• Método: uma implementação específica de uma operação por uma determinada classe.

2
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

• Exemplo: operações “Mover” e “Desenhar”. “Mover” pode ter um código diferente para
cada classe “Janela” e “PeçadeXadrez”. “Desenhar” pode ter um código diferente para
cada classe “Quadrado” e “Elipse.”

Herança

• Herança é o compartilhamento de atributos e operações entre classes com base em um


relacionamento hierárquico. Uma subclasse herda todas as características de sua
superclasse e acrescenta suas características exclusivas.
• Semelhança em outros contextos (fatorar, colocar em evidência):
3x2 + 6x + 9 = 3(x2 + 2x + 3)
• Vantagem: reduz repetições.

O que é desenvolvimento orientado a objeto?


• Um modo de tratar o software com base em abstrações do mundo real.
• Desenvolvimento refere-se a parte inicial do ciclo de vida: análise-projeto e
implementação.
• Essência do desenvolvimento orientado a objeto: identificação e organização dos
conceitos do domínio da aplicação, em vez de sua representação definitiva em uma
linguagem de programação.
• Objetivo no curso: análise.

Conceitos em modelagem, não em implementação

• Vantagem real da orientação a objetos: enfoque em problemas conceituais, não em


implementação (erros nas etapas iniciais são mais caros).
• Uma nova maneira de pensar (usar os conceitos do domínio da aplicação) e não uma
técnica de programação (conceitos de implementação).

Metodologia baseada em objetos


A metodologia TMO (Técnica de Modelagem de Objetos) propõe as seguintes etapas:

• Análise - Construir um modelo da situação do mundo real. O modelo é uma abstração do


que o sistema deve fazer (e não como deve ser feito). Exemplo: em um sistema de
janelas, a classe “Janela” deve ser descrita em termos dos atributos e operações visíveis
ao usuário.

3
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

• Projeto do sistema - Tomar decisões de alto nível relativamente à arquitetura geral.


Exemplo: decidir que as modificações de tela devem ser rápidas e suaves mesmo quando
as janelas forem movimentadas ou apagadas.
• Projeto de objetos - Construir um modelo de projeto baseado no modelo de análise, mas
contendo detalhes de implementação. Exemplo: as operações da classe Janela são
especificadas em termos do hardware ou sistema operacional existente.
• Implementação - Traduzir as classes e os relacionamentos em uma linguagem de
programação, em um banco de dados ou em hardware. Exemplo: codificar a classe
Janela com emprego de chamadas ao sistema de gráficos.

Três modelos
A metodologia TMO propõe três modelos para descrever um sistema. Pela ordem, os
modelos descrevem o que está mudando, quando e como ocorrem as modificações:

• Modelo de Objeto: descreve os objetos e seus relacionamentos através do Diagrama de


Objetos.

• Modelo Dinâmico: descreve os aspectos que se modificam com o tempo através do


Diagrama de Estados.

• Modelo Funcional: descreve as transformações dos valores dos dados através do


Diagrama de Fluxo de Dados.

Diferenças em relação à metodologia funcional


• Metodologia funcional: ênfase na especificação e decomposição da funcionalidade do
sistema. Pode parecer mais direto, mas o sistema resultante é frágil.

• Metodologia orientada a objeto: ênfase na identificação de objetos e depois nos


procedimentos relativos a eles. Mantém-se mais estável na medida em que os requisitos
evoluem, pois apoia-se na estrutura fundamental da aplicação.

4
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

2 - A modelagem como técnica de projeto


• Modelos são abstrações construídas para que um problema seja compreendido antes da
implementação da solução.

• Exemplos de modelos: desenho de peças de máquinas, rascunho de anúncios, peças de


vestuário.

Objetivos da construção de modelos


• Testar uma entidade física antes de dar uma forma (são mais baratos)
• Comunicação com clientes (imitam uma parte do produto final)
• Visualização (permitem introduzir modificações antes de ter o produto final)
• Redução da complexidade (a mente humana só consegue tratar uma quantidade limitada
de informações)

“Um modelo de objetos, mesmo que seja simplificado, pode ser comparado com o mundo
real ou com a aplicação desejada, criticado e melhorado.”

5
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

3 - A modelagem de objetos
Elementos do modelo de objetos: classes, instâncias de classe, relacionamentos, atributos e
operações.

Objetos e classes

Objeto
• Objeto: alguma coisa que faz sentido no contexto de uma aplicação; um conceito, uma
abstração, algo com limites nítidos e significado em relação a um problema.
• Exemplos: “João”, “Companhia ABC”, “processo 7648”, “janela de mais alto nível”.
• Por razões de precisão, diz-se que “objeto” é uma “instância de uma classe”.

Classe

• Uma classe de objetos descreve um grupo de objetos com propriedades semelhantes


(atributos), o mesmo comportamento (operações), os mesmos relacionamentos com
outros objetos e a mesma semântica.
• Exemplos: “Pessoa”, “Empresa”, “Animal”, “Processo”, “Janela”.
• Importância da “classe”: as definições comuns são armazenadas somente uma vez em
uma classe, ao invés de serem armazenadas nas instâncias de classes.
• Exemplo: classe “Elipse” com as operações “Desenhar”, “Calcular área” e “Testar
intersecções com uma reta”. Todas as elipses compartilham os mesmos procedimentos
definidos na classe “Elipse”.

Diagrama de objetos
• O diagrama de objetos é uma notação gráfica formal para a modelagem de objetos.
• Dois tipos de diagramas: de classes e de instâncias.

Diagrama de classes

• Descreve classes de objetos. Corresponde a um conjunto infinito de diagramas de


instâncias. Descrevem o quadro geral de modelagem de um sistema.
• Notação: retângulo com o nome da classe.

Diagrama de instâncias
6
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

• Descreve como as instâncias de classe de um determinado conjunto se relacionam entre


si. São úteis para esclarecer e principalmente testar um diagrama de classes complexo.
• Notação: retângulo com bordas arredondadas. O nome da classe é escrito entre parênteses
e, logo abaixo, o nome da instância.
• Exemplo. Classe “Pessoa”; Objetos (instância de classe): “Maria”, “Pedro”, “Ana”.

Pessoa (Pessoa) (Pessoa) (Pessoa)


Maria Pedro

Classe (retângulo) e instâncias de classe (retângulo de borda arredondada)

Atributos
• Atributo: valor de dados guardado pelas instâncias de classe.
• Exemplos: “nome”, “idade” e “peso” são atributos da classe “Pessoa”.
“Cor”, “peso”, “ano”, “modelo” são atributos da classe “Carro”.
• Cada atributo possui um valor para cada instância de objeto. Exemplo: atributo com valor
“25” no objeto “Maria”. O atributo deve ser um valor puro.
• Notação: os atributos devem ser mostrados na segunda parte da caixa de classe.
Dependendo do nível de detalhe desejado, pode ser definido o tipo de dados e valor
default.
• Exemplo

(Pessoa) (Pessoa)
Pessoa Maria Pedro
nome: string 25 52
idade: inteiro

Classe com atributos e instâncias de classe com valores.

• Como cada objeto tem a sua própria identidade, não há necessidade de colocar um
atributo “Código” (que é um recurso computacional).

Operações e métodos
• Operação: função ou transformação que pode ser aplicada a objetos ou por estes a uma
classe. Todas as instâncias de classe compartilham as mesmas operações.
7
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

• Exemplo: Classe “Empresa”. Operações: “Contratar”, “Despedir”, “Pagar-dividendo”.


• Exemplo: Classe “Janela”. Operações: “Abrir”, “Fechar”, “Ocultar”, “Reexibir”.
• Cada operação tem um objeto-alvo. Um objeto “sabe” a qual classe pertence e a correta
implementação dessa operação.
• Operação polimórfica: a mesma operação quando se aplica a classes diferentes. Método:
implementação de uma operação para uma classe.
• Exemplo: classe “Arquivo”, operação “Imprimir”. Um método pode ser implementado
para imprimir arquivo ASCII e outro para imprimir arquivo binário. A tarefa lógica é a
mesma: imprimir.
• Cada método pode ser implementado por um diferente trecho de código. Uma operação
pode ter argumentos. Estes servem como parâmetros e não afetam a escolha do método. É
preferível evitar o mesmo nome para operações semanticamente diferentes.
• Exemplo: Inverter uma matriz e inverter (colocar de cabeça para baixo) uma figura
geométrica.
• Notação: as operações devem ser colocadas na parte inferior da caixa de classe.
• Cada operação pode ser seguida da lista de argumentos e o tipo do resultado. Os
argumentos são escritos entre parênteses e separados por vírgula. O resultado deve ser
precedido de “dois pontos”. Se for omitido, indica que a operação não retorna valor.
• Exemplo: classes “Pessoa”, “Arquivo” e “Objeto Geométrico”.

Pessoa Arquivo Objeto geométrico


nome nome cor
idade tamanho posição
última atualização
mudar cargo mover (delta:Vetor)
mudar-endereço selecionar (p:Ponto): Boolean
imprimir
girar (ângulo)

Classes “Pessoa”, “Arquivo” e “Objeto geométrico”.

• Classe “Pessoa”. Os atributos são “nome”, “idade”. As operações são “mudar-cargo” e


“mudar-endereço”.
• Classe “Arquivo”. Os atributos são “nome”, “tamanho”, ”última atualização”. A operação
é “imprimir”.
• Classe “Objeto geométrico”. Os atributos são “cor”, ”posição”. As operações são
“mover” (com argumento “delta”, que é vetor), “selecionar” (com argumento “p”, que é
ponto e retorna um valor booleano) e “girar” (com argumento “ângulo”)

Ligações e associações
8
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

• Ligações e associações: meios para estabelecer relacionamentos entre objetos.

Conceitos gerais
• Ligação: uma conexão física ou conceitual entre instâncias de objetos. Uma ligação é
uma instância de associação.
• Exemplo: Maria trabalha para a empresa ABC.
• Notação: uma linha entre instâncias.
• Associação: um grupo de ligações com estrutura e significado comuns. Uma associação
descreve um conjunto de potenciais ligações.
• Notação: a associação é representada como uma linha entre classes.
• O nome da associação pode ser omitido se o par de classes tiver uma única e óbvia
associação. O nome costuma ser lido da esquerda para a direita (ordem direta). As
associações podem ser “binárias” (as mais comuns), “ternárias” ou de ordem mais
elevada.
• Exemplo. Associação entre as classes “País” e “Cidade” com ligações entre instâncias de
ambas essas classes.

País Tem-capital Cidade


nome nome Diagrama de classes

(País) Tem-capital (Cidade)


Canadá Ottawa

(País) Tem-capital (Cidade) Diagrama de instâncias


França Paris

(País) Tem-capital (Cidade)


Senegal Dakar

Associação e ligações.

• Exemplo. Em aplicações CAD, um problema comum é encontrar redes de conectividade.


Dada uma linha, encontrar todas as linhas que a cortam; dado um ponto de intersecção,
encontrar todas as linhas que passam pelo ponto, etc. Considere as linhas L1, L2, L3, L4,
L5 e os pontos de interseção P1 e P2. P1 é ponto de interseção de L1, L2 e L3; P2 é ponto
de interseção de L3 e L4; L5 não tem interseções.

9
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

L2

P1 P2
L3
L4
L5 L1

Linhas e pontos de interseção.

O diagrama de classes, por ser geral, deve mostrar que cada ponto pode ser interseção de
duas ou mais linhas e cada linha pode ter zero ou mais pontos de interseção. A bolinha cheia
e “2+” são símbolos de cardinalidade.

Linha Cruza Ponto


2+
Nome Nome

Diagrama de classes

Diagrama de instâncias

10
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

• Associação ternária: associação que envolve três objetos.


• Notação: o símbolo para associação ternária é um losango. O nome da associação,
quando necessário, deve ser escrito junto ao losango.
• Exemplo: Programadores de sistemas utilizam linguagens de programação nos seus
projetos.

Projeto Linguagem
Diagrama de Classe

Pessoa

(Projeto) (Linguagem)
Sistema Contábil Cobol

(Pessoa)
Maria Diagrama de Instâncias

(Projeto) (LInguagem)
CAD C

Diagrama de classe e diagrama de instâncias.

Cardinalidade

• Cardinalidade: número inteiro não negativo que especifica quantas instâncias de uma
classe relacionam-se a uma única instância de uma classe associada.
• Notação: escrever o valor numérico ou o símbolo nas extremidades das linhas de
associação.

1 exatamente 1
1+ um ou mais
3-5 3, 4 e 5 (seqüência)
3,4,18 3, 4 ou 18 (alternativas)
muitos (zero ou mais)
11
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

opcional (zero ou 1)
linha sem símbolos exatamente 1

Símbolos de cardinalidade.

Exemplos

• Associação “Tem-capital”. Cardinalidade “um-para-um”: cada país tem uma capital; cada
cidade é capital de um país.
• Associação “Cruza”. Cardinalidade “muitos” (ou “zero ou mais”): uma linha pode ter
zero ou muitos pontos de interseção. Cardinalidade “dois ou mais”: um ponto de
interseção pode estar associado a duas ou mais linhas.

• Observação importante: a determinação da cardinalidade depende da aplicação. Por


exemplo, uma empresa contrata nenhum ou muitos empregados; um empregado é
contratado por nenhuma ou uma empresa. Uma pessoa pode trabalhar para várias
empresas, porém o segundo emprego pode ser considerado irrelevante.

Contrata
Empresa Empregado

Associação com cardinalidade.

A importância das associações

• Durante a modelagem conceitual, não se deve colocar dentro de objetos ponteiros e outras
referências como atributos e sim modelá-los como associações para indicar que a
informação que contêm não é subordinada a uma única classe.

Conceitos avançados de ligações e associações


Atributos de Ligação
• Atributo de ligação: propriedade das ligações de uma associação (semelhante a atributos
de objeto).
• Notação: um quadro ligado à associação por um laço.

12
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

• Exemplo: “Permissão de acesso” é um atributo da ligação “Acessível por”, isto é, é


atributo da ligação existente entre instâncias da classe “Arquivo” e instâncias da classe
“Usuário”.

Acessível por
Arquivo Usuário

permissão de acesso

/etc/termcap (leitura) João


/etc/termcap (leitura-escrita) Maria
/usr/doe/.login (leitura-escrita) João

Atributos de ligação

O exemplo abaixo mostra que atributos de ligação conduzem a modelos mais flexíveis.

Forma desaconselhável

Empresa Pessoa
Trabalha-para Nome
Nome Endereço
Endereço Salário
Cargo

Associação entre classes.

Forma mais perene

Empresa Trabalha-para Pessoa

Nome Nome
Endereço Endereço
Salário
Cargo

Associação entre classes e atributos de ligação.

13
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

A modelagem de uma associação como classe

• O quadro de atributos de uma associação pode ter um nome e operações, logo pode ser
modelado como uma classe.
• Exemplo : Os usuários são autorizados a usar várias estações de trabalho. Cada
autorização é acompanhada por uma prioridade e privilégios de acesso. Um usuário tem
um diretório básico para cada estação autorizada, porém este diretório pode ser
compartilhado por diversas estações e diversos usuários.

Usuário Autorizado Estação de Trabalho

Usuário
Prioridade
Privilégios

Iniciar sessão

Diretório básico
Diretório

Associação modelada como classe.

Nomes de papéis
• Um papel (“role played”) serve para identificar uma extremidade de uma associação.
• É um meio de percorrer as associações a partir de uma classe, sem mencionar
explicitamente a associação. São necessários para dois objetos da mesma classe.

14
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

• Notação: o nome é escrito próximo à classe que exerce o papel.


• Exemplo: Uma pessoa assume o papel de “empregado” em relação a uma “empresa”.
Uma empresa assume o papel de “empregador” em relação à “pessoa”.

Pessoa empregado empregador Empresa


Trabalha-para

Nomes de papéis.

• Exemplo: Um diretório pode conter vários diretórios e opcionalmente estar contido em


outro diretório. Cada diretório tem um usuário proprietário, que o criou, e muitos usuários
autorizados a utilizá-lo.

proprietário
contém
Usuário Diretório
usuário autorizado
está contido

Nomes de papéis.
Ordenação
• Na maioria das vezes, as instâncias de classe do lado “muitos” de uma associação não têm
uma ordem explícita e podem ser consideradas um conjunto. Porém existem situações
onde as instâncias são ordenadas.
• Notação: colocar “{ordenado}” junto ao símbolo de cardinalidade da associação.
• Exemplo. Em uma interface gráfica, várias janelas podem ficar sobrepostas de tal forma
que somente a janela de cima seja visível.

{ordenado}
Janela Tela
Visível-em

Exemplo de ordenação.

Agregação (relacionamento “todo-partes”)

15
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

• Agregação: uma forma especial de associação, na qual os objetos que representam as


partes de alguma coisa são associadas a um objeto que representa a estrutura inteira.
• A existência de um objeto componente pode depender (não existe separadamente) da
existência de um objeto do qual ele faz parte. A agregação pode ter um número arbitrário
de níveis.
• Notação: a agregação é desenhada como uma associação, com um pequeno losango
próximo à classe que indica o todo.
• Exemplo. Um documento é composto por vários parágrafos, e cada parágrafo é composto
por várias sentenças.

Documento Parágrafo Sentença

Exemplo de agregação.

• Exemplo. Um microcomputador é composto por um ou mais monitores, uma caixa com o


sistema, um mouse opcional e um teclado. A caixa de sistema possui um chassis, uma
CPU, muitos objetos RAM e uma ventoinha opcional.

Exemplo de agregação.

Generalização e herança

Conceitos gerais

16
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

• Generalização e herança: abstrações poderosas para destacar características comuns das


classes, e ao mesmo tempo preservar as diferenças.
• Generalização (ou relacionamento “é-um”): relacionamento entre uma classe e uma ou
mais versões refinadas dela. Superclasse (ou classe geral): classe em processo de
refinamento. Subclasse (ou classe especializada): cada versão refinada. Uma subclasse
herda as características da subclasse e pode acrescentar as suas próprias características.
• Notação: um triângulo interligando uma superclasse às suas subclasses.
• Discriminador: termo que indica qual a base usada para a especialização de classes.
• Exemplo: Peças de equipamentos.

17
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

Equipamento

Nome
Fabricante
Peso
Preço

Tipo do equipamento

Bomba Aparelho de troca de calor Tanque

Pressão de sucção Área da superfície Volume


Pressão de descarga Diâmetro do tubo Pressão
Taxa de fluxo Comprimento do tubo
Pressão do tubo
Pressão da concha

Tipo de bomba

Bomba centrífuga Bomba de diafragma Bomba de imersão

Diâmetro do impelidor Material do diafragma Comprimento do pistão


Número de lâminas Diâmetro do pistão
Eixo de rotação Número de cilindros

Tipo de tanque

Tanque esférico Tanque pressurizado Tanque de teto flutuante

Diâmetro Diâmetro Diâmetro


Altura Altura

(Bomba de diafragma) (Aparelho de troca de calor) (Tanque de teto flutuante)

Nome = P101 Nome= E302 Nome= T111


Fabricante = Simplex Fabricante= Brown Fabricante= Simplex
Peso= 100 Kg Peso= 5000 Kg Peso= 10000 Kg
Preço = $5000 Preço=$ 20000 Preço= $50000
Pressão sucção = 1.1 atm Área superfície= Volume= 400000 l
Pressão descarga = 3.3 atm Diâmetro tubo= 2 cm Pressão= 1.1 atm
Taxa de fluxo = 300 l/h Comprimento tubo= 6 m Diâmetro= 8 m
Material diafragma=Teflon Pressão tubo= 15 atm Altura= 9 m
Pressão concha= 1.7 atm

Hierarquia de herança multinivelada com instância.

18
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

19
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

Construções de agrupamento
Módulo
• Módulo: uma construção lógica para agrupar classes, associações e generalizações.
• Os módulos incorporam diferentes visões de uma situação e permitem o particionamento
de um modelo de objetos.
• Um modelo de objeto é formado por vários módulos.
• Exemplo. Os módulos de eletricidade, encanamentos e ventilação representam diferentes
visões de um edifício.

Folha
• Folha (página ou pedaço de papel) é um mecanismo para facilitar o desenho de um
módulo. Regras:

◊ Colocar não mais de um módulo em uma folha.


◊ Cada generalização ou associação devem aparecer em somente uma folha.

Sugestões para a construção de diagramas


• Antes de iniciar a construção de um modelo, tente compreender o problema a ser
resolvido.
• Mantenha o modelo simples, evitando complicações.
• Escolha nomes com cuidado. Dê preferência à terminologia do usuário.
• Evite associações ternárias e n-árias. A maioria pode ser decomposta em associações
binárias com atributos de ligação.
• Não tente construir cardinalidade perfeita muito cedo.
• Não amontoe atributos de ligação em uma classe.
• Evite generalizações com excessivo número de níveis.
• Faça sucessivas revisões em seu modelo, melhorando nomes, corrigindo erros,
acrescentando detalhes.
• Peça a outras pessoas para revisarem o seu modelo.
• Documente sempre o modelo. A descrição textual explica porque o modelo foi feito de
um determinado modo.
• Nas classes gerais (superclasses), coloque poucos atributos e operações, para facilitar o
refinamento.

20
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

4. Modelagem avançada de objetos


Agregação
• Agregação: um modo de associação forte na qual um objeto agregado é feito de
componentes.
• Fisicamente um agregado é composto por objetos menores (partes).
• Cada relacionamento todo-partes é tratado separadamente para enfatizar a semelhança
com a associação.
• A decisão de usar “agregação” é muitas vezes arbitrária.

Agregação x associação
• Agregação é uma forma especial de associação. Se dois objetos estiverem estreitamente
ligados através de um relacionamento todo-partes, eles formam uma agregação. Se forem
independentes, eles formam uma associação.
• Testes:
◊ Você usaria a expressão é-parte-de?
◊ Algumas operações executadas sobre o todo aplicam-se automaticamente sobre as
partes?
◊ Alguns valores de atributos propagam-se do todo para as partes?

• As agregações incluem explosões em suas partes constituintes. Exemplo: uma empresa é


uma agregação de divisões, que são agregações de departamentos, porém não é uma
agregação de seus empregados, uma vez que “Empresa” e “Pessoa” são objetos
independentes.

Empresa Divisão Departamento

Trabalha para

Pessoa

Exemplo de agregação e associação.

21
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

22
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

Agregação x generalização
• Agregação e generalização são conceitos diferentes.
• Agregação relaciona-se a instâncias: um objeto faz parte do outro. Generalização é uma
forma de estruturar uma classe. Tanto uma superclasse quanto uma subclasse referem-se
às propriedades de um único objeto.
• Exemplo. Lâmpada pode ser classificada em duas subclasses: fluorescente e
incandescente. Base, cobertura, interruptor e fiação são partes da lâmpada. Uma lâmpada
fluorescente tem um contrapeso, um braço flexível e um starter; uma lâmpada
incandescente tem um bocal.
Lâmpada

Base Cobertura Interruptor Fiação

Fluorescente Incandescente

Contra-peso Braço Starter Bocal


flexível

Exemplo de agregação e generalização.

Propagação de operações
• Propagação: aplicação automática de uma operação em uma rede de objetos quando a
operação é aplicada em um objeto inicial. Por exemplo, a movimentação de uma
agregação movimenta os seus agregados.
• Notação: uma seta indicando a direção da propagação, junto ao nome da operação.
• Exemplo: uma pessoa possui vários documentos, cada documento é composto por
parágrafos e estes são compostos por caracteres. A operação “cópia” propaga-se do
documento para os parágrafos e para os caracteres.

Possui cópia cópia


Pessoa Documento Parágrafo Caractere
23
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

Propagação de operações.

Classes abstratas
• Classe abstrata: classe que não possui instâncias diretas, mas as suas subclasses sim.
Classe concreta: é uma classe instanciável, isto é, pode ter instâncias diretas.
• Classes abstratas são normalmente usadas para definir protocolo para uma operação, sem
apresentar um método correspondente. Isso é chamado operação abstrata. Uma operação
abstrata define a forma de uma operação e cada subclasse deve prover a sua própria
implementação. Uma operação abstrata é representada por uma observação entre chaves.
• Exemplo: A classe “Empregado” é uma classe abstrata. As subclasses “Horista”,
“Assalariado” e “Autônomo” são concretas. “Calcular-pagamento” é uma operação
abstrata.

Empregado

valor recebido no ano

calcular pagamento {abstrata}

Horista Assalariado Autônomo

salário hora salário semanal salário mensal


salário hora extra

calcular pagamento calcular pagamento calcular pagamento

Classes e operações abstratas.

24
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

Herança múltipla
• Herança múltipla é o mecanismo que permite que uma classe possua mais de uma
superclasse e herde características de todos o seus ancestrais.

• Exemplo: “Veículo Anfíbio” tanto é um “Veículo Aquático” quanto um “Veículo


Terrestre”.

Veículo

Terrestre Aquático

Automóvel Anfíbio Barco

Herança múltipla.

25
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

Lista de Exercícios
1. Descubra classes de objetos potenciais em uma Biblioteca.

2. Descubra semelhanças e diferenças entre: “tenda, caverna, barraco, garagem, celeiro,


casa, arranha-céu”.

3. Descubra semelhanças e diferenças entre: “bicicleta, veleiro, carro, caminhão, avião,


planador, motocicleta, cavalo”.

4. Descubra semelhanças e diferenças entre: “prego, parafuso, pino, rebite.”

5. Elabore um diagrama de classe para: “Um cliente pode solicitar nenhum ou muitos
pedidos. Cada pedido contém 1 ou mais itens de pedido, e cada item refere-se a um único
produto.”

6. Elabore um diagrama de classe para: “Um empregado ocupa uma mesa de trabalho em
um determinado dia da semana.”

7. Elabore um diagrama de classe para: “Alunos matriculam-se em disciplinas que são


ministradas por professores.”

8. Elabore um diagrama de classe e um diagrama de instância (com três instâncias para cada
classe) para: “um atleta defende uma equipe em um determinado ano”.

9. Prepare um diagrama de classes para o diagrama de instâncias abaixo:

(País) Limita-se (País) Limita-se (País)


Espanha França Bélgica

10. Desenhe, dê nomes e acrescente cardinalidade para 4 associações entre partido político e
cidadão.

11. Elabore um diagrama de classe para: “Todo barco é composto de um casco e


opcionalmente um motor.”

12. Elabore um diagrama de classe para: “Martelo é formado por uma cabeça e um cabo.”
26
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

13. Elabore um diagrama de classe para : “Álcali, ácido e solvente são líquidos. Ácido pode
ser clorídrico ou nítrico.”

14. Elabore um diagrama de classe para: “Carro possui quatro rodas, chassi, motor e
radiador. Motor é composto por pistão, biela e várias válvulas.”

15. Elabore um diagrama de classe para: “Carro pode ser classificado em europeu, nacional
e oriental. Carro europeu pode ser sueco, alemão e italiano, etc. Carro oriental pode ser
coreano ou japonês.”

16.Classifique os relacionamentos abaixo em generalização, agregação ou associação.


Podem existir associações ternárias ou n-árias, portanto não presuma que todo
relacionamento envolvendo três ou mais classes seja uma generalização. Defenda suas
respostas.

a) Um país possui uma capital.


b) Um filósofo à mesa de jantar está usando uma faca.
c) Um arquivo pode ser um arquivo comum ou um arquivo-diretório.
d) Arquivos contém registros
e) Um polígono é composto por um conjunto ordenado de pontos.
f) Um objeto de desenho pode ser um texto, um objeto geométrico ou um grupo.
g) Um estudante freqüenta uma disciplina ministrada por um professor.
h) Uma pessoa utiliza uma linguagem de programação em um projeto
i) Os modems e os teclados são dispositivos de entrada/saída
j) As classes podem ter diversos atributos.
k) Um atleta joga em uma equipe em um determinado ano.
l) Uma estrada interliga duas cidades.

17. Elabore um diagrama com as seguintes classes: “escola, playground, diretor, conselho
escolar, sala de aula, livro, aluno, professor, sala de repouso, computador, carteira,
cadeira, régua, porta, balanço.” Coloque nomes e cardinalidade nas associações, nomes
de papéis (se for necessário) e discriminador.

18. Elabore um diagrama mostrando associação, agregação, generalização e cardinalidade


entre as seguintes classes: “arquivo, diretório, arquivo ASCII, arquivo binário, disco,
disco flexível, disco rígido, unidade de disco, trilha, setor, caractere.” Coloque nomes e
cardinalidade nas associações, nomes de papéis (se for necessário) e discriminador.

19. Elabore um diagrama de classes mostrando associações, agregações e generalizações


para o problema a seguir. Inclua atributos e operações. “A empresa XYK promove cursos
de Informática. A cada trimestre a empresa divulga um cronograma de cursos. Todos os
cursos têm um número limitado de 10 vagas, a mesma carga horária (20 horas) e são

27
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

realizados na mesma sala, equipada com um computador por aluno. Cursos que não
atingem um número mínimo de 5 inscrições são cancelados. A empresa firma convênios
com escolas, empresas, associações profissionais e outras entidades. Cada afiliado tem
direito a um desconto nos cursos em que desejar participar. Para qualquer outro
interessado, a taxa de inscrição é normal. No início do curso o aluno recebe uma
apostila e um disquete e, no final, o certificado de participação. A empresa contrata
instrutores para cada curso. Um instrutor pode ministrar mais de um curso e pode
também participar como aluno em um ou mais cursos.”

20. Em qual situação você sugere a construção de um diagrama de instância? Justifique.

21. Dado o diagrama abaixo, desenhe um diagrama de instância para Passageiro,


Caminhão e Moto.

Veículo
Marca
Ano
Cor
Combustível

Passageiro Caminhão Moto


Nro. passageiro Peso da carga

22. Explique a diferença fundamental entre o diagrama de classe e o diagrama de instância.

23. Dado o diagrama de classe abaixo, desenhe um diagrama de instância para Professor,
Administrativo e Aluno.

Pessoa
Nome
Endereço
Idade
Sexo

Funcionário Aluno

Nro. registro
acadêmico
Professor Administrativo

Disciplina que Seção 28


ministra
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

24. Explique em detalhes o significado do diagrama:

{ordenado} CARTA
BARALHO
Naipe
Valor

25. No exercício anterior, considere que Naipe possa assumir os valores: copas, paus, ouros
e espadas; e Valor possa assumir os valores: 2, 3, 4,..., Valete, Dama, Rei e Ás. Desenhe
um diagrama de instâncias com 2 instâncias para a classe CARTA.

26. Elabore um diagrama de classe e um diagrama de instância com duas instâncias de vogal
e duas instâncias de consoante para: “O alfabeto da lingua portuguesa é formado por 26
letras (incluindo as letras empregadas em vocábulos estrangeiros não aportuguesados):
a, b, c , d , e , f , g , h , i , j , k , l , m , n , o , p , q , r , s , t , u , v , x , y , z , w. As letras
podem ser classificadas em vogais e consoantes.”

27. Atividade de Pesquisa. Elabore um diagrama de hierarquia de herança multinivelada


com instâncias semelhante ao apresentado em classe (“Equipamentos”). Desenhe pelo
menos três níveis hierárquicos. Acrescente tipo de dados aos atributos.

28. Mostre que o diagrama abaixo pode ser reduzido a uma associação binária.

Vendedor Produto

Cliente

29
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

5. Modelagem dinâmica
• O modelo dinâmico descreve os aspectos de um sistema relativos ao tempo e à seqüência
de operações que ocorrem em resposta a estímulos externos, sem considerar como as
operações são implementadas.
• Principais conceitos: eventos e estados.
• Principal ferramenta: diagrama de estados.
• O modelo dinâmico consiste em múltipos diagramas de estado, um para cada classe com
comportamento dinâmico importante.

Eventos
• Evento: transmissão ou informação unidirecional de um objeto para outro; estímulo
individual. Diferente de uma subrotina (retorna um valor).
• Informação: sinal simples ou dados (atributos de eventos, mostrados entre parênteses).
• Evento representa um ponto no tempo. É algo que acontece em um certo momento. É uma
ocorrência considerada rápida. Não tem duração.

Exemplos

partida de avião (empresa aérea, número de vôo, cidade)


botão do mouse apertado (botão, localização)
string de entrada introduzido (texto)
telefone levantado
dígito discado (dígito)
velocidade da máquina penetrou em zona de perigo

• Eventos podem depender um do outro. Exemplo: o vôo 123 deve partir de São Paulo
antes de chegar ao Rio de Janeiro.
• Um evento pode não depender de outro evento, neste caso eles são chamados eventos
concorrentes. Exemplo: o vôo 123 pode partir antes ou depois do vôo 456.

30
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

• Eventos são também modelados como classe. O momento em que um evento ocorre é um
atributo implícito de todos os eventos.
Cenários e diagramas de eventos
• Cenário é uma seqüência de eventos que ocorrem durante uma determinada execução do
sistema.
• Um cenário pode incluir todos os eventos de um sistema ou somente aqueles que são
gerados por alguns objetos.

Exemplo: cenário para utilização de uma linha telefônica


pessoa que chama (chamador) retira o fone do gancho
começa o sinal de discar
chamador disca um número (5)
sinal de discar pára
chamador disca um número (5)
chamador disca um número (5)
chamador disca um número (1)
chamador disca um número (2)
chamador disca um número (3)
chamador disca um número (4)
telefone chamado começa a tocar
ouve-se o tilintar do telefone chamado
pessoa chamada atende
telefone chamado pára de tocar
som de chamada desaparece do telefone chamador
telefones são interligados
pessoa chamada desliga
telefones são desligados
chamador desliga

Diagrama de eventos
• Um diagrama que mostra a seqüência de eventos e os objetos que permutam eventos.
• Objetos são representados por uma linha vertical e os eventos por uma seta horizontal
indicando o sentido da transmissão.

31
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

Exemplo: diagrama de eventos para uma chamada telefônica.

Pessoa liga Linha telefônica Pessoa atende

levanta o fone do gancho

inicia o sinal de linha

disca (5)

termina o sinal de linha

disca (5)

disca (5)

disca (1)

disca (2)

disca (3)

disca (4)

sinal de chamada o telefone toca

atende o telefone

o sinal pára pára de tocar

linha conectada linha conectada

coloca o fone no gancho

quebra de conexão quebra de conexão

coloca o fone no gancho

Estados
• Estado: valores do conjunto de atributos.
• Um estado corresponde ao intervalo entre dois eventos recebidos por um objeto. Eventos
e estados formam duplas: um evento separa dois estados e um estado separa dois eventos
• Estados representam intervalos de tempo (têm uma duração).
• Objetos reagem aos eventos recebidos. A reação pode ser a modificação de seu estado
interno. Exemplo: se um dígito for discado no estado SINAL DE DISCAR, a linha
telefônica abandona o sinal de discar e passa para o estado DISCANDO.
• Os atributos que não afetam o comportamento do objeto são ignorados.

32
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

Exemplos

O tilintar de um telefone
Viagem de São Paulo ao Rio de Janeiro
Água no estado líquido (a temperatura está entre 0 e 100 graus)
Transmissão do automóvel na primeira marcha
Aguardando usuário introduzir uma senha
Aquecendo uma mistura
Aguardando o próximo comando
Acelerando o motor
Enchendo o tanque
Processador ocioso

Caracterização de estado

• Um estado pode ter um nome, uma descrição de seu propósito, a seqüência de eventos
que conduz a ele, a condição que o caracteriza, os eventos aceitos, as ações tomadas e o
próximo estado.

Exemplo: alarme soando em um relógio.


• Nome do estado: alarme soando.
• Descrição: o alarme do relógio está soando para indicar o momento visado
• Seqüência de eventos que produz o estado:
⇒ Preparar o alarme (momento visado)
⇒ Qualquer seqüência exclusive desligar o alarme
⇒ Momento atual = momento visado
• Condição que caracteriza o estado: alarme = ligado e momento visado < = momento atual
< = momento visado + 20 segundos e nenhum botão apertado desde o momento visado.
• Eventos aceitos no estado:

Evento Ação Estado seguinte

33
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

momento atual = momento visado + 20 reajustar alarme normal


botão pressionado (qualquer botão) reajustar alarme normal

Diagrama de estados
• O diagrama de estados é uma ferramenta gráfica que mostra a relação entre estados e
eventos.
• Quando um evento é recebido, o estado seguinte depende do estado atual e do evento. A
modificação de estado por um evento é chamada “transição”.
• Notação: o diagrama de estados é representado por um grafo contendo nós e arcos. Os
nós são “estados” e os arcos direcionados são “transições” contendo os nomes de
“eventos”. O nó é uma figura arredondada. Dentro do nó escreve-se o nome do estado.
• A transição é uma seta que parte de um estado-origem para o estado-destino. O nome da
seta é o evento que causa a transição entre os estados. Quando acontece o evento diz-se
que a transição “disparou”.

Exemplo: linha telefônica.

34
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

• Estados não definem totalmente todos os valores de atributos do objeto. Por exemplo, o
estado discando inclui todas as sequências de números incompletos de telefone. Cada
número não é um estado diferente, mas o número inteiro é um atributo.
• Um diagrama de estados descreve o comportamento de uma única classe de objetos.
Como todas as instâncias da classe têm o mesmo conjunto de operações, todas
compartilham o mesmo diagrama. Como cada objeto tem seus próprios valores de
atributos, cada um tem o seu estado interno próprio como resultado da seqüência de
eventos que recebeu. Logo, cada objeto é independente e comporta-se a seu próprio
modo.
• Um diagrama pode representar ciclos simples ou contínuos.
• Ciclo contínuo: enfatiza as passagens pelo diagrama. Exemplo: linha telefônica.

35
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

• Ciclo simples (uma só passagem): representam objetos com vidas finitas. Enfatiza o
estado inicial e final do objeto, onde o estado inicial representa a criação do objeto e o
estado final a destruição do objeto.
• Notação: estado inicial é indicado por um círculo cheio e o final por um “olho de boi”.
Podem ser rotulados para indicar as condições de início e fim.

Exemplo: jogo de xadrez.

Início Vez das cheque-mate Pretas


brancas vencem
empate forçado

pretas brancas Empate


jogam jogam

Vez das
pretas empate forçado
Brancas
cheque-mate vencem

36
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

Condição

• Condição é uma função booleana de valores de objeto (retorna valor verdadeiro ou falso).
Exemplo: “temperatura abaixo do ponto de congelamento”. (V, F)
• Condição pode ser usada como “guarda” na transição. Uma transição “guardada” dispara
quando seu evento ocorre, mas somente se a condição for verdadeira. Exemplo: “Quando
sair de manhã (evento) e a temperatura estiver abaixo do ponto de congelamento
(condição), coloque as luvas (estado seguinte).”
• Notação: escrever a condição entre colchetes, à frente do evento.

Exemplo: tráfego terrestre

Controle de operações
• Operações vinculadas a estados ou transições são executadas em resposta aos
correspondentes eventos ou estados. Dois tipos de operações são definidos: “atividade” e
“ação”.

Atividade
• “Atividade” é uma operação que consome tempo para se completar. Está associada a
“estado”.
• Pode ser uma operação contínua (exibição de uma imagem) ou sequencial, que termina
após um intervalo de tempo.
37
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

• Notação: escrever “faça: A” dentro da caixa de estado. Indica que a atividade A inicia na
entrada do estado e termina na saída do estado.
Ação
• Ação: é uma operação instantânea e está associada a um evento. Representa uma
operação cuja duração é insignificante. Modelar uma operação como “ação” significa não
estar preocupado com controle interno ou detalhamento.
• Notação: escrever o nome da ação à frente do evento, separado pela “/ “.

Exemplo: menu instantâneo

Resumo da notação
• Estado: escrever dentro da caixa.
• Evento: escrever junto à seta de transição.
• Condição: escrever dentro de colchetes, à frente do evento.
• Atividade: escrever dentro da caixa de estado, junto à palavra “faça”.
• Ação: escrever à frente do evento, precedido pela barra “/”.

38
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

Relacionamento entre os modelos de classe e dinâmico.

• O modelo dinâmico especifica as seqüências possíveis de modificações nos objetos.


• O diagrama de estado descreve uma parte do comportamento dos objetos de uma classe.
• Estado relacionam-se aos atributos dos objetos.
• Eventos podem ser representados como operações no modelo de classe.

Sugestões práticas
• Construa diagramas de estado para classes com comportamento dinâmico significativo.
• Use cenários para ajudar a iniciar a elaboração do diagrama de estados.
• Considere atributos relevantes ao definir um estado. Nem todos os atributos são usados
no diagrama de estados.

39
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

Exercícios

1. Para que serve o diagrama de transição de estados?


2. Descreva os principais conceitos e ferramentas do modelo dinâmico.
3. Como o diagrama de transição de estados se relaciona com o diagrama de classes?
4. Para qual tipo de sistema o diagrama de transição de estados é considerado uma boa
ferramenta de modelagem? Justifique!
5. O que é um cenário? Elabore um cenário para uma consulta de saldo em um caixa
automático.
6. Qual é a definição de “estado”? O que é uma mudança de estado? Como a mudança de
estado é mostrada no diagrama de transição de estado?
7. Qual é a definição de “evento”? Como a ocorrência do evento é mostrada no diagrama de
transição de estado?
8. O que são condições em um diagrama de transição de estados? Como são mostradas?
9. Qual a diferença entre ação e atividade? Como são mostradas no diagrama?
10.Nas afirmações abaixo, coloque certo (C) ou errado (E), justificando as erradas.
( ) Cenário é uma sequência de eventos.
( ) Atividade é uma operação instantânea e está associada a um evento.
( ) Endereço de cobrança de cliente é um estado aceitável.
( ) As operações em uma classe podem ser classificadas em ação e atividade.
( ) Toda classe deve ter um diagrama de estados associado a ela.
( ) Vários objetos trocam eventos em um diagrama de eventos
( ) Tecla ESC pressionada é um evento aceitável.
( ) Uma atividade é normalmente invocada quando o objeto muda de estado.
( ) Somente um evento pode ocorrer em um estado.
( ) Uma condição impede a ocorrência de um evento.
( ) Uma condição impede a transição de estado.
( ) Ação é uma operação demorada e está associada a um estado.
( ) Um evento com condição de guarda nunca dispara uma transição.
( ) Pode ocorrer um evento em um estado e o objeto permanecer nesse estado.
( ) Evento corresponde a um estímulo externo ao sistema.

11. Elabore um diagrama de transição de estados para o ventilador/exaustor.


12. Elabore um diagrama de transição de estados para o portão automático.

40
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

13. Elabore um diagrama de transição de estados para um semáforo.


14. Elabore um diagrama de transição de estados para uma lâmpada.
15. Explique em detalhes quando haverá transição do estado “Ligada/inativa” para o estado
“Aguardando”.

Ligada/inativa Aguardando
Toque do telefone [quinto toque]

16. Explique o significado de: “tempo decorrido [carros nas vias esquerdas N/S]” no trecho
de diagrama abaixo.

Tempo decorrido [carros nas vias esquerdas N/S]


Estado 1 Estado 2

17. Explique o que está errado no diagrama abaixo.


C [calcular taxa de envio de dados]

D
Estado 1
Estado 2 Estado 4
A B

Estado 3

18) Elabore um diagrama de transição de estados para o tocador de fita cassete simples.
Considere que o aparelho funciona com o seguinte conjunto de teclas, cujo significado é
familiar a todos: Eject (abrir/fechar a unidade), Play (tocar), Stop (parar), Pause
(pausa/continua), Fast Forward (avanço rápido), Rewind (rebobinar). OBS: despreze a
queda de energia e considere que o aparelho já está ligado com fita.
19) Elabore um diagrama de transição de estados para a catraca. Uma catraca, acionada por
cartões magnéticos, controla a entrada e saída de alunos no laboratório. Ela permanece
travada e somente é liberada quando o aluno passa o cartão em uma das leitoras. Para
entrar no laboratório, o aluno passa o cartão na leitora de entrada e aguarda a liberação da
catraca. Quando esta é liberada, o aluno entra, a catraca gira no sentido da entrada, em
seguida é novamente travada. Para sair do laboratório, o procedimento é inverso. O aluno
pode passar o cartão mas não entrar nem sair do laboratório. Neste caso, a catraca é
travada após um certo tempo. Considere que não há nenhum problema com o cartão ou o
41
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

ato de passar o cartão na leitora, nem é feito nenhum controle sobre a entrada ou saida, ou
seja, se alguém passar o cartão em uma leitora mas não girar a catraca, pode passar
novamente o cartão na mesma leitora, que a catraca é liberada.
20. O trecho de diagrama abaixo corresponde ao objeto IGNIÇÃO de um automóvel.
Considere que para passar de Desligada para Partida deve-se girar a chave, porém
somente haverá transição se a transmissão estiver em ponto morto. Complete o diagrama
com esses detalhes.

Desligada Partida

Desligar chave Liberar


Ligada

21.Elabore um diagrama de transição de estados para o controle de uma secretária


eletrônica, que responde às chamadas telefônicas com um aviso pré-gravado. Uma
chamada telefônica é detectada mas a secretária somente responde com o aviso pré-
gravado se o telefone não for atendido até o quinto toque da campainha. Se o telefone for
atendido antes do quinto toque, a secretária desliga.Quando o aviso da secretária termina,
a mensagem de quem chamou é gravada. Quando o chamador desliga, a secretária
também desliga. O chamador pode desligar o telefone enquanto a secretaria estiver
avisando. Neste caso, a secretária também desliga.
22.Elabore um diagrama de estados para o calibrador de pneu. O calibrador de pneu indica
uma certa medida de pressão. Quando um novo pneu é calibrado, um novo ajuste de
pressão pode ser necessário. O ajuste é feito pressionando-se dois botões, A e B, com um
leve toque. O botão A aumenta o indicador de pressão em uma unidade e o botão B
diminui em uma unidade. Quando a pressão atual do pneu é detectada, o calibrador
automaticamente ajusta a pressão do pneu segundo a medida de seu indicador. Note que
a pressão do pneu pode estar menor, igual ou maior do que a medida do indicador. Se a
pressão do pneu estiver menor, o pneu será enchido até a pressão do indicador. Se a
pressão estiver maior, o pneu será esvaziado até a pressão do indicador. Se for igual, nada
ocorrerá.
23.Elabore um diagrama de estados para o relógio digital simples. O relógio tem um visor,
dois botões para ajustá-lo, “A” e “B”, e três estados operacionais: “exibindo hora”,
“acertando hora” e “acertando minuto”. No estado “exibindo hora”, as horas e minutos
são mostrados, separados por dois pontos piscantes. O botão “A” é usado para mudar os
estados. A cada vez que é acionado, a mudança ocorre na sequência: “exibindo hora”,
“acertando hora”, “acertando minuto”, “exibindo hora”, etc. Nos estados “acertando
hora” e “acertando minuto”, o botão “B” é usado para avançar as horas ou minutos uma
vez, sempre que for pressionado.

42
Universidade Estadual de Campinas
UNICAMP
Centro de Computação

24.Elabore um diagrama de estados para a escada extensível. Uma escada extensível tem
uma corda, uma roldana e um prendedor para içar, baixar e prender a extensão. Quando o
prendedor está acionado, a extensão fica mecanicamente apoiada, sendo possível subir a
escada com segurança. Para soltar o prendedor, suspende-se ligeiramente a extensão com
a corda. Pode-se então suspender ou baixar livremente a extensão. O prendedor produz
um estalido ao passar pelos degraus da escada. O prendedor pode ser acionado enquanto a
extensão está sendo içada revertendo-se a direção no exato momento em que ele passa por
um degrau.
25.Elabore um diagrama de transição de estados para o motor.
26.Elabore um diagrama de transição de estados para um radar funcionando em uma via
urbana.
27.Elabore um diagrama de transição de estados para uma máquina copiadora (xerox).
28.Elabore um diagrama de transição de estados para o forno de microondas.
29.Elabore um diagrama de transição de estados para uma máquina de lavar automóvel.

43

Vous aimerez peut-être aussi