Prévia do material em texto
Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 Autores: Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 22 de Abril de 2020 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 1 59 Sumário Desenvolvimento Mobile ............................................................................................................. 2 Desenvolvimento Nativo .............................................................................................................. 6 Desenvolvimento Cross-Plataform ............................................................................................ 10 Exercícios ................................................................................................................................... 16 Android ...................................................................................................................................... 20 Questões Android ...................................................................................................................... 32 IOS ............................................................................................................................................. 42 Questões IOS ............................................................................................................................. 45 Lista de Exercícios ...................................................................................................................... 51 Gabarito ..................................................................................................................................... 59 Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 2 59 DESENVOLVIMENTO MOBILE Pessoal, vamos falar sobre sistemas, arquitetura e aplicações de dispositivos móveis. A popularização dos smartphones desencadeou uma revolução no mercado de telefonia móvel. A evolução da tecnologia dos aparelhos celulares permitiu oferecer ao usuário recursos que vão muito além da realização de uma chamada ou do envio de uma mensagem. As melhorias de hardware permitiram o desenvolvimento de sistemas operacionais mais avançados. A partir disso, foi possível desenvolver aplicativos melhores com cada vez mais recursos e serviços para os usuários. Os acessos, por exemplo, a serviços de instituições financeiras e redes sociais podem ser facilitados pelo uso de aplicativos que são executados em um aparelho celular. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 3 59 Devido a esta evolução, os smartphones se transformaram em uma oportunidade de entretenimento, de acesso à informação e de solução de problemas, integrando-se assim ao cotidiano das pessoas e facilitando diversas tarefas do dia a dia. Motivado por estes resultados, o mercado de aplicativos para aparelhos celulares apresenta anualmente uma absurda taxa de crescimento. Este mercado é disputado por diferentes plataformas tecnológicas, incluindo sistemas operacionais e plataformas de desenvolvimento, gerando uma variedade enorme de soluções no mercado. Frente a este fato, um dos principais desafios deste mercado é desenvolver aplicativos em um ambiente de tecnologia altamente fragmentado e em rápida evolução. As limitações de plataforma para distribuição do aplicativo, tempo e custo para o desenvolvimento, complexidade das tecnologias necessárias para a sua criação e manutenção são pontos problemáticos em um projeto voltado ao desenvolvimento deste tipo de aplicativo. Por que? De novo, lembrem-se da variedade colossal de dispositivos que existem atualmente. Essas plataformas são compostas de diversas tecnologias, tais como: sistema operacional, linguagens de programação e IDEs. O Sistema Operacional é responsável por gerenciar diversos recursos do aparelho; as linguagens de programação são utilizadas na programação do aplicativo; e a IDE fornece ferramentas que auxiliam na criação do aplicativo. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 4 59 Além disso, no desenvolvimento de um aplicativo móvel, deve-se considerar, por exemplo: resoluções dos dispositivos; as limitações de bateria, processamento, memória e armazenamento; versão do sistema operacional utilizado; os diversos tamanhos de tela; as possíveis questões de segurança de dados; acessibilidade; entre outros. Vocês percebem agora como tudo isso pode ser complexo? Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 5 59 Galera, eu tenho alguns amigos de faculdade que enveredaram para a área de jogos para dispositivos móveis. Pensem em termos de marketing e dinheiro! É bom comercialmente que um jogo funcione apenas no Galaxy S5, mas não no Galaxy S5 Mini? É bom comercialmente que um jogo não torre a bateria no iPhone X, mas torre no iPhone XR? Evidente que não! Dito isso, vamos falar agora sobre as principais abordagens de desenvolvimento para sistemas móveis. Peço a atenção de vocês, porque esse assunto é o que mais cai em prova! Conforme a imagem acima, existem duas abordagens principais: Desenvolvimento Nativo e Desenvolvimento Cross-Platform (sendo que esse último se divide em Desenvolvimento Web e Desenvolvimento Híbrido). Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 6 59 DESENVOLVIMENTO NATIVO O Desenvolvimento Nativo é quando o aplicativo é desenvolvido usando os recursos da plataforma. No caso do iOS, utiliza-se a linguagem de programação Objective-C, o framework de desenvolvimento CocoaTouch e a ferramenta Xcode. Para Android, utiliza-se a linguagem Java com o Android Studio na ferramenta Eclipse. E, no Windows Phone, a linguagem C#, Windows Phone SDK e Visual Studio. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 7 59 Trata-se, portanto, da abordagem mais simples e direta: para cada plataforma, é desenvolvida uma versão do aplicativo. Optar por desenvolvimento nativo é mais caro, pois é necessário desenvolver um novo código para cada plataforma. No entanto, o resultado final geralmente é melhor, pois o aplicativo funcionará mais fluído e melhor integrado com os recursos de cada plataforma. Exemplo acima! Por falar nisso, através das APIs disponíveis das linguagens utilizadas em cada plataforma, um aplicativo nativo pode acessar funcionalidades oferecidas por recursos nativos do sistema operacional, tais como: GPS, SMS, E-Mail, Acelerômetro, Bússola, Câmera Fotográfica, etc. Esses aplicativos nativosevidentemente podem ser baixados, instalados e vendidos em lojas de aplicativos. O desenvolvimento de um aplicativo nativo exige conhecimentos específicos a respeito das tecnologias utilizadas pela plataforma na qual se deseja executá-lo. A principal desvantagem está justamente no fato de ser executado apenas na plataforma para a qual foi desenvolvido, aumentando o tempo, custo e o esforço para disponibilizar um mesmo aplicativo para mais de uma plataforma. As diferenças entre as plataformas também são importantes, pois para cada uma há diferentes ferramentas de desenvolvimento, bibliotecas e equipamentos com diferentes capacidades. Desenvolver aplicativos nativos para diversos sistemas operacionais requer uma equipe de trabalho com conhecimento em várias tecnologias, visto que não há reaproveitamento de código. Vejam alguns exemplos: PLATAFORMA CONHECIMENTOS NECESSÁRIOS Apple IOS C, Object C Google Android Java RIM Blackberry Java (J2ME Flavored) Symbian C, C++, Python, HTML, CSS, JS Windows Mobile .Net Windows 7 Phone .Net HP Palm webOS HTML, CSS, JS MeeGo C, C++, HTML, CSS, JS Samsung bada C++ Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 8 59 Para você entender um pouco melhor sobre as diferenças, preparamos um quadro comparativo com as vantagens e desvantagens de cada um dos modelos de aplicação para mobile. Atenção: as comparações trazem uma visão geral do assunto, mas tudo depende da forma como o profissional desenvolverá o app e de qual o objetivo dele. Aplicativos nativos são desenvolvidos de acordo com as especificações fornecidas pelo fabricante do sistema operacional. Esses fabricantes fornecem APIs que podem ser utilizadas pelos desenvolvedores, garantindo certo nível de consistência entre todos os aplicativos nativos. Em geral, oferecem ótima experiência de uso, permitindo ao usuário uma navegação mais imersiva. Com relação a sua interface, os componentes de um aplicativo nativo são iguais aos do sistema operacional utilizado pelo sistema operacional do dispositivo, portanto é mais intuitivo ao Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 9 59 usuário. Aplicativos desenvolvidos através do paradigma nativo possuem ótimo desempenho. Por que, professor? Porque não é necessária qualquer interpretação de código durante a execução. Outro aspecto importante é a independência de comunidades responsáveis por versões de frameworks de desenvolvimento de aplicativos, pois – em um aplicativo nativo – as atualizações de API do próprio sistema operacional serão utilizadas no desenvolvimento de novas funcionalidades do aplicativo nativo. O que você quer dizer com isso, professor? Eu quero dizer que, uma vez atualizada a plataforma, já é possível incorporar as novidades existentes da plataforma para desenvolver para o aplicativo nativo, sem a dependência da atualização de tecnologias adjacentes, como por exemplo, algum framework particular. Bacana! Agora vamos falar um pouquinho sobre o Desenvolvimento Cross-Platform. Vamos resumir nosso papo! Se você for criar uma aplicação nativa para Android, você poderá executá-lo no iOs? Não, e vice-versa! Você terá que criar uma aplicação para cada plataforma e provavelmente necessitará de duas equipes (cada uma especializada em uma linguagem). Você terá acesso aos recursos do dispositivo e poderá instalar em uma loja de aplicativos – obviamente, com mais segurança. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 10 59 DESENVOLVIMENTO CROSS-PLATAFORM Considerando um cenário com notável diferença entre sistemas operacionais e plataformas de programação existentes, desenvolver um aplicativo uma vez e poder utilizá-lo em várias plataformas é um dos maiores desafios da computação móvel. Dito isso, temos o Desenvolvimento Cross-Platform, que é uma forma de desenvolver aplicativos que poderão ser utilizados em diferentes plataformas. Com o crescimento dos aplicativos cross-plataform, o mercado de aplicativos para aparelhos celulares sofreu alterações importantes em seu modelo de negócio. Entre as vantagens, destaca-se um maior Retorno sobre Investimento (ROI), pois uma vez que o aplicativo é multiplataforma e pode ser empacotado como um aplicativo nativo, é desenvolvido uma vez e comercializado em várias lojas de aplicativos. Infelizmente, a experiência de usuário do aplicativo não terá a mesma fluidez; realizar testes em aplicativos cross-platform é bem mais complexo; não há garantia de poder aproveitar os recursos do dispositivo tão eficientemente como no desenvolvimento nativo; pode haver dificuldades, na medida em que plataformas possuem diferentes comportamentos e defeitos – dificultando a depuração. Enfim... Como vimos anteriormente, ele se divide em Desenvolvimento Web (também conhecido como Desenvolvimento Responsivo) e Desenvolvimento Híbrido. Professor, qual a diferença entre essas abordagens? Bem, as aplicações web são acessadas diretamente do navegador e são geralmente desenvolvidas em HTML5, CSS3 e JavaScript. O HTML5 incorporou uma série de elementos multimídia ao HTML comum, o que fez com que ele rapidamente se tornasse uma excelente opção de desenvolvimento. A grande vantagem é que ele pode ser lido em qualquer navegador (móvel ou não). No entanto, ele tem alguns problemas de performance – ademais, faltam à linguagem alguns recursos mais avançados. Além disso, essas aplicações precisam estar conectadas à internet para funcionar. Como nem todos os usuários de smartphone possuem conexão à internet, e algumas vezes essas conexões não são de boa qualidade, pode não ser uma boa ideia confiar apenas nessas tecnologias. Deve- se avaliar o contexto de utilização e nos objetivos do aplicativo. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 11 59 Em suma, Desenvolvimento Web trata de aplicativos que rodam diretamente no navegador do dispositivo. A Interface Gráfica é adaptada para dispositivos com telas menores, utilizando conceitos de responsividade. Estas aplicações são hospedadas em servidores web, utilizando tecnologias específicas para serem carregadas, em geral, em máquinas de “baixo” processamento e velocidade de banda da rede. A atualização/manutenção da aplicação é feita no servidor! Logo, todos os dispositivos recebem a nova versão automaticamente, bastando atualizar a página no browser – tudo independente de plataforma. Há alguns problemas com a persistência de dados no dispositivo (Local Store). No entanto, há mecanismos para manter informações em cache, simulando o armazenamento de dados. E o Desenvolvimento Híbrido? Aplicações híbridas trazem a resposta para os programadores que desejam desenvolver para muitas plataformas, sem grande perda de desempenho. Essa abordagem permite ao desenvolvedor criar um núcleo do programa de forma nativa, o que permite que haja um controle sobre as funcionalidades e recursos do dispositivo. Isso faz com que, em suma, a experiência dousuário que está utilizando a aplicação em um iOS seja a mesma que um em um Windows Phone, por exemplo, o que é muito importante em grande parte das aplicações. O aplicativo híbrido funciona dentro do browser do sistema operacional. O browser implementa uma classe que é capaz de exibir conteúdo web. Diferente do aplicativo nativo, o híbrido não possui acesso direto às funcionalidades do dispositivo, sendo necessário um framework que faça a comunicação entre o aplicativo e o dispositivo. Em geral, o desenvolvimento híbrido é utilizado para aplicativos menos robustos e mais simples. Nesse contexto, o desenvolvedor consegue reaproveitar boa parte do seu código. A aplicação híbrida nada mais é que uma aplicação web (HTML5, CSS3, etc) envelopada em um contêiner nativo. Existem dezenas de ferramentas para gerar esse contêiner nativo para cada plataforma, tais como Cordova, Sencha Touch, etc. Para diferenciar todas essas abordagens, eu recomendo que façamos uma comparação geral. Atenção no quadro abaixo: Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 12 59 Nativo Web Híbrido Distribuição Baixado a partir da Loja de Aplicativos. Hospedado em um Servidor Web na internet e acessado por meio de um navegador. Baixado a partir da Loja de Aplicativos. Acesso Offline Pode acessar telas sem conexão com a internet. Pode acessar algumas telas sem conexão com a internet (via cache). Pode acessar telas sem conexão com a internet. Desenvolvimento Cada aplicativo para uma plataforma específica. A lógica da aplicação é reconstruída para cada aplicação em cada plataforma. É difícil replicar aplicativos precisamente em todas as plataformas. Um aplicativo é desenvolvido para funcionar em todas as plataformas, porque a lógica pode ser reutilizada. Aplicativos parecem idênticos em todos os dispositivos e browsers, mas requer muitos testes. Um aplicativo é construído e depois envolvido em um contêiner para servir a uma plataforma nativa específica. Releases Atualizações devem ser baixadas e instaladas todas as vezes. Desenvolvimento e ciclos de release são maiores. Atualizações podem ser manipuladas remotamente e são instantâneas. Atualizações podem ser baixadas e instaladas todas as vezes. Desempenho Resposta rápida. Um pouco de atraso, especialmente com conectividade pobre. Mais rápido que o Web e mais lenta que o Nativo. Design Interface de usuário bastante rica. Interface de usuário com foco maior ênfase na funcionalidade. Apelo visual maior que o Desenvolvimento Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 13 59 Web, mas não tão rico como o Nativo. Integração Suporta integração com recursos do dispositivo. Suporta parcialmente a integração com recursos do dispositivo. Suporta integração com recursos do dispositivo, mas com desempenho limitado. Armazenamento de Dados SQLite. SQLite. SQLite. Touch Swipe, Pinch e Spread. Swipe Swipe, Pinch e Spread. Custo Mais caro de todos. Mais barato de todos. Barato, mas não tanto quanto o Desenvolvimento Web. Ênfase Ênfase na interatividade e nos recursos. Ênfase na usabilidade. Ênfase na usabilidade. Tempo de Desenvolvimento Lento. Rápido. Médio. Manutenção Complexa. Fácil. Moderada. A imagem abaixo também auxilia a entender cada abordagem! Percebam que se você deseja capacidade máxima em uma plataforma única com interações avançadas, alta performance e distribuição segura em uma loja de aplicativos, vá de Desenvolvimento Nativo! Se você deseja capacidade máxima, mas para múltiplas plataformas e exigindo habilidades do desenvolvedor. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 14 59 Além disso, se você quiser também acesso a plataforma nativa e distribuição segura em uma loja de aplicativos, vá de Desenvolvimento Híbrido. Por fim, se a alta capacidade não é seu foco, mas a capacidade de rodar em diversas plataformas, também exigindo habilidades do desenvolver, atualizações instantâneas e automáticas e distribuição irrestrita, seu negócio é Desenvolvimento Web (HTML5). Por fim, vamos falar rapidamente sobre Mobile Device Management (MDM). O que é isso, professor? Galera, com a proliferação de dispositivos móveis no local de trabalho, os funcionários podem e devem trabalhar de qualquer lugar. Para ser produtiva, essa força de trabalho móvel exige acesso consistente a recursos e dados da empresa de qualquer lugar em qualquer dispositivo. Essa tendência trouxe diversos desafios significativos de segurança para administradores de TI que desejam habilitar a mobilidade empresarial e garantir que os recursos da empresa estejam protegidos de acesso não autorizado. O Gerenciamento de Dispositivos Móveis é um termo Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 15 59 utilizado para abranger a administração de dispositivos como smartphones, tablets, laptops, etc. Entre as vantagens da implantação do gerenciamento de dispositivos móveis, podemos citar o aumento da segurança e conformidade; redução dos custos de suporte de ativos móveis; aprimoramento do gerenciamento de aplicativos e de desempenho; a garantia de continuidade melhor dos negócios; aumento da produtividade e satisfação do usuário; entre outros. O uso de ferramentas de gestão é fundamental para garantir segurança e eficiência da gestão dos dispositivos. Atualmente existem muitas ferramentas de MDM no mercado como Airwatch, Mobile Iron, BlackBerry, Afaria, Knox e Good Technology, entre outras. Essas ferramentas conseguem realizar, de forma remota, diversos comandos. Quais, professor? Aplicar restrições, realizar a limpeza remota seletiva do conteúdo corporativo ou também do pessoal (no caso de BYOD1), bloqueio do dispositivo, controle de funcionalidades e acessos baseados em perfil de usuário, horário e até mesmo geo-localização. Algumas atendem necessidades específicas: como antivírus, segurança, virtualização, entre outras. 1 Bring Your Own Device (Traga seu próprio dispositivo). Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 16 59 EXERCÍCIOS 1. (CESPE – 2014 – ANATEL – Analista de Sistemas) O desenvolvimento de aplicações web e o de aplicações nativas são as principais formas de desenvolvimento móvel. Comentários: Vamos falar agora sobre as principais abordagens de desenvolvimento para sistemas móveis. Peço a atenção de vocês, porque esse assunto é o que mais cai em prova! Conforme a imagem acima, existem duas abordagens principais: Desenvolvimento Nativo e Desenvolvimento Cross-Platform (sendo que esse último se divide em Desenvolvimento Web e DesenvolvimentoHíbrido). Conforme vimos em aula, a questão está perfeita! De modo geral, são essas duas formas principais – o tipo híbrido é uma combinação dos anteriores. Gabarito: C 2. (CESPE – 2013 – BACEN – Analista de Sistemas) No projeto de aplicações para dispositivos móveis, devem ser considerados, entre outros aspectos, as características dos dispositivos de hardware para os quais a aplicação está sendo desenvolvida e o consumo de energia gerado por cada recurso do sistema, visando-se a economia de bateria. Comentários: Além disso, no desenvolvimento de um aplicativo móvel, deve-se considerar, por exemplo: resoluções dos dispositivos; as limitações de bateria, processamento, memória e armazenamento; versão do sistema operacional utilizado; os diversos tamanhos de tela; as possíveis questões de segurança de dados; acessibilidade; entre outros. Vocês percebem agora como tudo isso pode ser complexo? Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 17 59 Conforme vimos em aula, a questão está perfeita! Deve haver uma preocupação com as características de hardware do dispositivo. Gabarito: C 3. (CESPE – 2017 – TRE/BA - Analista de Sistemas) Um APP que for desenvolvido de forma híbrida, para funcionar no IOS e Android, além de agilizar e baratear o processo de desenvolvimento, também: a) será mais leve que o normal, pois possuirá menos código trafegando pela web. b) será uma aplicação web convertida para rodar nas referidas plataformas. c) será compilado de forma nativa no IOS e depois no Android. d) acessará todas as bibliotecas nativas dos dispositivos. e) será dependente das atualizações do sistema operacional. Comentários: Aplicações web híbridas, de fato, agilizam e barateiam o processo de desenvolvimento. Ademais, uma aplicação híbrida nada mais é que uma aplicação web (HTML5, CSS3, etc) envelopada em um contêiner nativo! Dito isso, vamos aos comentários: (a) Errado, possuem mais código trafegando pela web, devido às camadas de encapsulamento que geram overhead; (b) Correto, será uma aplicação web envelopada/encapsulada para rodar nas referidas plataformas; (c) Errado, isso é desenvolvimento nativo; (d) Errado, ele não acessará bibliotecas nativas diretamente, quem o fará será o container; (e) Errado, esse seria o caso de aplicações nativas. Gabarito: B 4. (CESPE – 2017 – TRE/BA - Analista de Sistemas) Considerando que a experiência do usuário vem evoluindo juntamente com as interfaces dos dispositivos móveis, assinale a opção correta. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 18 59 a) A utilização de carrosséis como método de interação deve ser evitada ou avaliada cuidadosamente, devido ao alto percentual de desistência do usuário na navegação entre as telas iniciais. b) No caso de aplicações móveis que também existam em sítios, as telas na aplicação devem ser semelhantes às do sítio para que seja aproveitada a experiência do usuário. c) Devem-se utilizar asteriscos, ou representação com sentido equivalente, para esconder a senha digitada, sem permitir que a senha seja visualizada por terceiros ou pelo próprio usuário. d) Para manter a confidencialidade dos dados, o usuário deve fazer login a cada acesso à aplicação, fazendo uso, caso seja de seu interesse, de aplicações independentes para armazenamento de senha. e) Para o usuário, é aceitável que a tela de abertura (splash screen) demore a ser carregada, desde que a aplicação seja carregada com a maioria das funcionalidades já disponíveis. Comentários: (a) Correto. Carrosséis são tão problemáticos em aplicativos quanto em sites, onde o nível de desistência de 98% entre a primeira e a segunda tela não é raro (Fonte: Erik Runyon). Os carrosséis podem ser pontos cegos onde as promoções são raramente acessadas. Isso dito, se o carrossel for o método de interação adequado para o seu aplicativo, desenvolva-o com cuidado e alavanque os padrões de design móvel que os usuários estão acostumados, apresentados pelos seus sistemas de operação. Ex.: Nos sistemas Android e iOS um conjunto de pontinhos indica uma série de imagens horizontais deslizáveis; (b) Errado. Os usuários não devem ser apresentados a um aplicativo que é uma réplica do site da marca ou que contém muito conteúdo e funcionalidades na tela padrão. Aplicativos devem ser claros e as jornadas/tarefas devem ser óbvias, portanto, a marca deve priorizar o conteúdo e as funcionalidades primárias e colocar todo o resto fora da tela, (Ex: acessível com um deslize do menu, acima, do lado ou abaixo da tela); (c) Errado. Dê aos usuários a opção de rapidamente selecionarem o controle que revela – ou esconde – a senha quando estão digitando. Isso reduzirá o número de erros por preenchimento de senha durante os processos de cadastro e log-in; Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 19 59 (d) Errado. Um dos grandes pontos de diferença entre aplicativos móveis e sites móveis é que os aplicativos permitem que os usuários se mantenham logados por mais tempo (eliminando o esforço de log-in manual e erros), recebendo os benefícios do nível de conveniência e personalização, os quais são apenas possíveis por conta de um estado de log-in prolongado, derivado de aplicativos que armazenam e atuam com base nas suas informações, comportamentos e histórico de transações. (e) Errado. A tela de abertura (ou Splash Screen) deve engajar os usuários e comunicar a essência da marca, porém ela nunca deve deixar os usuários esperando. Sempre coloque o usuário em controle e capaz de executar a sua tarefa o mais rápido possível. Quem quiser ver mais dicas, acesse: http://storage.googleapis.com/think/intl/ALL_br/docs/mobile-app-ux-principles_articles.pdf Gabarito: A ACERTEI ERREI Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 20 59 ANDROID Android é um sistema operacional móvel pertencente ao Google! Apesar disso, ele continua tendo código aberto, mas com aplicações com software de código fechado. Galera, quem aí tem um celular com Android? Vocês devem saber que é possível trocar a ROM! Professor, o que é ROM? É como um firmware personalizado do sistema operacional – pensem como uma customização do sistema operacional. Por exemplo: quando eu tinha um Moto X, que eu usava o CyanogenMod. Por que eu estou falando isso? Para enfatizar que o Google é agora dono do Android, mas o código continua sendo aberto – permitindo que muitos desenvolvedores criem personalizações. O Android surgiu a partir da Versão 2.6 do Kernel do Linux e atualmente se baseia na Versão 3.x. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 21 59 Professor, o que eu preciso para desenvolver? Você precisa do Android Studio, queé um kit de ferramentas para desenvolvimento Android; e você precisa do SQLite, que é uma biblioteca para implementar um banco de dados e armazenar dados. Uma curiosidade engraçada também é que cada versão do sistema operacional possui o nome de uma sobremesa – a versão atual é a Marshmallow 6.0. A imagem acima apresenta três peculiaridades: primeiro, ela infelizmente não mostra as duas últimas versões: Lollipop e Marshmallow; segundo, a versão Honeycomb foi lançada, a princípio, para tablets; e terceiro, a partir da versão IceCream Sandwich 4.0, o Android passou-se a se basear no kernel 3.x e, não mais, no kernel 2.6 do Linux. Vamos agora ver o slogan de cada versão: VERSÃO SLOGAN Android 1.6 Donut A informação do mundo está ao seu alcance: pesquisar na Web, receber rotas de trânsito... ou apenas assistir a vídeos de gatos. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 22 59 Android 2.0 Eclair Sua tela inicial do jeito que quiser. Organize apps e widgets em várias telas e pastas. Planos de fundo interativos respondem ao toque. Android 2.2 Froyo A Digitação por voz escreve o texto por você e as Ações de voz permitem que você controle seu smartphone sem precisar digitar. Android 2.3 Gingerbread Novos sensores fazem do Android uma ótima plataforma para jogos. Assim você pode tocar, inclinar e se divertir. Android 3.0 Honeycomb Otimizada para tablets, esta versão abre novos horizontes onde quer que você esteja. Android 4.0 IceCream Sandwich O Android atinge a maioridade com um design novo e refinado. Simples, bonito e muito inteligente. Android 4.1 Jelly Bean O Android fica mais rápido, suave e com um visual incrível. Com o Google Now, você tem a informação certa na hora certa. Android 4.4 Kitkat Inteligente, simples e totalmente seu. Um design mais refinado, melhor desempenho e novos recursos. Android 5.0 Lollypop Mais doce novidade do Android. Tenha a elegância do Android em telas grandes e pequenas, com informação certa no momento certo. Android 6.0 Marshmellow O Android Marshmallow chega para adocicar a experiência do sistema da Google com diversos retoques em vários aspectos. O Android roda sobre uma máquina virtual chamada Dalvik VM! Trata-se de uma máquina virtual otimizada para requerer pouca memória e processamento, e projetada para permitir que múltiplas instâncias da máquina virtual rodem ao mesmo tempo, deixando para o sistema operacional o isolamento de processos, o gerenciamento de memória e o suporte a threading. Uma máquina virtual é uma aplicação de software que se comporta como se fosse um dispositivo independente com seu próprio sistema operacional. Quem aí já instalou VMWare? Vocês sabem, então, que podem rodar uma máquina virtual em um computador que opera com um sistema operacional completamente diferente do sistema operacional da máquina física. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 23 59 Eu, por exemplo, tenho um MacBook, no entanto eu instalei uma máquina virtual que roda Windows! Então é possível rodar um Windows no Macbook? Sim, por meio de uma máquina virtual. A Dalvik é frequentemente referenciada como uma Máquina Virtual Java, mas isso não é estritamente exato, porque o bytecode que ela opera não é o bytecode da JVM. Em vez disso, uma ferramenta de conversão chamada dx, incluída no SDK Android, converte os arquivos .class de uma classe compilada por um compilador Java comum para a JVM em outro formato especifico de classe (.dex). Vejam a imagem abaixo! Observem que o Android não roda diretamente sobre a JVM! Apesar de ser escrito em Java, ele roda diretamente sobre o Dalvik VM. Vamos bater um papo agora sobre a Arquitetura Android! O Google geralmente se refere ao Android como uma pilha de softwares. Cada camada da pilha agrupa vários programas que suportam funções específicas do sistema operacional. Conforme mostra a imagem, a base da pilha é a Camada de Linux Kernel, que inclui algumas funcionalidades. Quais, professor? Gerenciador de memória, configurações de segurança, gerenciador de energia e vários drivers de hardware (Audio, Bluetooth, Câmera, entre outros). Para quem não sabe, drivers são Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 24 59 programas que controlam os dispositivos de hardware. Exemplo: Meu Moto X tinha uma câmera! O Kernel do Android contém um driver que permite ao usuário enviar comandos ao hardware da câmera. Percebam, pela imagem, que a câmera do celular está na camada de Abstração de Hardware, onde se encontram os recursos de hardware. Acima temos a Camada de Bibliotecas! Pode-se pensar em bibliotecas como um conjunto de instruções que dizem ao dispositivo como lidar com diferentes tipos de dados. Falou em biblioteca, deve-se lembrar de multimídia, Webkit (Renderizador de Browsers), SQLite (BD), etc. Outras bibliotecas incluem aceleração tridimensional (para dispositivos com acelerômetros) e um biblioteca de navegadores Web. No mesmo nível da camada de bibliotecas, a Camada de Runtime inclui um conjunto de bibliotecas do núcleo Java – lembrando que programadores de aplicações Android constroem suas aplicações em Java. Ele também inclui a Máquina Virtual Dalvik (DVM). A Camada Framework de Aplicações apresenta programas que gerenciam as funções básicas do telefone, como alocação de recursos, aplicações de telefone, mudança entre processos ou programas, e softwares de localização física do aparelho. Os desenvolvedores de aplicações têm acesso total ao Framework de Aplicações do Android. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 25 59 Isso possibilita que os desenvolvedores tirem vantagem das capacidades de processamento do Android e suportem recursos quando estão construindo suas aplicações móveis. O framework de aplicações é como um conjunto de ferramentas básicas com as quais um desenvolvedor pode construir aplicações e ferramentas muito mais complexas. Ela fornece todas as funcionalidades necessárias para a construção de aplicativos, por meio de bibliotecas nativas. Se a prova perguntar qual camada contém as funcionalidades que auxiliam o desenvolvedor na criação de aplicativos, o que vocês respondem? Tem que ser automático: Framework de Aplicação. Vejam que existem vários gerenciadores (de atividade, janela, conteúdo, notificação, entre outros). No topo da pilha está a Camada de Aplicações! Encontram-se funções básicas do dispositivo, chamadas telefônicas, acesso ao navegador ou acesso à lista de contatos. Sabe aqueles aplicativos que você instala no seu celular? Estão aqui também! Whatsapp, Facebook, Tinder, Instagram... estão todos aqui! Se você é um usuário comum, esta é a camada que você mais usará. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimentode Software www.estrategiaconcursos.com.br 26 59 Em geral, apenas os programadores do Google, os desenvolvedores de aplicação e os fabricantes de hardware acessam as camadas mais baixas. Vamos resumir em palavras-chave? Camada de Kernel: drivers; Camada de Abstração de Hardware: recursos de hardware; Camada de Bibliotecas: bibliotecas mesmo; Camada de Runtime: DVM; Camada de Framework de Aplicação: Gerenciadores para desenvolvedores; Camada de Aplicações: apps do dispositivo. Algumas observações: alguns consideram a Camada de Runtime como uma camada separada e outros consideram-na como parte da Camada de Bibliotecas. Ademais, alguns consideram a Camada de Abstração de Hardware como parte da Camada de Bibliotecas. Vamos ver agora um pouco sobre os componentes de um aplicativo! O que é isso, professor? Os componentes de aplicativo são os blocos de construção fundamentais de um aplicativo do Android. Cada componente é um ponto diferente pelo qual o sistema pode entrar no aplicativo. Nem todos os componentes são pontos de entrada reais para o usuário e alguns dependem uns dos outros. No entanto, cada um existe como uma entidade independente e desempenha uma função específica – cada um é um bloco de construção exclusivo que ajuda a definir o comportamento geral do aplicativo. Há quatro tipos diferentes de componentes de aplicativo. Cada tipo tem uma finalidade distinta e tem um ciclo de vida específico que define a forma pela qual o componente é criado e destruído. A seguir apresentam-se os quatro tipos de componentes de aplicativos: ▪ Atividades (Activities): As atividades representam uma tela única com uma interface do usuário. Por exemplo: um aplicativo de e-mails pode ter uma atividade para mostrar uma lista de novos e-mails, outra atividade para escrever um e-mail e outra para ler e-mails. Embora essas atividades funcionem juntas para formar uma experiência de usuário coesa no aplicativo de e-mails, elas são independentes entre si. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 27 59 Dessa forma, um outro aplicativo pode iniciar qualquer uma dessas atividades (se o aplicativo de e-mails permitir). Por exemplo: um aplicativo de câmera pode iniciar a atividade no aplicativo de e-mail. Vocês já tiraram uma foto no celular e a enviaram por e-mail? Pois é! Você pode iniciar a atividade de escrita de e-mail lá no aplicativo da câmera. Bacana? Em suma, o Componente de Atividade é um componente que representa cada tela da aplicação. Pegue seu smartphone agora, abra algum aplicativo (Ex: Facebook) e vá interagindo e trocando de telas – cada tela será uma atividade. As atividades são classes Java compostas por subcomponentes chamados de Visão (View). O que é isso, professor? É uma classe que representa o bloco de construção básico de um Componente de UI. Galera, é a telinha retangular da tela do seu dispositivo – ela é responsável por realizar desenhos e tratamento de eventos. Bacana, então as atividades são compostas de visões e representam uma tela única da interface do usuário. Agora nós vamos conhecer as Intenções. ▪ Intenções (Intents): Uma Intenção (Intent) é uma descrição abstrata de uma operação a ser executada. Ela pode ser utilizada para iniciar uma Atividade, para ativar um broadcast, para enviar uma mensagem para uma aplicação que roda em outro processo, entre outros. Podemos dizer que ele envia uma solicitação para o que Android realize alguma ação. Por exemplo: para que o sistema saia de uma atividade para outra, dispara-se uma intenção. A documentação oficial afirma que seu uso mais significativo ocorre quando da inicialização de uma Atividade, e que também podemos imaginá-lo como uma cola entre atividades. É uma estrutura de dados que armazena uma ação a ser executada. Certinho? ▪ Serviços (Services): Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 28 59 Os serviços são componentes executados em segundo plano para realizar operações de execução longa ou para realizar trabalho para processos remotos. Eles não apresentam uma interface do usuário. Por exemplo: um serviço pode tocar música em segundo plano enquanto o usuário está em um aplicativo diferente ou buscar dados na rede sem bloquear a interação do usuário com uma atividade. Outro componente, como uma atividade, pode iniciar o serviço e deixá-lo executar ou vincular-se a ele para interagir. Deve-se atentar ao fato de que eles não são um processo separado. Eles rodam na thread principal do processo corrente e possuem seu próprio ciclo de vida. Os serviços devem estar declarados no AndroidManifest.xml – não confundir com o arquivo principal do projeto AndroidManifet.xml. ▪ Receptores de Broadcast (Broadcast Receivers): Os Receptores de Broadcast são componentes que respondem a anúncios de broadcast por todo o sistema. Muitos broadcasts se originam do sistema - por exemplo, um broadcast que anuncia que uma tela foi desligada, que a bateria está baixa ou que uma tela foi capturada. Uma pequena pausa: um broadcast é a transmissão de uma mensagem. Os aplicativos também podem iniciar transmissões — por exemplo, para comunicar a outros dispositivos que alguns dados foram baixados no dispositivo e estão disponíveis para uso. Embora os Receptores de Broadcast não exibam nenhuma interface do usuário, eles podem criar uma notificação na barra de status para alertar ao usuário quando ocorre uma transmissão. Mais comumente, no entanto, um receptor de transmissão é somente um "portal" para outros componentes e realiza uma quantidade mínima de trabalho. Por exemplo: ele pode iniciar um serviço para executar um trabalho baseado no evento. Então, os receptores de broadcast simplesmente respondem a mensagens de broadcast de outras aplicações ou do próprio sistema. ▪ Provedores de Conteúdo (Content Provider): Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 29 59 Os provedores de conteúdo gerenciam um conjunto compartilhado de dados do aplicativo. É possível armazenar os dados no sistema de arquivos, em um banco de dados SQLite ou em qualquer local de armazenamento persistente que o aplicativo possa acessar. Por meio do provedor de conteúdo, outros aplicativos podem consultar ou até modificar os dados (se o provedor de conteúdo permitir). Por exemplo: o Android oferece um provedor de conteúdo que gerencia as informações de contato do usuário. Assim, qualquer aplicativo com as permissões adequadas pode consultar parte do provedor de conteúdo para ler e gravar informações sobre uma pessoa específica. Os provedores de conteúdo são úteis para ler e gravar dados privados no aplicativo e não compartilhados. As aplicações poderiam muito bem acessar diretamente um banco de dados, por exemplo. Porém, é uma boa prática tornar o modo como os dados são gravados transparente à aplicação. Dessa forma, a aplicação pode manter o foco nas interações com o usuário. Por exemplo: o Provedor de Conteúdo de SMS permite a qualquer aplicação ler as mensagens recebidas por um telefone celular. Por fim, vamos ver rapidinho a estrutura de diretórios de um Projeto Android. Galera, quando criamos um Projeto Android, ele gera uma estrutura com diversas pastase arquivos conforme mostra a imagem acima. Professor, tenho que decorar tudo? Não é obrigatório, mas seria interessante saber com mais detalhes sobre as pastas src, gen e res, e sobre o arquivo AndroidManifest.xml. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 30 59 ▪ Pasta src Vem de Source e contém os pacotes e classes do projeto. Todas as classes criadas na aplicação serão colocadas neste diretório em seu devido pacote. ▪ Pasta gen Vem de Generated e contém a Classe R, que é gerada automaticamente e faz referência a todos os elementos que existirem em um arquivo de tela XML. ▪ Pasta res Vem de Resources e contém arquivos importantes para a aplicação com as telas, imagens e textos que estiverem em sua aplicação (facilita a internacionalização). Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 31 59 ▪ Arquivo AndroidManifest.xml Esse arquivo deve estar sempre na raiz do projeto e contém todas as configurações que a aplicação utiliza para poder ser executada. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 ==134dde== Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 32 59 QUESTÕES ANDROID 1. (CESPE – 2012 – DPF – Analista de Sistemas) O sistema Android 4.0 foi desenvolvido com base no kernel Linux versão 2.6 e é voltado para dispositivos móveis controlando os serviços do sistema, como gerenciamento de memória e de tarefas, diretivas de segurança e drivers. Comentários: A imagem acima apresenta três peculiaridades: primeiro, ela infelizmente não mostra as duas últimas versões: Lollipop e Marshmallow; segundo, a versão Honeycomb foi lançada, a princípio, para tablets; e terceiro, a partir da versão IceCream Sandwich 4.0, o Android passou-se a se basear no kernel 3.x e, não mais, no kernel 2.6 do Linux. Vamos agora ver o slogan de cada versão: Conforme vimos em aula, a partir da versão IceCream Sandwich 4.0, o Android passou a ser baseado no kernel 3.x e, não, 2.6. Gabarito: E 2. (CESPE – 2013 – ANTT – Analista de Sistemas) Com o uso do banco de dados SQLite, incluso no Android, é possível desenvolver um provedor de conteúdo, bem como um servidor de banco de dados, que necessita gerenciar o acesso aos dados com persistência. No entanto, não se justifica a utilização de um provedor de conteúdo para disponibilizarem-se dados para várias atividades ou aplicativos distintos. Comentários: Os provedores de conteúdo gerenciam um conjunto compartilhado de dados do aplicativo. É possível armazenar os dados no sistema de arquivos, em um banco de dados SQLite ou em qualquer local de armazenamento persistente que o aplicativo possa acessar. Por meio do provedor de conteúdo, outros aplicativos podem consultar ou até modificar os dados (se o provedor de conteúdo permitir). Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 33 59 Conforme vimos em aula, o provedor de conteúdo é como uma base de dados que provê conteúdo! Ora, se essa é a função dele, não faz sentido dizer que não se justifica sua utilização para disponibilizar dados para várias atividades ou aplicativos distintos. Como não? Essa é a função dele! Gabarito: E 3. (CESPE – 2015 – TCU – Analista de Sistemas) No desenvolvimento de aplicação para dispositivos móveis, em vez de se utilizar uma plataforma específica ou um ambiente cross- platform, pode-se optar por um tipo híbrido, como, por exemplo, um componente HTML 5 envelopado em containers para acessar recursos específicos de cada plataforma. Comentários: A aplicação híbrida nada mais é que uma aplicação web (HTML5, CSS3, etc) envelopada em um contêiner nativo. Existem dezenas de ferramentas para gerar esse contêiner nativo para cada plataforma, tais como Cordova, Sencha Touch, etc. Para diferenciar todas essas abordagens, eu recomendo que façamos uma comparação geral. Atenção no quadro abaixo: Conforme vimos em aula, a aplicação híbrida envelopa uma aplicação web comum (Ex: HTML5) com o auxílio de uma ferramenta (Ex: Cordova) – simulando uma aplicação nativa – e, dessa forma, ele se torna capaz de acessar recursos específicos de cada plataforma. No entanto, o examinador cometeu um vacilo: o início da questão dá a entender que um tipo híbrido não é um ambiente cross-platform. Bem, basta ver a imagem hierárquica colocada em aula para perceber que isso não faz sentido, mas a questão infelizmente não foi anulada. Gabarito: C Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 34 59 4. (CESPE – 2013 – ANTT – Analista de Sistemas) Com base no kernel Linux, o ambiente operacional Android, utilizado para o desenvolvimento de aplicações móveis e não móveis, inclui um navegador incorporável baseado em WebKit, com muitas opções de conectividade (wifi, bluetooth, dados wireless através de conexão celular, como GPRS, EDGE e 3G). Os aplicativos Android são gravados na linguagem Java e executados em uma máquina virtual JVM. Comentários: O Android roda sobre uma máquina virtual chamada Dalvik VM! Trata-se de uma máquina virtual otimizada para requerer pouca memória e processamento, e projetada para permitir que múltiplas instâncias da máquina virtual rodem ao mesmo tempo, deixando para o sistema operacional o isolamento de processos, o gerenciamento de memória e o suporte a threading. Conforme vimos em aula, os aplicativos são escritos em Java, mas rodam em uma Dalvik VM e, não, Java VM. Gabarito: E 5. (CESPE – 2013 – TCE/RO – Analista de Sistemas) No Android, os componentes Intents são criados a partir de ações do usuário e representam a intenção de se realizar alguma atividade, como iniciar o aplicativo de correio eletrônico ou abrir uma página, utilizando-se do navegador que acompanha o Android. O código mostrado a seguir apresenta corretamente um exemplo de utilização desse componente. Uri uri = Uri.parse("http://www.cespe.unb.br"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); Comentários: Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 35 59 Uma Intenção (Intent) é uma descrição abstrata de uma operação a ser executada. Ela pode ser utilizada para iniciar uma Atividade, para ativar um broadcast, para enviar uma mensagem para uma aplicação que roda em outro processo, entre outros. Podemos dizer que ele envia uma solicitação para o que Android realize alguma ação. Conforme vimos em aula, a questão está perfeita! Ela exagerou, colocando código de programação, mas esse código está apenas criando uma intenção de visualizar a páginahttp://www.cespe.unb.br. Gabarito: C 6. (CESPE – 2013 – FUB – Analista de Sistemas) O Android pode ser executado sobre qualquer sistema operacional, pois os aplicativos Android são escritos na linguagem de programação Java e executados em uma máquina virtual Java. Comentários: O Android roda sobre uma máquina virtual chamada Dalvik VM! Trata-se de uma máquina virtual otimizada para requerer pouca memória e processamento, e projetada para permitir que múltiplas instâncias da máquina virtual rodem ao mesmo tempo, deixando para o sistema operacional o isolamento de processos, o gerenciamento de memória e o suporte a threading. Conforme vimos em aula, Android é executado na Dalvik VM e, não, Java VM. Gabarito: E 7. (IBFC – 2013 – PC – Analista de Sistemas) É uma plataforma de software que está revolucionando o mercado global de aplicativos para celulares. É a primeira plataforma de Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 36 59 aplicativos para telefones celulares de código aberto que se fez notar pelos maiores mercados mundiais de telefonia celular. Estamos falando do: a) Unix. b) Linux. c) Android. d) Mac OS X. e) Windows. Comentários: Galera, somente uma opção trata de um sistema operacional móvel: Android. Gabarito: C 8. (CESPE – 2014 – ANATEL – Analista de Sistemas) A arquitetura do Android disponibiliza o módulo denominado OOM handling, que permite às aplicações o gerenciamento do mecanismo de baixo consumo de energia do aparelho; por exemplo, se um processo necessitar ser executado em segundo plano, o referido módulo possibilitará a desativação temporária desse mecanismo até a finalização do processo em execução. Comentários: Essa era uma questão para ninjas! Deseja-se avaliar na questão se o aluno conhece os módulos específicos de cada funcionalidade – eu acho ridículo cobrar isso, mas vamos lá! O Módulo OOM Handling (Out Of Memory) trata do gerenciamento de memória, sendo que quem trata do gerenciamento de energia é o Módulo Wakelocks, logo a questão está errada! Gabarito: E Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 37 59 9. (FCC – 2011 – TRE/PE – Analista de Sistemas) A versão do Android feita, a princípio, apenas para tablets, que apresenta melhorias nos recursos multitarefa e nos widgets, é considerada como: a) Cupcake b) Frozen Yogurt c) Gingerbread. d) Honeycomb. e) Ice Cream. Comentários: A imagem acima apresenta três peculiaridades: primeiro, ela infelizmente não mostra as duas últimas versões: Lollipop e Marshmallow; segundo, a versão Honeycomb foi lançada, a princípio, para tablets; e terceiro, a partir da versão IceCream Sandwich 4.0, o Android passou-se a se basear no kernel 3.x e, não mais, no kernel 2.6 do Linux. Vamos agora ver o slogan de cada versão: Conforme vimos em aula, trata-se da versão Honeycomb. Gabarito: D 10. (CESPE – 2013 – SERPRO – Analista de Sistemas) Em uma aplicação desenvolvida para Android, os serviços que forem executados em background serão implementados como componentes do tipo service e permanecerão em execução até que a aplicação que os instanciar seja encerrada. Comentários: Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 38 59 Outro componente, como uma atividade, pode iniciar o serviço e deixá-lo executar ou vincular-se a ele para interagir. Deve-se atentar ao fato de que eles não são um processo separado. Eles rodam na thread principal do processo corrente e possuem seu próprio ciclo de vida. Os serviços devem estar declarados no AndroidManifest.xml – não confundir com o arquivo principal do projeto AndroidManifet.xml. Conforme vimos em aula, os services são realmente executados em background, mas não permanecem em execução até que a aplicação que os instanciar seja encerrada – cada aplicação tem seu próprio ciclo de vida independente. Gabarito: E 11. (QUADRIX – 2013 – CREFONO – Analista de Sistemas) Como o software Android, da empresa Google, pode ser classificado? a) Um aplicativo para celulares. b) Um aplicativo para celulares e tablets. c) Um sistema operacional para celulares e tablets. d) Um hardware para celulares e tablets. e) Um tipo de celular. Comentários: Android é um sistema operacional móvel pertencente ao Google! Apesar disso, ele continua tendo código aberto, mas com aplicações com software de código fechado. Galera, quem aí tem um celular com Android? Vocês devem saber que é possível trocar a ROM! Professor, o que é ROM? É como um firmware personalizado do sistema operacional – pensem como uma customização do sistema operacional. Conforme vimos em aula, trata-se de um sistema operacional para celulares e tablets (e outros). Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 39 59 Gabarito: C 12. (FUMARC – 2014 – AL/MG – Analista de Sistemas) Em relação aos principais componentes de um aplicativo Android, analise os itens a seguir, marcando com (V) a assertiva verdadeira e com (F) a assertiva falsa. ( ) Uma “atividade” do Android é tanto uma unidade de interação do usuário quanto uma unidade de execução. ( ) Um programa Android interativo é iniciado pela criação de subclasses da classe Activity. ( ) A classe ContentProvider do Android é utilizada em tarefas de segundo plano, que podem estar ativas, mas não visíveis na tela. ( ) A classe Service do Android possui o quarteto de atividades básicas para inserção, consulta, atualização e exclusão. A sequência CORRETA, de cima para baixo, é: a) V, F, F, V. b) F, V, F, V. c) F, V, V, F. d) V, V, F, F. Comentários: Conforme vimos em aula, a atividade é realmente uma unidade de interação, na medida que é uma visão, e ela é também uma unidade de execução (o nome já dá a dica); o segundo item também está perfeito, visto que se deve herdar de Activity para iniciar uma interação; os dois últimos itens foram invertidos. Gabarito: D 13. (CESPE – 2014 – ANATEL – Analista de Sistemas) O sistema operacional Android tem o Linux como base, o que permite a utilização simultânea de aplicações que podem ser executadas em segundo plano, de forma transparente para o usuário. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 40 59 Comentários: Os serviços são componentes executados em segundo plano para realizar operações de execução longa ou para realizar trabalho para processos remotos. Eles não apresentam uma interface do usuário. Por exemplo: um serviço pode tocar música em segundo plano enquanto o usuário está em um aplicativo diferente ou buscar dados na rede sem bloquear a interação do usuário com uma atividade. Conforme vimos em aula, temos os services (que rodam em segundo plano). Gabarito: C 14. (CESPE– 2017 – TRE/BA - Analista de Sistemas) Ao criar um novo projeto padrão por meio do Android Studio, o programador poderá desenvolver sua APP para diversos dispositivos. Nesse sentido, com o objetivo de criar um jogo para smartphones, os arquivos de som deverão ser armazenados dentro da estrutura padrão do diretório: a) manifest. b) layout. c) menu. d) res. e) Java. Comentários: Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 41 59 (a) Errado, não existe esse diretório. Existe o arquivo AndroidManifest.xml que contém a configuração que a aplicação utiliza para poder ser executada; (b) Errado, o Diretório “layout” armazena todos os arquivos referentes às telas de uma aplicação Android, que normalmente são arquivos “.xml”; (c) Errado, o Diretório “menu” armazena o arquivo responsável por gerenciar e exibir os itens de menu da aplicação; (d) Correto, o Diretório “res” (Resources) contém todos os recursos que são utilizados em uma aplicação Android (imagens, sons, músicas, etc); (e) Errado, não existe esse diretório. Gabarito: D ACERTEI ERREI Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 42 59 IOS O iOS, que antes era chamado de iPhoneOS, é um sistema operacional móvel pertencente à Apple! Lançado em 2007, roda no iPhone, iPod, iPad e Apple TV. Ele é derivado do sistema operacional dos desktops, chamado MacOS X. Novas versões são lançadas anualmente geralmente em junho. O número de usuários que utiliza iPhone/iPad tem aumentado bastante. Isso cria a oportunidade para os desenvolvedores ganharem dinheiro com a criação de aplicativos para iPhone e iPad na Apple Store. Professor, o código é aberto? Não, diferentemente do Android, o código é fechado. Professor, as aplicações nativas devem ser desenvolvidas em Java? Não, diferentemente do Android, é Objective-C. Vamos ver agora um pouco da Arquitetura do iOS. No mais alto nível, o iOS atua como um intermediário entre o hardware subjacente e os aplicativos – ora, aplicativos não conversam com o hardware diretamente. Em vez disso, se comunicam com o hardware através de um conjunto de interfaces bem definidas. Essas interfaces tornam mais fácil a criação de aplicativos que funcionam consistentemente em dispositivos com diferentes capacidades de hardware. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 43 59 A Arquitetura iOS é dividida em quatro camadas! As inferiores apresentam serviços e tecnologias fundamentais; as superiores, serviços e tecnologias mais sofisticados. A Camada Cocoa Touch contém os principais frameworks para construir aplicativos. Esses frameworks definem a aparência do aplicativo e fornecem a infraestrutura e suporte básicos para tecnologias como: multitarefa, entrada por toque, etc. OBSERVAÇÃO O Cocoa Touch define uma arquitetura básica (MVC) para criação de aplicativos: “MVC is central to a good design for a Cocoa application. The benefits of adopting this pattern are numerous. Many objects in these applications tend to be more reusable, and their interfaces tend to be better defined. Applications having an MVC design are also more easily extensible than other applications. Moreover, many Cocoa technologies and architectures are based on MVC and require that your custom objects play one of the MVC roles”. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 44 59 Ao desenhar aplicativos, deve-se investigar as tecnologias dessa camada para ver se elas satisfazem suas necessidades. Existem dois frameworks principais: UIKit, que fornece ferramentas básicas para implementar aplicações gráficas e orientadas a eventos; e Foundation, que fornece funcionalidades nucleares e essenciais necessárias para a criação de um aplicativo. A Camada Media contém os frameworks que contém as tecnologias de criações de gráfico, áudio e vídeos que você pode utilizar para implementar multimídia em seus aplicativos. A Camada Core Services contém os frameworks que fornecem serviços essenciais para as aplicações e para as camadas superiores. Os principais frameworks são: Core Foundation e Foundation. Esses frameworks definem tipos básicos utilizados por todos os aplicativos. Essa camada também contém tecnologias individuais para suportar características como: Location, iCloud, Social Media e Networking. Detalhe importante: o Foundation faz parte da Camada Cocoa Touch e Core Services. Por fim, a Camada Core OS trata de funcionalidades de mais baixo nível. Mesmo que você não utilize essas tecnologias diretamente em seus aplicativos, provavelmente eles estão sendo utilizados por outros frameworks. Nessa camada, trata-se de gerenciamento de memória, threads, processamento, drivers, entre outros recursos. Por fim, o iOS não implementa um Garbage Collector, mas o Objective-C possui um Automatic Reference Counting (ARC) para liberar a memória. Dessa forma, o programador não tem que ficar preocupado em liberar referências. Para acabar, o ambiente nativo para desenvolvimento de aplicativos para o iOS é o XCode! Ele suporta por padrão Objective-C e AppleScript. Além disso, ele possui ferramentas para criação, design e debug de aplicações iOS. Da mesma forma que é comum usar o Eclipse para o Android, é comum usar o XCode para o iOS. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 45 59 QUESTÕES IOS 1. (CESPE – 2012 – DPF – Analista de Sistemas) A arquitetura do iOS possui quatro camadas (layers) que funcionam como interface entre a aplicação e o hardware. Essas camadas, listadas da mais baixa para a mais alta, são: Core OS, Core Services, Media e CoCoa Touch. Comentários: Conforme vimos em aula, a questão está perfeita! Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 46 59 Gabarito: C 2. (CESPE – 2013 – SERPRO – Analista de Sistemas) Como o iOS não implementa um sistema de garbage collection, o Objective-C mantém um contador de referência para os objetos de forma a viabilizar a liberação de memória de tal objeto. Comentários: Mesmo que você não utilize essas tecnologias diretamente em seus aplicativos, provavelmente eles estão sendo utilizados por outros frameworks. Nessa camada, trata-se de gerenciamento de memória, threads, processamento, drivers, entre outros recursos. Por fim, o iOS não implementa um Garbage Collector, mas o Objective-C possui um Automatic Reference Counting (ARC) para liberar a memória. Conforme vimos em aula, a questão está perfeita! Gabarito: C 3. (FUMARC –2014 – AL/MG – Analista de Sistemas) Analise as seguintes afirmativas sobre fundamentos para desenvolvimento de aplicações móveis para iOS. I. Xcode é o ambiente nativo da Apple para desenvolvimento de aplicativos para iOS. II. Objective-C é a linguagem de desenvolvimento de aplicativos para iOS. III. A classe NSObject é a classe raiz das principais hierarquias de classes em Objective-C. Estão CORRETAS as afirmativas: a) I, II e III. b) I e II, apenas. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 47 59 c) I e III, apenas. d) II e III, apenas. Comentários: Dessa forma, o programador não tem que ficar preocupado em liberar referências. Para acabar, o ambiente nativo para desenvolvimento de aplicativos para o iOS é o XCode! Ele suporta por padrão Objective-C e AppleScript. Além disso, ele possui ferramentas para criação, design e debug de aplicações iOS. Da mesma forma que é comum usar o Eclipse para o Android, é comum usar o XCode para o iOS. Conforme vimos em aula, o ambiente para desenvolvimento de aplicativos é o XCode; a linguagem para criação de aplicativos é o Objective-C; quem conhece Java sabe que todas as classes descendem de Object – no Objective-C, as principais classes descendem de NSObject. Gabarito: A 4. (CESPE – 2014 – SUFRAMA – Analista de Sistemas) Para que os programas aplicativos sejam executados no Android e no iOS, é necessário uma máquina virtual própria, cujas responsabilidades são, entre outras, gerenciar a comunicação entre o aplicativo e as bibliotecas nativas, prover segurança e permitir que os aplicativos possam gravar dados privados, incluindo bancos de dados. No Android 4.3, a máquina virtual é a Dalvik; no iOS 7, é a XCode. Comentários: Dessa forma, o programador não tem que ficar preocupado em liberar referências. Para acabar, o ambiente nativo para desenvolvimento de aplicativos para o iOS é o XCode! Ele suporta por padrão Objective-C e AppleScript. Além disso, ele possui ferramentas para criação, design e debug de aplicações iOS. Da mesma forma que é comum usar o Eclipse para o Android, é comum usar o XCode para o iOS. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 48 59 Conforme vimos em aula, XCode é um ambiente de desenvolvimento e, não, uma máquina virtual. Gabarito: E 5. (CESPE – 2014 – SUFRAMA – Analista de Sistemas) No iOS 7, os frameworks são diretórios que contêm biblioteca compartilhada dinâmica com recursos como arquivos de cabeçalho, imagens e aplicativos auxiliares a serem utilizados no desenvolvimento dos aplicativos. Comentários: Perfeito! Esses frameworks são diretórios que contém um conjunto de bibliotecas compartilhadas e dinâmicas com diversos recursos e serviços que auxiliam, direta ou indiretamente, no desenvolvimento de aplicativos. Gabarito: C 6. (CESPE – 2014 – SUFRAMA – Analista de Sistemas) O iOS 7 possui as camadas Cocoa Touch, Media, Core Services e Core OS; esta última, que é a camada mais baixa, suporta aplicativos desenvolvidos em 64 bits no modelo LP64. Comentários: Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 49 59 Conforme vimos em aula, as quatro camadas estão corretas e a última suporta aplicativos 64 bits. Professor, o que é modelo LP64? É um modelo de tamanho dos dados. Então, sim, a questão está perfeita! Gabarito: C 7. (CESPE – 2017 – TRE/BA - Analista de Sistemas) Na linguagem Swift do IOS, ao se declarar o código var fruta=[“maça“, “banana“, “abacaxi“], a linguagem automaticamente entenderá que fruta é array de: a) integer. b) floatings. c) strings. d) imutáveis. e) double. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 50 59 Comentários: Essa questão é fácil, mas é interessante! Por que é fácil? Porque é possível responder rapidamente ao notar que os elementos do array são todos strings. Por que é interessante? Porque – para quem não conhece – dá a entender que Swift tem tipagem dinâmica, mas não é verdade. Swift é uma linguagem de tipagem estática e forte, mas que possui inferência de tipo. Gabarito: C ACERTEI ERREI Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 51 59 LISTA DE EXERCÍCIOS LISTA DE EXERCÍCIOS COMENTADOS (DIVERSAS BANCAS) SISTEMAS MÓVEIS 1. (CESPE – 2014 – ANATEL – Analista de Sistemas) O desenvolvimento de aplicações web e o de aplicações nativas são as principais formas de desenvolvimento móvel. 2. (CESPE – 2013 – BACEN – Analista de Sistemas) No projeto de aplicações para dispositivos móveis, devem ser considerados, entre outros aspectos, as características dos dispositivos de hardware para os quais a aplicação está sendo desenvolvida e o consumo de energia gerado por cada recurso do sistema, visando-se a economia de bateria. 3. (CESPE – 2017 – TRE/BA - Analista de Sistemas) Um APP que for desenvolvido de forma híbrida, para funcionar no IOS e Android, além de agilizar e baratear o processo de desenvolvimento, também: a) será mais leve que o normal, pois possuirá menos código trafegando pela web. b) será uma aplicação web convertida para rodar nas referidas plataformas. c) será compilado de forma nativa no IOS e depois no Android. d) acessará todas as bibliotecas nativas dos dispositivos. e) será dependente das atualizações do sistema operacional. 4. (CESPE – 2017 – TRE/BA - Analista de Sistemas) Considerando que a experiência do usuário vem evoluindo juntamente com as interfaces dos dispositivos móveis, assinale a opção correta. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 52 59 a) A utilização de carrosséis como método de interação deve ser evitada ou avaliada cuidadosamente, devido ao alto percentual de desistência do usuário na navegação entre as telas iniciais. b) No caso de aplicações móveis que também existam em sítios, as telas na aplicação devem ser semelhantes às do sítio para que seja aproveitada a experiência do usuário. c) Devem-se utilizar asteriscos, ou representação com sentido equivalente, para esconder a senha digitada, sem permitir que a senha seja visualizada por terceiros ou pelo próprio usuário. d) Para manter a confidencialidade dos dados, o usuário deve fazer login a cada acesso à aplicação, fazendo uso, caso seja de seu interesse, de aplicações independentes para armazenamento de senha. e) Para o usuário, é aceitável que a tela de abertura (splash screen) demore a ser carregada, desde que a aplicação seja carregadacom a maioria das funcionalidades já disponíveis. LISTA DE EXERCÍCIOS COMENTADOS (DIVERSAS BANCAS) ANDROID 1. (CESPE – 2012 – DPF – Analista de Sistemas) O sistema Android 4.0 foi desenvolvido com base no kernel Linux versão 2.6 e é voltado para dispositivos móveis controlando os serviços do sistema, como gerenciamento de memória e de tarefas, diretivas de segurança e drivers. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 53 59 2. (CESPE – 2013 – ANTT – Analista de Sistemas) Com o uso do banco de dados SQLite, incluso no Android, é possível desenvolver um provedor de conteúdo, bem como um servidor de banco de dados, que necessita gerenciar o acesso aos dados com persistência. No entanto, não se justifica a utilização de um provedor de conteúdo para disponibilizarem-se dados para várias atividades ou aplicativos distintos. 3. (CESPE – 2015 – TCU – Analista de Sistemas) No desenvolvimento de aplicação para dispositivos móveis, em vez de se utilizar uma plataforma específica ou um ambiente cross-platform, pode-se optar por um tipo híbrido, como, por exemplo, um componente HTML 5 envelopado em containers para acessar recursos específicos de cada plataforma. 4. (CESPE – 2013 – ANTT – Analista de Sistemas) Com base no kernel Linux, o ambiente operacional Android, utilizado para o desenvolvimento de aplicações móveis e não móveis, inclui um navegador incorporável baseado em WebKit, com muitas opções de conectividade (wifi, bluetooth, dados wireless através de conexão celular, como GPRS, EDGE e 3G). Os aplicativos Android são gravados na linguagem Java e executados em uma máquina virtual JVM. 5. (CESPE – 2013 – TCE/RO – Analista de Sistemas) No Android, os componentes Intents são criados a partir de ações do usuário e representam a intenção de se realizar alguma atividade, como iniciar o aplicativo de correio eletrônico ou abrir uma página, utilizando-se do navegador que acompanha o Android. O código mostrado a seguir apresenta corretamente um exemplo de utilização desse componente. Uri uri = Uri.parse("http://www.cespe.unb.br"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 54 59 6. (CESPE – 2013 – FUB – Analista de Sistemas) O Android pode ser executado sobre qualquer sistema operacional, pois os aplicativos Android são escritos na linguagem de programação Java e executados em uma máquina virtual Java. 7. (IBFC – 2013 – PC – Analista de Sistemas) É uma plataforma de software que está revolucionando o mercado global de aplicativos para celulares. É a primeira plataforma de aplicativos para telefones celulares de código aberto que se fez notar pelos maiores mercados mundiais de telefonia celular. Estamos falando do: a) Unix. b) Linux. c) Android. d) Mac OS X. e) Windows. 8. (CESPE – 2014 – ANATEL – Analista de Sistemas) A arquitetura do Android disponibiliza o módulo denominado OOM handling, que permite às aplicações o gerenciamento do mecanismo de baixo consumo de energia do aparelho; por exemplo, se um processo necessitar ser executado em segundo plano, o referido módulo possibilitará a desativação temporária desse mecanismo até a finalização do processo em execução. 9. (FCC – 2011 – TRE/PE – Analista de Sistemas) A versão do Android feita, a princípio, apenas para tablets, que apresenta melhorias nos recursos multitarefa e nos widgets, é considerada como: a) Cupcake b) Frozen Yogurt c) Gingerbread. d) Honeycomb. e) Ice Cream. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 55 59 10. (CESPE – 2013 – SERPRO – Analista de Sistemas) Em uma aplicação desenvolvida para Android, os serviços que forem executados em background serão implementados como componentes do tipo service e permanecerão em execução até que a aplicação que os instanciar seja encerrada. 11. (QUADRIX – 2013 – CREFONO – Analista de Sistemas) Como o software Android, da empresa Google, pode ser classificado? a) Um aplicativo para celulares. b) Um aplicativo para celulares e tablets. c) Um sistema operacional para celulares e tablets. d) Um hardware para celulares e tablets. e) Um tipo de celular. 12. (FUMARC – 2014 – AL/MG – Analista de Sistemas) Em relação aos principais componentes de um aplicativo Android, analise os itens a seguir, marcando com (V) a assertiva verdadeira e com (F) a assertiva falsa. ( ) Uma “atividade” do Android é tanto uma unidade de interação do usuário quanto uma unidade de execução. ( ) Um programa Android interativo é iniciado pela criação de subclasses da classe Activity. ( ) A classe ContentProvider do Android é utilizada em tarefas de segundo plano, que podem estar ativas, mas não visíveis na tela. ( ) A classe Service do Android possui o quarteto de atividades básicas para inserção, consulta, atualização e exclusão. A sequência CORRETA, de cima para baixo, é: a) V, F, F, V. b) F, V, F, V. c) F, V, V, F. d) V, V, F, F. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 56 59 13. (CESPE – 2014 – ANATEL – Analista de Sistemas) O sistema operacional Android tem o Linux como base, o que permite a utilização simultânea de aplicações que podem ser executadas em segundo plano, de forma transparente para o usuário. 14. (CESPE – 2017 – TRE/BA - Analista de Sistemas) Ao criar um novo projeto padrão por meio do Android Studio, o programador poderá desenvolver sua APP para diversos dispositivos. Nesse sentido, com o objetivo de criar um jogo para smartphones, os arquivos de som deverão ser armazenados dentro da estrutura padrão do diretório: a) manifest. b) layout. c) menu. d) res. e) Java. LISTA DE EXERCÍCIOS COMENTADOS (DIVERSAS BANCAS) iOS 1. (CESPE – 2012 – DPF – Analista de Sistemas) A arquitetura do iOS possui quatro camadas (layers) que funcionam como interface entre a aplicação e o hardware. Essas camadas, listadas da mais baixa para a mais alta, são: Core OS, Core Services, Media e CoCoa Touch. 2. (CESPE – 2013 – SERPRO – Analista de Sistemas) Como o iOS não implementa um sistema de garbage collection, o Objective-C mantém um contador de referência para os objetos de forma a viabilizar a liberação de memória de tal objeto. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 57 59 3. (FUMARC – 2014 – AL/MG – Analista de Sistemas) Analise as seguintes afirmativas sobre fundamentos para desenvolvimento de aplicações móveis para iOS. I. Xcode é o ambiente nativo da Apple para desenvolvimento de aplicativos para iOS. II. Objective-C é a linguagem de desenvolvimento de aplicativos para iOS. III. A classe NSObject é a classe raiz dasprincipais hierarquias de classes em Objective-C. Estão CORRETAS as afirmativas: a) I, II e III. b) I e II, apenas. c) I e III, apenas. d) II e III, apenas. 4. (CESPE – 2014 – SUFRAMA – Analista de Sistemas) Para que os programas aplicativos sejam executados no Android e no iOS, é necessário uma máquina virtual própria, cujas responsabilidades são, entre outras, gerenciar a comunicação entre o aplicativo e as bibliotecas nativas, prover segurança e permitir que os aplicativos possam gravar dados privados, incluindo bancos de dados. No Android 4.3, a máquina virtual é a Dalvik; no iOS 7, é a XCode. 5. (CESPE – 2014 – SUFRAMA – Analista de Sistemas) No iOS 7, os frameworks são diretórios que contêm biblioteca compartilhada dinâmica com recursos como arquivos de cabeçalho, imagens e aplicativos auxiliares a serem utilizados no desenvolvimento dos aplicativos. 6. (CESPE – 2014 – SUFRAMA – Analista de Sistemas) O iOS 7 possui as camadas Cocoa Touch, Media, Core Services e Core OS; esta última, que é a camada mais baixa, suporta aplicativos desenvolvidos em 64 bits no modelo LP64. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 58 59 7. (CESPE – 2017 – TRE/BA - Analista de Sistemas) Na linguagem Swift do IOS, ao se declarar o código var fruta=[“maça“, “banana“, “abacaxi“], a linguagem automaticamente entenderá que fruta é array de: a) integer. b) floatings. c) strings. d) imutáveis. e) double. Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118 Curso Regular de Desenvolvimento de Software www.estrategiaconcursos.com.br 59 59 GABARITO GABARITO DOS EXERCÍCIOS COMENTADOS (DIVERSAS BANCAS) SISTEMAS MÓVEIS 1 2 3 4 5 6 7 8 9 10 C C B A GABARITO DOS EXERCÍCIOS COMENTADOS (DIVERSAS BANCAS) ANDROID 1 2 3 4 5 6 7 8 9 10 E E C E C E C E D E 11 12 13 14 15 16 17 18 19 20 C D C D GABARITO DOS EXERCÍCIOS COMENTADOS (DIVERSAS BANCAS) iOS 1 2 3 4 5 6 7 8 9 10 C C A E C C C Diego Carvalho, Pedro Henrique Chagas Freitas Aula 07 Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020 www.estrategiaconcursos.com.br 1265118