Ybadoo - Soluções em Software Livre
Turmas
2º Semestre de 2015

Questão 01

Analise as seguintes afirmativas sobre programação orientada a objetos:

  1. O polimorfismo é a capacidade de uma classe ter todos os métodos e variáveis de instância de outra classe sem precisar reescrever o código.
  2. Uma interface não permite que seja realizada a implementação dos métodos. Serve como contrato onde as classes que a implementam devem obrigatoriamente implementar todos os seus métodos.
  3. A palavra reservada super permite acessar qualquer método de qualquer classe do sistema. É utilizado com muita frequência quando um recurso é necessário em muitas classes que não tem nenhum relacionamento entre si.

A análise permite concluir que:

  1. apenas a afirmativa I está correta.
  2. apenas a afirmativa II está correta.
  3. apenas a afirmativa III está correta.
  4. apenas as afirmativas I e II estão corretas.
  5. apenas as afirmativas I e III estão corretas.

Questão 02

Assinale a alternativa correta. Herança e interfaces são conceitos da orientação a objetos que possibilitam a obtenção de polimorfismo. Em Java, uma interface pode:

  1. herdar de mais de uma interface.
  2. ser instanciada diretamente por meio da instrução new.
  3. possuir apenas assinaturas de métodos públicos e protegidos.
  4. possuir métodos abstratos e estáticos.
  5. conter declarações de constantes e de variáveis não inicializadas.

Questão 03

Considere as classes a seguir e analise as seguintes afirmativas:

Arquivo AppleRed.java

package com.ybadoo.tutoriais.poo;

public class AppleRed extends Apple
{
  public AppleRed()
  {
    super(Color.red);
  }
}

Arquivo AppleGreen.java

package com.ybadoo.tutoriais.poo;

public class AppleGreen extends Apple
{
  public AppleGreen()
  {
    super(Color.green);
  }
}
  1. A classe AppleRed é um Apple e por isso poderia ser armazenada em uma variável do tipo Apple, como por exemplo: Apple apple = new AppleRed();
  2. A classe AppleGreen é um Apple e por isso poderia armazenar uma instância do tipo Apple, como por exemplo: AppleGreen apple = new Apple();
  3. Como ambas as classes estendem Apple, uma instância de AppleGreen pode ser armazenada em variáveis do tipo AppleRed, como por exemplo: AppleRed apple = new AppleGreen();

A análise permite concluir que:

  1. apenas a afirmativa I está correta.
  2. apenas a afirmativa II está correta.
  3. apenas a afirmativa III está correta.
  4. apenas as afirmativas I e II estão corretas.
  5. apenas as afirmativas I e III estão corretas.

Questão 04

Um dos conceitos básicos de orientação a objetos é o fato de um objeto, ao tentar acessar as propriedades de outro objeto, deve sempre fazê-lo por uso de métodos do objeto ao qual se deseja atribuir ou requisitar uma informação, mantendo ambos os objetos isolados. A essa propriedade da orientação a objetos dá-se o nome de:

  1. herança.
  2. abstração.
  3. polimorfismo.
  4. mensagem.
  5. encapsulamento.
Desenvolva uma classe chamada Cuboctahedron para representar um cuboctaedro, ou seja, um poliedro semi-regular composto por oito faces triangulares e seis faces quadradas, considerado um dos treze Sólidos de Arquimedes. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do cuboctaedro e cujo valor deve ser maior ou igual a zero e menor ou igual a quarenta. A classe possui dois construtores: o primeiro configura a aresta do cuboctaedro com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do cuboctaedro. A aresta do cuboctaedro pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do cuboctaedro, respectivamente. A área de um cuboctaedro de aresta a é obtida pela fórmula (6 + 2 * √3) * a2. O volume de um cuboctaedro de aresta a é obtido pela fórmula 5 / 3 * √2 * a3.
Desenvolva uma classe chamada Equipamento com o atributo ligado (tipo boolean) e com os métodos liga e desliga. O método liga torna o atributo ligado verdadeiro e o método desliga torna o atributo ligado falso. Desenvolva uma classe chamada EquipamentoSonoro que herda as características de Equipamento e que possui os atributos volume (tipo int) que varia de 0 a 10 e stereo (tipo boolean). A classe ainda deve possuir métodos para ler e alterar o volume, além dos métodos mono e stereo. O método mono torna o atributo stereo falso e o método stereo torna o atributo stereo verdadeiro. Ao ligar o EquipamentoSonoro através do método liga, seu volume é automaticamente ajustado para 5. Caso o volume seja configurado para um valor inválido, o sistema deverá lançar a exceção IllegalArgumentException.

Questão Extra

Considere a classe em Java apresentada a seguir.

Arquivo Questao.java

package com.ybadoo.tutoriais.poo;

public class Questao
{ 
  public static void main(String[] args)
  { 
    try
    { 
      op(0); 
    } 
    catch(IllegalArgumentException exception)
    { 
      System.out.print("X"); 
    } 
    catch(Exception exception)
    { 
      System.out.print("Y"); 
    } 
    finally
    { 
      System.out.print("Z"); 
    } 
  }

  private static void op(int v) throws IllegalArgumentException
  { 
    if(v == 0)
    {
      throw new IllegalArgumentException("U"); 
    }
  }
}

Como resultado da execução desse programa, é impressa a cadeia de caracteres:

  1. UXYZ
  2. UXZ
  3. XY
  4. XYZ
  5. XZ