Buscar

Ficha_de_Expectativa

Prévia do material em texto

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE 
Ficha de Expectativa de Resposta da Prova Escrita 
Departamento Acadêmico ou 
Unidade Acadêmica Especializada 
Unidade Acadêmica Especializada em Ciências Agrárias 
Coordenação de Informática 
CRITÉRIOS DE AVALIAÇÃO PARA TODAS AS QUESTÕES 
 Clareza e propriedade no uso da linguagem; 
 Coerência e coesão textual, com uso correto da Língua Portuguesa; 
 Domínio dos conteúdos, evidenciando a compreensão dos temas objeto da prova; 
 Domínio e precisão no uso de conceitos; 
 Coerência no desenvolvimento das ideias e capacidade argumentativa. 
Questão 01: O ciclo de vida de aplicativos Android compreende uma série de estados e métodos que 
respondem a cada mudança de estado. Primeiro, relacione e descreva esses estados e, em seguida, indique a 
sequência de métodos que é executada em cada uma das situações a seguir: (Valor 0,00 a 0,75 pts). 
a. O aplicativo foi iniciado 
b. No estado resumed, o usuário rotacionou a tela 
c. No estado resumed, o usuário apertou a tecla home do dispositivo 
 
Na primeira parte da questão espera a seguinte resposta: 
Os estados possíveis são: 
Resumed: a atividade está em primeiro plano e o usuário tem seu foco 
Paused: outra atividade tanto está em primeiro plano como possui foco, mas a atividade ainda está visível 
Stopped: nesse estado, a atividade não está visível, mas ainda existe como processo 
Segue-se a expectativa dos outros pontos: 
a) onCreate, onStart, onResume 
b) onPause, onStop, onDestroy, onCreate, onStart, onResume 
c) onPause, onStop 
 
Questão 02: Sobre a tecnologia de Java Server Pages - JSP, cite quatro "objetos implícitos" que estão 
disponíveis na construção de qualquer JSP, descrevendo a finalidade de cada um deles (fazendo um paralelo 
com a tecnologia de Servlets). Para cada objeto implícito, escolha um dos seus métodos e ilustre a utilização do 
mesmo em uma linha de código, descrevendo o efeito produzido pela execução de cada um deles. (Valor 0,00 a 
1,00 pts). 
 
(1) o objeto "session", que é uma instância de HttpSession, tem por objetivo armazenar informações relativas a 
cada um dos usuários específicos que estão acessando a aplicação Web. Pode ser utilizado para armazenar atributos, 
como por exemplo um objeto qualquer, de nome "object" com o rótulo "nome": 
session.setAttribute("nome", object); 
 
(2) o objeto "request", que é uma instância de HttpServletRequest, tem por objetivo representar a requisição 
HTTP que gerou o acionamento do servlet. Através desse objeto é possível recuperar os parâmetros que foram 
trazidos com a requisição. Por exemplo, a recuperação de um parâmetro de rótulo "nome" e armazenamento em uma 
variável String: 
String texto = request.getParameter("nome"); 
 
(3) o objeto "out", que é uma instância de PrintWriter, tem por objetivo permitir escrever na saída HTML que 
será enviada como resposta. Por exemplo, para imprimir um título (h2) contendo o valor associado a uma variável do 
tipo String: 
out.println("<h2>Bom dia "+ nome +"</h2>"); 
 
(4) o objeto "response", que é uma instância de HttpServletResponse, tem por objetivo representar a resposta a 
ser enviada ao usuário. Por exemplo, para adicionar um objeto "cookie" da classe Cookie na resposta é utilizado: 
response.addCookie(cookie); 
 
 
Questão 03: No desenvolvimento para dispositivos móveis, na plataforma Android, uma Intent é um objeto de 
comunicação, o qual pode ser utilizado para requisitar ações de outro componente da aplicação. Embora uma 
Intent facilite a comunicação entre os componentes de várias maneiras, há três formas fundamentais de 
utilização. Explique quais são essas formas e quais são os métodos utilizados para realizar as requisições em 
cada uma delas. (Valor 0,00 a 1,00 pts). 
 
