Prévia do material em texto
Resumo – Arquiteturas MVC, Flux, Redux e Criptografia no React Native O material aborda padrões arquiteturais e técnicas importantes no desenvolvimento de aplicações com React Native, incluindo MVC, Flux, Redux, DAO e criptografia. 1. Arquitetura MVC no React Native A arquitetura MVC divide o sistema em três camadas principais: • Model: responsável pelos dados e persistência. • View: interface gráfica apresentada ao usuário. • Controller: controla as regras de negócio e a comunicação entre View e Model. Essa separação melhora a organização, reutilização e manutenção do código. Padrão DAO O padrão DAO (Data Access Object) centraliza operações no banco de dados, como: • inserir; • alterar; • excluir; • consultar dados. Foi criada uma classe genérica chamada GenericDAO, utilizando o padrão Template Method, onde: • a lógica geral já está pronta; • subclasses implementam apenas os detalhes específicos. Exemplo: • AlunoDAO especializa operações para a entidade Aluno. O SQLite foi utilizado como banco local no React Native. 2. GenericController A classe GenericController encapsula chamadas ao DAO e controla operações da aplicação. Funções principais: • incluir; • alterar; • excluir; • consultar registros. Os métodos utilizam programação assíncrona (async/await) e tratamento de erros com try/catch. 3. Interface com React Native Foram criadas telas utilizando: • TextInput; • TouchableOpacity; • FlatList. A tela AlunoTela permite: • cadastrar alunos; • listar alunos; • excluir alunos. A navegação foi implementada com React Navigation usando Stack Navigation. 4. Arquitetura Flux Flux é uma arquitetura criada pelo Facebook baseada em fluxo unidirecional de dados. Componentes principais View Interface do usuário. Action Representa ações disparadas pelo usuário. Dispatcher Recebe ações e as encaminha. Store Armazena estados e regras de negócio. Flux utiliza: • programação assíncrona; • eventos; • padrão Observer. Quando os dados mudam, a Store notifica automaticamente as telas. 5. Arquitetura Redux Redux é uma evolução simplificada do Flux. Características • fluxo unidirecional; • gerenciamento centralizado de estado; • programação funcional; • ausência de Dispatcher; • uso de Reducers. Componentes Actions Funções que retornam objetos contendo: • type; • payload. Reducers Funções puras responsáveis por atualizar estados. Store Armazena o estado global da aplicação. Subscribe Permite que a View seja atualizada automaticamente. O Redux simplifica o gerenciamento de estados e facilita: • manutenção; • testes; • previsibilidade do sistema. 6. Criptografia no React Native O conteúdo também apresenta fundamentos de criptografia. Codificação Base64 Transforma dados em texto reversível. Métodos: • encode; • decode. 7. Criptografia Simétrica Utiliza: • mesma chave para criptografar e descriptografar. Algoritmos: • AES; • 3DES; • RC4. O projeto utiliza: • biblioteca react-native-crypto-js. 8. Hash Hash é uma criptografia destrutiva: • não permite recuperar o valor original. Muito usado para: • armazenamento de senhas. Exemplos: • MD5; • SHA1. 9. Geração e Armazenamento de Chaves Foi criada a classe KeyGenerator, responsável por: • gerar chaves aleatórias; • armazenar chaves com segurança. Componentes utilizados: • IV (Initialization Vector); • SALT; • EncryptedStorage. O armazenamento seguro usa: • Keychain (iOS); • EncryptedSharedPreferences (Android). 10. Classe Cipher A classe Cipher implementa: • criptografia; • descriptografia. Usando: • AES; • Base64. Os dados são criptografados antes de serem gravados no banco SQLite. 11. Criptografia Transparente no DAO O campo nome do aluno foi criptografado diretamente no AlunoDAO. Assim: • as demais camadas não precisam conhecer o processo criptográfico; • o DAO realiza criptografia e descriptografia automaticamente. Isso aumenta a segurança sem alterar a lógica da aplicação. Exercícios de Fixação 1. Qual camada do MVC é responsável pela persistência de dados? a) View b) Controller c) Model d) Dispatcher 2. O padrão DAO serve para: a) Criar interfaces gráficas. b) Centralizar acesso ao banco de dados. c) Gerenciar navegação. d) Criar componentes visuais. 3. O padrão Template Method permite: a) Programação sem herança. b) Reutilizar lógica comum e especializar detalhes. c) Eliminar classes abstratas. d) Substituir banco de dados. 4. No Flux, quem recebe e encaminha as ações? a) Store b) Reducer c) Dispatcher d) View 5. No Redux, o estado é alterado por: a) Dispatcher b) Reducers c) View d) DAO 6. Qual característica pertence ao Redux? a) Fluxo bidirecional. b) Uso obrigatório de eventos personalizados. c) Fluxo unidirecional de dados. d) Ausência de Store. 7. O componente Store no Redux: a) Gerencia o estado global. b) Exibe telas. c) Substitui reducers. d) Cria botões. 8. Qual algoritmo é usado no exemplo de criptografia simétrica? a) RSA b) SHA1 c) AES d) LDAP 9. Hash é utilizado principalmente para: a) Navegação entre telas. b) Armazenamento seguro de senhas. c) Criação de interfaces. d) Comunicação HTTP. 10. O EncryptedStorage é utilizado para: a) Criar tabelas SQLite. b) Armazenar dados criptografados com segurança. c) Criar reducers. d) Fazer navegação entre telas. Gabarito 1. c 2. b 3. b 4. c 5. b 6. c 7. a 8. c 9. b 10.b