Baixe o app para aproveitar ainda mais
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
Compartilhar