Buscar

Programação Orientado a Objeto AVA Completo

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 22 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 22 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 22 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

Unidade I – Programação Orientada a Objetos 
Atividade Teleaula I 
 Pergunta 1 
Qual a mudança proposta pelo paradigma orientado a objetos que o torna diferente do paradigma estruturado? 
Resposta 
Selecionada: 
c. O tratamento simultâneo de dados e comportamentos que modificam estes dados. 
Respostas: a. A prática do reúso (reaproveitamento) de código, diminuindo o retrabalho. 
 b. Uso de desvios incondicionais, que permitem a elaboração de código mais fácil de ser 
entendido, tornando sua manutenção mais simples. 
 c. O tratamento simultâneo de dados e comportamentos que modificam estes dados. 
 d. Uso de herança entre classes. 
 e. Uso de polimorfismo. 
Feedback da resposta: Resposta: C. 
 
 
 Pergunta 2 
Qual das alternativas abaixo não se aplica ao conceito de herança em orientação a objetos? 
Resposta 
Selecionada: 
a. O uso de herança torna o programa mais eficiente no uso de memória e 
processamento. 
Respostas: a. O uso de herança torna o programa mais eficiente no uso de memória e 
processamento. 
 b. O uso de herança incentiva a prática do reúso. 
 c. O uso de herança torna o código mais fácil de ser entendido. 
 d. O uso de herança reduz o custo de manutenção do código. 
 e. O uso de herança só é possível em linguagens orientadas a objetos. 
Feedback da resposta: Resposta: A. 
 
 
 Pergunta 3 
Qual das seguintes afirmações é falsa? 
Resposta 
Selecionada: 
c. Classes não podem se relacionar com outras classes, afinal, cada classe abstrai um 
único conceito. 
Respostas: a. Objeto é uma instância de uma classe. 
 b. Objetos reúnem dados e comportamentos relacionados com um único conceito. 
 c. Classes não podem se relacionar com outras classes, afinal, cada classe abstrai um 
único conceito. 
 d. O uso de polimorfismo costuma tornar o código mais fácil de ser entendido. 
 e. O uso de polimorfismo pode reduzir a quantidade de linhas do código. 
Feedback da resposta: Resposta: C. 
 
 
 Pergunta 4 
Se estivermos modelando uma classe para representar um automóvel de passeio, qual dos seguintes atributos 
não seria apropriado? 
 
Resposta Selecionada: e. CNH Do Proprietário. 
Respostas: a. Placa. 
 b. Número De Chassis. 
 
 c. Nome Do Proprietário. 
 d. Quilometragem. 
 e. CNH Do Proprietário. 
Feedback da resposta: Resposta: E. 
 
 
Questionário Unidade I 
 Pergunta 1 
 
Considere a seguinte estrutura de classes: a classe Postagem representa o caso geral, e as classes Carta, 
Telegrama e Encomenda representam classes especializadas que herdam da classe Postagem. Assinale a 
alternativa correta: 
 
Resposta 
Selecionada: 
a. Um método que receba como parâmetro um objeto da classe Postagem poderá 
receber também um objeto das classes Carta, Telegrama e Encomenda. 
Respostas: a. Um método que receba como parâmetro um objeto da classe Postagem poderá 
receber também um objeto das classes Carta, Telegrama e Encomenda. 
 b. Um método que receba como parâmetro um objeto da classe Carta poderá receber 
também um objeto da classe Postagem. 
 c. Um método que receba como parâmetro um objeto da classe Postagem não poderá 
receber como parâmetro um objeto de qualquer outra classe. 
 d. Um método que receba como parâmetro um objeto da classe Encomenda também 
poderá receber um objeto da classe Carta e Telegrama. 
 e. Um método que receba um objeto da classe Telegrama também poderá receber um 
objeto de qualquer uma das classes do enunciado. 
Feedback 
da 
resposta: 
Resposta: A 
Comentário: com o uso do polimorfismo de classes, também conhecido como polimorfismo de 
objetos ou polimorfismo dinâmico, podemos tratar um objeto de uma classe como se fosse de 
outra, desde que a outra classe seja uma superclasse. Em outras palavras, quando uma classe 
pode ser utilizada, qualquer uma de suas subclasses também poderá ser. No exemplo do 
exercício, se um objeto da classe Postagem pode ser usado, um objeto de quaisquer de suas 
subclasses também poderá ser. Afinal, uma Carta é um tipo de Postagem, assim como um 
Telegrama e uma Encomenda. 
 
 
 Pergunta 2 
 
Qual a novidade introduzida pelo paradigma estruturado que continua sendo adotada até hoje, mesmo quando 
utilizamos o paradigma orientado a objetos? 
 
Resposta Selecionada: a. A proibição do uso de desvios incondicionais. 
Respostas: a. A proibição do uso de desvios incondicionais. 
 b. O uso de objetos. 
 c. O uso de classes. 
 d. O uso de polimorfismo. 
 e. O uso de herança. 
Feedback da 
resposta: 
Resposta: A 
Comentário: o paradigma estruturado surgiu quando se percebeu que o uso de desvios 
incondicionais costuma deixar o código de computador mais difícil de ser entendido, tornando 
sua manutenção demorada e cara. Por isso, mesmo no paradigma orientado a objetos, não se 
utilizam mais desvios incondicionais. 
 
 
 Pergunta 3 
 
Qual das alternativas abaixo não se aplica ao conceito de “encapsulamento”? 
Resposta 
Selecionada: 
b. Promover a reutilização de código. 
Respostas: a. Ocultar o comportamento de um algoritmo. 
 b. Promover a reutilização de código. 
 c. Ocultar a estrutura interna de um objeto. 
 d. Garantir que um objeto modele apenas aspectos relacionados ao conceito que ele 
abstrai. 
 e. Garantir que nenhum conceito relacionado ao objeto seja modelado em algum outro 
objeto. 
Feedback 
da resposta: 
Resposta: B 
Comentário: o encapsulamento significa que devemos isolar, ocultar, encapsular (colocar uma 
cápsula em torno de) um conceito. Qualquer dado e comportamento relacionados ao conceito 
modelado pelo objeto devem estar no próprio objeto. Além disso, se um dado ou 
comportamento diz respeito ao conceito modelado pelo objeto, ele não deve aparecer em 
nenhum outro objeto. 
 
 
 Pergunta 4 
 
Qual é a motivação para o surgimento do paradigma orientado a objetos? 
Resposta 
Selecionada: 
b. O tratamento simultâneo de dados e comportamentos. 
Respostas: a. O reúso de código. 
 b. O tratamento simultâneo de dados e comportamentos. 
 c. O aumento do desempenho de sistemas computacionais. 
 d. A redução do custo de processadores e memórias, permitindo a criação de sistemas 
