🧠 Quiz: Cap 12 — Arquitetura de Jogo (MVVM)

📖 Ver Cap 12

Teste se você entendeu os conceitos do Cap 12 antes de seguir para o Cap 13. Pense na sua resposta antes de abrir o gabarito!


1. Na analogia do capítulo, qual é o papel da View?

A) Calcular a vida e os pontos do jogador B) Apenas desenhar na tela o que o “Garçom” (ViewModel) traz C) Guardar os dados no banco de dados D) Fazer requisições à internet


2. Qual é o papel do ViewModel (“o Garçom”)?

A) Desenhar os botões e textos na tela B) Fazer os cálculos e a lógica do jogo, avisando a tela quando o estado muda C) Definir as cores do tema do app D) Compilar o projeto


3. O que significa Encapsulamento, no exemplo private val _pontos = mutableStateOf(0) + val pontos: State<Int> = _pontos?

A) Os dois são públicos e qualquer tela pode alterá-los diretamente B) _pontos é privado (só o ViewModel altera) e pontos é a versão pública, só para leitura pela tela C) _pontos e pontos são a mesma coisa, sem diferença D) State<Int> transforma o número em texto


4. Segundo o “Mapa das Pastas” do capítulo, onde devem ficar as classes ViewModel?

A) Em ui/screens/ B) Em ui/viewmodel/ C) Na raiz do projeto, junto com o MainActivity D) Em uma pasta chamada models/


5. O que faz vm: PersonagemViewModel = viewModel() no parâmetro de ArenaScreen?

A) Cria/recupera uma instância do ViewModel ligada ao ciclo de vida da tela, como valor padrão do parâmetro B) Declara uma variável de texto C) Importa a biblioteca de navegação D) Apaga o ViewModel da memória imediatamente


🔑 Ver Gabarito 1. **B** — a View (Compose) apenas exibe o que o ViewModel calculou; ela não faz a lógica. 2. **B** — o ViewModel ("Garçom") guarda e calcula o estado, avisando a tela sobre mudanças. 3. **B** — `_pontos` privado é o "dado secreto"; `pontos` público (`State`) é o que a tela pode observar, sem poder alterar diretamente. 4. **B** — classes `ViewModel` vão em `ui/viewmodel/`, enquanto funções `@Composable` vão em `ui/screens/`. 5. **A** — `viewModel()` fornece (ou cria, se ainda não existir) a instância do ViewModel associada àquela tela, como valor padrão do parâmetro. </details> --- [⬅️ Voltar para Quizzes](./index.html)