Buscar

Resumo Dio Sportheca Dev Mobile

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Pensamento Computacional. 
• Processo de pensamento envolvido na expressão de soluções em passos computacionais ou algoritmos. 
o Passos. 
▪ Decomposição. 
• Dividir um problema em subproblemas 
o 
o Analíse. 
▪ Quebra em partes menores e gerenciáveis. 
o Síntese. 
▪ Combinar os elementos recompondo o problema original de 
maneira coerente 
o Execução do problemas 
▪ Sequencial 
• fila 
▪ Pararelo. 
• Executadas de maneira concomitante 
o 
▪ Reconhecimento de padrões. 
• Similaridades e diferenças entre os problemas. 
▪ Abstração 
• Processo de isolamento de um objeto da realidade. 
• Extrapolar o conceito do problema para uma forma generalista 
▪ Design de algoritmos. 
• Definir os passos para a solução de um problema. 
▪ Testar a solução e aperfeiçoá-la. 
Raciocínio Lógico 
• Forma de pensamento estruturado a fim de encontrar conclusão ou solução. 
• Inferência 
o Sintética 
▪ Indução 
• Determinar Leis e teorias baseado no que vemos. 
▪ Abdução 
• A partir da conclusão determina a premissa. 
o Analítica. 
▪ Dedução 
• Previsões e explicações baseadas nas leis determinadas na INDUÇÃO 
 
Árvores. 
• Características 
o Estrutura de dados bidimensional 
o Não linear 
o Constituída de nós que representam um modelo hierárquico 
▪ Armazenamento de dados com base em relações de dependências 
o Listas, Filas e pilhas são estruturas lineares. 
o Nó 
▪ Elemento da árvore 
o Raiz 
▪ Origem das ramificações 
o Pai e Filho – em Dois nós ligados 
▪ Descendente filho 
▪ Ascendente é pai 
o Irmão 
▪ Nós filhos do mesmo pai. 
o Nível 
▪ Posição hierárquica em relação a raiz 
o Altura / profundidade 
▪ Grau máximo dos nós 
o Folha ou nó terminal 
▪ Nós sem filhos 
o Nó interno 
o Grau de um nó 
▪ Indicado pelo número de filho. 
o Subárvore 
▪ Formado a partir de um nó da árvore principal 
▪ É considerada um ramo. 
 
• Árvore de busca binária. 
o Nós maiores à direita e menores á esquerda 
o Não linear. 
 
Equal e HashCode. 
• Melhora a busca de objetos 
• Devem ser implementados juntos 
• Equal 
o Faz comparação de objetos 
• HashCode 
o Melhora a busca de objetos. 
 
 
Introdução a POO 
• Objeto 
o Representação programática de algo com atributos (características) e ações. 
• Função utilitária 
o Ela resolve-se por si mesmo, sem dependências externas. 
o Parâmetros de entradas e resultado de saída simples e direto 
• Classe e objeto. 
o Representação de dados em objetos e entidades para processamento de outros objs. 
• Associação de classes. 
o Uma classe dentro da outra. 
• Herança. 
o Utilização de uma classe base, fazendo com que todos as classes tenham todos os atributos e 
funções da classe pai, mais as suas próprias. 
• Encapsulamento. 
o Possibilidade de proteger alguns dados ou funcionalidade da classe. Não permitindo que seus 
consumidores possam acessá-las. 
• Polimorfismos 
o Funções com o mesmo nome e diferentes processamentos, implementações ou, na mesma classe, 
mesmo nome e diferentes entradas. 
 
 
Debbungin. 
• Pilha de Execução. 
o Toda execução de método é empilhada em uma estrutura de dados que isola a área de memória de 
cada um. Quando um método termina ele retorna para o método que o invocou. 
• Stack Trace. 
o É a matriz onde encontramos a pilha de execução da exceção. O rastreamento da pilha (rastreio) 
para a próxima linha onde a exceção pode surgir. 
 
Tratamento de exceções em java. 
• Exceção (eventos recuperáveis). 
o Evento que interrompe o fluxo normal do processamento de uma classe. 
o Seu uso correto torna o programa mais robusto e confiável. 
o Após o tratamento, o programa pode continuar executando depois li dar com o problema. 
Importante: Incorpore sua estratégia de tratamento de exceções no sistema desde o princípio do 
processo do projeto. 
o Difícil incluir um tratamento de exceção eficiente em um sistema já implementado. 
• Error. 
o JVM Indica se existe um problema de recursos no programa, tornando a execução impossível de 
continuar. 
o Não checados pelo computador (eventos irrecuperáveis) 
• Unchecked. 
o Exceções da Runtime exceptions. Podem ser evitados se forem tratados e analisado pelo 
desenvolvedor. Geralmente capturam Erros de Lógicas. 
o (Não checadas pelo compilador) 
• Checked exceptions 
o Devem ser evitadas e tratadas pelo dev para o programa funcionar. 
• Try, catch, finally. 
o Juntas definem blocos para tratamento de exceções. 
• Throws. 
o Declara que um método pode lançar uma ou várias exceções. 
• Throw. 
o Lança explicitamente uma exception. 
 
 
 
Também é possível customizar uma exception fazendo uma classe que extend exception. 
 
