Reta Final - BB - Java e Mobile iOS
Reta Final - BB - Java e Mobile iOS
pretas
@canetaspretas
@lacerdaphjobs
DICAS E AGENDA!
AGORA EM ÁUDIO TBM!
@canetas.pretas
https://www.instagram.com/p/B74PyOzj5V3/
https://www.estrategiaconcursos.com.br/blog/prazer-um-eterno-estudante/
#JAVA
Jshell
módulo - JIGSAW
- JPMS (plataform module)
private methods interfaces
Reactive Streams
HTTP Client
Prof. Raphael Lacerda
Java 10
https://www.techworld.com/developers/java-10-features-whats-new-in
-java-10-3680317/
}
var - http://openjdk.java.net/jeps/286
Docker -
https://medium.com/@jnsrikanth/docker-support-in-java-10-fbff28a31
827
LTS
javac is dead
Strings
strip x trim
repeat
https://www.oracle.com/java/techno
logies/java-se-support-roadmap.ht
ml
Prof. Raphael Lacerda
AULA JAVAEE / JAKARTAEE
JavaEE / JakartaEE
Prof. Raphael Lacerda
Entendo a especificação
JavaEE / JakartaEE
Prof. Raphael Lacerda
Implementações
JavaEE / JakartaEE
Prof. Raphael Lacerda
Servlet Containers
JavaEE / JakartaEE
https://www.eclipse.org/jetty/documentation/current/introduction.html#what-is-jetty
Prof. Raphael Lacerda
JavaEE x JavaSE
JavaEE / JakartaEE
Prof. Raphael Lacerda
JavaSE != JavaEE
JavaEE / JakartaEE
Prof. Raphael Lacerda
JavaSE != JavaEE
JavaEE / JakartaEE
Prof. Raphael Lacerda
@estrategiaconcursosti
SERVLET
Aula Servlet
❑ motivação: dinâmico x estático
❑ noções básicas do protocolo HTTP
❑ "Servidorzinho" web
❑ Característica principal!
❑ Questões
Servlet
Servlet with annotation | servlet 3 - javatpoint
Prof. Raphael Lacerda
Resumo Servlet
● Extensão da classe HttpServlet: Para criar uma servlet, você precisa criar uma classe Java que estenda a classe
HttpServlet. Essa classe fornece métodos que permitem que você processe solicitações HTTP e envie respostas de
volta ao cliente.
● Método doGet() e doPost(): Esses são dois dos principais métodos fornecidos pela classe HttpServlet. O método
doGet() é usado para processar solicitações HTTP GET, enquanto o método doPost() é usado para processar
solicitações HTTP POST.
● Ciclo de vida da servlet: Uma servlet tem um ciclo de vida que inclui a inicialização, processamento de solicitações
e destruição. Durante a inicialização, a servlet pode ser configurada para lidar com solicitações específicas.
Durante o processamento de solicitações, a servlet recebe uma solicitação HTTP e envia uma resposta HTTP.
Durante a destruição, a servlet é liberada da memória.
● Objeto HttpServletRequest: Esse objeto fornece informações sobre a solicitação HTTP, como o método HTTP
usado, os parâmetros da solicitação e o cabeçalho da solicitação.
● Objeto HttpServletResponse: Esse objeto é usado para enviar a resposta HTTP de volta ao cliente. Ele fornece
métodos para definir o código de status da resposta, os cabeçalhos da resposta e o conteúdo da resposta.
● Mapeamento de URL: Uma servlet é mapeada para uma URL específica. Quando o servidor web recebe uma
solicitação para essa URL, ele direciona a solicitação para a servlet correspondente.
Resumo Servlet
@estrategiaconcursosti
JSP
Aula JSP
❑ motivação / Hello World
❑ Ciclo de vida / Scriplets / JSTL
❑ Estrutura de um projeto Web
❑ Filters e Listeners
❑ Escopos
○ Request, Session, Application
❑ Questões
JSP
Prof. Raphael Lacerda
JSP “transformer”
JSP
Prof. Raphael Lacerda
Resumo JSP
O JavaServer Pages (JSP) é uma tecnologia da plataforma Java que permite criar páginas web dinâmicas e interativas. Os principais pontos
do JSP são:
● Linguagem de marcação: O JSP é baseado em HTML, que é a linguagem padrão para a criação de páginas web. O JSP também usa
a linguagem de marcação do XML para definir os elementos dinâmicos.
● Inserção de código Java: O JSP permite a inserção de código Java nas páginas web para torná-las dinâmicas. O código Java é
inserido entre tags especiais <% e %>.
● JSTL: O JSP usa a Biblioteca de Tags JSTL (JavaServer Pages Standard Tag Library) para adicionar recursos adicionais de tags.
● MVC: O JSP é usado em conjunto com o modelo MVC (Model-View-Controller) para separar a lógica de negócios da apresentação
dos dados. A Servlet age como o controlador, enquanto o JSP age como a visualização.
● Acesso a banco de dados: O JSP permite o acesso a bancos de dados através do JDBC (Java Database Connectivity).
● Acesso a objetos: O JSP permite o acesso a objetos através do JNDI (Java Naming and Directory Interface).
● Compatibilidade com Servlets: O JSP é uma extensão da tecnologia Servlet, e pode ser usado com outras tecnologias Servlet, como
o Struts e o Spring.
● Suporte a internacionalização: O JSP suporta internacionalização de páginas web através da Biblioteca de Tags JSTL.
● Desempenho: O JSP tem um bom desempenho porque usa a técnica de pré-compilação para converter as páginas JSP em Servlets.
● Facilidade de uso: O JSP é fácil de usar e aprender porque usa a sintaxe HTML familiar e pode ser usado com outras tecnologias
Java.
JSP
Prof. Raphael Lacerda
@estrategiaconcursosti
JPA
Aula ORM
ORM/JPA/Hibernate
Prof. Raphael Lacerda
Criteria Ok
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Country> q = cb.createQuery(Country.class);
Root<Country> c = q.from(Country.class);
q.select(c);
ORM/JPA/Hibernate
Prof. Raphael Lacerda
Criteria Hell
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Double> criteria = builder.createQuery(Double.class);
Root<Venda> root = criteria.from(Venda.class);
Path<Double> valor = root.get("valor");
Expression<Double> soma = builder.sum(valor);
criteria.select(soma);
TypedQuery<Double> query = em.createQuery(criteria);
Double total = query.getSingleResult();
ORM/JPA/Hibernate
Prof. Raphael Lacerda
Easy Criteria (fora do JPA)
List<Employee> employees = query.select(employee)
.where(employee.fullName.like("John%"))
.orderBy(employee.age.asc())
.limit(20, 10)
.getResultList();
https://github.com/sveryovka/easy-criteria
ORM/JPA/Hibernate
Prof. Raphael Lacerda
QueryDSL (fora do JPA)
List<Person> persons = queryFactory.selectFrom(person)
.where(
person.firstName.eq("John"),
person.lastName.eq("Doe"))
.fetch();
http://querydsl.com/
ORM/JPA/Hibernate
Prof. Raphael Lacerda
QUESTÕES
Alternativas
D public interface S { public static int x=10; public static int y=20; ● Interface attributes are by
default public, static and
public static void op1() { x++; y++; System.out.println(x+y); } }
final
E public abstract interface T { static int x=20; public int y=20;
{ sb*=2; a+=1; }
static { sb+=8; }
public class Main { public static void main(String[] args) { new Va(1).print(); }}
Entretanto, a maioria das linguagens de programação orientadas a objetos disponibilizam um mecanismo para que o encapsulamento possa
ser atenuado sob certas condições. Por exemplo, as variáveis de instância de uma classe podem ser livremente acessadas pelos métodos de
instância de todas as suas subclasses.
A protegidas
B estáticas
C globais
D automáticas
E virtuais
CESGRANRIO/BANCO AMAZONIA/2021
Considere a classe Java abaixo.
O que o console exibirá quando o método main() for executado?
CESGRANRIO/BANCO AMAZONIA/2021
CESGRANRIO/BANCO AMAZONIA/2021
O que o console exibirá quando o método main() for executado?
A .i.a..
B ..a.i.
C l.s.rB
D Br.s.l
E Brasil
CESGRANRIO/PETRO/2014
O que imprimirá esse programa quando executado?
A oirnrgsevorp
B provegrnrio
C oirnrgsecvorp
D ac a
Eaa
How to Compare Characters in Java | Java
Hungry
Cesgranrio/BNDES/2013
Cada tipo de enterprise bean passa por diferentes fases durante seu ciclo de vida.
Um desses tipos possui um estado denominado Passivo. Quando um bean entra
nesse estado, o container EJB o desloca da memória principal para a memória
secundária.
Qual tipo de bean se comporta dessa maneira?
A Stateless Session Bean
B Stateful Session Bean
C Web Service Bean
D Singleton Session Bean
E Message-Driven Bean
EJB
Prof. Raphael Lacerda
Cesgranrio/BNDES/2009
Entity EJB e o statement SQL "SELECT FOR UPDATE" são técnicas
para se implementar o padrão arquitetural
A Estado da sessão no cliente (Client Session State).
B Bloqueio offline otimista (Optimistic Offline Lock).
C Bloqueio offline pessimista (Pessimistic Offline Lock).
D Objeto de transferência de dados (data transfer object).
E Mapeador (mapper).
EJB
Prof. Raphael Lacerda
Cesgranrio/PETRO/2010
EJB
Prof. Raphael Lacerda
Cesgranrio/PETRO/2010
O código acima apresenta um(a)
A EJB padrão 2.1 com informação de estado.
B bean de entidade para a tabela Produto.
C classe POJO que segue o padrão JavaBean.
D classe que utiliza JMS.
E classe que implementa o padrão FrontController
EJB
Prof. Raphael Lacerda
Cesgranrio/Petro/2012
Em aplicações Java Enterprise Edition 6, é comum o uso da API JPA. Nessa API,
há o conceito de classe de entidade (entity class).
Por definição, uma classe de entidade deve, obrigatoriamente, cumprir os
seguintes requisitos, EXCETO
A estar anotada com a anotação Entity ou representada em um descritor XML.
B não ser qualificada com final.
C ter as variáveis de instância persistentes qualificadas com private, protected, ou
package-private.
D ter ao menos um construtor, este sem argumentos (no-arg constructor).
E ter o mesmo nome da tabela correspondente do banco de dados
JSP - questões
Prof. Raphael Lacerda
Cesgranrio/Petro/2011
I - EJB fornece ao programador Java EE os seguintes tipos fundamentais: Entity
Beans, Session Beans e Message Driven Beans.
II - JPA é parte integrante da especificação EJB e serve para definir as interfaces
de acesso local e/ou remoto de um componente EJB.
III - Um servidor de aplicações Java EE oferece vários recursos ao desenvolvedor
como pool de conexão, controle de transação, segurança e gerenciamento de
recursos.
IV - Uma diferença entre as tecnologias Servlets e JSP é que, ao contrário da
segunda, a primeira permite o armazenamento do estado da aplicação em
variáveis de sessão
JSP - questões
Prof. Raphael Lacerda
Cesgranrio/PETRO/2006
assinale a afirmativa INCORRETA.
A A arquitetura J2EE Connector define um conjunto de contratos no
nível de sistema entre um servidor de aplicação e o EIS (Enterprise
Information System), entre os quais, o Connection Management, que
permite que um pool de servidores de aplicação se conecte a um EIS
subjacente e que componentes da aplicação se conectem a um EIS.
B Uma prática que pode melhorar o desempenho de EJBs consiste em
empacotar beans de entidade em um bean de sessão para transformar
chamadas EJB remotas em uma chamada de bean de sessão remota e
várias locais (pattern conhecido como fachada de sessão).
EJB
Prof. Raphael Lacerda
Cesgranrio/PETRO/2006
C Um descritor de instalação, localizado dentro de um arquivo Java Archive (JAR), permite que
as propriedades de um EJB sejam mantidas fora do código Java e que o desenvolvedor do
bean torne as informações sobre o bean disponíveis para o montador da aplicação e para o
instalador do bean.
D Para se garantir a entrega de uma mensagem para um único destinatário, o modelo de troca
de mensagens publish/subscribe do JMS com o modo de entrega persistente e um assinante
durável é mais indicado, enquanto que se a mensagem for para vários destinatários, pode-se
utilizar o modelo ponto a ponto do JMS com um modo de entrega persistente.
EJB
Prof. Raphael Lacerda
CESGRANRIO/Caixa/2021
As classes Java a seguir pertencem ao pacote default e foram incluídas no
arquivo Main.java.
O que será exibido no console quando o método main for executado?
A3
B4
C 19
D 27
E 31
CESGRANRIO/Caixa/2021
As classes Java a seguir pertencem ao pacote default. class A1 { protected int va1=1,va2=2;
public A1(int x) { va1+=x; va2*=x; } } class A2 extends A1 { protected int
vb1=10; } class A3 extends A2 { protected int vc1=0; public A3(int y) {
vc1=(va1+va2)*y; } } public class Main { public static void main(String[] args) { A3
o=new A3(2); System.out.println(o.vc1); } } Qual construtor poderá ser inserido na
classe A2, sem que um erro de compilação seja gerado?
A public A2() { vb1=va1+va2; }
B public A2(int z) { super(z); vb1=va1+va2; }
C public A2() { vb1=va1+va2; super(vb1); }
D public A2() { super(0); vb1=va1+va2; }
E public A2() { super(vb1); }
CESGRANRIO/BB/2021
Sejam as seguintes classes Java:
return “abcdefghijklmnop“; }
Online Java Compiler - Online Java Editor -
public String ini(String s, int cpr) { Java Code Online (jdoodle.com)
}
A Single Java Program Can Contain How
public String fin(String s, int cpr) { many Classes? - Scaler Topics
}
Can We Override Static Method in Java -
Javatpoint
CESGRANRIO/BB/2021
public class Va2 extends Va1 {
return “0123456789ABCDEF“; }
System.out.println(o.fin(o.getStr(), 5));
}
CESGRANRIO/BB/2021
{ this.codigo = codigo;
this.nome = nome; }
https://techcrunch.com/2017/05/17/google-makes-kotlin-a-first-class-language-for-writing-a
Prof. Raphael Lacerda
ndroid-apps
must
loved
language
A exaustão
B integração
C modificação
D mutantes
E regressão
CESGRANRIO/Caixa/2021
O teste de unidade tem como finalidade testar os componentes
mais simples do software
A de forma isolada.
B quanto à sua coesão.
C quanto ao seu acoplamento.
D quando unificados na versão a ser lançada.
E quanto à sua capacidade de responder a entradas únicas.
CESGRANRIO/BANCO amazonia/2022
Em linguagens de programação como Java, onde existem estruturas de repetição, a recursão pode ser muitas vezes substituída pela
repetição, com ganhos de desempenho.
Que fragmento de código, em Java, contendo uma estrutura de repetição, é adequado para substituí-la?
A public static int alternativaA(int a) { int s = 0; for (int i=a;i>2;i--) { s++; } return s; }
B public static int alternativaB(int a) { int s = 0; for (int i=a;i<2 && i>0;i--) { s++; } return s; }
C public static int alternativaC(int a) { int s = 0; while (a>=2) { a-=2; s++; } return
s; }
D public static int alternativaD(int a) { int s = 0; do { a-=2; s++; } while (a>0 && a<=2);
return s; }
E public static int alternativaE(int a) { int s = 0; do { a-=2; s++; } while (a>0 && a<2);
return s; }
CESGRANRIO/BANCO amazonia/2022
Um conceito básico de programação a objetos é a sobrecarga.
Por meio desse conceito, é possível escrever métodos, em uma mesma classe, os quais
A definem apenas a existência do método que deve ser implementado em uma classe mais
especializada.
A1
B2
C3
D4
E5
A System.out.println(a);
B System.out.println(Classe.a);
C System.out.println(Integer.parseInt(a));
D System.out.println(super.a);
E System.out.println(this.a);
JSP
Prof. Raphael Lacerda
Cesgranrio/BB/2018
JSP
Prof. Raphael Lacerda
CESGRANRIO/UNIRIO/2019
As classes e interfaces Java a seguir ocupam arquivos distintos, situados no pacote default
void a_m01();
void a_m02();
void b_m01();
}
CESGRANRIO/UNIRIO/2019
public final void a_m01() {
}
protected void op02( ) {
}
public abstract void op03();
}
Qual versão da classe XY NÃO produzirá erros de compilação?
PYTHON
Que fragmento de código Python 3 deve ser usado para selecionar, apenas, essas quatro colunas do
dataframe dp?
Para construir um arquivo YAML, que informe os passos que o Ansible realizará
automaticamente na conexão com os servidores que fazem parte do Cluster, além de exe-
cutar um conjunto de tarefas solicitadas, o administrador desse servidor deve seguir o padrão
(A) Apache-Start
(B) Nodel
(C) Playbook
(D) Taskbook
(E) Tower
Infra as Code
Devops https://stackshare.io/stackups/ansible-vs-terraform
Prof. Raphael Lacerda
https://logz.io/blog/terraform-vs-ansible-vs-puppet/
https://medium.com/edureka/ansible-cheat-sheet-guide-5fe615ad65c0
Devops
Prof. Raphael Lacerda
code na infra
Devops
Prof. Raphael Lacerda
code na infra
Devops
Prof. Raphael Lacerda
Palpites
https://www.digitalocean.com/com
munity/cheatsheets/how-to-use-ans
ible-cheat-sheet-guide
Exemplo:
Considere que, na função a ser escrita, duas aspas simples seguidas (‘‘) representam uma string vazia, e duas aspas
simples com um espaço entre elas (‘ ‘) representam um caracter de espaço em branco.
Esse ataque bem-sucedido demonstra que a aplicação Web do banco está vulnerável ao ataque de
A SQL Injection
B XPATH Injection
C Buffer Overflow
D CSRF
E XSS
CESGRANRIO/BB/2021
Considere o fragmento de código TypeScript a seguir.
const a = <T extends {b: string}>(obj: T) => { <código removido>
javascript - How to restrict object fields in
}; Typescript using Type parameter - Stack
Overflow
Com relação ao código apresentado acima, a(o)
(A) função a() retorna um objeto do tipo string. Using Typescript Generic Constraints to
Restrict Function Arguments Based on Other
(B) variável a é uma lista de objetos do tipo string. Arguments - DEV Community
// definir x
Que fragmento de código apresenta uma versão compilável e executável da definição de x que poderia
aparecer no lugar do comentário “// definir x” ?
(A) const x = 1;
A o append em jQuery não pode ser utilizado para containers vazios; deveria ter sido substituído por html.
B o objeto identificado por idLugar ainda não existe quando o script é executado.
E os métodos getHours e getMinutes estão escritos no plural, quando deveriam ser, respectivamente, getHour e getMinute.
CESGRANRIO/IBGE/2013
Considere o seguinte trecho de código em Javascript.
var studentGrade;
var sum = 0;
sum+=number;
Após análise do trecho, verifica-se que será armazenado na variável sum a soma de todos os números.
A pares entre 2 e 98
C ímpares entre 2 e 98
E entre 2 e 100
CESGRANRIO/IBGE/2013
Usando o conjunto de tecnologias conhecido como AJAX, é possível fazer requisições assíncronas a um servidor. Para
isso, é necessário criar um objeto da classe XMLHttpRequest, a menos que se esteja trabalhando no ambiente do
Microsoft Internet Explorer de versões anteriores a 7. O código para isso é:
xmlhttp=new XMLHttpRequest() ;
Que fragmento de código corresponde aos dois passos necessários para enviar uma requisição a um servidor?
A xmlhttp.connect("ajax_info.txt",true); xmlhttp.get( );
B xmlhttp.connect("GET","ajax_info.txt",true); xmlhttp.send( );
C xmlhttp.initialize("GET","ajax_info.txt",true); xmlhttp.send( );
D xmlhttp.open("ajax_info.txt",true); xmlhttp.get( );
E xmlhttp.open("GET","ajax_info.txt",true); xmlhttp.send( );
CESGRANRIO/BB/2018
Observe as seguintes Figuras extraídas de uma página HTML com Javascript. A Figura 1 apresenta um
campo do tipo select sendo selecionado pelo usuário (no caso, a opção 2). A Figura 2 mostra o que
acontece imediatamente depois que o usuário seleciona a opção. O Google Chrome foi utilizado para
capturar a imagem, mas o efeito seria o mesmo nos navegadores mais utilizados.
Fundamentos de aplicativos |
Android Components with Examples - DEV
Desenvolvedores Android | Android
Community
Developers
UFRPE/2022
O framework Bootstrap possui uma abordagem conhecida como mobile first, a qual é uma
estratégia que otimiza o código para dispositivos móveis inicialmente. Dentro do contexto de
interfaces gráficas de um website, assinale a alternativa que contém a tag responsável por
garantir uma renderização adequada do site, nos mais variados tamanhos de dispositivos
eletrônicos.
I. O método onPreExecute() da classe AsyncTask deve ser executado manualmente para dar
início ao Thread.
IV. A classe AsyncTask contém métodos para atualizar o andamento (progresso) de uma tarefa,
por exemplo, o progresso de um download.
I. Nas versões mais atuais do Android, se o código fizer uma operação de I/O na thread principal, o
sistema vai lançar a exceção NetWorkOnMainThreadException.
II. No Android, cada aplicação é executada em um único processo e cada processo, por sua vez, tem uma
Thread dedicada, a qual é responsável por desenhar e tratar todos os eventos da interface gráfica e é
conhecida como Main Thread ou UI Thread.
III. A classe Handler é utilizada para enviar uma mensagem para ser processada pela UI Thread que,
geralmente, é um código que vai atualizar a view.
IV. A Main Thread é utilizada para gerenciar todos os eventos e funções da aplicação e a UI Thread é
responsável apenas pela interface da aplicação.
I. Fragment é utilizado para dividir uma Activity em várias partes, porém o fragment não tem controle
sobre os eventos e não consegue gerenciar seu próprio conteúdo.
II. O Ciclo de vida de um fragment conta com o método onAttach(activity) e é chamado logo depois de
um fragment ser associado com a activity, o que acontece assim que a activity infla o layout do fragment
pela tag ou o fragment é adicionado dinamicamente via FragmentTransaction.
III. O método onDetach() é chamado para indicar que o fragment não está mais sendo utilizado e será
destruído.
IV. A API do Fragments possui a classe android.app.FragmentTransaction, que é utilizada para adicionar,
remover ou substituir os fragments dinamicamente no layout.
IF-RS/2021
Um Fragment é um componente independente do Android que pode ser usado por uma Activity, analise
as afirmações abaixo sobre Fragments:
I. Fragment é utilizado para dividir uma Activity em várias partes, porém o fragment não tem controle
sobre os eventos e não consegue gerenciar seu próprio conteúdo.
II. O Ciclo de vida de um fragment conta com o método onAttach(activity) e é chamado logo depois de
um fragment ser associado com a activity, o que acontece assim que a activity infla o layout do fragment
pela tag ou o fragment é adicionado dinamicamente via FragmentTransaction.
III. O método onDetach() é chamado para indicar que o fragment não está mais sendo utilizado e será
destruído.
IV. A API do Fragments possui a classe android.app.FragmentTransaction, que é utilizada para adicionar,
remover ou substituir os fragments dinamicamente no layout.
Fragment lifecycle | Android Developers
Ciclo de Vida
A onStart() é chamado quando a activity está ficando visível ao usuário e já tem uma view.
B onResume() é chamado quando uma activity foi parada temporariamente e está sendo
iniciada outra vez.
C onStop() é chamado sempre que a tela da activity fechar. Isso acontece quando o usuário
pressiona o botão Home ou botão voltar para sair da aplicação ou, ainda, quando recebe uma
ligação no telefone. Ele é chamado para salvar o estado da aplicação.
D onClose() literalmente encerra a execução de uma activity. Ele pode ser chamado
automaticamente pelo sistema operacional para liberar recursos ou pode ser chamado pela
aplicação pelo método finish() da classe activity.
II. a classe Activity deve sobrescrever o método onCreate(bundle). Esse método é obrigatório e
responsável por realizar a inicialização necessária para executar a aplicação.
I. Android SDK é o software utilizado para desenvolver aplicações no Android, que tem um emulador para
simular o dispositivo, ferramentas utilitárias e uma API completa para a linguagem Java, com todas as
classes necessárias para desenvolver aplicações.
II. Como existem muitas versões do sistema operacional Android, existe um identificador de cada uma
dessas plataformas que se chama API Level.
IV. O Android Studio conta com um utilitário chamado SDK Manager onde é possível baixar todas as
plataformas do Android e suas documentações, drive USB do Google para conectar um dispositivo na
USB, bibliotecas de compatibilidade, bibliotecas do Google Play Services etc.
IF-RS/2021
Sobre o arquivo AndroidManifest.xml, é procedente a seguinte afirmação:
A Dentro da tag < manifest > é declarado o pacote principal do projeto, utilizando a
tag < package >
B O arquivo AndroidManifest.xml contém a documentação completa da aplicação
criada, inclusive, das funções globais da aplicação.
C O arquivo AndroidManifest.xml é gerado automaticamente ao compilar o projeto e
permite que a aplicação acesse qualquer recurso como arquivo e imagens utilizando
constantes.
D No arquivo AndroidManifest.xml são realizadas várias configurações da aplicação e
é nele que são inseridos os dados de acesso ao banco de dados.
CONCEITOS
BÁSICOS
Características da Linguagem
● Histórico
● Versões
○ What’s new in Swift 5.0 – Hacking with Swift
OBJECTIVE C
VS
SWIFT
@canetas.pretas
SINTAXE
Variáveis
● var vs let <nome> : <type> = <value>
● type inference
○ Chapter 5 Static Typing and Type Inference | Learn Swift (aidanf.net)
STRINGS
Strings
● inicializando Strings
○ almost endless number of ways to create a String
○ Swift String Cheat Sheet (useyourloaf.com)
● funções básicas
○ == , < , >
○ uppercased() | Apple Developer Documentation
○ substring - How does String substring work in Swift - Stack Overflow - Why cannot subscript String with an Int in
Swift | by Banghua Zhao | Medium
CONDICIONAIS
if if nome.count > 5{
print("nome grande")
● } else{
print("nome pequeno")
}
}
Control Flow | Documentation (swift.org)
Default obrigatório?
● Swift only truly verifies that a switch block is exhaustive when
working with enum types
○ ou seja, não é mas é!
● switch must be exhaustive, consider adding a default clause - Evolution / Discussion - Swift Forums
ios - Exhaustive condition of switch case in This default case is indicated by the
Swift - Stack Overflow default keyword, and must always
appear last.
LOOPS
for-in / while-in
● break let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names {
● continue
print("Hello, \(name)!")
● label statement }
DATA STRUCTURES
Collections
●
FUNCTIONS
Functions
● executam uma atividade específica
● func - palavra reservada
● pode retornar múltiplos argumentos
● argument labels, default (_) and default values (=)
○ Function parameters are immutable by default.
○ inout func someFunction(argumentLabel parameterName: Int) {
}
○ variadic (numbers: Int…)
● Function Types
CLOSURES
Closures
● self-contained blocks of functionality that can be stored in a
variable.
○ blocos de funcionalidades
● funções anônimas passadas como argumento
STRUCTURES
Structures
● propriedades, métodos, initializers
● Thread Safety
○ São value types. Ou seja, seus valores são copiados para
um novo espaço de memória.
● Sem herança
● métodos, em regra, não podem alterar as propriedades
Struct vs. Class in Swift Explained - Appy Pie
APROVAÇÃO
@
oscanetaspretas