Buscar

Compilado_POO1_EDIT_BYANA_FINALREAL

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Programação Orientada a Objetos I 
MULTIPLA ESCOLHA 
 
P) Dado o código abaixo com as seguintes classes: A, B e Program: 
class A 
{ 
Public override String ToString() 
{ 
return “4”; 
} 
} 
class B:A 
{ 
Public override String ToString() 
{ 
return base.ToString() + “3”; 
} 
} 
class Program 
{ 
static void Main(string[] args) 
{ 
Console.WriteLine(new B()); 
} 
 
Qual o resultado será apresentado como saída de execução do programa Program? 
Resposta: B) O programa compila e o número 43 é exibido. 
 
P) Considere o seguinte programa: 
static void Main(string[] args) 
{ 
char [] c = new char[] {‘a’,’b’,’c’}; 
Console.WriteLine(“{1}{0}{2}”, c[1],c[0],c[2]); 
} 
Qual a sua saída? 
Resposta: A) a b c 
 
P) Leia o texto extraído do site tecnoblog.net: 
Em orientação a objeto, este processo no qual não temos mais acesso a um elemento interno, no caso a bateria, se 
chama: 
Resposta: D) Encapsulamento 
 
P) Dada a seguinte tela de saída: 
 
Considerando as três propostas de programa a seguir: 
Programa I 
a) static void Main(string[] args) 
{ 
int a=345, b=543, c=435; 
Console.WriteLine(“seq\n{1}\n{0}\n{2}”, b,a,c); Console.ReadKey(); 
} 
Programa II 
b) static void Main(string[] args) 
{ 
int a=345, b=543, c=435; 
Console.WriteLine(“seq\n{0}\n{1}\n{2}”, a,b,c); Console.ReadKey(); 
} 
Programa III 
c) static void Main(string[] args) 
{ 
int a=345, b=435, c=543; 
Console.WriteLine(“seq\n{0}\n{2}\n{1}”, a,b,c); Console.ReadKey(); 
} 
Qual a afirmação é correta? 
Resposta: D) Mais de um dos programas mostram a tela. 
 
P) Um atributo serve para: 
Resposta: A) Indicar as possíveis informações armazenadas por um objeto de uma classe, representando o estado 
de cada objeto. 
 
P) Considere o seguinte programa: 
static void Main(string[] args) 
{ 
List<int> numero= new List<int>(); 
for (int i=1; i<=10;i++) 
numero.Add(i); 
 
numero.RemoveAt(6); 
numero.Remove(9); 
int soma=0; 
foreach (int c in numero) 
{ 
soma += c; 
} 
Console.WriteLine(soma); 
} 
Qual a saída? 
Resposta: A) 39 
 
P) Considere o programa abaixo: 
Class A 
{ 
public int n; 
public A(): this(2) { } public A(int valor) 
{this.n= valor + 3; 
} 
} 
Class B: A 
{ 
public int m; 
public B(): this(5) { } 
public B(int valor): base(valor) 
{ 
this.m= base.n +7; 
} 
} 
Class Program 
{ 
Static void Main(string[] args) 
{ 
B b1 = new B(); B b2 = new B(1); 
Console.WriteLine(b1.m+””+ b2.m); 
} 
} 
 
Qual a saída do programa acima? 
Resposta: C) 15 11 
 
P) Analise as afirmativas a seguir: 
I- Mensagem é uma chamada a um objeto para invocar um de seus métodos, ativando um comportamento descrito 
por sua classe. Também pode ser direcionada diretamente a uma classe (através de uma invocação a um método 
estático). 
II – Herança é o mecanismo pelo qual uma classe pode estender outra classe, aproveitando seus comportamentos 
(métodos) e variáveis possíveis (atributos). 
III – Associação é o mecanismo pelo qual um objeto utiliza os recursos de outro. Elas podem ter a forma “um-para-
um”, quando um objeto troca mensagens com outro, ou “um-para-muitos”, quando um objeto troca mensagens com 
uma coleção de outros objetos. 
Sobre as afirmativas apresentadas, assinale a alternativa correta: 
Resposta: E) As afirmativas I, II e III estão corretas. 
 
P) Segundo a Microsoft quais os pilares da programação orientada a objetos? 
Resposta: C) Herança, polimorfismo, encapsulamento. 
 
P) Leia o texto extraído do site Toyota.com.br: 
A Toyota apresentou no dia 19 de março o primeiro protótipo de veículo hibrido equipado com motor de combustão 
interna flexfuel. O projeto, que combina um propulsor elétrico e outro flexível a gasolina e etanol, colocou lado a lado 
as equipes de engenharia da Toyota Motor Corporation, no Japão, e da Toyota do Brasil, para somar esforços e 
buscar sintonia entre as tecnologias. 
O trabalho foi direcionado no sentido de extrair o potencial máximo de cada solução: alta eficiência, baixíssimos 
níveis de emissões e capacidade de reabsorção dos impactos de gás carbono, ao utilizar combustível oriundo de 
fonte 100% renovável. O protótipo foi construído sobre a plataforma do modelo Prius, usada como base para 
condução dos trabalhos. A marca ainda estuda possibilidades de produção desta tecnologia no Brasil no futuro. 
Considerando que na classe Carro e o método acelerar funciona administrando a combinação entre os 
combustíveis gasolina e álcool além de eletricidade entre os elementos motrizes. O computador de bordo 
identifica a disponibilidade do combustível e da bateria, além da velocidade necessária, processa as 
informações e envia como parâmetro ao método acelerar os valores do volume em mililitros, ou o valor da 
tensão em Volts para resultar na ação imposta pelo motorista. Este é um exemplo que ilustra uma 
característica da Orientação a Objetos chamada: 
Resposta: B) Polimorfismo 
 
P) O programa abaixo está sintaticamente correto, porém apresenta erros de regras de programação: 
 
