1. O operador ponto é usado para: A) atribuir um valor aos atributos do objeto. B) acrescentar novos comportamentos ao objeto. C) criar um novo objeto. D) acessar atributos e métodos públicos de um objeto. 2. Enumere as classes conceituais no seguinte cenário: “Em uma biblioteca os exemplares de livros são emprestados aos usuários. É possível ainda fazer uma reserva, se um livro não estiver disponível”. 3. Em um posto de gasolina os carros são abastecidos de gasolina, álcool ou diesel nas bombas apropriadas. Enumere alguns atributos (mínimo de três) da classe Abastecimento. 4. O que está errado no trecho de código abaixo? type Math = class public function menor(a1, a2: integer): integer; end; function Math.menor(a1, a2: integer): integer; begin if a1 < a2 then result := a1 else result := a2; end; begin writeln(Math.menor(10, 5)); end. 5. O que será impresso pelo programa abaixo? Justifique sua resposta. type B = class private x, y, z : integer; public procedure print; end; procedure B.print; begin writeln('x = ', x, '; y = ', y, '; z = ', z); end; var obj : B; begin obj := B.Create; obj.print; readln; end. 6. Considere a definição das classes abaixo: type C1 = class private procedure m1; public procedure m2; protected procedure m3; end; C2 = class(C1) private procedure m4; public procedure m5; end; Que métodos estão disponíveis para uma referência da classe C2? 7. Observe a seguinte definição de classes: type CBase = class public procedure m1; procedure print; end; CFilha = class(CBase) public procedure print; end; Que métodos estão disponíveis para uma instância da classe CFilha? Dê sua resposta na forma: NomeDaClasse.nomeDoMétodo 8. Observe o código abaixo: type ClasseA = class protected x : integer; procedure m1; end; ClasseB = class(ClasseA) private y : integer; public procedure m2; end; ClasseC = class(ClasseA) private z : integer; public procedure m3; end; Que métodos estão disponíveis para uma referência da ClasseC? Quais dos atributos (x, y, z) podem ser usados na implementação do método m2? 9. O que está errado no trecho de código abaixo? type C1 = class procedure m1; end; C2 = class procedure m2; end; C3 = class(C1, C2) procedure m3; end; 10. Observe a definição das classes abaixo: type C1 = class protected procedure m1; end; C2 = class(C1) public procedure m2; end; C3 = class(C2) public procedure m3; end; Que métodos estão disponíveis para uma referência da classe C3? 11. Reescreva o código a seguir de modo a eliminar a duplicação de código nas classes. type C1 = class private x, y: integer; public procedure m1; procedure m2; end; C2 = class private x, z: integer; public procedure m1; procedure m3; end; procedure C1.m1; begin writeln(x); end; procedure C1.m2; begin writeln(y); end; procedure C2.m1; begin writeln(x); end; procedure C2.m3; begin writeln(z); end; 12. Observe a definição de uma classe em Delphi TCirculo = class private x: double; y: double; raio: double; public constructor Create(x: double; y: double; raio: double); function perimetro: double; function area: double; end; e a criação de um objeto da classe: circulo := TCirculo.Create(0, 0, 1); Quais atributos e métodos podem ser acessados usando-se o objeto circulo? 13. Descreva alguns atributos (mínimo de cinco) da classe “Partida” pertencente a uma aplicação “Campeonato de Futebol”. 14. O que são ATRIBUTOS e OPERAÇÕES de uma classe? E o que são MÉTODOS? 15. Qual das seguintes afirmações é verdadeira em Delphi? A) Se não for especificado um construtor para a classe, um construtor padrão é utilizado. B) Um objeto pode ser uma classe. C) Uma classe deve ter pelo menos um método. D) Uma classe pode ser um objeto. 16. Um método de uma classe, A) é sempre público; B) é sempre privado; C) é sempre protected; D) pode ser público ou protected, mas não private E) pode ser público, protected ou private. 17. Examine as seguintes declarações: area: integer; Form1: TForm1; Qual das seguintes afirmações é verdadeira? A) area e Form1 são referências B) area e Form1 são variáveis primitivas C) area é uma referência e Form1 é uma variável primitiva. D) area é uma variável primitiva e Form1 é uma referência. 18. program Teste; {$APPTYPE CONSOLE} uses SysUtils; type Foguete = class private a : integer; b : integer; public procedure setnum(i, j: integer); procedure shownum; end; Espaconave = class private a : integer; b : integer; public procedure setnum(i, j: integer); procedure shownum; end; { Foguete } procedure Foguete.setnum(i, j: integer); begin a := i; b := j; end; procedure Foguete.shownum; begin writeln(a, ' ', b); end; { Espaconave } procedure Espaconave.setnum(i, j: integer); begin a := i; b := j; end; procedure Espaconave.shownum; begin writeln(a, ' ', b); end; var obj1: Foguete; obj2: Espaconave; begin obj1 := Foguete.Create; obj2 := Espaconave.Create; obj1.setnum(3, 4); obj2 := obj1; obj1.shownum(); obj2.shownum(); readln; end. O programa acima apresenta um erro. A razão deste erro é: A) duas classes não podem ter as mesmas variáveis. B) duas classes não podem ter métodos com os mesmos nomes. C) não podem ser usadas duas classes com a mesma interface. D) não podem ser usados objetos de diferentes tipos em comandos de atribuição. 19. Na programação orientada a objetos, dados e funções comuns a todos os objetos de um mesmo tipo são definidos em: A) um método. B) uma classe. C) uma função. D) uma variável. 20. Examine a seguinte seção de código: var area: integer; Form1: TForm1; Quantos objetos foram criados? A) dois – um de cada tipo. B) dois – um para cada variável. C) nenhum – existe uma referência para um objeto, mas nenhum objeto ainda. D) um – existe uma referência para um objeto, logo deve existir um objeto. 21. O modificador de visibilidade ____________________ (public, protected, private), quando usado, faz com que atributos e métodos possam ser vistos somente dentro da classe onde eles foram definidos. 22. Prover acesso a um objeto somente através dos seus métodos mantendo privados os detalhes de implementação é chamado de: A) encapsulamento. B) herança C) modularidade D) polimorfismo. 23. O conceito de classes derivadas está presente em: A) encapsulamento. B) herança. C) ocultação de dados. D) tipos abstratos de dados. 24. Herança é uma maneira de A) adicionar novas características a classes existentes, sem ter de reescrevê-las. B) melhorar o encapsulamento dos dados. C) organizar os dados. D) passar argumentos para os objetos das classes. 25. Para ser acessível a um método em uma subclasse, um atributo na superclasse deve ser: A) default B) protected C) public D) public ou protected 26. Qual é a diferença entre private e protected? A) membros privados não podem ser acessados pelas subclasses, mas os membros protected podem. B) membros private e membros protected na superclasse podem ambos ser acessados pelas subclasses. C) membros protected de uma classe podem ser acessados por instâncias de objetos desta classe. D) membros protected não podem ser acessados pelas subclasses, mas os membros privados podem. 27. A definição correta em Java para uma classe TestClass que não pode ter subclasses é: A) final class TestClass { } B) abstract class TestClass { } C) native class TestClass { } D) static class TestClass { } E) private class TestClass { } 28. A respeito do construtor default de uma classe em Java, pode-se afirmar que: A) toda classe em Java tem um construtor default B) a classe tem de ter pelo menos um construtor definido para ter um construtor default C) uma classe tem um construtor default se ela não define nenhum outro construtor D) toda classe em Java herda um construtor default da classe Object E) a linguagem Java não tem o conceito de um construtor default