Prévia do material em texto
UNIVERSIDADE FEDERAL DE OURO PRETO INSTITUTO DE CIÊNCIAS EXATAS E BIOLÓGICAS DEPARTAMENTO DE COMPUTAÇÃO BCC702 - PROGRAMAÇÃO DE COMPUTADORES II Correção Prova 3 Valor: 10 pontos 28/06/2010 1. {3.0 pts.} Considerando as seguintes definições de classes, responda: class Cachorro{ public : void printRaca ( ) { cout << "Raca nao d e f i n i d a \n" ; } } ; class Boxer : public Cachorro{ public : void printRaca ( ) { cout << "Boxer\n" ; } } ; class Cocker : public Cachorro{ public : void printRaca ( ) { cout << "Cocker\n" ; } } ; class Schnauzer : public Cachorro{ public : void printRaca ( ) { cout << "Schnauzer\n" ; } } ; (a) Qual seria a saída do seguinte programa? void main ( ) { Cachorro ∗ caes [ 4 ] ; caes [ 0 ] = new Cachorro ( ) ; caes [ 1 ] = new Boxer ( ) ; caes [ 2 ] = new Cocker ( ) ; caes [ 3 ] = new Schnauzer ( ) ; for ( int i =0; i <4; i++) caes [ i ]−>printRaca ( ) ; } SOLUÇÃO: Raca nao definida Raca nao definida Raca nao definida Raca nao definida (b) Este é um exemplo de herança? Justifique sua resposta. SOLUÇÃO: Sim. Pois, as classes Boxer, Cocker e Schnauzer herdam os métodos e atributos da classe Cachorro. Veja o código �: public Cachorro�, após o nome de cada classe derivada, indicando herança pública. (c) Este é um exemplo de polimorfismo? Justifique sua resposta. SOLUÇÃO: Não. Pois, apesar de cada classe derivada ter redefinido o método printRaca() da classe base (Cachorro), nota-se que ele não é declarado virtual. Portanto, não há polimorfismo. 2. {4.0 pts.} Crie uma classe C++ denominada Tempo que representa um horário. Para tanto, devem ser definidos três atributos inteiros denominados h (para horas), m (para minutos) e s (para segundos). Em seguida: (a) Crie um construtor que inicialize os dados com zero e outro construtor que inicialize os dados com valores passados como parâmetros; (b) Acrescente à classe o operador de soma binário (+). Observação: Não se esqueça de garantir a consistência dos dados na implementação. Isto é, os horários válidos estão no intervalo de 00:00:00 às 23:59:59. 3. {1.0 pts.} Marque a alternativa correta. Template é um meio de: (a) X Gerar uma família de funções/classes; (b) Gerar uma família de variáveis/programas; (c) Gerar um novo operador para a linguagem. 4. {1.0 pts.} Marque a alternativa correta. Um objeto de uma classe derivada contém: (a) X Todos os membros da classe base; (b) Somente os membros públicos (public) da classe base; (c) Somente os membros protegidos (protected) da classe base; (d) Somente os membros públicos e protegidos da classe base. 5. {1.0 pts.} Marque a alternativa correta. Uma função virtual pura é uma função que: (a) Não retorna nada; (b) Tem o mesmo nome da classe; (c) Não recebe argumentos; (d) X Não tem implementação.