abstract class A 
{ 
3 references 
public abstract void método( ); 
2 references 
public abstract ont método2( ); 
4 references 
public abstract void metodo3( ); 
} 
2 references 
 class Ḇ : A 
{ 
3 references 
public override void metodo1( ) { } 
4 references 
public override void metodo3( ) { } 
} 
2 references 
 class C : A 
{ 
2references 
public override void metodo2( ) { } 
4references 
Public override void metodo3( ) { } 
} 
Com relação a estes erros podemos afirmar que: 
I – Para remover os erros é necessário retirar todos os override. 
II – Para corrigir o erro da class C é necessário trocar o pito void pata int no motodo2 
III – Para corrigir todos os erros da class B é necessário acrescentar o método public override void metodo2() {} 
Assinale a alternativa correta: 
Resposta: E) Nenhuma das afirmações é verdadeira. 
 
P) Dos conjuntos de ferramentas fornecidos pelo C# qual não é utilizado para a programação de laços? 
Resposta: E) switch case. 
 
P) Leia as definições de laços a seguir: 
I – Possui três componentes para controle de suas interações (voltas de laço) sendo que o primeiro comportamento 
refere-se à declaração da variável de controle do laço. O segundo componente é uma expressão lógica que tem 
condição de encerramento a cada interação e o terceiro componente é o controle do laço que determinará o passo de 
cada interação. 
II – É usado quando não sabemos o número de vezes que devemos executar um bloco de código, mas apenas a 
condição que deve ser satisfeita para executar a condição é uma expressão booleana que deverá ser verdadeira 
para garantir pelo menos a primeira ou a próxima interação caso contrário o bloco não será executado. 
III – É usado para quando queremos que o bloco do código seja executado pelo menos uma vez. A condição 
satisfeita se encontra no fim do bloco do código e não no começo. 
Resposta: D) I-for, II-while, III-do while. 
 
P) Entre as principais vantagens da Programação Orientada a Objetos, podemos citar: 
Resposta: E) Tem uma alta reusabilidade. 
 
P) Analise as afirmativas a seguir: 
I – Mensagem é uma chamada a um objeto para invocar um de seus métodos, ativando um comportamento por sua 
classe. Também pode ser direcionada diretamente a uma classe (através de uma invocação a um método estático). 
II – Herança é o mecanismo pelo qual uma classe pode estender outra classe, aproveitando seus comportamentos 
(métodos) e variáveis possíveis (atributos). 
III – Associação é o mecanismo pelo qual um objeto utiliza os recursos de outros. Elas podem ter a forma “um-para-
um”, quando um objeto troca mensagens com outro, ou “um-para-muitos”, quando um objeto troca mensagens com 
uma coleção de outros objetos 
Sobre as afirmativas apresentadas, assinale a alternativa correta: 
Resposta: E) As afirmativas I, II e III estão corretas. 
 
P) O programa a seguir apresenta um erro, mas todos do mesmo tipo: 
namespace ProvaHr 
{ 
public class ContaCorrente 
{ 
private intnumero; 
private String cliente; 
private float saldo; 
private static int ultimoNumero = 1000; 
public ContaCorrente(String cliente) 
{ 
this.numero = ++ultimoNumero; 
this.cliente = cliente; 
} 
public void depositar(float valor) 
{ 
saldo += valor; 
} 
public void sacar(float valor) 
{ 
If (valor < saldo) 
 saldo -=valor; 
else 
Console.WriteLine(“Saldo insuficiente”); 
} 
} 
public class ContaEspecial:ContaCorrente 
{ 
public double limite; 
public ContaEspecial(String cliente, double limite) 
: base(cliente) 
{ 
this.limite = limite; 
} 
public void sacar(float valor) 
{ 
if (valor < (saldo – limite)) 
 saldo-= valor; 
else 
Console.WriteLine(“saldo insuficiente’); 
} 
} 
class Program 
{ 
Static void Main(string[] args) 
{ 
ContaCorrente c1 = new ContaCorrente(“Maria”); 
c1.depositar(100); 
ContaEspecial c3 = new ContaEspecial(“Paula”,500.00); 
c3.sacar(50); 
} 
} 
} 
Considere as possíveis soluções para o erro, sem comprometer a segurança: 
I – Colocar o construtor padrão nas classes ContaCorrente e Cinta especial. 
II – Alterar a privacidade dos atributos número, cliente e saldo de private para protected. 
III – Alterar a privacidade de todos os métodos depositar e sacar para private. 
Assinale a alternativa correta. 
Resposta: B) Apenas a solução II corrige o programa. 
 
P) No programa abaixo qual o código que deve ser colocado no quadro 1 para que saída corresponde à tela. 
 
static void Main(string[] argas) 
{ 
List <char> palavra = new List<char>(); 
palavra.Add(‘c’); 
palavra.Add(‘o’); 
palavra.Add(‘n’); 
palavra.Add(‘t’); 
palavra.Add(‘a’); 
palavra.Add(‘t’); 
palavra.Add(‘o’); 
Quadro 1 
foreach (char c in palavra) 
Console Write(c); 
Console.ReadLine(); 
} 
Resposta: B) palavra.RemoveAt(6); 
palavra.Remove(‘t); 
palavra.Remove (‘a); 
palavra.Add (‘a’); 
 
P) Sobre a declaração e uso de classes, métodos e atributos especificamente na linguagem de programação 
C#, é correto afirmar que: 
Resposta: A) Em uma mesma classe pode-se declarar dois métodos que apresentam o mesmo nome. 
 
P) Analise as seguintes afirmações: 
I – O uso de uma estrutura de repetição FOREACH é recomendado quando sabemos o número de repetições que 
serão executadas. 
II – Uma estrutura de repetição WHILE sempre terá os comandos pertencentes ao seu bloco principal executado pelo 
menos uma vez. 
III – Uma estrutura de repetição DO...WHILE sempre terá os comandos pertencentes ao seu bloco principal 
executado pelo menos uma vez. 
Assinale a alternativa correta: 
Resposta: C) Apenas a afirmação III é verdadeira. 
 