Collections Java. 
• Objeto que agrupa múltiplos elementos (variáveis primitivas ou objetos) dentro de uma única uniade. 
• Armazena e processa conjunto de dados de forma eficiente. 
• Interfaces 
o Contrato que, quando assumido pela classe deve ser implementado 
• Implementação ou Classes. 
o Materialização, e no carnaval eu vou tentar, codificação das interfaces 
• Agorítimos. 
o Sequência lógica finita, finita e de pressa de ilusão, para resolver problemas, 
• Set 
o Não permite elementos duplicados 
o Não possui índice 
o HashSet 
▪ Utiliza implementação hashMap para armazenar os elementos 
▪ Não mantém ordem. 
▪ Tem melhor performance do que LinkedHashSet e TreeSet 
▪ Permite até um elemento null 
▪ 
o LinkedHashSet 
▪ Utiliza implementação LinkedHashMap para armazenar os elementos 
▪ Mantem a ordem de inserção dos elementos 
▪ Melhor performance do que TreeSet. 
▪ Permite até um elemento null 
o TreeSet 
▪ Utiliza TreeMap para armazenar os elementos 
▪ Mantem a ordem natural dos elementos 
• Se números – ordem numérica – se palavras, ordem alfabética... 
▪ Tem pior performance doque LinkedHashSet e TreeSet 
▪ Permite até um elemento null. 
• Map 
o Cada elementos têm chaves e valor. 
o HashMap 
▪ Desempenho igual ao LinkedHashMap 
▪ Ordem de iteração aleatória. 
▪ Permite chave Null 
▪ Implementa a interface Map 
▪ Não tem sincronização 
• Use Collections.SynchronnizedMap() 
▪ Estrutura de Dados 
• List of Bucket 
o LinkedHashMap 
▪ Desempenho semelhante ao HashMap 
▪ Ordem de iteração conforme ordem de inserção. 
▪ Permite chave Null 
▪ Implementa a interface Map 
▪ Não tem sincronização 
• Use Collections.SyncronnizedMap() 
▪ Estrutura de Dados 
• Double Linked List of Bucket 
▪ 
o TreeMap 
▪ Desempenho abaixo de HashMap e LinkedHashMap 
▪ Ordem de iteração conforme ordem das chaves. 
▪ Não aceita chaves Null 
▪ Implementa as interfaces Map, SortedMap e NavigableMap 
▪ Estrutura de dados. 
• Red-Black-Tree. 
o Stream Api. 
▪ Nova opção de manipulação de coleções em java. 
▪ Junto com as expressões Lambdas ela proporciona uma forma diferente de lida com 
conjuntos de elementos. 
▪ Classe anônima. 
• Não recebe nome. 
• É declarado e instanciado em uma única instrução. 
o Pode dentro do argumento de um método. 
• Para criar classe que será instanciada apenas uma vez. 
▪ Functional Interface. 
• Interface com Single Abstract Method é uma interface funcional. 
o Só ode ter um método abstrato 
▪ @FunctionaInterface 
• Implementação pode ser tratada como Lambda 
• Comparator 
• Consumer 
• Function 
• Predicate 
▪ Lambda 
• Função sem declaração. 
o Não é necessário colocar nome, tipo de retorno e modificador de acesso 
• Método declarado no mesmo lugar em que será usado. 
• (argumento) -> (corpo). 
▪ Reference Method 
• Permite fazer referência de um método ou um construtor de uma classe (de forma 
funcional) 
• Indicando que ele deve ser utilizado numa parte específica o código 
• Para utilizá-lo, basta informar um classe ou referência seguida do símbolo :: e o 
nome do método sem parênteses no final. 
SQL Server. 
Server=localhost\SQLEXPRESS;Database=master;Trusted_Connection=True; 
• BD relacional 
o Linhas = registros 
o Colunas = dados dos registros 
o Atomicidade. 
▪ Garantea confiabilidade dos dados para então coloca-los na tabela. 
• Impede vendas duplicadas. 
o Consistência dos dados. 
▪ Cria novas instância de um BD e a informação a ser inserida só o é feita quando a informação 
estiver pronta para ser inserida em todas as instâncias daquele BD. 
• Tipos de dados 
o Int, números inteiros. 
o Bigint - números inteiros maiores que int. 
o varchar alfanuméricos indicar tamanho. 
o char - alfanuméricos – preenche à direita espaços se dado inserido não completar os espaços. 
o Float – aceita casas decimais. 
• Comandos 
• Criando BD 
o Create database nomeBanco 
• Criando tabela e colunas 
o Create table nomeTabela ( 
▪ nomeColuna tipodeDados (tamanho de espaço se tipo de dados for char/varchar) not null ou 
null , separa por VIRGULA as colunas). 
• Apagando tabelas. 
o Drop table nomeTabela 
• Selecionar 
o Select * from nomeTabela 
o Select nomeColunas from nomeTabela 
o * = todas as colunas 
o Select * from nomeTabela 
▪ Where nomeColuna = ‘F’ 
• And outrasBasesParaconsulta 
• Or outrasBasesParaconsulta 
• Inserir 
o Insert into nomeTabela (colunasAReceberAtualizações) values (valoresAseremInseridos) 
o Insert into nomeTabela values (1, ‘Gabriel’, ‘F’), (1, ‘Gabriel’, ‘F’) 
• Atualizar 
o Update nomeTabela 
▪ Set nomeColunaASerAlterada = atualização (separa por virgula se houver outras alterações) 
• Where nomeColuna = ‘?’ 
• Se não usar Where atualizaremos todos os registros da tabela 
• Apagar 
o Delete from nomeTabela = deletar todos os registros databela 
o Delete from nomeTabela 
▪ Where nomeColunaASerAlterada valoresBases 
• Todos os registros daquela tabela que contiverem os valoresBases serão deletados. 
• Chave primária 
o Chave única que identifica os registros de forma única e facilita a consulta. 
• Chave estrangeira 
o Chave que relaciona uma tabela a outra tabela ao se relacionar com um coluna primary key da outra 
tabela 
o Deve sempre ter a mesma quantidade de coluna e mesmo tipo de dados da coluna primary key da 
outra tabela 
• Normalização de dados 
o Evitar muitas informações em uma coluna 
o Evitar conjunto de coluna com informações repetitivas 
o Não ter informações duplicadas que dependam da Chave primaria 
• Join 
o Inner Join 
▪ Seleciona os valores coincidentes em ambas as tabelas 
▪ Select * from tab1 INNER JOIN tab2 ON Cliente.codCliente = Compras.codCliente 
o Left Join 
▪ Seleciona todos os valores da tabela da esquerda e somente os valores coincidentes da tabela 
da direita 
▪ Select * from tab1 LEFT JOIN tab2 ON Cliente.codCliente = Compras.codCliente 
o Right Join 
▪ Seleciona todos os valores da tabela da direita e somente os valores coincidentes da tabela 
da esquerda. 
▪ Select * from tab1 RIGHT JOIN tab2 ON Cliente.codCliente = Compras.codCliente. 
 
