Universidade Estadual de Campinas UNICAMP
Centro de Computação
Guia sobre Orientação a Objetos
Eliel Gonçalves
[email protected]
[GuiaOrientaçãoObjetos:V1.0:01/05/2007:DDS:CNARQ] DIRETORIA DE DESENVOLVIMENTO DE SOFTWARE ↸ Rua Saturnino de Brito, n° 45 – Cidade Universitária Zeferino Zeferino Vaz – Barão Geraldo – Campinas – SP (0XX19) (0XX19) 3521.2283 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 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) Maria
Pessoa
(Pessoa) Pedro
(Pessoa)
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 nome: string
(Pessoa) Maria
(Pessoa) Pedro
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 nome
nome idade
tamanho
mudar cargo mudar-endereço
última atualização imprimir
Objeto geométrico cor posição mover (delta:Vetor) selecionar (p:Ponto): Boolean 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
nome
(País)
nome
Tem-capital
Canadá
(País)
Senegal
Diagrama de classes
(Cidade) Ottawa
Tem-capital
França
(País)
Cidade
(Cidade)
Diagrama de instâncias
Paris Tem-capital
(Cidade) 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 L5
L1
L4
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) Diagrama de Instâncias
Maria
(Projeto) CAD
(LInguagem) 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 1+ 3-5 3,4,18
exatamente 1 um ou mais 3, 4 e 5 (seqüência) 3, 4 ou 18 (alternativas) muitos (zero ou mais) 11
Universidade Estadual de Campinas UNICAMP
Centro de Computação
linha sem símbolos
opcional (zero ou 1) 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 /etc/termcap /usr/doe/.login
(leitura) (leitura-escrita) (leitura-escrita)
João Maria 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 Trabalha-para
Nome Endereço
Pessoa Nome Endereço Salário Cargo
Associação entre classes. Forma mais perene
Empresa
Trabalha-para
Nome Endereço
Pessoa Nome 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 Trabalha-para
Empresa
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
Pressão de sucção Pressão de descarga Taxa de fluxo
Aparelho de troca de calor
Tanque
Área da superfície Diâmetro do tubo Comprimento do tubo Pressão do tubo Pressão da concha
Volume Pressão
Tipo de bomba
Bomba centrífuga
Bomba de diafragma
Bomba de imersão
Diâmetro do impelidor Número de lâminas Eixo de rotação
Material do diafragma
Comprimento do pistão Diâmetro do pistão Número de cilindros Tipo de tanque
Tanque esférico
Tanque pressurizado
Tanque de teto flutuante
Diâmetro
Diâmetro Altura
Diâmetro Altura
(Bomba de diafragma)
(Aparelho de troca de calor)
Nome = P101 Fabricante = Simplex Peso= 100 Kg Preço = $5000 Pressão sucção = 1.1 atm Pressão descarga = 3.3 atm Taxa de fluxo = 300 l/h Material diafragma=Teflon
Nome= E302 Fabricante= Brown Peso= 5000 Kg Preço=$ 20000 Área superfície= Diâmetro tubo= 2 cm Comprimento tubo= 6 m Pressão tubo= 15 atm Pressão concha= 1.7 atm
(Tanque de teto flutuante) Nome= T111 Fabricante= Simplex Peso= 10000 Kg Preço= $50000 Volume= 400000 l Pressão= 1.1 atm Diâmetro= 8 m Altura= 9 m
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
Fluorescente
Contra-peso
Cobertura
Interruptor
Fiação
Incandescente
Braço flexível
Starter
Bocal
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. Pessoa
Possui
Documento
cópia
Parágrafo
cópia
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
salário hora salário hora extra
salário semanal
calcular pagamento
calcular pagamento
Autônomo salário mensal 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
Automóvel
Aquático
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) Espanha
Limita-se
(País) França
Limita-se
(País) 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 Nro. passageiro
Caminhão Peso da carga
Moto
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
Professor
Administrativo
Disciplina que ministra
Seção
Nro. registro acadêmico 28
Universidade Estadual de Campinas UNICAMP
Centro de Computação
24. Explique em detalhes o significado do diagrama:
{ordenado} BARALHO
CARTA
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.
Produto
Vendedor
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 linha conectada
pára de tocar 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 botão pressionado (qualquer botão) reajustar alarme
normal 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 brancas
cheque-mate
Pretas vencem
empate forçado pretas jogam
brancas jogam Vez das pretas
Empate
empate forçado cheque-mate
Brancas 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. Estado 1
Tempo decorrido [carros nas vias esquerdas N/S]
Estado 2
17. Explique o que está errado no diagrama abaixo. C [calcular taxa de envio de dados]
Estado 1
D
Estado 2 A
Estado 4
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.
Partida
Desligada
Desligar chave
Ligada
Liberar
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