P) Leia a definição a seguir: 
“Consiste na separação de aspectos internos e externos de um objeto. Este mecanismo é utilizado amplamente, para 
impedir o acesso direto ao estado de um objeto (seus atributos), disponibilizando externamente apenas os métodos 
que alteram estes estados”. 
Qual é o conceito definido no trecho acima? 
Resposta: B) Encapsulamento 
 
P) Ao executar o programa abaixo: 
 
Qual a sequência das linhas executadas no processo, considerando-se como as linhas da classe as mesmas 
no objeto? 
Resposta: D) 26,12,13,15,16,17,18,19,27 
 
P) Segundo o livro-texto ...importante pesquisador que contribuiu para o desenvolvimento da POO foi Alan Curtis 
Kay, na Xerox, nos EUA. Em seus experimentos, Alan Kay estudava maneiras de interpretar os problemas do mundo 
real de uma maneira que o ser humano conseguisse abstrair os conceitos fundamentais de tal problema e inferi-los 
no mundo computacional. Dessa forma, Alan Kay percebeu que um substantivo isolado na mente de uma pessoa 
gera uma forma concreta, mas um verbo isolado na mente de uma pessoa não. Logo, um verbo faz parte de um 
substantivo. A partir dessas observações, Alan Kay definiu os princípios da POO. 
Qual das alternativas abaixo NÃO é um princípio da Programação Orientada a Objeto? 
Resposta: C) Cada objeto é independente, portanto, inagrupável em tipos (classes); 
 
P) Observando o programa a seguir: 
namespace ConsoleAppplication1 
{ 
 public class Data 
 { 
 public int dia, mes, ano; 
 public Data(int d, int m, int a) 
 { dia = d; mes = m; ano = a;} 
 public virtual void get() 
 { 
 Console.Write(dia + "/" + mes + "/" + ano); 
 } 
 public override string ToString() 
 { 
 return dia + "/" + mes + "/" + NO; 
 } 
 } 
 public abstract class Pessoa 
 { 
 public string nome; 
 public int identidade; 
 public Data nascimento; 
 public Pessoa(string n, int id, Data d) 
 { 
 nome = n; 
 identidade = id; 
 nascimento = d; 
 } 
 } 
 public class Funcionario : Pessoa 
 { 
 puclib Data admissao; 
 public float salario; 
 public Funcionario(string nome, int id, Data nasc, Data admiss, float sal): base (nome, id, nasc) 
 { 
 admissao = admiss; 
 salario = sal; 
 } 
 } 
 public class Gerente : Funcionario 
 {...} 
 {...} 
 class Program 
 { 
 public static void Main(string[] args) 
 { 
 Data dn = new Data(10, 12, 1980); 
 Data da = new Data(5, 8, 2012); 
 Funcionario f2 = new Funcionario ("Jose", 999, dn, da, 4000); 
 Gerente g1 = new Gerente("Contabilidade", da, 5000, da, dn, "Marcos", 99999); 
 Cliente c1 = new Cliente("Maria", 1111, dn, 3500); 
 Console.WriteLine(); 
 Console.WriteLine(); 
 Console.WriteLine(); 
 } 
 } 
} 
Qual dos métodos a seguir implementa o POLIMORFISMO? 
Resposta: E) Banco.valorEmprestimo 
 
P) Considere o programa a seguir: 
namespace Prova 
{ 
 abstract class Classe1 
 { 
 public virtual int soma(int a) 
 { 
 return a+1; 
 } 
 } 
 class Classe2: Classe1 
 { 
 public override int soma(int a) 
 { 
 return a+2; 
 } 
 } 
 class Classe3 : Classe1 
 { 
 public int soma(int a) 
 { 
 return base.soma(a+3); 
 } 
 } 
 class Classe4 : Classe3 
 { 
 public int soma(int a) 
 { 
 return base.soma(a+4); 
 } 
 } 
 class Program 
 { 
 static void Main(string[] args) 
 { 
 Classe2 c2 = new Classe2(); 
 Classe3 c3 = new Classe3(); 
 Classe4 c4 = new Classe4(); 
 Console.WriteLine("{0} {1} {2}", c2.soma(0), c3.soma(0), c4.soma(0)); 
 } 
 } 
} 
Qual é o resultado apresentado na tela? 
Resposta: A) 2 4 8 
 
P) Analise a figura e os códigos C# abaixo: 
 
Considere os seguintes programas: 
 
Podemos afirmar que: 
Resposta: A) Três dos códigos desenharão a figura 
 
P) Considerando o seguinte trecho de programa: 
class program 
{ 
 static void Main(string[] args) 
 { 
 string n1= “Joao Carlos”; 
 int x; 
 Aluno b11 = new Aluno(); 
 Aluno b12 = new Aluno(n1); 
 x = b11.result(n1); 
 n1 = b12.result(x); 
Se o programa não apresenta erros, pode-se concluir com relação a classe Aluno: 
I – Ela não necessita de sobrecarga do método construtor. 
II – Ela possui um método cujo cabeçalho é public int result(string v) sendo v uma variável que será utilizada dentro 
do método. 
III – Ela possui um método cujo cabeçalho é public string result(int v) sendo v uma variável que será utilizada dentro 
do método. 
Assinale a alternativa correta: 
Resposta: B) As conclusões II e III estão corretas. 
 
P) Considere a seguinte situação: 
Numa clínica veterinária é feita a castração de gatos. No programa, uma vez criada a instância do animal, o nome 
NÃO pode mais ser alterado, o seu RGA (Registro Geral do Animal) e a Castração poderão ser alterados 
externamente. 
Portanto, o requisito deste programa é: as informações SOMENTE poderão ser acessadas externamente pelo 
método imprime. 
Para isso, foram apresentadas 3 propostas: 
I. 
 public class Gato 
 { 
 private string nome; 
 public string rga; 
 public bool castrado; 
 public Gato(string n, string r, bool c) 
 { 
 this.nome = n; 
 this.rga = r; 
 this.castrado = c; 
 } 
 public void imprime() 
 { 
 Console.WriteLine(this.nome + “\n” + this.rga + “\n” + ((this castrado) ? “sim” : “não”)); 
 } 
 } 
 class Program 
 { 
 static void Main(string[] args) 
 { 
 Gato g1 =new Gato(“Frajola”, “sp555”, false); 
 g1.castrado = true; 
 g1.imrpime(); 
 } 
 } 
