Questão de Engenharia de Software — UML — FGV 2024
Engenharia de Software›UML
Código
fg165496
Banca
FGV
Órgão
TRF 1
Ano
2024
Cargo
AJ ( ª Região)
Observe o diagrama de máquina de estados modelado em UML 2.5.1 para uma instância de classe. O diagrama de máquinas de estado de comportamento representa que a transição:
Aexterna do estado A para B ocorre em paralelo à transição de A para C;
Bcompleta para o estado B requer execução dos comportamentos de duas regiões;
Clocal de B1 no estado composto B indica que o comportamento de entrada do estado B1 não é executado;
Dinterna no estado B2 indica que nenhum comportamento de saída ou entrada é executado quando essa transição ocorre;
Epara o fim do ciclo de vida da instância de classe modelada depende do comportamento de saída do estado C da máquina de estados.
Revelar gabarito e comentário▾
GabaritoD — interna no estado B2 indica que nenhum comportamento de saída ou entrada é executado quando essa transição ocorre;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
UML – Diagrama de Máquina de Estados: transições e comportamentos
Gabarito: letra D. A transição interna no estado B2, por definição da UML 2.5, não dispara os comportamentos de saída (exit) do estado de origem nem os de entrada (entry) do estado de destino — ela apenas executa o comportamento associado à própria transição, permanecendo no mesmo estado. É exatamente isso que a alternativa D afirma, e é o conceito central que a banca explora nesta questão.
A máquina de estados é um diagrama comportamental da UML que modela o ciclo de vida de uma instância (objeto) por meio de estados e transições. Cada estado pode ter comportamentos associados: entry (executado ao entrar no estado), exit (executado ao sair do estado) e do (executado enquanto permanece no estado). As transições, por sua vez, podem ser de três tipos:
Transição externa: é a mais comum — o objeto sai do estado de origem (executando o exit), executa o comportamento da transição e entra no estado de destino (executando o entry).
Transição interna: o objeto permanece no mesmo estado; não executa os comportamentos de saída nem de entrada, apenas o comportamento associado à transição. É representada dentro do próprio estado, com o rótulo evento / ação.
Transição local: ocorre dentro de um estado composto, entre subestados, sem sair do estado composto — ou seja, não executa o exit do estado composto nem o entry do estado composto, mas pode executar os comportamentos dos subestados envolvidos.
A distinção entre transição interna e local é sutil e muito cobrada. A interna não dispara nenhum comportamento de saída ou entrada (nem do estado atual, nem de qualquer outro). A local, por sua vez, não dispara os comportamentos do estado composto que a contém, mas pode disparar os dos subestados. A banca adora inverter esses conceitos, como veremos nas alternativas.
Para fixar, veja a comparação:
Tipo de transição
Executa exit do estado de origem?
Executa entry do estado de destino?
Exemplo típico
Externa
Sim
Sim
A --> B
Interna
Não
Não
evento / ação dentro do estado
Local
Não (do estado composto)
Não (do estado composto)
B1 --> B2 dentro de B
No diagrama da questão, o estado composto B contém os subestados B1 e B2. A alternativa D fala de uma transição interna em B2 — ou seja, uma transição que começa e termina no próprio B2, sem sair dele. Nesse caso, a UML determina que os comportamentos de saída e entrada não são executados. É a definição literal de transição interna.
A pegadinha está em confundir transição interna com transição local ou com transição externa. A banca explora exatamente essa confusão: o candidato que não domina a diferença pode achar que a transição interna executa algum comportamento de entrada ou saída, ou que a local não executa os comportamentos dos subestados. Guarde a regra de ouro: transição interna = nenhum exit/entry; transição local = não sai do estado composto; transição externa = executa tudo.
Transições em máquina de estados: Externa (Executa exit da origem, Executa entry do destino); Interna (Não executa exit/entry, Só executa a ação do evento); Local (Não sai do estado composto, Executa exit/entry dos subestados)
Alternativa A — ❌ Incorreta
Afirma que a transição externa de A para B ocorre em paralelo à transição de A para C. Em UML, transições concorrentes só existem dentro de regiões paralelas de um estado composto (representadas por linhas tracejadas). No diagrama, não há indicação de regiões paralelas entre A, B e C — as transições são mutuamente exclusivas, ou seja, o objeto segue um único caminho por vez. A banca tenta confundir com o conceito de concorrência, que não se aplica aqui.
Alternativa B — ❌ Incorreta
Diz que a transição completa para o estado B requer execução dos comportamentos de duas regiões. Isso só faria sentido se o estado B tivesse regiões paralelas (orthogonal state), o que não é o caso — B é um estado composto simples, com subestados B1 e B2, mas sem regiões. A transição para B é uma transição externa comum: executa o exit de A, o comportamento da transição e o entry de B. Não há exigência de múltiplas regiões.
Alternativa C — ❌ Incorreta
Afirma que a transição local de B1 no estado composto B indica que o comportamento de entrada do estado B1 não é executado. Isso está invertido. A transição local, por definição, não executa os comportamentos de saída e entrada do estado composto (B), mas executa os comportamentos dos subestados envolvidos (B1 e B2). Ou seja, ao fazer uma transição local de B1 para B2, o entry de B2 é executado, e o exit de B1 também. A alternativa erra ao dizer que o entry de B1 não é executado — na verdade, se a transição local parte de B1, o exit de B1 é executado; se chega a B1, o entry de B1 é executado. A confusão é clássica: trocar o comportamento do estado composto pelo do subestado.
Alternativa D — ✅ Correta ⟵ GABARITO
A transição interna no estado B2 é representada dentro do próprio B2, com o rótulo evento / ação. Por definição da UML, ela não executa os comportamentos de saída (exit) do estado de origem nem de entrada (entry) do estado de destino — que, neste caso, são o mesmo estado (B2). O objeto permanece em B2, apenas executando a ação associada à transição. É exatamente o que a alternativa afirma, e é o conceito que a banca cobra.
Alternativa E — ❌ Incorreta
Diz que a transição para o fim do ciclo de vida da instância depende do comportamento de saída do estado C. Na UML, a transição para o estado final (fim) é uma transição externa comum: ela executa o exit do estado de origem (C), mas a ocorrência da transição depende do evento que a dispara, não do comportamento de saída. O exit é uma consequência da transição, não uma condição para ela. A alternativa inverte causa e efeito — o comportamento de saída é executado porque a transição ocorre, e não o contrário.
Gabarito: letra D — a transição interna em B2 não executa comportamentos de saída ou entrada, conforme a definição da UML 2.5.