Baixe o app para aproveitar ainda mais
Prévia do material em texto
ATIVIDADE 2 - ADS - PROGRAMAÇÃO I - 2019C2 Período:29/07/2019 08:00 a 16/08/2019 23:59 (Horário de Brasília) Status:ENCERRADO Nota máxima:0,50 Gabarito:Gabarito será liberado no dia 17/08/2019 00:00 (Horário de Brasília) Nota obtida:0,40 1ª QUESTÃO Em Java, a palavra reservada "this" é utilizada para acessar atributos e métodos da própria instância. A palavra reservada "super" é utilizada para acessar atributos e métodos da superclasse da própria instância. Considerando o texto acima, avalie as afirmações abaixo. I – Em Java há também um método Super(), que indica o construtor da superclasse. II – A palavra "this" referencia a classe atual, tanto para atributos quanto para métodos. III – É possível utilizar a palavra "this", para chamar um método da superclasse. IV – É possível utilizar a palavra "super", para chamar um método da classe atual. É correto o que se afirma em: ALTERNATIVAS I e II, apenas. II e III, apenas. III e IV, apenas. I, II e III, apenas. II, III e IV, apenas. 2ª QUESTÃO Dentro dos métodos de uma classe, o desenvolvedor deve colocar as operações que o método deve realizar. Além das operações, o desenvolvedor também precisa se preocupar, para não deixar o objeto ficar em um estado inválido. Um estado inválido não é um erro de compilação ou execução. Um estado inválido de um objeto pode ser quando algum valor de um atributo guarda um valor que não é adequado à lógica do seu programa. Observe o código abaixo. 1 public class CaixaEletronico { 2 double dinheiro; 3 4 public void depositar(double dinheiro) { 5 this.dinheiro += dinheiro; 6 System.out.println("Depósito realizado com sucesso"); 7 } 8 public void sacar(double dinheiro) { 9 if (dinheiro > this.dinheiro) { 10 System.out.println("O caixa não possui essa quantia"); 11 } else { 12 this.dinheiro -= dinheiro; 13 System.out.println("Saque realizado com sucesso"); 14 15 } 16 } 17 18 public static void main(String[] args) { 19 CaixaEletronico caixa = new CaixaEletronico(); 20 caixa.depositar((double) 150); 21 caixa.depositar ((double) 250); 22 caixa.sacar((double) 300); 23 caixa.sacar((double) 300); 24 } 25 } Considerando o texto e o código acima, avalie as afirmações abaixo. I – Não há necessidade de converter explicitamente os valores inteiros para "double" do jeito que está no método "main", pois o tipo "double" é maior que o tipo inteiro e ambos são números. II – O método "depositar" poderia ter uma verificação para a quantidade de dinheiro no caixa não ser maior que um milhão, supondo que não caberia mais dinheiro na máquina. III – A verificação no método "sacar" é necessária, pois ela não deixa o objeto ficar em um estado inválido, que seria uma quantidade de dinheiro negativa. IV – O código mostrado força o caixa a sempre ter dinheiro, não deixando que tudo seja sacado. Se alguém tentar sacar todo o dinheiro, a mensagem "O caixa não possui essa quantia" é exibida. É correto o que se afirma em: ALTERNATIVAS I e II, apenas. II e III, apenas. III e IV, apenas. I, II e III, apenas. II, III e IV, apenas. Atenção! Questão anulada. ALTERNATIVAS III, apenas. I e IV, apenas. II e III, apenas. I, III e V, apenas. I, II, III e IV, apenas. 4ª QUESTÃO Os métodos das classes são utilizados para realizar operações. Dentro de um método, o desenvolvedor pode colocar quantos comandos ele quiser. O método pode possuir parâmetros, que são variáveis passadas para o método no momento em que ele for executar. Um método também pode ou não retornar um valor para quem o chamou. Considerando o texto acima, observe o código a seguir e assinale a alternativa correta. 1 public class Calculadora { 2 3 public static short somar(short a, short b) { 4 return (short) (a + b); 5 } 6 7 public static short subtrair(short a, short b) { 8 return (short) (a - b); 9 } 10 11 public static short multiplicar (short a, short b) { 12 return (short) (a * b); 13 } 14 15 public static short dividir(short a, short b) { 16 return (short) (a / b); 17 } 18 19 public static short fazerNada(short a, short b) { 20 21 } 22 } ALTERNATIVAS A classe Calculadora é inválida, pois ela não possui um construtor. O método "fazerNada" está correto, pois não é obrigatório ter código dentro de um método. A classe Calculadora deveria obrigatoriamente definir um construtor que receba pelo menos 1 parâmetro. Os 4 primeiros métodos precisaram converter explicitamente o valor da operação para o tipo "short", pois os resultados das operações são do tipo inteiro. Somente nos métodos "somar" e "multiplicar" pode ocorrer um erro. Caso sejam passados valores muito altos e o resultado for maior do que 32.767, então acontecerá o erro. 5ª QUESTÃO No contexto da Orientação a Objetos, a herança permite que uma classe herde vários métodos e atributos de outra classe. Em Java, não existe herança múltipla, portanto, uma classe A pode ter somente uma superclasse. Entretanto, a superclasse pode também herdar de alguma outra classe. Desta forma, a classe A, além de herdar os atributos e métodos de sua superclasse direta, herdará também os atributos e métodos de todas as suas superclasses indiretas. Exemplo: Se A herda de B, que herda de C e herda de D, então A terá atributos e métodos de todas as suas superclasses, que são B, C e D. Considerando o texto acima, assinale a alternativa correta. ALTERNATIVAS Uma subclasse pode sobrescrever um método de uma superclasse. Uma classe não pode ser subclasse e superclasse ao mesmo tempo. Uma classe pode ser subclasse de duas superclasses ao mesmo tempo. Uma subclasse consegue acessar qualquer método e qualquer atributo de sua superclasse. Uma subclasse da classe A pode acessar qualquer método de outra subclasse da classe A. 6ª QUESTÃO Quando declaramos uma variável, ela é acessível apenas dentro de um determinado escopo. Essa variável pode ser uma variável de instância, que existe para apenas uma única instância da classe; pode ser uma variável local, sendo acessada apenas por algum método específico; ou pode ser uma variável de classe, similar a variáveis globais em outras linguagens, acessível por todas as instâncias de uma determinada classe. Assinale a alternativa que indica como podemos declarar essa variável em Java. ALTERNATIVAS A variável é declarada normalmente, mas fora de qualquer método. Ex: public int num = 5; A variável é declarada dentro da classe, com o modificador static. Ex: public static int num = 5; A variável é declarada normalmente, mas antes da declaração da classe. Ex: public int num = 5; A variável é declarada dentro de um método, mas com o modificador global. Ex: public global int num = 5; A variável é declarada dentro da classe, com o nome acrescentado de "main.". Ex: public int main.num = 5; 7ª QUESTÃO Em programas orientados a objeto, normalmente existem várias classes em vários pacotes e elas interagem entre si. Para utilizar outras classes, tanto as criadas por você quanto as do próprio Java, muitas vezes é necessário importá-las com o comando "import". Analise as afirmações a seguir: I – Quando uma classe não utiliza outras classes ou utiliza somente as classes básicas do Java (do pacote "java.lang"), então não é necessário utilizar o "import". II - As classes que estão no mesmo pacote podem ser utilizadas, não precisando utilizar o comando "import". III – Ao iniciar um novo projeto em Java, é sempre necessária a criação de um novo pacote. IV – Os pacotes também são conhecidos como Classes Abstratas, pois eles agrupam conjuntos de classes que possuem um certo relacionamento. É correto o que se afirma em: ALTERNATIVAS I e II, apenas. II e III, apenas. III e IV, apenas. I, II e III, apenas. II, III e IV, apenas. 8ª QUESTÃO Os construtores são métodos especiais, que são chamados no momentoem que o objeto é criado. Assim como os métodos, os construtores também podem receber parâmetros. Normalmente, esses parâmetros servem para inicializar os atributos do objeto. É possível ter vários construtores em uma classe e um construtor pode chamar outro construtor. Nesse sentido, observe o código abaixo: 1 public class InstrumentoMusical { 2 private String nome; 3 private String som; 4 5 public InstrumentoMusical(String nome) { 6 this.nome = nome; 7 som = "Não possui ou está quebrado."; 8 } 9 10 public InstrumentoMusical(String nome, String som) { 11 this.nome = nome; 12 this.som = som; 13 } 14 15 public InstrumentoMusical(InstrumentoMusical outroInstrumento) { 16 nome = outroInstrumento.nome; 17 som = outroInstrumento.som; 18 } 19 20 public InstrumentoMusical() { 21 } 22 } Considerando o código acima, avalie as afirmações abaixo. I – Uma classe pode ter vários construtores, desde que eles não possuam a mesma quantidade de parâmetros. II – O terceiro construtor é inválido, pois ele está acessando diretamente os atributos privados de um objeto. Os atributos privados só podem ser acessados pelo próprio objeto. III – A classe InstrumentoMusical é válida, mesmo sem o método main. IV – O último construtor é válido mesmo tendo o corpo vazio. É correto o que se afirma em: ALTERNATIVAS I e II, apenas. II e III, apenas. III e IV, apenas. I, II e III, apenas. II, III e IV, apenas. 9ª QUESTÃO Muitas vezes, quando uma subclasse é criada, nós temos a intenção de especializar a superclasse. Essa especialização pode envolver a sobrescrita de métodos da superclasse para que um ou mais métodos funcione de forma diferente em uma subclasse. A linguagem Java permite a sobrescrita de métodos. Considerando o texto acima, assinale a alternativa correta. ALTERNATIVAS A assinatura de um método é o nome do método. A sobrescrita de métodos só funciona se houver a anotação "@Override". Se um método sobrescrito tiver uma quantidade diferente de parâmetros, então, além de sobrescrito, ele é sobrecarregado. Se o método A possui a mesma assinatura que o método B e cada um está em uma classe diferente, então eles são métodos sobrescritos. Para sobrescrever um método, os dois devem ter a mesma assinatura. Não é possível sobrescrever um método de uma classe na própria classe. 10ª QUESTÃO O tipo "boolean" é muito utilizado em Java. As expressões dentro de ifs e whiles sempre resultam em um valor do tipo "boolean". Também é possível armazenar um tipo "boolean" em uma variável para ser utilizado posteriormente. Os operadores mais comuns para utilizar com um "boolean" são: "and" (símbolo &&), "or" (símbolo ||) e negação (símbolo !). Observe o código abaixo. 1 public class AcessoRestrito { 2 3 public static void acessar (boolean a, boolean b, boolean c, boolean d) { 4 boolean temAcesso = !(a || d) && c && ((a && (!b || d)) || c); 5 if (temAcesso) { 6 System.out.println("Sim"); 7 } else { 8 System.out.println("Não"); 9 10 } 11 } 12 13 public static void main(String[] parametros) { 14 acessar(true, true, true, true); 15 acessar(true, false, true, false); 16 acessar(false, true, true, false); 17 acessar(false, true, false, true); 18 acessar(false, false, false, false); 19 } 20 } Considerando o texto e o código acima, assinale a alternativa correta. ALTERNATIVAS O programa imprime: Sim, Não, Não, Não, Sim. O programa imprime: Não, Sim, Sim, Não, Não. O programa imprime: Não, Não, Sim, Não, Não. O programa imprime: Sim, Sim, Sim, Não, Não. O programa imprime: Não, Não, Sim, Sim, Sim.
Compartilhar