Programação com Objectos/Teste de 2013/11/15

From Wiki**3

< Programação com Objectos

Parte 1

1.1. (3.0 val.) Empresa de Mobiliário

1.2. (1.0 val.) Fábrica e Empregados

1.3. (1.5 val.) Discuta a importância do encapsulamento e relacione-o com os conceitos de interface e implementação. Em que medida contribuem aqueles conceitos para a qualidade da programação. Como estão disponíveis em Java?

<text> </text>

1.4. (1.5 val.) Explique em consiste o mecanismo de abstracção presente em linguagens como o Java e o C++. Qual é a sua relação com o polimorfismo. Que consequências têm estes dois aspectos na produção de código?

Parte 2 (resposta múltipla)

Figura 1 (todos os métodos estão implementados)
2.1. Considere o diagrama UML da figura 1 (à direita). Qual das seguintes afirmações está correcta?
  1. a implementação de doThis tem de estar necessariamente em C
  2. doThis não está definido para B
  3. doIt pode ser directamente invocado através de referências para I
  4. I fornece a implementação para métodos declarados por A
  5. nenhuma das anteriores está correcta

2.2. Em Java, o método main é especial porque...

  1. é o único método que pode criar objectos
  2. o interpretador começa sempre a execução da aplicação invocando o método main de uma determinada classe
  3. todas as classes têm de ter um método main
  4. é o único método static que uma classe pode ter
  5. só uma classe da aplicação pode ter o método main

2.3. Em Java, um método declarado protected...

  1. só pode ser acedido dentro da própria classe ou por classes derivadas
  2. não pode ser redefinido
  3. não pode chamar outros métodos que também não sejam protected
  4. pode ser acedido por classes da mesma package
  5. só pode ser usado por construtores

2.4. Supondo que está a fazer os imports correctos, qual das seguintes instruções não gera nem avisos nem erros de compilação?

  1. List<Integer> myList = new ArrayList<Integer>();
  2. List<Integer> myList = new List<Integer>();
  3. List<Object> myList = new ArrayList<Integer>();
  4. ArrayList<Integer> myList = new List<Integer>();
  5. Todas estão correctas

2.5. Em Java, o fragmento de código catch(Exception e) { /* ... */ }

  1. apanha todos os objectos que forem atirados por um throw anterior
  2. é inútil desde que exista um qualquer catch anterior
  3. o seu bloco pode lançar, ele próprio, uma excepção
  4. volta a apanhar todos os objectos, mesmo os que já tenham sido apanhados por um catch anterior
  5. nunca apanha qualquer objecto