(1) Para iniciar uma Activity: uma Activity representa uma única tela da aplicação. Você pode iniciar uma nova 
instância de Activity passando uma Intent para o método startActivity(). A Intent descreve qual a Activity 
deve ser iniciada, e pode transportar as informações necessárias. Se você deseja receber um resultado a partir dessa 
outra Activity que será iniciada, basta invocar a mesma através do método startActivityForResult(). A 
Activity que realizou a invocação recebe o resultado na forma de um objeto Intent em separado através do método 
onActivityResult() que é invocado quando a Activity que foi acionada é finalizada. 
 
(2) Para iniciar um Service: um Service é um componente que realizar operações de segundo plano sem a 
interface com o usuário. Você pode iniciar um Service para realizar uma operação de uma única execução (como o 
download de um arquivo) através da passagem de uma Intent para o método startService(). A Intent descreve 
qual o Service a ser iniciado e pode levar junto as informações necessárias. Se o Service for projetado com uma 
interface cliente-servidor, você pode se ligar ao Service a partir de outro componente, passando uma Intent para o 
método bindService(). 
 
(3) Para enviar um broadcast: um broadcast é uma mensagem que qualquer aplicação pode receber. O sistema 
entrega vários broadcasts para o sistema de eventos, como quando o sistema realiza a inicialização ou quando a 
bateria do dispositivo inicia a ser carregada. Você pode enviar um broadcast para outras aplicações passado uma 
Intent para os métodos sendBroadcast(), sendOrdereredBroacast() ou sendStickyBroadcast(). 
 
Questão 04: Dadas as tecnologias de Servlets e JSP para aplicações Web em Java. (Valor 0,00 a 0,75 pts). 
a. Explique qual seria o papel de cada uma delas na aplicação do modelo arquitetural MVC (Model 
View Controller) no desenvolvimento de uma aplicação; 
b. Exemplifique, utilizando como base uma funcionalidade de um sistema hipotético, como seriam 
utilizadas tais tecnologias. 
 
a) A tecnologia de Servlets seria utilizada para implementação da lógica de “controle” da aplicação – 
gerenciando a interação entre visão e modelo; enquanto a tecnologia de JSP seria utilizada na implementação da 
“visão” da aplicação – definição de como as informações serão exibidas ao usuário final. 
b) Em um sistema Web em Java, com Servlets e JSP, teríamos todas as telas da aplicação implementadas com 
JSP, e as ações como links e formulários seriam recebidos por Servlets responsáveis pelo tratamento dos mesmos e 
encaminhamento para as JSPs responsáveis por mostrar os resultados. Por exemplo: para exibir todos os usuários 
cadastrados no sistema – (1) a ação é direcionada a um Servlet que tem a incumbência de se comunicar com a classe 
da aplicação responsável por fornecer tal informação; (2) então o Servlet armazena essa informação no próprio 
objeto representando a requisição ou na sessão, e encaminha para uma JSP; (3) a JSP acessa tal informação e se 
preocupa exclusivamente em dispor tal informação no HTML resultado – o qual será exibido para o usuário final. 
 
Questão 05: Existem 3 etapas envolvidas na utilização de cookies em JSP que estão relacionadas à 
parametrização deles e ao seu tempo de vida. Indique as etapas e explique em que consiste cada uma delas. 
(Valor 0,00 a 0,75 pts). 
 
Criação de um cookie - etapa em que se invoca o construtor passando as strings de nome e valor do cookie. 
Configuração de sua validade - emprego do método setMaxAge para especificar a longevidade (em segundos) do 
cookie. 
Envio do cookie no cabeçalho de resposta HTTP - emprego do método response.addCookie para adicionar 
cookies num cabeçalho de resposta HTTP. 
 
 
Questão 06: Cumpra corretamente o que se solicita sobre o padrão arquitetural MVC aplicado ao contexto de 
aplicações Web. (Valor 0,00 a 1,00 pts). 
a. Elabore um diagrama ilustrando seus elementos e como eles devem se comunicar; 
b. Descreva a proposta do padrão e como funciona (relacione o texto da resposta com o que é ilustrado 
pelo diagrama elaborado). 
 