cada vez mais complexos. 
 e. O surgimento de ambientes operacionais gráficos. 
Feedback 
da resposta: 
Resposta B 
Comentário: a ideia básica por trás do paradigma orientado a objetos é o desenvolvimento 
simultâneo de dados e dos comportamentos que manipulam esses dados numa única entidade, 
o objeto. Assim, o objeto modela um conceito tanto com os dados relacionados a esse conceito 
quanto com os comportamentos que utilizam e manipulam esses mesmos dados. 
 
 
 Pergunta 5 
0,25 em 0,25 pontos 
 
Qual é a relação entre classe e objeto? 
Resposta Selecionada: a. O objeto é uma instância de uma classe. 
Respostas: a. O objeto é uma instância de uma classe. 
 b. Uma classe é uma instância de um objeto. 
 c. Ambos são a mesma coisa. 
 d. A classe é o código-fonte e o objeto é o código compilado. 
 e. O objeto é o código-fonte e a classe é o código compilado. 
Feedback 
da 
resposta: 
Resposta: A 
Comentário: a classe é um conjunto de objetos que compartilham da mesma estrutura interna. 
Se dois objetos pertencem à mesma classe, ambos possuem os mesmos métodos e atributos, 
ainda que os valores armazenados pelos atributos sejam diferentes. Quando escrevemos um 
código de computador, estamos descrevendo uma classe com a qual vários objetos podem ser 
instanciados a partir dessa mesma classe. 
 
 
 Pergunta 6 
 
Quando usamos as expressões “paradigma estruturado” e “paradigma orientado a objetos”, usamos o termo 
“paradigma” com qual significado? 
 
Resposta Selecionada: d. Linguagem de programação e análise de sistemas. 
Respostas: a. Padrão. 
 b. Comportamento praticado de maneira automática. 
 c. Práticas de desenvolvimento que são ruins e, por isso, que devem ser abandonadas. 
 d. Linguagem de programação e análise de sistemas. 
 e. Metodologia de desenvolvimento de sistemas. 
Feedback da 
resposta:Resposta: D 
Comentário: nesse sentido, o termo “paradigma” é utilizado para se referir tanto à análise de 
sistemas quanto às linguagens de programação. Temos análise estruturada de sistemas e 
linguagens estruturadas de programação, assim como temos análise de sistemas orientada a 
objetos e linguagens de programação orientadas a objetos. 
 
 
 Pergunta 7 
 
Sobre a agregação, podemos dizer: 
Resposta 
Selecionada: 
a. É uma associação em que pode ser entendido o relacionamento entre “o todo e a 
parte”. 
Respostas: a. É uma associação em que pode ser entendido o relacionamento entre “o todo e a 
parte”. 
 b. Com a agregação podemos realizar a reutilização de código. 
 c. É a maneira com que se realiza a herança entre classes. 
 d. É um relacionamento entre classes que promove maior eficiência, reduzindo o uso de 
memória ocupada pelos objetos. 
 e. É como a orientação a objetos associa dados e comportamentos no objeto. 
Feedback da 
resposta: 
Resposta: A 
Comentário: quando temos duas classes que se relacionam com uma associação e, além disso, 
reconhecemos em uma delas o conceito de “todo” e na outra o conceito de “parte”, dizemos 
que a associação caracteriza uma agregação. 
 
 
 Pergunta 8 
 
Sobre a associação, podemos dizer: 
Resposta Selecionada: d. É uma maneira de se relacionar classes entre si. 
Respostas: a. É uma modalidade de polimorfismo. 
 b. Com a associação podemos realizar a reutilização de código. 
 c. É a maneira com que se realiza a herança entre classes. 
 d. É uma maneira de se relacionar classes entre si. 
 e. É como a orientação a objetos associa dados e comportamentos no objeto. 
Feedback 
da resposta: 
Resposta: D 
Comentário: cada classe deve abstrair um conceito por completo. Em geral, diferentes conceitos 
se relacionam no problema estudado. Por exemplo, o conceito de pessoa relaciona-se com o 
conceito de endereço e o de conta bancária. Assim, se esses conceitos forem abstraídos nas 
classes Pessoa, Endereço e Conta Corrente, essas classes podem se relacionar com o uso da 
associação. 
 
 
 Pergunta 9 
 
Sobre a generalização, podemos dizer: 
Resposta 
Selecionada: 
e. É a maneira com que se podem definir atributos e métodos comuns a várias 
classes. 
Respostas: a. É uma associação em que é possível reconhecer o relacionamento entre “oculto e 
visível”. 
 b. É uma associação em que é possível reconhecer o relacionamento entre “classe e 
objeto”. 
 c. É a manifestação do polimorfismo entre classes. 
 d. É a maneira como a orientação a objetos relaciona dados e comportamentos no 
objeto. 
 e. É a maneira com que se podem definir atributos e métodos comuns a várias 
classes. 
Feedback 
da 
resposta: 
Resposta: E 
Comentário: quando identificamos que diversas classes possuem atributos e/ou métodos em 
comum, podemos defini-los uma única vez numa classe que representa o caso geral. Com o uso 
da generalização, podemos então definir as classes especializadas que irão herdar as 
características (atributos e métodos) da classe geral. Assim, definem-se os atributos e métodos 
das classes especializadas uma única vez, promovendo o reúso de código. 
 
 
 Pergunta 10 
 
Sobre polimorfismo, é errado afirmar que: 
Resposta Selecionada: a. Ajuda a economizar memória e aumentar a velocidade de processamento. 
Respostas: a. Ajuda a economizar memória e aumentar a velocidade de processamento. 
 b. Melhora a clareza do código. 
 c. Ocorre quando se usa sobrecarga e sobrescrita. 
 d. Facilita o trabalho do programador. 
 e. Só existe no paradigma orientado a objetos. 
Feedback 
da 
resposta: 
Resposta: A 
Comentário: como praticamente todo recurso de orientação a objetos, o polimorfismo 
não ajuda a economizar memória ou poder de processamento. A orientação a objetos visa 
tornar o trabalho de desenvolvimento de sistemas mais fácil, permitindo que o 
desenvolvedor crie algoritmos cada vez mais complexos. Historicamente, esse paradigma 
passa a ser mais difundido conforme o custo de memória e de poder de processamento 
vai se tornando mais barato. 
 
 
 
Unidade II 
Atividade Teleaula II 
 Pergunta 1 
 