II. 
 public class Gato 
 { 
 private string nome; 
 {...} 
III. 
 {...} 
 { 
 return this.castrado; 
 } 
 public void imprime() 
 { 
 Console.WriteLine(this.nome + “\n” + this.rga + “\n” + ((this castrado) ? “sim” : “não”)); 
 } 
 } 
 class Program 
 { 
 static void Main(string[] args) 
 { 
 Gato g1 = new Gato(“Frajola”, “sp555”, false); 
 g1.setCastrado(true); 
 g1.imprime(); 
 } 
 } 
Assinale a alternativa correta. 
Resposta: B) Apenas a proposta de programa II atende ao requisito. 
 
P) Relacione a palavra-chave da linguagem C# à sua respectiva descrição: 
Palavra-chave: 
I. this 
II. base 
III. throw 
Descrição: 
(P) Usada para gerar uma exceção 
(Q) Em um método ou construtor, refere-se à superclasse. 
A relação correta é: 
Resposta: E) II – Q, III – P. 
 
P) Considere o seguinte programa: 
 class Fruta 
 { 
 public String nome; 
 } 
 class Program 
 { 
 static void Main(string[] args) 
 { 
 Fruta f1 = new Fruta(); 
 f1.nome = “Banana”; 
 Fruta f2 = new Fruta(); 
 f1 = f2; 
 f2.nome = “Laranja”; 
 Fruta f3 = new Fruta(); 
 f2 = f3; 
 f3.nome = “Manga”; 
 Console.WriteLine(“{0} {1} {2}”, f1.nome, f2.nome, f3.nome); 
 } 
 } 
Qual a saída? 
Resposta: D) Laranja Manga Manga 
 
P) A respeito dos conceitos de programação orientada a objetos e da linguagem de programação C#, assinale 
a opção correta: 
Resposta: D) Na linguagem C#, métodos abstract de classes abstract não têm implementação definida. As 
subclasses dessa classe abstrata definem implementação para tais métodos. 
 
P) Heranças podem ser definidas como: 
Resposta: B) A possibilidade do uso de uma classe em outra previamente existente reutilizando seus métodos e 
atributos. 
 
P) Abaixo temos um programa utilizando o Object: 
namespace UnipEADprv 
{ 
 class A 
 { 
 public A(){ } 
 public String ToString() 
 { 
 return “X”; 
 } 
 public A Dois() 
 { 
 return (A)this.MemberwiseClone(); 
 } 
 } 
 class Program 
 { 
 static void Main(string[] args) 
 { 
 A objA = new A(); 
 A objB = objA; 
 A objC = objA.Dois(); 
 if (Object.ReferenceEquals(objC, objA)) 
Console.WriteLine(“Y” + objA + “Z”); 
 else 
if (Object.Equals(objB, objA)) 
Console.WriteLine(objA + “Y” + “Z”); 
 else 
Console.WriteLine(objA + “Z” + “Y”); 
 } 
 } 
} 
Qual a sua saída? 
Resposta: E) UnipEADprv.AYZ 
 
P) Considere as afirmativas a seguir: 
I – A classe Object pode ser herdeira de qualquer outra classe podendo receber serviços das classes pais. Ela 
suporta todas as classes na hierarquia de classes recebendo serviços de baixo nível como herança. 
II – A classe Object é classe base fundamental de todas as classes, ela é a raiz da hierarquia de tipos. 
III – Qualquer método da classe Object pode ser sobrescrito nas subclasses utilizando o modificador virtual. 
Podemos afirmar que: 
Resposta: B) Apenas a afirmativa II está correta. 
 
P) Entre as frases abaixo, coloque a letra “O” para vantagem dos Programas Orientados a Objetos e a letra 
“E” para as vantagens dos Programas Estruturados: 
(E) Em termos de velocidade de processamento tem um desempenho superior. 
(E) O aprendizado do paradigma bem mais fácil no início. 
(O) Uma distribuição de código um pouco mais lógica, funcional e melhor encapsulada, tornando a manutenção e a 
extensão do código mais fácil e com menos riscos de inserção de erros. 
(O) É mais fácil gerenciar o desenvolvimento deste tipo de software em grandes equipes, partindo de uma 
especificação UML antes de iniciar o desenvolvimento do software em si. 
(E) Sem a necessidade de ter uma base conceitual bem formado, bastante saber poucos comandos e para fazer um 
programa simples. 
Resposta: A) E – E – O – O – E. 
 
P) Leia o texto extraído do site tecnoblog.net: 
O fim dos smartphones com bateria removível 
Por Felipe Ventura 
Anos atrás 
Especial 
Eu não compro um smartphone com bateria removível há anos. Meu último foi o Galaxy S2 Lite, substituído por um 
Nexus 4 em 2013. É um recurso cada vez mais raro de se encontrar, especialmente em se tratando de aparelhos top 
de linha. 
Como nota o The Next Web, o lançamento do LG V30 marca o fim dos smartphones high-end com bateria removível, 
em se tratando de grandes fabricantes. E para algumas pessoas, isso é um problema. 
LG V30 
A Samsung começou a abandonar baterias removíveis à medida que migrou de materiais em seus smartphones, 
deixando o plástico de lado para adotar metal e vidro. Vimos isso inicialmente no Galaxy Alpha, em 2014; e depois 
nos flagships Galaxy S6 e Note 5, em 2015. 
O Moto X nunca teve baterias removíveis. Elas são a exceção na linha Moto G (só o G5 e G4 Play têm isso), e ficam 
reservadas para os modelos mais baratos, como o Moto C/C Plus e Moto E4. 
A Sony adota baterias não-removíveis em seus flagships há muitos anos, desde os primeiros Xperia Z e Z1. A Asus 
também faz o mesmo em quase toda a sua linha, com poucas exceções (como o Zenfone 2 Laser, Zenfone Selfie e 
Zenfone Go). 
Conforme o texto acima, cada vez mais o acesso à bateria dos smartphones está sendo limitado. 
Em orientação a objeto, este processo no qual não temos mais acesso a um elemento interno, no caso a 
bateria, se chama: 
Resposta: D) Encapsulamento 
 
