Instruções Gerais:

  • Resolva as atividades em ordem progressiva de maturidade.
  • Cada nível adiciona requisitos técnicos, tratamento de erros e casos de borda reais.
  • Consulte o gabarito comentado ao final de cada questão para autoavaliação.

🎯 Nível 1: Fundamentos

Problema 20.1 — Modelagem de Entidades Financeiras (Conta, Transacao, Categoria)

Contexto: Modelagem de Entidades Financeiras (Conta, Transacao, Categoria) no contexto de Projeto Corporativo: App Mobile de Gestão Financeira com Auditoria JSON.

Requisitos de Execução:

  1. Criar data classes com validação de saldo e valores monetários positivos.

Resultado Esperado

Entidades de domínio financeiro instanciadas com integridade.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_20_1_SeuNome
  2. Envie na tarefa: Atividade Cap 20 - Projeto Corporativo: App Mobile de Gestão Financeira com Auditoria JSON
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.projeto

import java.time.Instant

enum class TipoTransacao { RECEITA, DESPESA }

data class TransacaoFinanceira(
    val id: String,
    val descricao: String,
    val valor: Double,
    val tipo: TipoTransacao,
    val dataHora: Instant = Instant.now()
) {
    init {
        require(valor > 0) { "Valor da transacao deve ser estritamente positivo" }
    }
}

🔍 Nível 2: Prática

Problema 20.2 — Cálculo de Balanço e Resumo Financeiro com Kotlin Collections

Contexto: Cálculo de Balanço e Resumo Financeiro com Kotlin Collections no contexto de Projeto Corporativo: App Mobile de Gestão Financeira com Auditoria JSON.

Requisitos de Execução:

  1. Calcular total de receitas, total de despesas e saldo líquido consolidado.

Resultado Esperado

Balanço financeiro calculado com precisão monetária.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_20_2_SeuNome
  2. Envie na tarefa: Atividade Cap 20 - Projeto Corporativo: App Mobile de Gestão Financeira com Auditoria JSON
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.projeto

fun calcularBalanco(transacoes: List<TransacaoFinanceira>): Triple<Double, Double, Double> {
    val receitas = transacoes.filter { it.tipo == TipoTransacao.RECEITA }.sumOf { it.valor }
    val despesas = transacoes.filter { it.tipo == TipoTransacao.DESPESA }.sumOf { it.valor }
    val saldo = receitas - despesas
    return Triple(receitas, despesas, saldo)
}

fun main() {
    val lista = listOf(
        TransacaoFinanceira("1", "Salario", 8500.0, TipoTransacao.RECEITA),
        TransacaoFinanceira("2", "Aluguel", 2200.0, TipoTransacao.DESPESA)
    )
    val (rec, desp, sal) = calcularBalanco(lista)
    println("Receitas: R$ $rec | Despesas: R$ $desp | Saldo Final: R$ $sal")
}

⚡ Nível 3: Integração

Problema 20.3 — Trilha de Auditoria Imutável com Hash SHA-256 e Exportação JSON

Contexto: Trilha de Auditoria Imutável com Hash SHA-256 e Exportação JSON no contexto de Projeto Corporativo: App Mobile de Gestão Financeira com Auditoria JSON.

Requisitos de Execução:

  1. Gerar bloco de auditoria JSON com checksum SHA-256 para cada transação registrada.

Resultado Esperado

Trilha de auditoria criptográfica em JSON gerada com sucesso.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_20_3_SeuNome
  2. Envie na tarefa: Atividade Cap 20 - Projeto Corporativo: App Mobile de Gestão Financeira com Auditoria JSON
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.projeto

import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import java.security.MessageDigest

@Serializable
data class RegistroAuditoriaMobile(val id: String, val acao: String, val hashSha256: String)

fun gerarRegistroAuditoria(id: String, payload: String): RegistroAuditoriaMobile {
    val digest = MessageDigest.getInstance("SHA-256").digest(payload.toByteArray())
    val hashHex = digest.joinToString("") { "%02x".format(it) }
    return RegistroAuditoriaMobile(id = id, acao = "CRIAR_TRANSACAO", hashSha256 = hashHex)
}

fun main() {
    val reg = gerarRegistroAuditoria("TX-101", "VALOR=500.00")
    println("Auditoria JSON: ${Json.encodeToString(RegistroAuditoriaMobile.serializer(), reg)}")
}

🏆 Nível 4: Desafio Corporativo

Problema 20.4 — Suíte de Testes de Carga e Integridade da Aplicação Financeira

Contexto: Suíte de Testes de Carga e Integridade da Aplicação Financeira no contexto de Projeto Corporativo: App Mobile de Gestão Financeira com Auditoria JSON.

Requisitos de Execução:

  1. Testar processamento concorrente de 10.000 transações garantindo consistência matemática.

Resultado Esperado

Suíte de integridade validando robustez da aplicação mobile corporativa.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_20_4_SeuNome
  2. Envie na tarefa: Atividade Cap 20 - Projeto Corporativo: App Mobile de Gestão Financeira com Auditoria JSON
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.projeto

fun testarConsistenciaMaciça() {
    val transacoes = (1..1000).map { i ->
        TransacaoFinanceira("ID-$i", "Item $i", 10.0, TipoTransacao.RECEITA)
    }
    val (_, _, saldo) = calcularBalanco(transacoes)
    check(saldo == 10000.0) { "Erro de calculo em lote" }
    println("1.000 transacoes auditadas com 100% de consistencia matematica.")
}

fun main() = testarConsistenciaMaciça()

⬅️ Voltar ao Índice de Exercícios 📚 Sumário de Tópicos