Você está na página 1de 4

1o semestre de 2015

Programac
ao Orientada a Objetos

Exerccios de Revis
ao - Prova 1
Classes, Objetos e Refer
encias
1. O que e uma classe e o que e um objeto?
2. Para que serve o construtor de uma classe?
3. De forma semelhante a metodos, um construtor pode ter uma lista de parametros, mas
nao declaramos um tipo de retorno. Porque?
Considere o c
odigo abaixo para responder as questoes 4 a 10:
public class Funcionario {
private int idade;
public string nome = "";
public string cargo;
public Funcionario(string nome){
this.nome = nome;
}
public Funcionario(string nome, int idade){
this.nome = nome;
this.idade = idade;
}
public void SalvarDadosNoBanco(){
//
}
public int Excluir(){
return 1;
}
}
4. Quantos atributos a classe define e quais sao eles?
5. Quantos construtores a classe define e quais sao eles?
6. Quantos metodos a classe define e quais sao eles?
7. Qual e a maneira correta de instanciar (criar um objeto) da classe Funcionario definida
anteriormente e guardar o objeto criado em uma referencia?
(a) Funcionario x = Funcionario();
(b) Funcionario x = Funcionario("Danilo");
(c) Funcionario x = new Funcionario("Danilo");
1

(d) x Funcionario = new Funcionario;


(e) Funcionario x = new Funcionario();
8. Duas referencias diferentes podem apontar para o mesmo objeto?
9. O que o c
odigo abaixo imprimiria no console?
Funcionario f1 = new Funcionario("Danilo");
Funcionario f2 = f1;
f1.cargo = "Gerente";
f2.cargo = "Analista";
Console.WriteLine(f1.nome);
Console.WriteLine(f1.cargo);
Console.WriteLine(f2.nome);
Console.WriteLine(f2.cargo);
10. Suponha que construtor da classe Funcionario seja alterado, substituindo this.nome
para nome, como no c
odigo abaixo:
public Funcionario(string nome){
nome = nome;
}
O codigo continuar
a funcionando da mesma forma?
11. O que e o coletor de lixo e como ele funciona?
Membros Est
aticos e de Inst
ancia
12. Qual a diferenca entre um atributo estatico e um atributo de instancia?
13. Qual a diferenca entre um metodo estatico e um metodo de instancia?
14. Considere o programa C# abaixo.
class MeuPrograma {
static void Main(string[] args) {
MinhaClasse obj = new MinhaClasse();
obj.Incrementa();
obj.Incrementa();
MinhaClasse obj2 = new MinhaClasse();
obj2.Incrementa();
Console.WriteLine(MinhaClasse.a);
Console.WriteLine(obj.b);
Console.WriteLine(obj2.b);
}
}
class MinhaClasse {
public static int a = 10;
public int b = 20;
public void Incrementa() {
a++;
2

b++;
}
}
(a) O que o programa imprime no console?
(b) E se retirarmos a palavra chave static da declaracao do atributo a, o que acontecer
a?
15. Dentro de um metodo est
atico podemos usar a palavra chave this?
Modificadores de Visibilidade
16. Existe um erro de compilac
ao no codigo abaixo. Qual e ele?
class MeuPrograma {
static void Main(string[] args) {
ClasseX x = new ClasseX();
x.atributoA = 4;
x.atributoB = 5;
}
}
class ClasseX {
private int atributoA = 10;
public int atributoB = 45;
public String metodoB() {
atributoA = this.atributoB;
}
}
17. Suponha que exista uma classe MinhaClasse no pacote (ou namespace) pacote1. Em
geral, n
ao podemos usar a classe MinhaClasse em um pacote diferente do qual ela foi
declarada sem usar uma instruc
ao import (Java) ou import (C#). No entanto, existe
uma outra alternativa. Qual e ela?
18. Suponha que exista uma classe p
ublica A em um pacote/namespace p1. Suponha tambem
que A contenha um atributo x. Preencha a tabela abaixo onde cada linha e um possvel
modificador de visibilidade aplicado a x e cada coluna e uma classe onde se tenta acessar
x. Indique em cada celula se x e visvel ou nao.

public
private
protected

p1.A
sim

p1.B

p2.C

p1.D subclasse de p1.A

p2.E subclasse de p1.A

n
ao

Por exemplo, o valor da primeira celula e sim, pois e possvel acessar x dentro de p1.A
quando x for public. No entanto, nao e possvel acessar x dentro de p1.B quando x for
private
No
c
oes de Heran
ca
19. Para que serve o mecanismo de heranca em orientacao a objetos?

20. Considere o c
odigo C# abaixo:
class Animal {
private String dna;
public virtual void Comer() {}
}
class Cavalo : Animal {
//
}
class Vaca : Animal {
public override void Comer() {}
}
Quais das afirmativas abaixo s
ao verdadeiras?
(a) Cavalo e subclasse de Animal
(b) Vaca e subclasse de Cavalo
(c) Animal e subclasse de Cavalo
(d) Cavalo herda o metodo Comer
(e) Cavalo herda o atributo dna
(f) Vaca sobrescreve o metodo Comer
(g) Vaca sobrecarrega o metodo Comer
permitido declarar novos metodo na classe Vaca, alem dos que foram herdados.
(h) E