Qual a saída gerada por esse código? 
static void Main(string[ ] args) 
{ 
 int numero = 7 
 bool numeropar = numero % 2 ==0; 
 bool menorQueCinco = numero <5; 
 
 if (numeropar || menosQueCinco 
 { 
 Console.WriteLine(“O número é par e é menor que cinco”); 
 } 
 Console.ReadKey(); 
 
Resposta Selecionada: a. Nada. 
Respostas: a. Nada. 
 b. true. 
 c. false. 
 d. “O número é par e é menor que cinco”. 
 e. O programa apresenta erros. 
Feedback da resposta: Resposta: A. 
 
 Pergunta 2 
 
Qual das alternativas abaixo pode ser atribuída como uma característica do Framework .NET? 
Resposta 
Selecionada: 
a. É um ambiente capaz de executar código semicompilado para a Linguagem 
Intermediária .NET. 
Respostas: a. É um ambiente capaz de executar código semicompilado para a Linguagem 
Intermediária .NET. 
 b. Pode ser utilizado para criar sistemas usando as linguagens de programação .NET sem a 
necessidade de utilizar o Visual Studio. 
 c. Podemos criar sistemas .NET sem o Framework se estivermos usando o Visual Studio 
como ambiente de desenvolvimento. 
 d. Podemos executar sistemas .NET sem o Framework se o Visual Studio estiver disponível 
na máquina. 
 e. O Framework .NET só está disponível em sistemas que utilizem o Windows como 
sistema operacional. 
Feedback da resposta: Resposta: A. 
 
 
 Pergunta 3 
 
Qual das linhas abaixo faz uma declaração de variável de maneira correta? 
Resposta Selecionada: e. string a = “5”; 
Respostas: a. a = int 5; 
 b. float a = “5”; 
 c. double = 5; 
 d. short 5a; 
 e. string a = “5”; 
Feedback da resposta: Resposta: E. 
 
 
 Pergunta 4 
 
Qual das seguintes declarações do laço for está incorreta? 
Resposta Selecionada: e. for (int i = 0; i +5; i += 5) 
Respostas: a. for (int i = 5; i > 0; i--) 
 b. for ( ; i > 5; i++) 
 c. for (int i = 0; ; i += 5) 
 d. for (int i = 0; i > 5; ) 
 e.for (int i = 0; i +5; i += 5) 
Feedback da resposta: Resposta: E. 
 
 
 
Questionário da Unidade II 
 
 Pergunta 1 
 
Considere o trecho do código em C# abaixo e escolha a alternativa correta: 
int Numero = 10 
numero = 10 
 
Resposta 
Selecionada: 
e. As variáveis numero e Numero são variáveis diferentes. 
Respostas: a. O código armazena o valor 10 na variável numero duas vezes. 
 b. A primeira linha apresenta erro, pois não se pode atribuir um valor a uma variável na 
mesma linha em que ela é declarada. 
 c. A segunda linha é desnecessária, porque a variável já possui o valor 10 armazenado. 
 d. As atribuições estão erradas, pois o valor atribuído à variável deve estar entre aspas. 
 e. As variáveis numero e Numero são variáveis diferentes. 
Feedback da 
resposta: 
Alternativa correta: E. 
Comentário: a linguagem C# diferencia letras maiúsculas de letras minúsculas. Por isso, as 
variáveis numero e Numero são variáveis diferentes. Se a variável Numero não tiver sido 
declarada anteriormente, o trecho de código apresenta erros. 
 
 
 Pergunta 2 
 
Ao executar o seguinte trecho do código, qual será a saída gerada no console? 
Int a = 10 
Int b = 6 
Int c = 2 
Int d = 3 
Console.WriteLine(a+b/c-d); 
 
Resposta Selecionada: a. 10 
Respostas: a. 10 
 b. 5 
 c. 3 
 d. 6.5 
 e. 11 
Feedback da 
resposta: 
Alternativa correta: A. 
Comentário: o C# realiza as operações aritméticas com a mesma precedência da aritmética 
convencional, ou seja, são realizadas primeiro as operações *, / e % para só depois executar 
as operações + e -. 
 
 
 Pergunta 3 
 
Observe o trecho do código abaixo e responda, qual alternativa apresenta o conteúdo das variáveis primeiro e 
segundo, respectivamente: 
Bool primeiro = 7 > 5 && 7 % 5 ==1; 
Bool segundo = 4 * 3 ! = 10 && !(3 > 3); 
 
! 
 
Resposta Selecionada: c. False e True 
Respostas: a. Truee True 
 b. True e False 
 c. False e True 
 d. False e False 
 e. O programa apresenta erros 
 
Feedback da resposta: Alternativa correta: C. 
Comentário: 
primeiro = 7 > 5 && 7 % 5 == 1 
primeiro = True && 7 == 1 
primeiro = True && False 
primeiro = False 
segundo = 4 * 3 != 10 && !(3 > 3) 
segundo = 12 != 10 && !False 
segundo = True && True 
segundo = True 
 
 Pergunta 4 
 
Ao executar o seguinte trecho do código, quantas vezes o método “ConsoleWrite()” será executado? 
For (int iii===1000; !=0; i=.=2) 
{ 
 Console.WriteLine(“i={0}”, i); 
} 
 
Resposta Selecionada: a. 5 vezes. 
Respostas: a. 5 vezes. 
 b. 10 vezes. 
 c. Infinitas vezes. 
 d. Nenhuma vez. 
 e. O código apresenta erros. 
Feedback 
da 
resposta: 
Alternativa correta: A. Comentário: o primeiro parâmetro do loop for serve para definir e inicializar 
uma variável contadora, a qual pode iniciar com qualquer valor. O segundo parâmetro define um 
teste que deve resultar em True para que o loop continue iterando. O terceiro parâmetro é usado 
para se atualizar o valor da variável contadora, que neste caso é reduzida de dois em dois a cada 
iteração. Quando o valor de i torna-se igual a zero, o loop termina. A saída deste código é a 
seguinte: 
i=10 
i=8 
i=6 
i-4 
i=2 
 
 
 Pergunta 5 
 
Qual será a saída gerada pela execução do seguinte código: 
Int i; 
For (i=0; i<10; i++) 
{ 
 If (i>0) 
 { 
 Continue; 
 } 
} 
Console.WriteLine(“i={0}”, i); 
 
Resposta Selecionada: c. i = 10 
Respostas: a. i = 0 
 b. i = 1 
 c. i = 10 
 d. i = 11 
 e. O código apresenta erros 
 
Feedback 
da 
resposta: 
Alternativa correta: C. 
Comentário: o laço for será executado usando a variável i como contadora, iniciando com 0, 
sendo incrementada de um em um e será encerrada quando i = 10. Dentro do laço, o if será 
executado a partir da segunda iteração, quando i assume valores maiores que 0. Entretanto, o 
comando executado pelo if é o continue, que interrompe apenas a iteração corrente, mas não 
interrompe o laço que será executado até o final, quando i assume o valor 10. 
 
 Pergunta 6 
 
Observe o seguinte trecho do código e responda qual o valor será armazenado na variável “S”: 
String s = “Manipulação de strings”. Substring(7,4): 
 
Resposta Selecionada: e. “ação” 
Respostas: a. “Mani” 
 b. “ings” 
 c. “pulação” 
 d. “strings” 
 e. “ação” 
Feedback da 
resposta: 
Alternativa correta: E. 
Comentário: o método Substring pode ser executado diretamente de uma constante string, 
como feito neste exemplo. O primeiro parâmetro do método indica o índice do primeiro 
caractere obtido, enquanto que o segundo parâmetro indica o comprimento do substring 
obtido. 
 
 
 Pergunta 7 
 
Qual das alternativas abaixo apresenta uma declaração de variável correta? 
Resposta Selecionada: c. int a; 
Respostas: a. double d = “10.5”; 
 b. string = “10.5”; 
 c. int a; 
 d. string s = 10.5; 
 e. a = int 10.5; 
Feedback da 
resposta: 
Alternativa correta: C. 
Comentário: a declaração de variáveis deve sempre definir o tipo, um espaço e um nome para a 
variável. Na mesma linha da declaração pode-se fazer uma atribuição de valor à variável 
declarada, tomando o cuidado de atribuir um valor no mesmo tipo da variável: números inteiros 
para int, com ponto flutuante para double e entre aspas para strings. 
 
 
 Pergunta 8 
 
Qual das alternativas abaixo está correta com relação ao Framework.NET? 
Resposta 
Selecionada: 
b. É um conjunto de ferramentas necessárias para se executar qualquer sistema .NET 
Respostas: a. É o ambiente de desenvolvimento das linguagens C# e Visual Basic. 
 b. É um conjunto de ferramentas necessárias para se executar qualquer sistema .NET 
 c. Pode-se executar um sistema .NET sem ter o Framework .NET instalado, desde que haja 
alguma versão do Visual Studio instalada no computador. 
 d. A Microsoft desenvolve o Framework.NET para Windows e também para diversas outras 
plataformas, como o Linux e o MacOS. 
 e. Podemos compilar um programa .NET sem utilizar o Visual Studio. Para tanto, utilizamos 
o compilador de linha de comando disponível no Framework.NET. 
 
Feedback da 
resposta: 
Alternativa correta: B. 
Comentário: o Framework .NET é um software capaz de interpretar código compilado na 
plataforma .NET. Ele também oferece um runtime compartilhado para todos os programas 
.NET com bibliotecas compartilhadas. 
 
 Pergunta 9 
 
Qual das linhas abaixo apresenta erros e não pode ser compilada? 
Resposta Selecionada: c. int i = Console.ReadLine(); 
Respostas: a. string s = Console.ReadLine(); 
 b. long l = Convert.ToInt64(Console.ReadLine()); 
 c. int i = Console.ReadLine(); 
 d. float f = Single.Parse(Console.ReadLine()); 
 e. double d = Convert.ToDouble(Console.ReadLine()); 
Feedback 
da 
resposta: 
Alternativa correta: C. 
Comentário: o método Console.ReadLine() lê a entrada do usuário e a retorna sempre como um 
string. Para que a leitura do usuário seja armazenada em uma variável numérica, é necessário 
convertê-la. Pode-se fazer isto com os métodos de conversão da classe Convert ou com o 
método Parse das diversas classes invólucro que representam os tipos de dados (Int32, Single, 
Double, etc.). 
 
 
 Pergunta 10 
 
Quando compilamos um código fonte em alguma das linguagens do Framework.NET, nós obtemos: 
Resposta 
Selecionada: 
c. Um código compilado em Linguagem Intermediária que pode ser executado em 
qualquer plataforma que possua um Framework.NET instalado; 
Respostas: a. Um programa compilado em linguagem de máquina que pode ser executado 
diretamente por um computador na plataforma PC/Windows; 
 b. Um programa compilado em linguagem de máquina que pode ser executado 
diretamente por um computador em diversas plataformas; 
 c. Um código compilado em Linguagem Intermediária que pode ser executado em 
qualquer plataforma que possua um Framework.NET instalado; 
 d. Um código interpretado diretamente a partir do código fonte pelo Framework.NET em 
plataforma PC/Windows; 
 e. Um código interpretado diretamente a partir do código fonte pelo Framework.NET em 
qualquer plataforma dotada de um Framework.NET disponível. 
Feedback da 
resposta: 
Alternativa correta: C. 
Comentário: o código fonte de qualquer linguagem da plataforma .NET é compilado para uma 
Linguagem Intermediária (IL em inglês). Este código intermediário pode ser interpretado pelo 
Framework .NET da Microsoft na plataforma PC/Windows ou pelo Framework .NET do projeto 
Mono em diversas outras plataformas, entre elas o Linux e o MacOS. 
 
 
 
Unidade III 
Atividade Teleaula III 
 Pergunta 1 
 
Assinale a alternativa incorreta. 
Resposta 
Selecionada: 
c. Um atributo static tem seu valor constante, ou seja, não pode ser alterado. 
Respostas: a. Uma classe pode ter mais de um construtor. 
 b. O compilador decide qual sobrecarga de método utilizar a partir dos parâmetros 
passados para o método. 
 
 c. Um atributo static tem seu valor constante, ou seja, não pode ser alterado. 
 d. Um método static pode ser executado diretamente da classe, não necessitando de 
uma instância desta classe. 
 e. Um método static pode ser sobrecarregado. 
Feedback da resposta: Resposta: C. 
 
 Pergunta 2 
 
O paradigma orientado a objetos incentiva a prática da reutilização de código. Qual das alternativas abaixo não 
se aplica a este conceito? 
 
Resposta 
Selecionada: 
a. Com o polimorfismo entre classes, economizamos a escrita de código 
Respostas: a. Com o polimorfismo entre classes, economizamos a escrita de código 
 b. A delegação permite reutilizar classes em outras classes. 
 c. A herança entre classes faz com que definições de atributos e métodos sejam 
passados de uma classe a outra. 
 d. Podemos reutilizar um método construtor de uma superclasse invocando-o do 
construtor de uma subclasse. 
 e. A reutilização de código torna a manutenção do sistema mais rápida e barata. 
Feedback da resposta: Resposta:A. 
 
 
 Pergunta 3 
 
Qual das alternativas abaixo pode ser afirmada com relação aos métodos construtores? 
Resposta Selecionada: e. Uma classe pode ter mais de um método construtor. 
Respostas: a. Métodos construtores não possuem valor de retorno, por isso são sempre void. 
 b. Métodos construtores não podem receber parâmetros. 
 c. Métodos construtores podem ser executados a qualquer momento. 
 d. Métodos construtores podem ter qualquer nome. 
 e. Uma classe pode ter mais de um método construtor. 
Feedback da resposta: Resposta: E. 
 
 
 Pergunta 4 
 
Sobre os atributos e métodos de uma classe, podemos afirmar que: 
Resposta 
Selecionada: 
a. atributos não apresentam parêntesis; 
Respostas: a. atributos não apresentam parêntesis; 
 b. métodos só apresentam parêntesis se possuírem parâmetros; 
 c. atributos devem possuir uma implementação declarada na classe que será executada 
no objeto; 
 d. métodos sem parâmetros comportam-se como atributos; 
 e. métodos com retorno void devem possuir o comando return em sua implementação. 
Feedback da resposta: Resposta: A. 
 
 
 
Questionário da Unidade III 
 
 Pergunta 1 
 
Considere o seguinte trecho de código e assinale a alternativa que traz a saída que é apresentada quando o 
programa é executado: 
class Vegetal 
{ 
 public string Nome; 
} 
-references 
class Program 
{ 
 -references 
 static void Main(string[] args) 
 { 
 Vegetal tomate = nem Vegetal(); 
 Vegetal banana = new Vegetal(); 
 
 tomate.Nome = “Carmen”; 
 banana.Nome = “Prata”; 
 
 Console>WriteLine(“{0}”, “{1}”, tomate.Nome, banana.Nome); 
 } 
} 
 
 
Resposta Selecionada: a. Carmen, Prata. 
Respostas: a. Carmen, Prata. 
 b. Prata, Carmen. 
 c. Carmen, Carmen. 
 d. Prata, Prata. 
 e. O programa apresenta erros. 
Feedback da 
resposta: 
Resposta: A 
Comentário: no método Main() são instanciados dois objetos da classe Vegetal – tomate e 
banana. O atributo Nome de tomate recebe o valor “Carmen” e o valor do atributo Nome de 
banana recebe “Prata”. A saída é gerada com os valores dos nomes de tomate e banana, nessa 
ordem. 
 
 
 Pergunta 2 
 
Considere o seguinte trecho de código e assinale a alternativa que traz a saída que é apresentada quando o 
programa é executado: 
class Vegetal 
{ 
 public string Nome; 
} 
-references 
class Program 
{ 
 -references 
 static void Main(string[] args) 
 { 
 Vegetal tomate = nem Vegetal(); 
 Vegetal banana = tomate; 
 
 tomate.Nome = “Carmen”; 
 banana.Nome = “Prata”; 
 
 Console>WriteLine(“{0}”, “{1}”, tomate.Nome, banana.Nome); 
 } 
} 
 
Resposta Selecionada: d. Prata, Prata. 
Respostas: a. Carmen, Prata. 
 
 b. Prata, Carmen. 
 c. Carmen, Carmen. 
 d. Prata, Prata. 
 e. O programa apresenta erros. 
Feedback 
da 
resposta: 
Resposta: D 
Comentário: no método Main() é criada a referência tomate para uma nova instância da classe 
Vegetal. A seguir, na linha 18, é criada uma nova referência, banana, para a mesma instância 
referenciada por tomate. Ambas as referências apontam para o mesmo objeto na memória. 
Assim, quando a linha 20 atribui o valor “Carmen” ao atributo Nome de um dos objetos, ambos 
são atribuídos, porque na verdade só há um objeto na memória. Na linha 21 o mesmo ocorre: 
quando o programa atribui o valor “Prata” ao nome de banana, o Nome de tomate também é 
atribuído, porque ambos são o mesmo objeto. 
 
 Pergunta 3 
0,25 em 0,25 pontos 
 
Observe o código abaixo e assinale a alternativa correta: 
class Exemplo 
{ 
 -references 
 public void Metodo() 
 { 
 } 
 -references 
 public Exemplo() 
 { 
 } 
} 
 
 
 
Resposta Selecionada: c. A classe Exemplo apresenta um método construtor. 
Respostas: a. A classe Exemplo apresenta um método e um atributo. 
 b. A classe Exemplo apresenta dois atributos. 
 c. A classe Exemplo apresenta um método construtor. 
 d. A classe Exemplo apresenta dois métodos construtores. 
 e. A classe Exemplo apresenta erros. 
Feedback da 
resposta: 
Resposta: C 
Comentário: a classe Exemplo apresenta dois métodos, sendo um deles um método 
construtor. O método construtor pode ser identificado por não apresentar tipo de retorno 
(nem mesmo void) e ter o mesmo nome da classe. 
 
 
 Pergunta 4 
 
Assinale a alternativa que explica corretamente qual é o erro do código abaixo: 
Class Data 
{ 
 Public int Dia; 
 Public int Mes; 
 Public int Ano; 
 
 -references 
 Public Data(int Dia, int Mes, int Ano) 
 { 
 This.Dia = Dia; 
 This.Mes = Mes; 
 This.Ano = Ano; 
 } 
} 
-references 
 
Class Program 
{ 
 -references 
 Static void Main(string[] args) 
 { 
 Data d = new Data(); 
 } 
} 
Resposta 
Selecionada: 
b. A classe Data não possui um construtor, que não recebe nenhum parâmetro. 
Respostas: a. A classe Data não possui um construtor. 
 b. A classe Data não possui um construtor, que não recebe nenhum parâmetro. 
 c. Os parâmetros do método construtor da classe Data entram em conflito com os 
atributos da classe Data, pois são idênticos. 
 d. Os parâmetros do método construtor da classe Data são ambíguos com relação aos 
atributos da classe Data, pois são idênticos. 
 e. O código não apresenta erros. 
Feedback da 
resposta: 
Resposta: B 
Comentário: a classe Data apresenta apenas um método construtor, que recebe como 
parâmetros três parâmetros int. Assim, quando um objeto dessa classe é instanciado, como 
ocorre no método Main(), o construtor deve ser invocado, passando-se três parâmetros do 
tipo int. 
 
 
 Pergunta 5 
 
Observe o código abaixo e assinale a alternativa correta: 
Class Vegetal 
{ 
 Public string Especie; 
} 
-references 
Class Legume : Vegetal 
{ 
 Public string Nome; 
} 
-references 
Class Program 
{ 
 Static void Main(string[] args) 
 { 
 Legume 1 = new Legume(); 
 1.Especie = “Lactuca Sativa”; 
 1.Nome = “Alface”; 
 } 
} 
 
Resposta 
Selecionada: 
e. O código compila sem erros. 
Respostas: a. O código não compila, pois o objeto l da classe Legume não possui um atributo 
chamado Especie. 
 b. O código não compila, pois o objeto l da classe Legume não possui um atributo 
chamado Nome. 
 c. O código não compila, pois a declaração da classe Vegetal está errada. 
 d. O código não compila, pois a declaração da classe Legume está errada. 
 e. O código compila sem erros. 
 
Feedback da 
resposta: 
Resposta: E 
Comentário: a classe Legume é uma especialização da classe Vegetal, o que é evidenciado pela 
sua declaração (class Legume : Vegetal). Por isso, o atributo Especie é herdado pela classe 
Legume e não precisa (nem deve) ser declarado novamente. Dessa forma, a classe Legume, de 
fato, possui dois atributos: Especie e Nome. 
 
 Pergunta 6 
 
Considere o seguinte trecho de código e assinale a alternativa correta: 
Class Vegetal 
{ 
 Public string Especie; 
} 
-references 
Class Legume : Vegetal 
{ 
 Public string Nome; 
} 
-references 
Class Program 
{ 
 Static void Main(string[] args) 
 { 
 Vegetal v = new Legume(); 
 } 
} 
 
Resposta Selecionada: a. O código é um exemplo de polimorfismo. 
Respostas: a. O código é um exemplo de polimorfismo. 
 b. O código é um exemplo de sobrecarga. 
 c. O código é um exemplo de sobrescrita. 
 d. O código é um exemplo de delegação. 
 e. O código apresenta erros. 
Feedback 
da 
resposta: 
Resposta: A 
Comentário: no método Main() é declarada uma variável “v” do tipo Vegetal,mas essa variável 
recebe uma instância da classe Legume. Como Legume é uma especialização, um tipo de 
Vegetal, então ele pode ser utilizado em qualquer lugar onde um Vegetal pode ser utilizado. Em 
outras palavras, se um Vegetal “entra”, um Legume, que é um tipo de Vegetal, também “entra”. 
Se a variável “v” espera um Vegetal, ela pode armazenar um Legume, que é um tipo de Vegetal. 
 
 
 Pergunta 7 
 
A abstração de conceitos do mundo real em classes e objetos é a principal motivação para a formalização do 
paradigma orientado a objetos. Com isso em mente, assinale a alternativa correta: 
 
Resposta 
Selecionada: 
d. Uma classe representa um conjunto de objetos que compartilham as mesmas 
características e comportamentos. 
Respostas: a. As classes modelam os comportamentos do conceito enquanto os objetos modelam as 
características do conceito. 
 b. Os atributos e métodos de um objeto são herdados de sua classe. 
 c. Classes representam uma abstração estática enquanto objetos representam uma 
abstração dinâmica. 
 d. Uma classe representa um conjunto de objetos que compartilham as mesmas 
características e comportamentos. 
 e. Uma classe é uma instância de um objeto. 
 
Feedback da 
resposta: 
Resposta D 
Comentário: uma classe define as características dos objetos instanciados por ela, seus 
atributos e métodos. Dessa forma, todos os objetos dessa classe terão as mesmas 
características (atributos) e comportamentos (métodos). 
 
 Pergunta 8 
 
O que significa o modificador static? 
Resposta 
Selecionada: 
d. Quando aplicado a um atributo, indica que ele terá o mesmo valor para todas as 
instâncias da classe. 
Respostas: a. É um modificador aplicado a atributos, indicando que ele é uma constante e seu valor 
não pode ser alterado após ter sido inicializado. 
 b. Quando aplicado a um construtor, indica que ele não pode ser sobrescrito. 
 c. Quando aplicado a um método, indica que ele não pode ser sobrecarregado. 
 d. Quando aplicado a um atributo, indica que ele terá o mesmo valor para todas as 
instâncias da classe. 
 e. Quando aplicado a um método, indica que este é uma sobrescrita de um método de 
uma superclasse. 
Feedback da 
resposta: 
Resposta: D 
Comentário: o modificador static pode ser aplicado a métodos (exceto construtores) e a 
atributos. Quando isso é feito em um método, podemos usar tal método diretamente da classe, 
sem a necessidade de instanciar um objeto da classe. Quando static é aplicado a um atributo, 
este passa a ter o mesmo valor para todas as instâncias dessa classe. 
 
 
 Pergunta 9 
 
O que significa “encapsular atributos”? 
Resposta 
Selecionada: 
e. Significa que os atributos são declarados como privados e seu acesso é feito por 
métodos que garantem a integridade dos dados. 
Respostas: a. Significa que os atributos são declarados como públicos para permitir que sejam 
acessados diretamente por outras partes do sistema, tornando o código mais eficiente. 
 b. Significa que os atributos de uma classe são inicializados pelo método construtor de 
modo que o objeto esteja pronto para ser utilizado logo após ser instanciado. 
 c. Significa que os atributos seguem o padrão de estilo “camel case”. 
 d. Significa que os atributos pertencem à classe, não aos objetos instanciados por essa 
classe. 
 e. Significa que os atributos são declarados como privados e seu acesso é feito por 
métodos que garantem a integridade dos dados. 
Feedback 
da 
resposta: 
Resposta: E 
Comentário: atributos públicos, por terem acesso livre por qualquer parte do código, podem 
receber valores incorretos. Por exemplo, mês com o valor 42, dia da semana com o valor 
“tomate”, e assim por diante. Para resolver esse problema, tornamos os atributos privados e seu 
acesso é fornecido exclusivamente por métodos acessores (métodos que dão acesso) – um 
método “get” que retorna o valor do atributo e um método “set” que define o valor do atributo, 
caso o valor atribuído seja correto. 
 
 
 Pergunta 10 
 
Qual das linhas abaixo apresenta uma declaração correta de um método? 
Resposta Selecionada: a. void Metodo() 
Respostas: a. void Metodo() 
 b. int Metodo (int, string) 
 
 c. int retorno Metodo (int parametro) 
 d. Metodo (double parametro) 
 e. float Metodo (string parametro1 int parametro2) 
Feedback 
da 
resposta: 
Resposta: A 
Comentário: A declaração correta de um método é: [tipo de retorno] [nome do método] 
([declaração de parâmetros]) O tipo de retorno deve ser um tipo com o qual se possa declarar 
qualquer variável. Caso o método não tenha nenhum retorno, deve-se utilizar a palavra void. O 
nome do método pode ser criado ao gosto do desenvolvedor, desde que respeite as regras de 
sobrecarga e sobrescrita. Os parênteses são obrigatórios, mas a declaração de parâmetros é 
opcional. Caso o método receba um parâmetro, ele deve ser declarado segundo as regras de 
declaração de variáveis, ou seja, [tipo] [nome do parâmetro]. Caso o método receba mais de um 
parâmetro, eles devem ser separados por vírgulas. 
 
 
Unidade IV 
Atividade Teleaula IV 
 Pergunta 1 
 
Qual das alternativas abaixo não é uma característica do tratamento de exceções? 
Resposta 
Selecionada: 
e. O tratamento de todas as exceções pode tornar a manutenção do programa mais 
difícil. 
Respostas: a. O tratamento de exceções aumenta a estabilidade do sistema. 
 b. O tratamento de exceções deve ser feito sempre que há a possibilidade de ocorrência 
de um problema com a execução do programa. 
 c. O tratamento de uma exceção deve sempre permitir que o programa se recupere do 
problema que causou a exceção. 
 d. Um programa que é interrompido por uma exceção não tratada é um programa de 
baixa qualidade. 
 e. O tratamento de todas as exceções pode tornar a manutenção do programa mais 
difícil. 
Feedback da resposta: Resposta: E. 
 
 
 Pergunta 2 
 
Sobre a especialização de classes e a realização de interfaces, assinale a alternativa incorreta. 
Resposta 
Selecionada: 
b. Interfaces só podem declarar atributos estáticos e constantes. 
Respostas: a. Classes abstratas podem declarar atributos estáticos e não estáticos. 
 b. Interfaces só podem declarar atributos estáticos e constantes. 
 c. Ao se sobrescrever um método abstrato, deve-se usar a palavra-chave “override”. 
 d. Ao se implementar um método definido em uma interface não é necessário utilizar 
nenhuma palavra-chave. 
 e. Uma classe abstrata não precisa implementar métodos abstratos de uma classe pai. 
Feedback da resposta: Resposta: B. 
 
 
 Pergunta 3 
 
Sobre a especialização de classes e a realização de interfaces, assinale a alternativa incorreta. 
Resposta Selecionada: e. Uma classe pode especializar uma classe concreta e uma classe abstrata. 
Respostas: a. Uma classe pode especializar uma classe concreta ou uma classe abstrata. 
 b. Uma classe pode especializar uma classe concreta e realizar uma interface. 
 
 c. Uma classe pode especializar uma classe abstrata e realizar três interfaces. 
 d. Uma classe pode realizar qualquer número de interfaces. 
 e. Uma classe pode especializar uma classe concreta e uma classe abstrata. 
Feedback da resposta: Resposta: E. 
 
 Pergunta 4 
 
Uma classe concreta (não abstrata) pode especializar uma classe abstrata ou uma classe concreta. Com isto em 
mente, assinale a alternativa correta. 
 
Resposta 
Selecionada: 
b. Se a classe pai define um método abstrato, a classe filha deverá implementar este 
método ou também será uma classe abstrata. 
Respostas: a. Se a classe pai for abstrata, a classe filha também será. 
 b. Se a classe pai define um método abstrato, a classe filha deverá implementar este 
método ou também será uma classe abstrata. 
 c. Uma classe abstrata só pode declarar métodos abstratos. 
 d. Se uma classe herda um método abstrato, ela não pode sobrescrever este método. 
 e. Uma classe abstrata não pode ser subclasse de uma classe concreta. 
Feedback da resposta: Resposta: B. 
 
 
 
QuestionárioUnidade IV 
 
 Pergunta 1 
 
Observe o código a seguir. O que pode ser dito a respeito das classes Program e Console? 
Class Program 
{ 
 -references 
 Static void Main(string[] args) 
 { 
 Console.WriteLine(“Olá mundo!”); 
 } 
} 
 
Resposta 
Selecionada: 
a. A classe Program depende da classe Console. 
Respostas: a. A classe Program depende da classe Console. 
 b. A classe Program se associa à classe Console. 
 c. Existe um relacionamento de generalização entre as classes Program e Console. 
 d. A classe Program representa o todo e a classe Console representa a parte em um 
relacionamento de agregação. 
 e. Não é possível saber qual a relação entre as duas classes sem ter acesso ao código 
fonte da classe Console. 
Feedback da resposta: Alternativa: A 
Comentário: quando uma classe utiliza outra, a primeira depende da segunda. 
 
 
 Pergunta 2 
 
Considere o código a seguir e assinale qual será a saída no console resultante de sua execução: 
Static void Main(string[] args) 
{ 
 Try 
 { 
 Object texto = “0”; 
 
 Int n = Convert.ToInt32(texto); 
 Console.WriteLine(10 / n); 
 } 
 Catch (InvalidCastExcepetion) 
 { 
 Console.WriteLine( “Erro de cast inválido.”); 
 } 
 Catch (FormatException) 
 { 
 Console.WriteLine( “Erro de conversão de tipos.”); 
 } 
 Catch (NullReferenceException) 
 { 
 Console.WriteLine( “Erro de referência nula.”); 
 } 
 Catch ( DividyByZeroException) 
 { 
 Console.WriteLine( “Ocorreu uma divisão por zero.”); 
 } 
Resposta Selecionada: d. Ocorreu uma divisão por zero. 
Respostas: a. Erro de cast inválido. 
 b. Erro de conversão de tipos. 
 c. Erro de referência nula. 
 d. Ocorreu uma divisão por zero. 
 e. O programa não roda, pois apresenta erros. 
Feedback da 
resposta: 
Alternativa: D 
Comentário: o código consegue converter o string “0” mesmo estando armazenado em uma 
variável do tipo Object em um inteiro 0. A seguir divide 10 por 0, o que causa uma exceção de 
divisão por zero dentro do bloco try. Assim, a exceção é tratada pelo bloco catch que imprime a 
mensagem da alternativa no console. 
 
 
 Pergunta 3 
 
Considere o código a seguir e assinale qual será a saída no console resultante de sua execução: 
Static void Main(string[] args) 
{ 
 Try 
 { 
 Object texto = “0”; 
 Int n = (int)texto; 
 Console.WriteLine(10 / n); 
 } 
 Catch (InvalidCastExcepetion) 
 { 
 Console.WriteLine( “Erro de cast inválido.”); 
 } 
 Catch (FormatException) 
 { 
 Console.WriteLine( “Erro de conversão de tipos.”); 
 } 
 Catch (NullReferenceException) 
 { 
 Console.WriteLine( “Erro de referência nula.”); 
 } 
 Catch ( DividyByZeroException) 
 { 
 Console.WriteLine( “Ocorreu uma divisão por zero.”); 
 } 
 
Resposta Selecionada: a. Erro de cast inválido. 
Respostas: a. Erro de cast inválido. 
 b. Erro de conversão de tipos. 
 c. Erro de referência nula. 
 d. Ocorreu uma divisão por zero. 
 e. O programa não roda, pois apresenta erros. 
Feedback 
da 
resposta: 
Alternativa: A 
Comentário: o string “0” é armazenado na variável texto do tipo Object. Na linha seguinte, o 
código tenta fazer um cast da variável texto para int. Como a variável texto é do tipo Object e 
pode armazenar qualquer tipo de variável (inclusive int), o programa não apresenta erros de 
sintaxe e pode ser compilado. Entretanto, em execução, o cast não pode ser feito de um string 
para int, por isso ocorre uma exceção de cast inválido. 
 
 
 Pergunta 4 
 
A classe Object não é: 
Resposta 
Selecionada: 
c. Uma classe onde é declarado o método Main(). 
Respostas: a. Uma classe da qual todas as classes herdam. 
 b. Uma classe que declara métodos úteis para todas as outras classes. 
 c. Uma classe onde é declarado o método Main(). 
 d. Uma classe da qual podem ser criadas variáveis que podem armazenar objetos de 
qualquer classe. 
 e. Onde os métodos ToString() e Equals() são declarados. 
Feedback da 
resposta: 
Alternativa: C 
Comentário: o método Main() deve ser declarado em alguma classe criada pelo programador. 
A classe Object é parte do Framework .NET e não pode ser declarada novamente ou 
modificada. 
 
 
 Pergunta 5 
 
O que é uma interface? 
Resposta 
Selecionada: 
c. Ela pode ser entendida como uma classe abstrata sem atributos e que defina apenas 
métodos abstratos. 
Respostas: a. É o mecanismo de comunicação do programa com o usuário. A interface pode ser por 
linha de texto (console) ou ser uma interface gráfica. 
 b. É uma classe concreta que sobrescreve todos os métodos abstratos de sua superclasse. 
 c. Ela pode ser entendida como uma classe abstrata sem atributos e que defina apenas 
métodos abstratos. 
 d. Ela pode ser entendida como uma classe abstrata sem atributos e que defina apenas 
métodos concretos. 
 e. Ela define assinaturas de métodos com ou sem implementação. 
Feedback da 
resposta: 
Alternativa: C 
Comentário: uma interface é um conjunto de declarações de métodos, nenhum com 
implementação, que define um padrão para a declaração de classes. Ela se assemelha a uma 
classe abstrata que define apenas métodos abstratos. Em C#, interfaces não podem declarar 
atributos. 
 
 
 Pergunta 6 
 
Se uma classe especializa (herda de) uma classe abstrata: 
Resposta Selecionada: d. Ela será concreta se sobrescrever todos os métodos abstratos da superclasse. 
Respostas: a. Ela será sempre abstrata. 
 b. Ela sempre será concreta. 
 c. Ela será abstrata se sobrescrever todos os métodos abstratos da superclasse. 
 d. Ela será concreta se sobrescrever todos os métodos abstratos da superclasse. 
 e. Ela será concreta se sobrescrever ao menos um método abstrato da superclasse. 
Feedback da 
resposta: 
Alternativa: D 
Comentário: uma classe que especialize uma superclasse abstrata só será concreta se 
sobrescrever todos os métodos abstratos herdados da superclasse. 
 
 
 Pergunta 7 
 
Sobre classes abstratas, assinale a alternativa correta. 
Resposta Selecionada: c. Uma classe abstrata pode declarar métodos concretos e abstratos. 
Respostas: a. Uma classe abstrata só pode herdar de outra classe abstrata. 
 b. Uma classe abstrata pode ser instanciada em um objeto como uma classe concreta. 
 c. Uma classe abstrata pode declarar métodos concretos e abstratos. 
 d. Uma classe abstrata não pode declarar atributos. 
 e. Uma classe abstrata não pode ser uma especialização de uma classe concreta. 
Feedback da 
resposta: 
Alternativa: C 
Comentário: uma classe abstrata deve declarar ao menos um método abstrato e pode 
declarar qualquer quantidade de métodos concretos. 
 
 
 Pergunta 8 
 
Sobre o mecanismo de tratamento de exceções, podemos dizer: 
Resposta 
Selecionada: 
e. Pode tornar o programa mais tolerante a falhas. 
Respostas: a. É um mecanismo que ajuda a reduzir a quantidade de erros de sintaxe de um 
programa. 
 b. É um mecanismo que melhora a usabilidade de um programa. 
 c. Não consegue evitar a ocorrência de erros de tempo de execução. 
 d. Melhora o desempenho de um programa. 
 e. Pode tornar o programa mais tolerante a falhas. 
Feedback da 
resposta: 
Alternativa: E 
Comentário: o uso correto do tratamento de exceções pode fazer com que um programa 
consiga se recuperar de situações anômalas que, normalmente, fariam o programa ser 
interrompido com uma mensagem de erro. 
 
 
 Pergunta 9 
 
Sobre o tratamento de exceções, podemos dizer: 
Resposta 
Selecionada: 
a. Com um bloco try, podemos tratar várias exceções, cada uma tratada em um 
bloco catch. 
Respostas: a. Com um bloco try, podemos tratar várias exceções, cada uma tratada em um 
bloco catch. 
 b. Para cada bloco catch, devemos ter um bloco try. 
 c. Para cada bloco try, só podemos ter um bloco catch. 
 
 d. Podemos usaro bloco try sem usar nenhum bloco catch. 
 e. Podemos usar o bloco catch sem usar nenhum bloco try. 
Feedback da 
resposta: 
Alternativa: A 
Comentário: no bloco try, escrevemos o código que pode gerar uma exceção. Caso possam 
ocorrer mais de um tipo de exceção, elas podem ser tratadas separadamente, cada uma em 
seu bloco catch. Para cada bloco try deve haver ao menos um bloco catch. 
 
 Pergunta 10 
 
Uma classe não pode: 
Resposta Selecionada: a. Herdar de uma classe abstrata e uma classe concreta. 
Respostas: a. Herdar de uma classe abstrata e uma classe concreta. 
 b. Herdar de uma classe abstrata. 
 c. Realizar uma interface. 
 d. Herdar de uma classe e realizar duas interfaces. 
 e. Herdar de uma classe concreta e realizar uma interface. 
Feedback da 
resposta: 
Alternativa: A 
Comentário: uma classe só pode herdar de uma classe, mas pode realizar quantas 
interfaces forem desejadas.

Continue navegando