ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TURMA – 2008 – 2º PERÍODO - 4º MÓDULO AVALIAÇÃO MP1 – DATA 06/11/2008 PROGRAMAÇÃO Dados de identificação do Acadêmico: Nome: _______________________________________ Login:___________ CA:__________________ Cidade:____________________________UF____ CARTÃO – RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA A 1 2 3 4 F 1 2 3 4 B 1 2 3 4 G 1 2 3 4 C 1 2 3 4 H 1 2 3 4 D 1 2 3 4 I 1 2 3 4 E 1 2 3 4 J 1 2 3 4 Dados de identificação do Tutor: Nome: _______________________________________ Login:___________ CA:__________________ Cidade:__________________UF______________ INSTRUÇÕES: A prova está composta de 10 questões de A a J, e 4 alternativas enumeradas de 1 a 4. Utilize caneta esferográfica azul ou preta para preenchimento do cartão-resposta. O cartão-resposta deve ser preenchido, assinado, destacado e entregue ao Tutor. Questões rasuradas serão anuladas. Sem o devido preenchimento do CAMPO DE IDENTIFICAÇÃO, o cartão-resposta não terá validade. Somente terão acesso às notas lançadas no boletim os acadêmicos regularmente matriculados. Os acadêmicos têm três dias após a divulgação do gabarito oficial para requerer revisão de questões (recursos). Devem constar os seguintes dados para análise: Tipo da avaliação, Etapa, identificação da questão e justificativa do pedido. Mais esclarecimentos acerca dos procedimentos para pedidos de Recursos acessem a página WWW.unitins.br/logisticaavaliacao. _____________________________________ Assinatura do acadêmico ______________________________________ Assinatura do Tutor __________________________________________, _____/_____/2008 Local 1 PROGRAMAÇÃO PROF. ALEX COELHO PROF. MARCELO RIBEIRO OLIVEIRA PROFª. THEREZA PATRÍCIA PEREIRA PADILHA A. Java consiste em uma linguagem de programação orientada a objetos e possui uma característica muito importante para o desenvolvimento de sistemas que é a portabilidade. Diante disso, assinale a alternativa que conceitua a característica de portabilidade: 1. a capacidade de independência de plataforma, no caso o sistema operacional (Windows, Linux, Solaris) e o hardware, em que os softwares serão executados. 2. o modelo formado por propriedades ou características (atributos) e funcionalidades (métodos). 3. as propriedades relevantes de um conjunto de elementos em termos de sua estrutura, atributos e métodos. 4. a assinatura de um método composto por qualificador de acesso, tipo de retorno, nome e lista de parâmetros. Comentários: A característica da portabilidade está relacionada a uma aplicação que poder ser executada em qualquer plataforma de hardware ou sistema operacional. Por isso, a alternativa 1 é a correta visto que apresenta este conceito. A alternativa 2 é incorreta porque conceitua a forma de uma classe que é composta de atributos e métodos. A questão 3 é incorreta também por apresentar conceitos sobre a identificação de classes. Por fim, a alternativa 4 é incorreta porque está relacionada à sintaxe de definição de um método, ou seja, a declaração da sua estrutura. B. A conversão entre tipos de dados é uma operação bastante comum no desenvolvimento de sistemas. Deste modo, em Java, para converter um dado do tipo String para o tipo inteiro, é necessário o uso da seguinte instrução: 1. 2. 3. 4. String.parseInteger Int.parseInt String.parseInt Integer.parseInt Comentários: As alternativas 1, 2 e 3 estão incorretas porque apresentam instruções grafadas incorretamente, ou seja, não são métodos válidos para conversão de tipos. A alternativa 4 apresenta o método para a conversão do tipo String para inteiro. C. Analise os trechos de código da classe Exemplo apresentada a seguir e, depois, assinale a alternativa em que NÃO mostra um erro na criação de objetos. 1. public class Exemplo { public Exemplo() { ... } public static void main() Exemplo e; e = new Exemplo(); } } { 2 2. public class Exemplo { public Exemplo() { ... } public static void main() Exemplo e = new Exemplo; } } { 3. public class Exemplo { public Exemplo() { ... } public static void main() Exemplo e = Exemplo(); } } { 4. public class Exemplo { public Exemplo() { ... } public static void main() Exemplo e; Exemplo = new Exemplo(); } } { Comentários: A alternativa 1 encontra-se correta pois, inicialmente, foi definido o nome de um objeto (e) e , na seqüência, foi criado o objeto por meio da palavra reservada new. A alternativa 2 é incorreta porque na instanciação do objeto e da classe Exemplo estão faltando os parênteses da chamada do construtor. A alternativa 3 é incorreta porque falta o operador new utilizado na instanciação de objetos. A alternativa 4 é incorreta porque o objeto e foi definido mas no momento da instanciação (criação) o nome da classe foi apresentado no lugar do nome do objeto. D. A programação orientada a objetos possui um conjunto de conceitos importantes para o comportamento dos sistemas. A sobrecarga de construtores, por exemplo, é um desses conceitos. Assim assinale a alternativa que caracteriza tal conceito. 1. é a implementação de métodos com somente um tipo de dados de retorno, sobrecarregando assim a forma da criação dos objetos. 2. é a implementação de métodos para liberar a memória de objetos que não estão sendo utilizados pelo sistema. 3. é a implementação de vários construtores, sendo que cada um tem uma assinatura diferente (lista de parâmetros). 4. é a implementação de construtores com a lista de parâmetros iguais, porém com tipos de retorno diferentes. Comentários: A alternativa 1 é incorreta porque a sobrecarga de construtores não se caracteriza por apresentar vários métodos com o mesmo tipo de dados de retorno. A alternativa 2 está incorreta porque sobrecarga de construtores não consiste na utilização de métodos para gerência de memória liberando objetos que não serão mais necessários. A alternativa 3 está correta 3 porque sobrecarga de construtores está relacionada a um conjunto de construtores, observando a variação da sua assinatura (lista de parâmetros). A alternativa 4 é incorreta porque a sobrecarga de construtores não ocorre quando se tem um conjunto de construtores com assinaturas iguais. E. Assinale V (verdadeiro) ou F (falso) para as afirmativas a seguir e, em seguida, escolha a alternativa que apresente a seqüência CORRETA. I – Encapsulamento é o mecanismo que é utilizado com a finalidade de esconder os detalhes de implementação das classes Java. II – Fechamento de arquivos, encerramento da comunicação e liberação de recursos alocados do sistema são atividades executadas por um construtor. III – O construtor default é sempre implementado pelos programadores nas classes. IV – O garbage collector é o mecanismo responsável pela liberação de recursos que não estão mais em uso pelo sistema. 1. 2. 3. 4. F, F, V, F V, V, V, F F, V, F, V V, F, F, V Comentários: A afirmativa I está correta porque o conceito de encapsulamento visa esconder os detalhes de implementação. Assim, chamaremos o método mas não precisamos saber como exatamente está realmente implementado. A afirmativa II está incorreta porque as atividades descritas devem ser executadas por um destrutor e não um construtor. A alternativa III é incorreta porque o construtor default pode implementado pela própria linguagem Java ou pelos programadores. A afirmativa IV está correta porque garbage collector é um mecanismo em Java para a liberação de recursos em que a aplicação não usará mais. Assim, a alternativa 4 é a correta uma vez que esta alternativa apresenta V, F, F e V para as afirmações apresentadas. As demais alternativas (1, 2 e 3) são incorretas por não apresentar a seqüência correta. F. Análise o código Java a seguir. 1 import java.util.Scanner; 2 3 public class Imprimir { 4 public static void main(String[] args) { 5 Scanner entrada = new Scanner(System.in); 6 System.out.println("Digite o mês:"); 7 int[] meses = {31,28,31,30,31,30,31,31,30,31,30,31}; 8 int mes = Integer.parseInt(entrada.nextLine()); 9 switch(mes){ 10 default: System.out.println(meses[mes-1]); 11 } 12 } 13 } Considerando que a entrada digitada na execução do código seja o valor 2, assinale a alternativa CORRETA: 4 1. Ocorrerá um erro de execução na linha 10 já que a estrutura SWITCH exige pelo menos uma classificação com a utilização da palavra reservada CASE. 2. Será impresso o valor 28 presente no vetor meses, uma vez que é acessada a posição [2-1] do vetor. 3. Ocorrerá um erro de execução devido ao fato da necessidade de utilização de uma variável String ao invés de um inteiro na verificação da estrutura SWITCH na linha 9. 4. Serão impressos todos os valores presentes no vetor já que não existem classificações com a palavra reservada CASE na estrutura SWITCH. Comentários: A alternativa 1 é incorreta porque na estrutura de controle SWITCH é facultada a utilização dos blocos CASE e do bloco default, podendo ambos coexistir no mesmo programa ou optar pela utilização de um ou outro. Lembrando que o bloco default é executado sempre que o valor avaliado não for encontrado em um bloco CASE. A alternativa 2 é correta porque será impresso o valor armazenado na posição 1 (mês -1, sendo que mês terá o valor 2) do vetor meses. A alternativa 3 é incorreta porque a estrutura de controle SWITCH pode trabalhar com dados do tipo caracter, inteiro, byte e short, não podendo ser utilizado com o tipo String. Por fim, a alternativa 4 também é incorreta porque, embora não existam blocos CASE, somente um valor será impresso que é a posição[2-1] do vetor definido e não todos os valores do vetor. G. Considerando o código-fonte apresentado a seguir, é INCORRETO afirmar que: package fabrica; public class Carro { // atributos Boolean chave = new Boolean(false); // metodos public void ligar() { chave = true; System.out.println(“Ligado”); } public void desligar() { chave = false; System.out.println(“Desligado”); } } 1. 2. 3. 4. A classe Carro não possui um construtor default explicitamente definido. A classe faz parte do pacote fabrica. A classe é composta pelo método desligar() que retorna o valor “desligado”. A classe é composta pelos métodos públicos ligar() e desligar() e pelo atributo chave. Comentário: Nesta questão devemos assinalar a alternativa incorreta que é a de número 3 porque o método desligar() foi definido como void como tipo de retorno, e portanto, não retorna a string “desligado”. A alternativa 1 é correta porque não existe um construtor default apresentado explicitamente neste trecho de código. A alternativa 2 é correta porque a classe Carro pertence ao pacote fabrica, conforme pode ser visto na primeira linha do código. A alternativa 4 é correta porque esta classe apresenta os métodos ligar(), desligar() e também um atributo chamado chave. H. O conceito de objeto na OO é o ponto central deste paradigma. Logo, considerando as afirmações a seguir, assinale a alternativa CORRETA: 5 I – Um objeto é um único exemplar de uma determinada classe. II - Para instanciarmos um novo objeto, devemos utilizar o operador new. III - Um objeto, quando criado, é apenas uma referência para um espaço de memória reservado. 1. 2. 3. 4. V, V, V V, F, V F, F, F V, F, F Comentário: Nesta questão precisamos analisar cada uma das afirmações. A afirmação I é verdadeira porque ao criar um objeto, este é um exemplo específico de uma classe. A afirmação II é verdadeira porque o operador new é necessário para a criação de um novo objeto juntamente com um certo construtor. A afirmação III é verdadeira também porque ao criar um objeto, um espaço de memória é destinado a este objeto. Assim, observando as alternativas disponíveis, a alternativa 1 é a correta porque apresenta a seqüência V, V, V como opção. As demais alternativas (2, 3 e 4) estão incorretas porque não possuem esta seqüência. I. Considerando o código-fonte Java mostrado a seguir, assinale a alternativa CORRETA. public class Carro { private Boolean chave = true; public Carro(Boolean status){ setChave(status); } private void setChave(Boolean status){ this.chave = status; } private Boolean getChave(){ return this.chave; } public void ligar() { setChave(true); System.out.println(“Ligado”); } public void desligar() { setChave(false); System.out.println(“Desligado”); } } 1. 2. 3. 4. Os métodos utilizados para o encapsulamento de cada atributo são ligar() e desligar(). O método getChave() é o responsável por acessar o valor do atributo chave. O atributo chave pode ser acessado por qualquer classe do pacote. O método setChave() sempre será igual a verdadeiro já que é utilizada a palavra reservada this para acessar o valor. Comentários: A alternativa 1 é incorreta porque quem tem a função de encapsulamento de atributos são os métodos setChave() e getChave() e não ligar() e desligar(). A alternativa 2 está correta já que o método getChave() é o responsável por obter o valor do atributo chave. A 6 alternativa 3 é incorreta porque o atributo chave está definido como private e assim somente pode ser acessado por métodos da própria classe. Por fim, a alternativa 4 é incorreta porque this é uma palavra reservada da linguagem que serve para referir a métodos e atributos pertencentes à própria classe, ou seja, referencia a si mesma e não ao valor lógico verdadeiro um padrão. J. Sobre a classe Scanner disponível em Java, é CORRETO afirmar que uma de suas funcionalidades é: 1. possibilitar que figuras, tabelas e fotos, por exemplo, sejam digitalizadas. 2. capturar entrada de dados pelo teclado, tal como o nome de um usuário. 3. importar classes da biblioteca util.java. 4. possibilitar a criação de pacotes (packages), reunindo um conjunto de arquivos .java. Comentários: A alternativa 1 é incorreta porque a classe Scanner assume como entrada padrão o teclado e não um aparelho digitalizador de mídias. A alternativa 2 é correta porque capturar dados por meio de teclado é uma das funcionalidades da classe Scanner. As alternativas 3 e 4 estão incorretas porque a classe Scanner não oferece funcionalidades de importação de bibliotecas ou de criação de pacotes, sendo estas tarefas possíveis através das palavras reservadas import e package, respectivamente. Coordenação do curso de Tecnologia em Análise e Desenvolvimento de Sistemas UNITINS - EAD 7