Projeto Corporativo: App Mobile de Gestão Financeira com Auditoria JSON
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:
- 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)
- Salve o arquivo como:
Atividade_20_1_SeuNome - 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:
- 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)
- Salve o arquivo como:
Atividade_20_2_SeuNome - 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:
- 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)
- Salve o arquivo como:
Atividade_20_3_SeuNome - 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:
- 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)
- Salve o arquivo como:
Atividade_20_4_SeuNome - 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 |