|
|
(2 intermediate revisions by the same user not shown) |
Line 9: |
Line 9: |
| '''1.3.''' (1.5 val.) Diga em que consistem e como se expressam os conceitos de sobrecarregamento (overloading) e redefinição (overriding) de métodos nas linguagens de programação com objectos. Dê exemplos práticos, se possível, relacionados com o projecto. | | '''1.3.''' (1.5 val.) Diga em que consistem e como se expressam os conceitos de sobrecarregamento (overloading) e redefinição (overriding) de métodos nas linguagens de programação com objectos. Dê exemplos práticos, se possível, relacionados com o projecto. |
| | | |
− | <div style="padding: 8px; border-style: dashed; border-width: 1px; border-color: #2f6fab; background: #f9f9f9; ">
| + | * [[Polimorfismo, Interfaces, Classes Abstractas]] |
− | * Overloading: definição de métodos com o mesmo nome, mas com diferenças nos argumentos (tipo, número ou ambos) na mesma ou em classes relacionadas; | |
− | * Overriding: redefinição de um método definido anteriormente por uma das superclasses da hierarquia de uma classe.
| |
− | * Overloading: '''Gato(int age) {...}''' e '''Gato(String name) {...}'''
| |
− | * Overriding: redefinição por parte de '''Gato.respirar()''' de '''Animal.respirar()''' (sendo '''Gato''' uma subclasse de '''Animal''')
| |
− | </div>
| |
| | | |
| '''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? | | '''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? |
| | | |
− | <div style="padding: 8px; border-style: dashed; border-width: 1px; border-color: #2f6fab; background: #f9f9f9; ">
| + | * [[Polimorfismo, Interfaces, Classes Abstractas]] |
− | * Abstracção: possibilidade de desenvolver código ou conceitos "abstractos" (tanto classes ou interfaces que devem ser especializadas, como código/implementações baseadas nelas) | |
− | * Polimorfismo: possibilidade de referenciar um objecto através de um tipo genérico ou de um tipo mais abstracto que o seu (numa hierarquia de classes, por exemplo)
| |
− | * Consequências: possibilidade de utilizar tipos concretos (ou mais específicos) em código escrito para tipos menos específicos; redução e reutilização de código; desenvolvimento incremental.
| |
− | </div>
| |
| | | |
| == Parte 2 (resposta múltipla) == | | == Parte 2 (resposta múltipla) == |
Latest revision as of 14:24, 18 November 2013
Parte 1
1.1. (3.0 val.) Empresa de Mobiliário
1.2. (1.0 val.) Tabuleiros e Peças
1.3. (1.5 val.) Diga em que consistem e como se expressam os conceitos de sobrecarregamento (overloading) e redefinição (overriding) de métodos nas linguagens de programação com objectos. Dê exemplos práticos, se possível, relacionados com o projecto.
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?
a implementação de doThis tem de estar necessariamente em C
doThis não está definido para B
doIt pode ser directamente invocado através de referências para I
I fornece a implementação para métodos declarados por A
- nenhuma das anteriores está correcta
2.2. Em Java, qual das seguintes frases está correcta?
- Uma classe pode estender uma única classe
Uma classe pode estender várias classes
Uma classe só pode implementar uma única interface
Uma classe não pode simultaneamente estender uma classe e implementar uma interface
Uma classe não pode simultaneamente estender uma classe e implementar mais do que uma interface
2.3. Em Java, um método declarado protected...
só pode ser acedido dentro da própria classe ou por classes derivadas
não pode ser redefinido
não pode chamar outros métodos que também não sejam protected
- pode ser acedido por classes da mesma package
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?
- List<Integer> myList = new ArrayList<Integer>();
List<Integer> myList = new List<Integer>();
List<Object> myList = new ArrayList<Integer>();
ArrayList<Integer> myList = new List<Integer>();
Todas estão correctas
2.5. Quais são as possíveis saídas do seguinte programa em Java:
<java5>
public static void main(String[] args) {
try {
if (args.length == 0) throw new Exception();
}
catch (Exception e) {
System.out.print("done ");
}
finally {
System.out.println("finally ");
}
}
</java5>
sempre done finally
sempre finally
sempre done
- ou finally ou done finally
ou done ou finally ou done finally