P) Leia a definição: 
“Acontece quando ocorre mais de um método de uma mesma classe com o mesmo nome, desde que suas listas de 
parâmetros sejam diferentes”. 
Qual alternativa relaciona-se com a definição apresentada? 
Resposta: B) Sobrecarga. 
 
P) Heranças podem ser definidas como: 
 class C1 : C2 
 { 
 public C1() 
 { 
 Console.WriteLine("1"); 
 } 
 } 
 class C2 
 { 
 public C2() 
 { 
 Console.WriteLine("2"); 
 } 
 } 
 class C3 : C1 
 { 
 public C3() 
 { 
 Console.WriteLine("3"); 
 } 
 } 
 class Program 
 { 
 static void Main(string[] args) 
 { 
 C3 c3 = new C3(); 
 } 
 } 
Resposta: B) 2 
 1 
 3 
 
P) A descrição abaixo refere-se a qual das técnicas apresentadas pelo paradigma da Programação Orientada 
a Objetos? 
“É uma forma de reutilização de software na qual uma nova classe é criada, observando membros de uma classe 
existente e aprimorada com capacidades novas ou mesmo modificadas de acordo com a necessidade da... atual”. 
Resposta: D) Herança 
 
P) Leia a definição a seguir: 
“É o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que tem 
a mesma identificação, mas comportamentos distintos, especializados para cada classe, derivada, usando para tanto 
uma referência a um objeto do tipo da superclasse”. 
Qual o conceito definido no trecho acima? 
Resposta: C) Polimorfismo 
 
P) Observe o código a seguir: 
public class Pessoa 
{ 
 private String nome; 
 private String humor; 
 public Pessoa(String nome) 
 { 
 this.nome = nome; 
 this.humor = "bom"; 
 } 
 public void saudar() 
 { 
 Console.WriteLine("Meu nome é " + nome + "."); 
 Console.WriteLine("Hoje estou de " + humor + " humor."); 
 } 
} 
Quais das alternativas mostra um comando válido para se criar um objeto dessa classe? 
Resposta: E) Pessoa p1 = new Pessoa(“Maria”); 
 
P) Os erros gerados durante a execução de um programa implementado na linguagem C# devem ser 
controlados com uma estrutura, que pode combinar o uso de qual dos seguintes blocos de tratamento de 
exceção apresentado a seguir? 
Resposta: E) No mínimo com try e catch. 
 
P) Um objeto pode ser definido como: 
Resposta: A) Uma instância de uma classe. 
 
P) O entendimento exato do que se trata a orientação é necessário, por exemplo, saber quais são os 
requerimentos de uma linguagem para ser considerada dentro desse paradigma. Para isso, a linguagem 
precisa atender a tópicos bastante importante,os chamados pilares da Programação Orientada a Objeto. O 
livro-texto cita três considerados fundamentais pela Microsoft. Um deles é a característica de segurança, que 
impede o acesso externo ao funcionamento do objeto, por exemplo, quando clicamos no botão ligar da 
televisão, não sabemos o que acontece internamente. Outro tópico é o relacionamento hierárquico de ações 
e características, por exemplo, temos o aluno e o monitor em uma disciplina, ou o aluno e o representante de 
sala. O monitor é um aluno com atribuições extras. O representante de sala é um aluno com mais 
responsabilidades. A terceira característica é a possibilidade de uma mesma mensagem ser enviada para 
objetos de natureza diferente, mas todos e... capazes de dar uma resposta. Para ilustrar esta característica 
temos o botão direito do mouse. Conforme o local onde ele é clicado, ele responde de uma forma diferente. 
Dessa forma, os três pilares da Programação Orientada a Objeto citados neste texto são: 
Resposta: D) Polimorfismo, Encapsulamento, Herança. 
 