a) 
b) O objetivo principal do padrão arquitetural MVC é normatizar a divisão de responsabilidadesdos elementos 
que compõem uma aplicação Web. A estratégia de divisão de responsabilidade é aplicada com o intuito de fatorar a 
complexidade do desenvolvimento da aplicação - simplificando o desenvolvimento e manutenção. 
Os elementos classificados como "model" têm a responsabilidade de armazenar os dados necessários à aplicação, 
bem como a lógica do negócio aplicada a esses dados. Os elementos classificados como "view" são responsáveis pela 
renderização gráfica do que será apresentado para o usuário da aplicação. Os elementos classificados como 
"controller" são responsáveis por controlar o fluxo das telas da aplicação e invocar elementos "model" com relação 
ao alteração do estado dos mesmos e encaminhar a resposta para ser renderizada na "view" apropriada. 
O funcionamento de uma aplicação segundo o padrão arquitetural MVC inicia com as requisições do usuário que 
são realizadas através de elementos da "view", tais requisições são recebidas por um "controller", e então 
encaminhadas para o elemento de "model" responsável. Após a conclusão da operação, o "controller" direciona para 
um elemento de "view" para renderizar a resposta. A "view" responsável pode consultar os elementos de "model" que 
representam a resposta a fim de recuperar as informações a serem exibidas na interface com usuário. 
 
Questão 07: Considerando as opções de armazenamento Internal Storage e External Storage disponíveis no 
desenvolvimento de aplicações para plataforma Android: (Valor 0,00 a 0,75 pts). 
a. Em qual(is) opção(ões) é possível acessar os arquivos criados a partir de outras aplicações? 
b. Diferencie o modos MODE_APPEND e MODE_PRIVATE e indique a qual(is) opção(ões) se aplicam. 
c. Complete o trecho de código necessário para viabilizar o leitura e escrita em arquivo 
<manifest ...> 
<uses-permission 
android:name="android.permission.___________________________" /> 
... 
</manifest> 
 
a) Na opção de armazenamento externo (External Storage). 
b) Podem ser empregados em ambas as opções de armazenamento. A principal diferença entre os modos é que o 
MODE_PRIVATE é o modo de criação padrão que permitirá criar um novo arquivo caso o mesmo ainda não exista, 
mas que o sobrescreverá caso tenha o mesmo nome de um arquivo existente, enquanto o MODE_APPEND criará um 
arquivo caso não exista e no caso de já existir tal arquivo acrescenta informações apenas ao final do arquivo. 
c) WRITE_EXTERNAL_STORAGE 
 
 
Questão 08: Implemente, numa classe Java (dispensando os "imports"), um Servlet acessível através da URL 
http://localhost/AppExemplo/Autenticar, o qual realiza os seguintes passos: (Valor 0,00 a 2,00 pts). 
a. Recebe os parâmetros "login" e "senha" provenientes de um formulário (considere que o formulário já 
existe e o encaminhamento dos parâmetros é efetuado adequadamente); 
b. Verifica o preenchimento dos campos (certificar que os mesmos possuem valores); 
c. Através da classe FachadaSistema (singleton acessível através do método getInstancia()) autentica tais 
informações dos parâmetros, através do método Usuario getUsuario(String login, String senha); 
d. Caso se trate de um login válido, o objeto representando o usuário deve ser armazenado na sessão e a 
resposta deve ser realizada pela página paginaPrincipal.jsp; 
e. Caso se trate de um usuário inválido (método retornou uma referência nula), ou algum dos parâmetros 
não esteja presente ou esteja vazio, deve redirecionar de volta ao formulário formLogin.jsp, enviando o 
parâmetro "erro" com o texto "Parâmetros Inválidos". 
 