• Desenvolvimento mobile nativo android 
• Android Jetpack 
o Conjunto de bibliotecas 
o Ajuda o dev a seguir práticas recomendadas 
o Reduz códigos biolerplate. 
o Ajuda a programar códigos que funcionam em diferentes dispositivos e versões do android. 
o É divido em 
▪ Architecture 
▪ UI 
▪ Foundation 
▪ Behavior 
o View binding. 
▪ Facilita/ centraliza acesso a componentes definidos via layout.XML tornando desnecessárias 
as chamadas ao método findViewById 
o SwipeRefrshLayout 
▪ Fazer padronização mais adequadas das bibliotecas de suporte. 
▪ Androidx. 
o Material Design. 
▪ Criada pela Google 
▪ Sistema de design (engloba UI e UX). 
▪ Ajuda a criar experiências digitais de alta qualidade para múltiplas plataformas 
• Flutter 
• IOS 
• Android 
• Web 
 
• Retroflt 
o Cliente HTTP para Java e Android 
o Possui várias conversões para JSON que facilitam a (de)serialização dos dados. 
• Glide. 
o Gerenciador de mídia rápido e eficiente abstraindo o processo de carregamento de imagens em 
Android. 
o Gerencia desde a decodificação e transformação até o controle de cache das mesmas 
• Parcelable 
o Estratégia de (de )serialização 
o Implementação utilizada para troca de mensagem entre telas de um App. 
o Implementação fácil em Kotlin. 
• Firebase. 
o Fornece ferramentas para desenvolver app de alta qualidade, ampliar a base de usuários e lucrar 
mais, para isso fornece uma poderosa suíte de soluções abstraindo a complexidade em contextos 
diferentes. 
▪ Construção 
▪ Implantação e monitoramento 
▪ Engajamento. 
• Crashlytcs. 
o Monitora todos os erros (Crashs) em tempo real e ajuda a monitorar, priorizar e corrigir problemas 
de estabilidades. 
o Exibe circunstâncias que levaram ao erro. 
• Introdução ao Kotlin. 
o Criada pela JetBrains e mantida pela Kotlin foudantion 
o Linguagem multiplataforma, orientada a objetos e funcional. 
o Homenagem a ilha russa kotlin. 
o Não utiliza “;” 
o Não possui operador ternário 
o Type safe e null safe 
o Inferência de tipo 
o Segura, estruturada, menos verbosa, mais otimizada. 
o Interoperabilidade com Java. 
o Smart casts e null safety 
o Desenvolve backend e frontend com kotlin/JS 
o E multiplataormas com o KMM. 
o Declarar variável 
▪ Var. 
• Variável que pode ter seu valor alterado. 
• var current = 22 
• var currente:Int? 
o recebe valor inteiro ou null 
▪ Val. 
• Variável com valor imutável. 
• val current = 22 
o val currente:Int? 
▪ Const Val. 
• Constante com valor atribuído durante a compilação. 
• Const val idade_MAX = 68 
▪ Uma variável não pode ser declarada sem tipo e sem atribuição. 
▪ Uma variável de inferência de tipo só pode receber valores de mesmo tipo que a sua primeira 
atribuição. 
o Nullabillyte 
▪ Qualquer tipo pode ser nulo desde que explicitado na declaração através do uso da 
interrogação. 
• Var atin: Int? = 22 
▪ Operadores aritiméticos. 
• Soma 
o a + b ou a.plus(b) ou a += b 
o também pode concatenar strings 
• Subtração 
o a – b ou a.minus(b) ou a -= b 
• multiplicação 
o a * b ou a.times(b) ou a *= b 
• divisão. 
o A / b ou a.div(b) ou a /= b 
• resto 
o a % b ou a.mod(b) ou a %= b 
▪ Operadores de comparação 
• Maior / menor 
o a > b ou a < b ou a.compareTo(b) > 0, a.compareTo(b) < 0 
o caompareTo() retorna -1 (menor que), 0 (igual), ou 1 (maior que) 
dependendo do resultado da comparação. 
• Maior/ menor igual 
o a >= b ou a <= b. 
o a.compareTo(b) >= 0, a.compareTo(b) <= 0 
• Igual. 
o a = b ou a.equals(b) 
o equals retorna um boolean 
• diferente 
o a != b ou !(a.equals(b)) 
▪ Operadores lógicos. 
• E (&&) 
o A and B 
• OU ( | ) 
o A or B 
▪ Operadores IN e RANGE 
• In verifica se um valor está presente numa lista ou numa faixa de valores. 
o val max = 100 
o val min = 50 
o var a = 5 
o println(a in min..max) 
• !in – verifica se o valor não está presente numa lista ou faixa de valores 
• Range – Cria um intervalo de valores que inicia no primeiro parâmetro e acaba no 
segundo 
o var reg = (10..85).random() 
o println(46 in 56..89) 
▪ Manipulação de Strings 
• Diversos métodos associados. 
o Concatenação, indexação, formatação, comparação 
• Pode ser concatenada com o plus/+ 
o Com o plus ou + 
▪ Junta sem qualquer tratamento 
o Concatenar variável e String deve-se usar ${string} 
▪ Println($string ${string.capitalize}) 
• É tratada como um array de char. 
o First() retorna a posição ‘0’ do array 
▪ S.first() 
o Last() – retorna a umtima posição do array 
▪ S.last() 
o String.lenght – retorna o tamanho do array 
▪ S.lenght 
o String.[index] – retorna uma posição do array 
▪ S[5] 
• Formatação relacionada com maiúscula ou minúscula. 
o capitalize() 
▪ Primeira letra da string maiúscula 
o toUpperCase() 
▪ deixa toda a string maiúscula 
o toLowerCase() 
▪ deixa toda a string com letras minúscula 
o decapitalize() 
▪ a 1ª letra da string minúscula 
• Remoção de espaços vazios e caracteres inadequados 
o trindEnd() 
o trinStart() 
o trim() 
• Substituir caracteres por outros 
o replace(x, y) 
• Formata outros valores para um padrão de string 
o “padrão$Strng”.format(valor).▪ IsEmpty() 
• A variável está vazia. Sem nenhum conteúdo 
o var a = “” 
▪ isBlank() 
• retorna true se a string estiver isEmpty() ou se estiver preenchida com espaços em 
branco. 
o Var a = “ “ 
▪ Funções 
• Fun nome da função(nome:tipo):TipoRetorno{} 
• Funções anônimas, Lambdas, in line, single line, extensões, ordem superior 
• Private fun getFullName(name: String, lastName: String):String{ 
o Val fullName = $name $lastName 
o Return fullName 
• } 
• Private fun getFulName(name: String, lastName: String):String{ 
o Return fullName = $name $lastName 
• } 
• Private fun getFulName(name: String, lastName: String) = $name $lastName 
• Funções de ordem superior 
o Recebem outra função ou lambda por parâmetro 
o Bastante úteis para a generalização de funções e tratamentos de erros. 
o Val x = calculate(12, 4 :: sum) 
o Val y = calculate(12, 4 ){ a, b -> a*b} 
• Funções single Line 
o Função de uma única linha 
o Infere o tipo de retorno 
o Fun nomeDaFuncao(nome: Tipo) = retorno 
• Funções/extensões 
o Só pode ser chamada por um tipo específico 
o Valor pode ser referenciado dentro da função por meio da palavra this. 
o Fun Tipo.nomeDaFuncao() 
o Fun String.radomCapitalizedLetter() = this[(0..this.lenght-1 
▪ .random()].toUpperCase() 
• Estrutura de Controle 
o Usado tanto para controle 
▪ If/else 
• If(expressão){ 
o código 
• }else if(expressão){ 
o código 
• }else{ 
o código 
• } 
▪ When 
• Aceita tanto valores quanto condicionais 
• Aceita range como case 
• When (expressão){ 
o case1 -> {} ou -44..55 {} 
o case2 -> {} 56..78 {} 
o case3 -> {} 79..81 {} 
o case4 -> {} 82..99 {} 
o else -> {} 100..200{} 
• } 
• When{ 
o A> b -> {} 
o A<b -> {} 
o A==b -> {} 
o Else -> {} 
• } 
• Elvis operator operador 
• Pode ser encadeado 
• val a:Int? = null 
• val numer = a ?: 0 
o se a for nulo então number recebe 0 
• val number = a?: b?: c?: 0 
o Usado para atribuição 
▪ Val MxValue = if(a > b) a else (a<b) b else b 
▪ Valor atribuído tem que estar na última linha 
▪ Pode não usar chaves se só fizer atribuição ou se couber numa única 
linha 
• Esttrutura de repetição 
o While(condição){ 
▪ código 
o } 
o Do(condição){ 
▪ código 
o } 
o For 
▪ In - conta do valor inicial até o valor final 
• For(i ‘in’ 0..20){código} 
▪ Until – conto d ovalor inicial até o valor final – 1 
• For(i in 0 until 20){código} 
▪ DownTo – conta de maneira decrescente 
• For(i in 20 DonwTo 0){código} 
▪ Step – determina o intervalo da contagem 
• For(i in 0..20 step 2){código} 
▪ Letters – percorre um array de char 
• For(l in array){código} 
o Orientação a Objeto com Kotlin 
▪ Classe 
• Membros de uma classe 
o Atributos = val ou var 
o Funções = fun 
o Inicializador = constructor() 
▪ Primário ou secundário 
▪ Data class. 
o Enum Class 
▪ Classe que não precisa ser instanciada para acessarmos os seus membros 
o Abstrações 
▪ Open permite que a classe seja herdade 
• open class Pessoa 
o Polimorfismo 
• Collections. 
o Array, ArryaOf, iIntArrayOf, IntArray. 
▪ val values = IntArray(5) 
▪ values[0] = 12 
values[1] = 7 
values[2] = 6 
values[3] = 9 
values[4] = 4 
▪ 
▪ --------------------------------------------------------------------------------------------- 
▪ val values = intArrayOf(1, 83, 45, 5, 23, 78) 
▪ 
o Array com String 
▪ val nomes = Array(4){""} 
▪ val nomes2 = arrayOf("Gabriel, Barbara, Mariana, Marcia") 
o Array Com Double 
▪ val salarios = DoubleArray(3) 
 
salarios[0] = 1500.00 
salarios[1] = 2000.00 
salarios[2] = 3500.00 
▪ ----------------------------------------------------------------------- 
▪ val nomes2 = arrayOf("Gabriel, Barbara, Mariana, Marcia") 
o SetOf 
▪ val funcionarios1 = setOf(gabriel, mariana, juliana) 
val funcionarios2 = setOf(barbara, edilene, juliana) 
▪ cria um set com somente os dados que passamos para ele 
▪ Não aceita elemento duplicado 
▪ Fica com a ordem de entrada 
o MapOf 
▪ val pair: Pair<String, Double> = Pair ("Gabriel", 9500.00) 
val map1 = mapOf(pair) 
▪ ------------------------------------------------------------ 
▪ val map2 = mapOf( 
 "Mariana" to 2500, 
 "Barbara" to 3500) 
▪ ------------------------------------------------------------- 
▪ Retorna um map com os dados passados, deve conter chave e valor 
o Collection mutáveis 
▪ Diferente das collections api, as ultáveis podem ser alteradas 
▪ Add() 1 por vez ou uma coleção inteira 
▪ Remove() 1 por vez ou uma coleção inteira 
▪ Funções estendidas. 
• fun Array<BigDecimal>.somatoria() = this.reduce{ 
 acc, valor -> acc + valor 
} 
▪ estende uam classe adicionando novas funcionalidades 
o Android Studio. 
▪ Manifest 
• Inormações essenciais para as ferramentas de desenvolvimento no android, para o 
SO Android e para a Google Play 
• Recebe a declaração de todas as activity, permissão do app, etc 
• Escrito em xml 
• Declaração por tag 
▪ Activity 
• Um dos componentes principais de m projeto 
• Utiliza instâncias dos métodos call-back de ciclos de vida (em vez de uma única 
função main 
• Pode corresponder a mais de um tela. 
• Ciclo de vida 
o Informa criação, destruição, interrupção ou retomada de uma tela pelo 
sistema. 
o onCreate(), onStart(), onResume(),onPause()onStop, e onDestroy. 
• Gradle 
o Configurção e automatização de buil/ compilação 
o Gerencia importação, tipo de build, versão e etc 
o Escrito em groovy ou kotlin DSL. 
o Layout 
▪ Contrução de UI 
▪ Jetpack composse 
• UI Declarativo – pode escrever estrutura da tela em Kotlin e composse gera a tela 
• ViewBinding – Permite segurança e regalias no kotlin com acesso aos componentes 
do layout por meio da binding 
• Layout XML 
o PArent 
▪ É onde todos os componentes criados se organizam 
o Componentes 
▪ VIew 
• Herdam métodos, aparência, estilos, e atributos, de 
componentes (botões, imagens, textos...) ou podem ser 
criadas de maneira costumizadas 
▪ Clicável – permitindo a associação a algum método, função... 
▪ Tag<nome_componente> 
▪ Id, layout_width, layout_height 
o Medidas de altura e largura 
o Personalização de atributos 
▪ Textview. 
• Sp para letrasProfessor Neriberto= text.size 
▪ Layout 
• Aquivos de Layout 
▪ Drawable 
• Ícones do app 
▪ Mipmap 
• Outros ícones de diversos tamanho. 
▪ Tool – só afeta a ide. Nâo influencia na aplicação. 
o Atributos Views 
▪ Gravity 
• Posição da view em relação ao parente 
▪ Layout Gravity 
• Graviade de todos as view em relação ao parente 
▪ Margin 
• Cria um espaço entre a view e o componente próximo (top, bottom, vertical) 
▪ Paddin 
• Expandi a view e conserva o tamanho do seu conteúdo 
▪ Match parente 
• Ocupa todo o espaço 
▪ Wrap contente 
• Ocupa a o espaço suficiente para o seu conteúdo 
▪ Visibility 
• Visibilidade da view 
o Linear Layout (parent) 
▪ Organiza os atributos com listas 
• Vertical ou horizontal 
• Eles não serão sobrepostos 
o Relative Layout 
▪ A posição dos itens é sempre relativa a outro item ou aa parente 
▪ Permite sobreposição de elementos 
▪ Elimina necessidade de layout encadeado 
▪ Exige criação de hierarquia complexa 
• To_end_of, to_start_of, above, below, align_parent 
o Constraint Layout 
▪ Baseado em restringir os componentes aos limites do layout ou outros componentes 
▪ Focado em otimização 
▪ Visa substituir o relative e o linear 
• Constraint_top_to 
• Bottom 
• Constraint start_to 
• Start 
• Group 
• Guideline 
• Baseline 
• Horizontal_bias 
• Chain 
o Outros layouts 
▪ Absolute layout 
• Posição absoluta x/y 
▪ Table Layout 
• Formato de tabela 
▪ Grid Layout 
• Formato grade linhas / colunas 
▪ Frame layout 
• Moldura, ideal para um único item. 
o TextWatchers 
o Callback para o fluxo do input 
▪ Antes do texto mudar. 
• binding.edtAltura.doAfterTextChanged { 
 text -> 
 Toast.makeText(this, text, Toast.LENGTH_SHORT).show() 
} 
▪ Na mudança do texto 
• binding.edtQuilo.doOnTextChanged{ text, start,before, count -> 
 binding.txtIMC.text = text 
} 
▪ Após a mudança do texto 
• binding.edtQuilo.doBeforeTextChanged { text, start, count, after 
-> } 
o View 
▪ onClickListener 
• Geralmente declarados no oncreate 
• Executam uma ação e retorna um feedback para o usuário 
 
Modo desenvolvedor 
o Permanecer ativo – não deixa o smartphone desligar a tela. 
o Demonstração da UI do sistema 
▪ Esconde as distrações na barra de visualização quando estivermos gravando a tela 
o Modo noturno 
o Locais fictícios 
▪ Manipula localização do aparelho 
o Mostrar atual superfície 
▪ Sempre que algum elemento mudar de estado, clique recebido...alguma atividade 
o Limites do layout 
o Forçar dir Layout 
▪ Inverte inicio do layout (Start e End) 
o Simular corte de tela 
o Simular espaço de cores 
o Não manter atividades 
o Sempre mostrar caixa de diálogo de falha 
▪ Sempre que um app falha 
Ferramenta da IDE 
o Build como debug 
▪ Associar um debug com uma aplicação já rodando 
• Necessário ter aplicação que aceita 
o ADB e ADB plugin 
▪ Android debug build 
▪ Pode ser chamado pelo terminal mas possui pluggin com principais funaliade (adb idea) 
o Logcat 
▪ Lista dos logs emitidos pelo aparelho 
▪ Criação de tags 
▪ Emissão dinâmicas de logs 
▪ Omissão de logs irrelevantes 
▪ Contextualização para crash 
• Tipos 
o Log.w("tag agrupar logs msm tipo", "mesagem de erro") 
o Debug (Log.d) 
o Error (Log.e) 
o Inof (Log.i) 
o Verbose (Log.v) 
o Warning (Log.w) 
o Breakpoints 
▪ Pontos de paradas no código 
▪ Tela de config do breakpoint 
• Pausa com condicional (btn dir sobre breakpoint) 
• Emitir log específico 
o Aba debug 
▪ Abre automaticamente quando encontra um breakpoint 
▪ Inspeção de variável 
▪ Alterar valor da variável 
• Dentro do contexto que está sendo usado o breakpoint 
▪ Step over, step into, step resume 
▪ 
o Layout inspector 
▪ Depuração dos layouts que estão sendo exibidos na tela 
▪ 
o Build como debug ou associar debug a um build existente; 
o Build deve ser debugável 
▪ Build.gradle 
▪ customDebugType{ 
• debuggable true } 
o Erros e exceptions ANRs 
▪ Aplicação não respondendo 
▪ Falta de retorno a interação do usuário; 
▪ Bloqueio da UI thread; 
▪ Dialog que permite forçar o fechamento da aplicação 
▪ Trouwable 
• Superclasse de todos os erros e exception 
• Podem ocorrer tanto durante a execução quando na compilação 
• Exceptions geralmente quebram a aplicação (crash) 
▪ Exceptions 
• Superclasse de throuwable 
• Ex> 
o ActivityNotFoundExceptions 
▪ Manipular / abrir activity não declarada 
o NullpointerException 
▪ Manipulação de valor nulo 
o IndexOutBoundException 
▪ Setar posição inexistente de um arry / list 
o ClassCashExceptions 
▪ Problemas na conversão 
• Como evitar 
o Testes Unitário 
o Mapeamento das exceptions no try / catch 
o Previnir operações indevidas 
▪ Durante iteração, casts inválidos, tipos nuláveis sem tratamentos... 
• Tratando Exceptions 
o Null check 
o Retorno visual 
o Criação de um excepiotn Handler 
• try { 
 //parte do Código que pode dar erro 
}catch ( e: NullPointerException){ 
 //tratando possível erro 
}catch ( e: IndexOutOfBoundsException){ 
 //tratando possível erro 
}finally { 
 //o que fazer após o erro 
 //direcionar o usuário para outra tela... 
} 
 
 
Recursos nativos do Android 
• Agenda 
o Calendar_ID 
▪ Atteends 
• Horário de início e termino de cada evento 
• Cada linha um convidado e tipo de convidado e resposta quanto à participação do 
convidado no evento 
▪ Reminders 
• Alertas/ notificações 
▪ Instances 
• Contato 
o Raw contact 
▪ Data 
• Fotos 
• Localização 
o Mostrar localização 
o Customizar marks no mapa 
o Buscar endereços por coordenadas geográficas 
o Update de localização do usuário 
• Watch 
o Conexão entre celular e emulador 
o Enviar mensagem entre eles 
Desmistificando o Android Studio 
• Manutenção 
o Applay Change and restart activity 
▪ Aplica as modificações e reinicia a activity sem reiniciar o app 
▪ Android Profiller 
• Oferece em tempo real dados para ajudar a entender como seu app usa recursos da 
cpu, memória, rede e bateria 
• Debbuger 
o Tem ferramentas que auxilia na investigação de bugs do código 
o Debbug aap 
▪ Executa sua app no modo de depuração e pausa sua execução conforme os pontos de 
interrupção 
o Attach Debbuger 
▪ Adiciona um debbuger com o app em execução sem reiniciar o build 
o Evaluation Expressions 
▪ Abre um console onde vc pode simular novas ocasiões 
• Pesquisa 
o Pesquisas de classes 
▪ Shift 2x 
o Find path 
▪ Permitie que vc encontre texto, tipo, código, classe, método e etc no projeto 
▪ Shift + win + F 
o Layout inspector 
▪ Tira screenshoot da tela que está em execução no dispositivo e te detalha toda a estrutura de 
layout como ids, texto e tipos dos layouts da tela. 
• Arquitetura da plataforma android com Kotlin 
o Segurança do sistema 
▪ Práticas recomendadas de segurança 
• Comunicação segura 
o Proteger dados do app ou enviados e recebidos 
o Numero mínimo de permissões necessárias 
▪ Deixar as permissões que não mais são necessárias 
• Armazenar dados de forma seguras 
• Manter serviços e dependência atualizadas. 
▪ Apanhando geral 
• Dicas. 
o Armazenamentos de dados 
▪ Usar armazenamento interno 
▪ Usar armazenamento externo 
• Não armazenas informações confidenciais 
• Ou necessárias constantemente 
▪ Usar Prover de conteúdo 
o Usar Permissões 
▪ As necessárias 
▪ Revogar as desnecessárias 
▪ Segurança com dados 
• Dados de forma segura 
o Em outras versões do Android 
▪ Segurança com, HTTPS e SSL 
• Configrações de segurança de rede 
o Certificados 
▪ Auto assinados 
▪ Privados 
o Cancelamento uso de dados de textos simples 
• SafetyNet 
o Apps que ajudam a proteger o app contra ameaças 
▪ Compatibilidade do cliente com o app 
▪ Ameaças marcadas pelo google 
▪ Criptografia 
• Especificar provedor apenas com o sistema Android Keystore 
• Escolher algoritmo recomendado 
• Complexidade de implementação 
• Funcionalidades suspensas 
o Resolver problemas encontrados pela Google Play 
▪ App Security improvement 
• 
▪ Funcionamento 
• Sinaliza o app e passa informações sobre possíveis problemas de seguranças 
o Aplicações potencialmente nocivas (PHAs) 
▪ Funcionamento de maneira diferente do padrão atual 
▪ PHAs desejados pelo usuário 
▪ Classificações 
o Iniciando um programa de divulgação de vulnerabilidade 
▪ Todos trabalhando para encontra e divulgar vulnerabilidades 
 
o App Bundle 
▪ Formato de publicação que inclui todo o código e recursos compilados do seu app e adia a 
geração de assinaturas de APK no Google Play. 
▪ Google Play usa o pacote de apps para gerar e disponibilizar APKs otimizados para cada 
configuração de dispositivo. Assim, somente o código e os recursos necessários para um 
dispositivo específico são salvos para executar o app. 
▪ usuários recebem downloads menores e mais otimizados. 
▪ Assina usando o Android Studio ou a linha de comando e enviá-los para o Google Play 
▪ Etapas para criar 
• Iniciar 
o Baixar android Studio 
o Add suporte para play Feature Delivery 
o Criar Android app Bundle 
o Teste Android App Bundle usando-o 
o Increva-se no app lay app signing 
o Publicar na google play 
• Teste 
o Testar localmente usando “bunletool” 
o Compatilha seu app com um url 
o Configure um teste aberto, fechado ou interno 
• Baixar módulos de recursos com a play core library 
o Consultar biblioteca 
https://developer.android.com/studio/build/building-cmdline?hl=pt-br
https://developer.android.com/studio/publish/upload-bundle?hl=pt-br
• Instant Apps 
• Problemas conhecidos 
• Formato Android App Bundle 
• Visão geral dos apks divididos 
o Baixar funcionalidade necessárias apenas 
o Códigos e recursos que apenas alguns usuário precisam 
• Recursos 
o Codelabs 
▪ Ajuda a criar app que baixa e instalarmodulo de recursos sob 
demanda 
▪ Google play instant 
• Permite que app e jogos nativos sejam iniciados em dispositivos em android 5.0 (Api 
21) 
o Experiência a antes de baixar o jogo por completa 
• Enviar os arquivos necessários para o teste 
o Ter menos de 15Mb 
 
MVVM 
• Dsigner pattern estrutural voltado para user interface 
• Permite testes unitários isolados 
• Isolar camadas e aplicar testes isolados 
o View 
▪ Não conversa diretamente com repositórie 
▪ Interface do usuário 
▪ Mínimo de regra de negócio 
o View Model 
▪ Responsável pelas regras de negócio 
▪ Liga Model à View 
o Model 
▪ Indica como os dados serão manipulados 
▪ Pode ser usada como Repository 
 
 
TDD e padrões de testes no Desenvolvimento android 
• TDD – desenvolvimento dirigido por testes 
• Teste fails 
• Teste Passes 
• Refactor 
 
Conceitos de Navegação, aparência e estilos de app android 
 
• Criar uma Classe Adapter para gerenciar uma LISTA 
o Recebe umviewHolder tipo como parâmetro 
o Implment étodos da classe RecyclerView 
▪ getItemCount() 
• Quantidade de itens na lista 
• Lista.size() 
▪ onBindViewHoler 
• Popular os itens no RecyclerView 
• É chamado a cada item que vai ser mostrado 
▪ OnCreateViewHolder 
• Criar a nossa view 
o Inflar o layout 
o Mostrar o arquivo xml que será a base. 
o Criar classe VIewHolder para gerenciar cada item da RecyclerView 
▪ Tem declarado nela cada item view da tela 
• textView, imageView... 
▪ Recebe cada item do onBindViewHolder e joga na view do layout 
o notifyDataSetChange 
▪ notifica o adapter que a lista foi modificada, para ele atualizar 
▪ 
• OptionMenu 
o Prepara para ele ser visível 
▪ Criar um xml para o menu e cada item dele 
▪ Inflar ele na tela 
▪ OnCreateOptionMeno 
• Inflater.inflate(R.menu.nome_menu, menu) 
▪ OnOptionItemSelected 
• A partir do toque consegue saber qual menu foi selecionado 
o Item.itemid identifica qual item do menu foi tocado 
• NavigationDrawer 
o Criou um xml para o menu e incluiu o xml da activity na qual ele vai aparecer 
• Drawable e Resurce 
o Drawable 
▪ Gráfico que pode ser desenhado na tela e pode se recuperado com Apis com 
getDrawable(int) ou ser aplicado a outro recurso xml com atributo como android:drawablw w 
android:icon 
▪ Vários tipos 
• Bitmap 
o Png, jpg ou gif 
• Nine-Path 
o Png com regiões extensiveis 
• Lista de camadas 
o Desenhável que gerencia uma matriz de outros desenháveis 
• Lista de estados 
o XML que referencia diferentes gráficos de bitmaps 
• Lista de n´veis 
o Xml que define um drawable que gerencia vários drawable alternativos 
• Drawablw de transição. 
o Estilos e temas 
▪ Estilo é uma coleção ode atributos que especificam a aparência de uma única view 
• Pode especificar atributos com o tamanho da fonte 
• Styles.xml 
o <resource 
▪ <Stytile 
▪ Temas 
• Coleçã ode atributos aplicados a um App atividade ou hierarquia de visualização de 
inteiros 
o Configurando telas 
▪ Criar tela pelo próprio andriod, de maneira automática ou manual 
▪ Abri outra acitvity 
• Var intente = Inten (contexto, activity a abrir::class.java) 
• Para passar dados entre telas é necessário serializar os dados e deserializar-los 
o Em Kotlin usamos @Parcelize e :Parcelable para tornar a classe a ser 
trafegada em as telas 
• Intente.puExtras(EXTRA_CONTACT, contac) 
o Colocamos a chave e valor 
• Recuperar esses dados em outra activity 
o Obj = getParcelableExtra(EXTRA_CONTACT) e um obj para receber 
• startActivity(intent). 
o Armazenando e acessando dados com o SharedPreferences() 
▪ Chave e valor 
▪ Conjunto pequeno de chave e valor 
Princípios de desenvolvimento Kotlin com clean Architecture e MVVM. 
• MVVM 
o Model- View – ViewModel 
o Arquitetura padrão de desenolvimento do goolgle 
o Actvity/ Fragment view 
▪ 1ª camada 
• Componentes do usuário 
• Lógica inerente aos componentes de usuário 
o View Model 
▪ Não deve conhecer nenhum componente da View 
▪ Exclusivamente das Regras de negócio 
o Repository 
▪ Pode ou não ser adicionada no MVVM 
▪ Ponto para chegar na DataSource 
o DataSource 
▪ Fonte dos dados 
▪ Camada que o repositóry usará para acessar as fontes de dados locais ou web 
o Model 
▪ 
▪ Romm 
• Sqlite 
▪ Retrofit 
• WebService 
o LiveData 
▪ Armazena dados observáveis 
• Clean Archtecture 
o Domain – Modelo e regrasde negócio 
▪ Obj Move 
o Data – abstração para acessar dataSource 
▪ Repositorie 
▪ DataSource 
o Use Case e implementações 
▪ UseCases – Transmite as ações do usuário 
o App – Irá conter as implementações das interfaces das camadas dedados

Continue navegando

Outros materiais