P) O programa abaixo contém erros de sintaxe: 
 static void Main(string[] args) 
 { 
 /*Este programa fonte contém vários 
 * erros 
 * quantos são? 
 // 
 int a = Console.ReadLine(); 
 Console.writeLine(a); 
 } 
Resposta: B) 2 
 
P) Dadas as declarações abaixo: 
1) int[] a = new int [5]; 
2) float b = new float[3]; 
3) char[] c = new char[] {‘a’,’b’,’c’,’d’,’e’}; 
4) double d = double []; 
5) String e[4]; 
Quais criarão um vetor? 
Resposta: A) 1 e 3 
 
P) Considere o seguinte cenário: 
A lanchonete King Donald utiliza mistura em pó padrão para fazer o seu sorvete. A formula do pó padrão é alterada 
para serem distribuídos em dois granulados base, o sabor baunilha ou o sabor chocolate. Na lanchonete a maquina 
expressa que faz o sorvete a partir dos pós base produzindo três sabores, baunilha, chocolate e o misto. 
A partir deste sorvete base são produzidos outros mais elaborados, como o shake (adição de leite, e batido), o 
colegial (tamanho maior e cobertura), o sundae (tamanho maior, cobertura e frutas) e o mix (batido com diversos 
tipos de chocolate). 
A relação entre o sorvete base e os outros produtos em Orientação a Objeto é: 
Resposta: E) Herança 
 
P) Considere o programa abaixo: 
class TesteErro 
{ 
 public void testar(int valor) 
 { 
 if (valor > 0) 
 { 
 DivideByZeroException er1 = new DivideByZeroException(); 
 throw er1; 
 } 
 if (valor == 0) 
 { 
 IndexOutOfRangeException er2 = new IndexOutOfRangeException(); 
 throw er2; 
 } 
 if (valor < 0) 
 { 
 ArgumentException er3 = new ArgumentException(); 
 throw er3; 
 } 
 } 
} 
class Program 
{ 
 static void Main(string[] args) 
 { 
 TesteErro t1 = new TesteErro(); 
 try 
 { 
 Console.Write("Entre com um valor:"); 
 int n = Convert.ToInt32(Console.ReadLine()); 
 t1.testar(n); 
 } 
 catch(FormatException) 
 { 
 Console.WriteLine("Guitarra"); 
 } 
 catch(DivideByZeroException) 
 { 
 Console.WriteLine("Violino"); 
 } 
 catch(IndexOutOfRangeException) 
 { 
 Console.WriteLine("Piano"); 
 } 
 catch(ArgumentException) 
 { 
 Console.WriteLine("Bateria"); 
 } 
 } 
} 
Qual dos programas executou o programa acima: 
Resposta: B) 
 
 
P) No programa abaixo: 
 
Para trocar valor do atributo dia da data de MesDia para 3, qual o comando a ser colocado na linha 35? 
Resposta: E) m.getData().setDia(3); 
 
DISCURSIVAS 
 
 P) Considerando a afirmação a seguir: 
“As filas são estruturas baseadas no princípio FIFO (first in, first out), em que os elementos que foram inseridos no 
início são os primeiros a ser removidos.” 
Baseando-se neste princípio, crie uma lista enumerada de inteiros, chamada “Lista” e enfileire os números 
1,2,3,4 depois, retire da fila dois elementos, enfileire o número 5 e mostre na tela a fila completa. 
Resposta: 
class Program 
 { 
 public static void Main(string[] args) 
{ 
 List<int> Lista = new List<int>(); 
 Lista.Add(1); 
 Lista.Add(2); 
 Lista.Add(3); 
 Lista.Add(4); 
 Lista.RemoveRange(0, 2); 
 Lista.Add(5); 
 foreach (int i in Lista) 
 { 
Console.WriteLine(i); 
} 
} 
P) Leia a descrição abaixo: 
“A empresa Bluecar vende faz a transformação da picape Escuna. A partir da picape original adapta a sua caçamba 
convertendo em ambulância, transporte de pônei, e carro funerário. Desta forma a picape que vem da fábrica com 
uma motorização variável, transforma em ambulância com suporte ortopédico ou não, transporte de pôneis abertos 
ou fechados, e carros fúnebres com cores variados.” 
Utilizando estas informações monte o diagrama simples de classes. 
Resposta: ? 
 
P) Segundo diversos autores, o principal recurso introduzido pelo Paradigma Orientado a Objetos é a 
herança e uma de suas consequências, o polimorfismo. 
Explique o que é herança e como ela permite que se utilize polimorfismo entre objetos. 
Resposta: A herança permite criar novas classes a partir de classes já existentes, aproveitando-se das características 
existentes na classe a ser estendida, junto com o polimorfismo, nos permite selecionar funcionalidades que um 
programa irá utilizar de forma dinâmica, durante sua execução. 
P) Faça um programa que leia, num vetor v de números inteiros, dez números digitados pelo usuário e os 
mostre na tela na sequência inversa a que foi data a entrada. 
Resposta: 
 class Program 
 { 
 static void Main(string[ ] args) 
 { 
 Console.WriteLine("Digite 10 números: "); 
 int[ ] v = new int[10]; 
 for (int i = 0; i < 10; i++) 
 { 
 v[i] = int.Parse(Console.ReadLine()); 
 } 
 Array.Reverse(v); 
 foreach (int i in v) 
 { 
 Console.WriteLine(i); 
 } 
 } 
 } 
 
P) Considere a narração abaixo: 
As pilhas são estruturas baseadas no princípio LIFO (Last in, first out), em que os elementos que foram inseridos no 
fim são os primeiros e serem removidos. 
Baseado neste princípio, crie uma lista enumerada de inteiros chama “Pilha” e empilhe os números 1,2,3,4; depois 
retire da pilha dois elementos, empilhe o número 5 e mostre na tela a pilha completa. 
Resposta: 
class Program 
 { 
 public static void Main(string[] args) 
{ 
List<int> Pilha = new List<int>(); 
Pilha.Add(1); 
Pilha.Add(2); 
Pilha.Add(3); 
Pilha.Add(4); 
Pilha.RemoveRange(Pilha.Count -1, 1); 
Pilha.RemoveRange(Pilha.Count -1, 1); 
Pilha.Add(5); 
foreach (int i in Pilha) 
{ 
Console.WriteLine(i); 
} 
} 
 
 
P) Considere o diagrama de classe abaixo: 
 
Monte o código básico conforme o diagrama acima: 
Resposta: Sugestão de resposta: 
public class Pessoa 
 { 
 string Nome; 
 DateOnly Nascimento; 
 int CPF; 
 } 
 public class Aluno : Pessoa 
 { 
 string RA; 
 DateOnly Ingresso; 
 } 
 public class Funcionario : Pessoa 
 { 
 string Funcional; 
 float Salario; 
 } 
 public class Editora 
 { 
 string Nome; 
 } 
 public class Autor : Pessoa 
 { 
 Editora Editora; 
 } 
 public class Emprestimo 
 { 
 Aluno Aluno; 
 Funcionario Funcionario; 
 } 
 public class Livro 
 { 
 string Titulo; 
 Editora Editora; 
 Autor Autor; 
 string Isbn; 
 Boolean Status; 
 int Exemplar; 
 } 
 public class ItemEmprestimo 
 { 
 int NumItem; 
 Livro Livro; 
 DateOnly Saida; 
 DateOnly Devolucao; 
 } 
 
P) Considere o seguinte programa: 
class program 
{ 
 public static void Main(string[] args) 
 { 
 int a; 
 for (______________) 
 { 
 Console.WriteLine(a); 
 } 
 } 
} 
Qual é o código que deve ser escrito no retângulo vermelho para que a saída gerada pelo programa seja a 
seguinte? 
 
Resposta: a = 10; a >= 5; a— 
 
P) Leia a descrição a seguir: 
“Os bancos, para atender aos seus clientes, possuemduas frente de trabalho. Os caixas eletrônicos espalhados pela 
cidade, que são diretamente ligados ao banco, e as agencias tradicionais, que entre outras coisas, possuem os seus 
postos bancários dentro das empresas, fazem o atendimento VIP dos clientes que têm conta premium e possuem um 
anexo para o atendimento à pessoa jurídica”. 
Utilizando estas informações monte o diagrama simples de classes. 
Resposta: Sugestão de resposta incerta: 
 
 
P) Reescreva corrigindo o programa abaixo: 
 static void Main(string[] args) 
 { 
 int[] v = new int[10]; 
 float i; 
 for (i = 0; i <= 9; i++) 
 { 
 Console.Write("\nDigite o elemento {0} ", i+1); 
 v[i] = Console.ReadLine(); 
 } 
 for (i = 9; i >= 0; i--) 
 { 
 Console.WriteLine(v[i]); 
 } 
 } 
Resposta: 
 static void Main(string[] args) 
 { 
 int[] v = new int[10]; 
 int i; 
 for (i = 0; i <= 9; i++) 
 { 
 Console.Write("\nDigite o elemento {0} ", i+1); 
 v[i] = int.Parse(Console.ReadLine()); 
 } 
 for (i = 9; i >= 0; i--) 
 { 
 Console.WriteLine(v[i]); 
 } 
 } 
 
P) Qual é a saída gerada pelo seguinte programa? 
 class Program 
 { 
 static void Main(string[] args) 
 { 
 string texto1 = "quatro"; 
 string texto2 = "dois"; 
 try 
 { 
 int numero1 = Convert.ToInt32(texto1); 
 int numero2 = Convert.ToInt32(texto2); 
 Console.WriteLine("O resultado é {0}", numero1 / numero2); 
 } 
 catch (DivideByZeroException) 
 { 
 Console.WriteLine("Erro tipo 1"); 
 } 
 catch (FormatException) 
 { 
 Console.WriteLine("Erro tipo 2"); 
 } 
 } 
 } 
Resposta: A saída gerada é: Erro tipo 2 
 
P) Dado o programa a seguir: 
class Prova 
{ 
 private string disciplina; 
 private int questoes; 
} 
class Program 
{ 
 public static void Main(string[] args) 
 { 
 Prova p1 = new Prova(); 
 Prova p2 = new Prova (“P001”,10); 
 } 
} 
Monte na classe Prova um construtor sem parâmetros atribuindo os valores “LTP” para disciplinas e 8 
questões, e um construtor que faça a inicialização conforme a instancia p2. 
Resposta: 
class Prova 
 { 
 private string disciplina; 
 private int questoes; 
 public Prova() 
 { 
 this.disciplina = "LTP"; 
 this.questoes = 8; 
 } 
 public Prova(string disciplina, int questoes) 
 { 
 this.disciplina = disciplina; 
 this.questoes = questoes; 
 } 
 } 
 
P) Quando o programa a seguir é executado, resulta em um erro quando digitamos “ABC”. 
class Program 
 { 
 static void Main(string[] args) 
 { 
 string var = Console.ReadLine(); 
 double i = Convert.ToDouble(var); 
 Console.WriteLine("A variavel i vale {0}", i); 
 } 
 } 
Reescreva o programa implementando o tratamento de erro para o caso FormatException cujo o resultado é: 
 
Resposta: 
class Program 
 { 
 static void Main(string[] args) 
 { 
 string var = Console.ReadLine(); 
 try 
 { 
 double i = Convert.ToDouble(var); 
 Console.WriteLine("A variavel i vale {0}", i); 
 } 
 catch (System.FormatException err) 
 { 
 Console.WriteLine("Não é possível atribuir a string {0} a um Objeto Double", var); 
 } 
 } 
 } 
P) Faça um programa que leia na variável “nome”, o nome de uma pessoa, na variável “idade”, a sua idade e 
na variável “peso”, o seu peso considerando uma casa depois da virgula. Em seguida o programa deve 
mostrar na tela as três informações conforme a saída a seguir, sendo que a saída das informações foi escria 
em apenas uma linha utilizando-se técnica de formatação composta. 
 
Resposta: 
 class Program 
 { 
 static void Main(string[] args) 
 { 
 string nome = Console.ReadLine(); 
 int idade = int.Parse(Console.ReadLine()); 
 float peso = float.Parse(Console.ReadLine()); 
 Console.WriteLine("Nome:{0} idade:{1} peso:{2}", nome, idade, Math.Round(peso, 1)); 
 } 
 } 
 
P) Ao longo da história da computação, foram utilizados basicamente três paradigmas de desenvolvimento 
de sistemas. O primeiro foi um paradigma sem nome, o qual, mais tarde, ficou conhecido como Paradigma 
Não Estruturado, justamente pelo fato de ter sido substituído pelo Paradigma Estruturado. Atualmente, o 
principal paradigma de desenvolvimento de sistemas é o Paradigma Orientado a Objetos. 
Explique quais são os dois componentes de um paradigma de desenvolvimento de sistema. 
Resposta: São eles: Atributos e Métodos. Os atributos descrevem as características da classe e os métodos, as 
ações que a classe executa. 
 
P) Desenhe a classe em UML, utilizando a descrição a seguir. 
“Um computador pode ser montado com diversas configurações, sendo que é importante saber qual processador, o 
tamanho da sua memória RAM e o espaço em disco, pois afetam diretamente no seu desempenho Basicamente, 
para se começar a usar o computador basta ligá-lo e, se for necessário, fazer a sua configuração”. 
Resposta: Sugestão de resposta incerta: 
 
P) A principal inovação introduzida pelo Paradigma Estruturado em relação ao Paradigma Não Estruturado foi 
o abandono do uso de desvios incondicionais. Assim, uma linguagem estruturada só utiliza desvios 
condicionais como “if”, “for”, “while” e “do-while”. O próximo paradigma, o Paradigma Orientado a Objetos 
inova ao introduzir o conceito de objeto (entre diversos outros conceitos). . 
Explique o que é um objeto e explique suas partes componentes 
Resposta: Objeto é uma instancia de uma classe, capaz de armazenar estados, reagir a mensagens e se relacionar a 
outros objetos. 
 
P) Preencha corretamente os espaços do programa abaixo para que resulte na tela abaixo: 
 
 public class Pessoa 
 { 
 public Pessoa(String nome, int CPF) 
 { 
 this.Nome = nome; 
 this.CPF = CPF; 
 } 
 protected String Nome; 
 protected int CPF; 
 } 
 public class Aluno : Pessoa 
 { 
 public String RA; 
 public Aluno(): 01 
 { 
 this.RA = "AB1234XZ"; 
 } 
 public override string ToString() 
 { 
 return "NOME:" + 02 + "\nCPF:" + 03 + "\nRA:" + 04 
 } 
 } 
 class Program 
 { 
 static void Main(string[] args) 
 { 
 Aluno a = new Aluno(); 
 Console.WriteLine(a); 
 } 
 } 
Resposta: 01 = base("Mario", 111111) 
02 = this.Nome 
03 = this.CPF 
04 = this.RA; 
 
P) Considere o seguinte programa: 
class Program 
{ 
 public static void Main(string[] args) 
 { 
 int a; 
 for(a = 0; a <=10; a+=2) 
 { 
 Console.WriteLine(a); 
 } 
 } 
} 
Qual é o código que deve ser escrito no retângulo vermelho para que a saída gerada seja a seguinte? 
 
Resposta: a = 0; a <=10; a+=2 
 
P) Qual é a saída gerada pelo seguinte programa? 
class Program 
 { 
 static void Main(string[] args) 
 { 
 string texto1 = "4"; 
 string texto2 = "0"; 
 try 
 { 
 int numero1 = Convert.ToInt32(texto1); 
 int numero2 = Convert.ToInt32(texto2); 
 Console.WriteLine("O resultado é {0}", numero1 / numero2); 
 } 
 catch (DivideByZeroException) 
 { 
 Console.WriteLine("Erro tipo 1"); 
 } 
 catch (FormatException) 
 { 
 Console.WriteLine("Erro tipo 2"); 
 } 
 } 
 } 
Resposta: A saída gerada é: Erro tipo1 
 
P) Ao se escrever um programa em uma linguagem de alto nível tradicional como o C, o Pascal ou Cobol, 
utiliza-se um editor de arquivos texto para escrever o código. Esse código, então é traduzido para linguagem 
de maquina por um processo automático chamado compilação. Este código compilado, então, pode ser 
executado diretamente pelo sistema para o qual ele foi compilado. 
Explique como é o processo de elaboração de um programa usando a linguagem C# da Microsoft. 
Resposta: O C# é uma linguagem de programação orientada a objetos e orientada a componentes. O c# fornece 
construções de linguagem para dar suporte direto a esses conceitos, você define os tipos e seu comportamento, 
criando classes com atributos e métodos, a classe sendo instanciada gera um objeto, que define os rumos do 
programa em questão. A linguagem fornece a interface de execução do compilador, gerando assim um programa ao 
ser executado. 
 
P) Considere o programa abaixo: 
class Livro 
{ 
 public Livro() : this(new Autor(), new Editora(), "") {} 
 public Livro(Autor a, Editora e, string t) 
 { 
 this.autor = a; 
 this.editora = e; 
 this.titulo = t; 
 } 
 public Autor autor; 
 public Editora editora; 
 public string titulo; 
} 
class Autor 
{ 
 public string nome; 
} 
class Editora 
{ 
 public string nome; 
} 
class Program 
{ 
 static void Main(string[] args) 
 { 
 Livro I = new Livro(); 
 I.titulo = "Um cedo em Buenos Aires"; 
 I.autor.nome = "H.B"; 
 I.editora.nome = "Kotter"; 
 Console.WriteLine(I.titulo+I.autor.nome+I.editora.nome); 
 } 
} 
Reescreva o programa fazendo o encapsulamento pelo método dos getters e setters. Apenas os métodos 
necessários para o funcionamento do programa. 
Resposta: ? 
 
P) Uma vez que são definidas as classes e que são utilizadas dentro odo programa em forma de objetos, 
estes podem assumir duas formas de existência dentro do programa: objetos transientes ou objetos 
persistentes. Qual a diferença entre objetos transientes e objetos persistentes? 
Resposta: Transientes trabalham em meios voláteis, em memória, uma vez finalizada a execução do programa todos 
os dados referentes ao objeto são perdidos. Persistentes trabalham em meios não voláteis, discos ou banco de 
dados, permitindo que mesmo após finalizada a execução do programa os dados possam ser recuperados em uma 
próxima execução. 
 
P) Considere a seguinte classe Produto: 
 
 class Produto 
 { 
 protected string nome; 
 protected double preco; 
 public Produto(string nome, double preco) 
 { 
 this.nome = nome; 
 this.preco = preco; 
 } 
 public virtual void imprimeProduto() 
 { 
 Console.WriteLine("{0} custa R${1}", nome, preco); 
 } 
 } 
Escreva um programa (apenas o método Main) que instancie dois objetos da classe Produto e imprima seu 
conteúdo gerando a seguinte saída: 
 
Resposta: 
 class Program 
 { 
 static void Main(string[] args) 
 { 
 Produto produto1 = new Produto("Tomatinho", 3.0); 
 Produto produto2 = new Produto("Cebolina", 2.5); 
 produto1.imprimeProduto(); 
 produto2.imprimeProduto(); 
 } 
 }

Outros materiais

Outros materiais