1. @WebServlet("/Autenticar") 
2. public class Qestao1Servlet extends HttpServlet { 
3. private static final long serialVersionUID = 1L; 
4. public Qestao1Servlet() { 
5. super(); 
6. } 
7. protected void doPost(HttpServletRequest request, HttpServletResponse response) 
8. throws ServletException, IOException { 
9. String login = request.getParameter("login"); 
10. String senha = request.getParameter("senha"); 
11. if (login!=null && !login.isEmpty() && senha!=null && !senha.isEmpty()) { 
12. FachadaSistema fachada = FachadaSistema.getInstancia(); 
13. Usuario usr = fachada.getUsuario(login, senha); 
14. if (usr != null) { 
15. HttpSession session = request.getSession(); 
16. session.setAttribute("usuario", usr); 
17. request.getRequestDispatcher("paginaPrincipal.jsp").forward(request, 
response); 
18. } 
19. } 
20. response.sendRedirect("formLogin.jsp?erro=Parâmetros Invalidos"); 
21. } 
22. } 
 
 
Questão 09: O seguinte código adiciona dinamicamente em um LinearLayout (itensLinearLayout) 10 
componentes TextView seguido de um componente Button que estão especificados em um layout 
(summary_item). (Valor 0,00 a 1,00 pts). 
 
LayoutInflater inflater = (LayoutInflater); 
getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
 
LinearLayout itensLinearLayout = (LinearLayout) 
findViewById(R.id.itensLinearLayout); 
 
for(int i = 0; i < 10; i++) { 
 View summaryItemView = inflater.inflate(R.layout.summary_item, null); 
 Button goButton = (Button) findViewById(R.id.goButton); 
 TextView itemTextView = (TextView) findViewById(R.id.itemTextView); 
 itemTextView.setText(i + "."); 
 itensLinearLayout.addView(summaryItemView); 
} 
 
Suponha que em nenhuma parte do aplicativo exista ainda um componente de summary_item na 
interface. Explique por que o código acima gera um erro de execução e como corrigi-lo. 
 
O código acima gera um erro de execução pois na primeira iteração 
findViewById(R.id.itemTextView) retorna NULL e nenhum itemTextView é adicionado até que o 
componente summaryItemView seja adicionado à raiz dos componentes onde findViewById realiza a busca. 
Dessa forma, para que o código seja corrigido é necessário especificar a partir de qual componente será realizado a 
busca pelo ID: summaryItemView.findViewById(R.id.goButton). 
 
Questão 10: Aplicativos Android podem ser interrompidos durante a execução por uma série de motivos 
como, por exemplo, chamadas telefônica, bateria descarregada, usuário rotacionando a tela ou uma mudança 
do foco para um outro aplicativo. Existem estratégias para assegurar que as informações do aplicativo não se 
perderão. Considerando esse contexto, responda: (Valor 0,00 a 1,00 pts). 
a. Como salvar e como recuperar informações através do uso de um objeto da classe Bundle? 
b. Qual a limitação da estratégia acima? 
c. Explique como superar tal limitação e apresente exemplos. 
d. Considere o código a seguir, indique a que se destina e preencha adequadamente as lacunas a fim de 
cumprir esse propósito. 
 
public class DicionarioOpenHelper extends SQLiteOpenHelper { 
 
 private static final String ______________________________ = "meu_banco"; 
 private static final int DATABASE_VERSION = 1; 
 private static final String COMANDO = "CREATE TABLE 
 DICIONARIO (PALAVRA TEXT," + " DEFINICAO TEXT);"; 
 
 DictionaryOpenHelper(Context context) { 
 super(context, DATABASE_NAME, null, DATABASE_VERSION); 
 } 
 @Override 
 public void onCreate(SQLiteDatabase db) { 
 
 _________________ (COMANDO); 
 } 
} 
a) É possível gravar as informações do aplicativo para recuperá-las posteriormente utilizando um objeto da classe 
Bundle nos métodos onSaveInstanceState e onRestoreInstanceState. 
b) O estado interno da atividade não é salvo em todas as situações em que o aplicativo é destruído. 
c) Para que possamos gravar e recuperar as informações, é necessário realizá-las através de uma forma 
persistente: (1) em um arquivo sharedPreferences (2) em um arquivo no sistema de arquivos do dispositivo ou 
externo (3) usando a base de dados SQLite. 
d) DATABASE_NAME 
db.execSQL 
 
 
 
Assinatura dos Membros da 
Comissão 
1o membro (Presidente): 
2o membro: 
3o membro:

Continue navegando