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

Questão 01

Com relação aos conceitos de orientação a objetos, julgue os seguintes itens.

  1. As variáveis ou métodos declarados com modificador de acesso private só são acessíveis a métodos da classe em que são declarados.
  2. Uma classe deve possuir uma única declaração de método construtor.
  3. Uma instância de uma classe abstrata herda atributos e métodos de sua superclasse direta.
  4. O polimorfismo permite substituir a lógica condicional múltipla (lógica switch ou faça caso).

Estão certos apenas os itens:

  1. I e II.
  2. I e III.
  3. I e IV.
  4. II e III.
  5. II e IV.
Desenvolva uma classe chamada Decagon para representar um decágono, ou seja, um polígono regular com dez lados de mesmo comprimento. A classe possui um único atributo denominado side, do tipo double, que representa o lado do decágono e cujo valor deve ser maior ou igual a zero e menor ou igual a vinte. A classe possui dois construtores: o primeiro configura o lado do decágono com o valor padrão 1, e o segundo recebe como parâmetro o lado do decágono. O lado do decágono pode ser obtido e alterado pelo usuário por meio dos métodos getSide() e setSide(), respectivamente. A classe também apresenta os métodos area() e perimeter(), que retornam a área e o perímetro do decágono, respectivamente. A área de um decágono de lado l é obtida pela fórmula 5 / 2 * (√5 + 2 * √5) * l2. O perímetro de um decágono de lado l é obtido pela fórmula 10 * l.

Questão 03

Considere as classes Java, que pertencem ao mesmo pacote, a seguir.

Arquivo C1.java

package com.ybadoo.tutoriais.poo;

public abstract class C1
{
  public abstract Object cria();

  public void mostra()
  {
    System.out.print("Poscomp 2014");
  }
}

Arquivo C2.java

package com.ybadoo.tutoriais.poo;

public class C2 extends C1
{
  int i = 0;  
  Integer j;

  public Object cria()
  {
    i++;
    j = new Integer(i);
    return j;
  }

  public void mostra()
  {
    System.out.print("j = " + j);
  }
}

Arquivo C3.java

package com.ybadoo.tutoriais.poo;

public class C3 extends C1
{
  double d = 3.14;
  Float f;

  public Object cria()
  {
    d = d + 1.0;
    f = new Float(d);
    return f;
  }

  public void mostra()
  {
    System.out.print("f = " + f);
  }
}

Arquivo PosComp2014.java

package com.ybadoo.tutoriais.poo;

public class PosComp2014
{
  public static void main(String[] z)
  {
    C1 a, b, c;
    Object o1, o2, o3;

    a = new C2();
    b = new C2();
    c = new C3();

    o1 = a.cria();
    o1 = a.cria();
    o2 = b.cria();
    o3 = c.cria();
    o3 = c.cria();

    a.mostra();
    System.out.print("  ");
    b.mostra();
    System.out.print("  ");
    c.mostra();

    System.out.print("  " + o1);
    System.out.print("  " + o2);
    System.out.print("  " + o3);
  }
}

Assinale a alternativa que apresenta, corretamente, os valores impressos pela execução desse programa:

  1. O programa está sintaticamente incorreto, não sendo possível executá-lo.
  2. j = 2 j = 1 f = 5.14 2 1 5.14
  3. j = 2 j = 3 f = 5.14 2 3 5.14
  4. Poscomp 2014 Poscomp 2014 Poscomp 2014 2 1 5.14
  5. Poscomp 2014 Poscomp 2014 Poscomp 2014 2 3 5.14
Desenvolva um segmento que apresente os n primeiros termos da sequência yk+1 = yk + 2, sendo k = 1, 2, 3, ..., n e y1 = 1. O segmento deverá fazer uma pausa de um segundo antes da impressão de cada número. Crie uma classe e estenda Thread. Como alternativa, você pode implementar a interface Runnable. Substitua o método run() de Thread. É aí que entrará o código que exibirá os números. Crie uma repetição for que seja executado n vezes. Use o método estático Thread.sleep() para fazer uma pausa. Um número do tipo long representará os milissegundos.

Questão 05

Considere as classes Java, que pertencem ao mesmo pacote, a seguir.

Arquivo FirstException.java

package com.ybadoo.tutoriais.poo;

public class FirstException extends Exception
{
  public FirstException()
  {
    super();
  }
}

Arquivo SecondException.java

package com.ybadoo.tutoriais.poo;

public class SecondException extends FirstException
{
  public SecondException()
  {
    super();
  }
}

Arquivo ThirdException.java

package com.ybadoo.tutoriais.poo;

public class ThirdException extends FirstException
{
  public ThirdException()
  {
    super();
  }
}

Arquivo FourthException.java

package com.ybadoo.tutoriais.poo;

public class FourthException extends FirstException 

  public FourthException()
  {
    super();
  }
}

Arquivo Application.java

package com.ybadoo.tutoriais.poo;

public class Application
{
  public static void main(String[] args)
  {
    try
    {
      ...

      throw new FirstException();

      ...

    }
    catch(FourthException exception)
    {
      System.out.println("1");
    }
    catch(ThirdException exception)
    {
      System.out.println("2");
    }
    catch(SecondException exception)
    {
      System.out.println("3");
    }
    catch(FirstException exception)
    {
      System.out.println("4");
    }
    catch(Exception exception)
    {
      System.out.println("5");
    }
  }
}

Assinale a alternativa que apresenta, corretamente, o valor impresso pela execução desse programa:

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
Qual é a diferença entre exceções verificadas e não-verificadas em Java.

Questão Extra

Entre as linguagens de programação mais comumente encontradas nas mais diversas aplicações, tem-se Java e C++. Sobre essas duas linguagens, atribua V (verdadeiro) ou F (falso) às afirmativas a seguir.

(   ) A linguagem C++ é uma extensão da linguagem C.

(   ) A linguagem Java é interpretada e C++ é compilada.

(   ) A linguagem Java possui tratamento de exceções.

(   ) Ambas possuem tipagem dinâmica.

(   ) O coletor de lixo de Java é automático e o de C++ é manual.

Assinale a alternativa que contém, de cima para baixo, a sequência correta:

  1. V, V, F, F, V.
  2. V, F, V, F, V.
  3. V, F, F, V, F.
  4. F, V, V, V, F.
  5. F, F, F, V, V.