|   |     | 
| (2 intermediate revisions by the same user not shown) | 
| Line 1: | Line 1: | 
|  | {{TOCright}} 
 |  | #REDIRECT [[ist:Programação com Objectos/Teste de 2012/11/19]] | 
|  |   |  | 
|  | == Parte 1  ==
 |  | 
|  |   |  | 
|  | '''1.1.''' (3.0 val.) [[Introdução à Modelação com UML/Empresa de Mobiliário|Empresa de Mobiliário]]
 |  | 
|  |   |  | 
|  | '''1.2.''' (1.0 val.) [[Polimorfismo, Interfaces, Classes Abstractas/Exercício 06: Tabuleiros e Peças|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. 
 |  | 
|  |   |  | 
|  | <div style="padding: 8px; border-style: dashed; border-width: 1px; border-color: #2f6fab; background: #f9f9f9; ">
 |  | 
|  | * 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 como polimorfismo. Que consequências têm estes dois aspectos na produção de código? 
 |  | 
|  |   |  | 
|  | * [[Polimorfismo, Interfaces, Classes Abstractas]]
 |  | 
|  |   |  | 
|  | == Parte 2 (resposta múltipla)  ==
 |  | 
|  | [[Image:UML-teste-po-20121119.png|frame|right|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? 
 |  | 
|  |   |  | 
|  | :#<s>a implementação de '''doThis''' tem de estar necessariamente em '''C'''</s> 
 |  | 
|  | :#<s>'''doThis''' não está definido para '''B'''</s> 
 |  | 
|  | :#<s>'''doIt''' pode ser directamente invocado através dereferências para '''I'''</s> 
 |  | 
|  | :#<s>'''I''' fornece a implementação para métodos declarados por '''A'''</s> 
 |  | 
|  | :#nenhuma das anteriores está correcta
 |  | 
|  |   |  | 
|  | '''2.2.''' Em Java, qual das seguintes frases está correcta? 
 |  | 
|  |   |  | 
|  | :#Uma classe pode estender uma única classe
 |  | 
|  | :#<s>Uma classe pode estender várias classes</s>
 |  | 
|  | :#<s>Uma classe só pode implementar uma única interface</s>
 |  | 
|  | :#<s>Uma classe não pode simultaneamente estender uma classe e implementar uma interface</s>
 |  | 
|  | :#<s>Uma classe não pode simultaneamente estender uma classe e implementar mais do que uma interface</s>
 |  | 
|  |   |  | 
|  | '''2.3.''' Em Java, um método declarado '''protected'''...
 |  | 
|  |   |  | 
|  | :#<s>só pode ser acedido dentro da própria classe ou por classes derivadas</s>
 |  | 
|  | :#<s>não pode ser redefinido</s>
 |  | 
|  | :#<s>não pode chamar outros métodos que também não sejam '''protected'''</s>
 |  | 
|  | :#pode ser acedido por classes da mesma package
 |  | 
|  | :#<s>só pode ser usado por construtores</s>
 |  | 
|  |   |  | 
|  | '''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>();'''
 |  | 
|  | :#<s>'''List<Integer> myList = new List<Integer>();'''</s>
 |  | 
|  | :#<s>'''List<Object>  myList = new ArrayList<Integer>();'''</s>
 |  | 
|  | :#<s>'''ArrayList<Integer> myList = new List<Integer>();'''</s>
 |  | 
|  | :#<s>Todas estão correctas</s>
 |  | 
|  |   |  | 
|  | '''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>
 |  | 
|  |   |  | 
|  | :#<s>sempre '''done finally '''</s>
 |  | 
|  | :#<s>sempre '''finally '''</s>
 |  | 
|  | :#<s>sempre '''done '''</s>
 |  | 
|  | :#ou '''finally ''' ou '''done finally '''
 |  | 
|  | :#<s>ou '''done ''' ou '''finally ''' ou '''done finally '''</s>
 |  | 
|  |   |  | 
|  | [[Category:PO]]
 |  | 
|  | [[Category:Ensino]]
 |  |