Prévia do material em texto
• Pergunta 1
0,25 em 0,25 pontos
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.
Comentário
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
0,25 em 0,25 pontos
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.
Comentário
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
0,25 em 0,25 pontos
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.
Comentário
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
0,25 em 0,25 pontos
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.
Comentário
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.
Comentário
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
0,25 em 0,25 pontos
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.
Comentário
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
0,25 em 0,25 pontos
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.
Comentário 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
0,25 em 0,25 pontos
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.
Comentário
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 classespodem se
relacionar com o uso da associação.
• Pergunta 9
0,25 em 0,25 pontos
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.
Comentário
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
0,25 em 0,25 pontos
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.
Comentário
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.
• Pergunta 1
0,25 em 0,25 pontos
Considere o trecho de 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.
Comentário 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
0,25 em 0,25 pontos
Ao se executar o seguinte trecho de códifo, 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
Comentário 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
0,25 em 0,25 pontos
Observe o trecho de código abaixo e responda qual alternativa apresenta o conteúdo das
variáveis primeiro e segundo, respectivamente:
bool segundo = 7 > 5 && 7 % 5 ==1;
bool segundo = 4 * 3 != 10 && !(3 > 3);
Resposta Selecionada: c.
False e True
Respostas: a.
True e True
b.
True e False
c.
False e True
d.
False e False
e.
O programa apresenta erros
Comentário 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
0,25 em 0,25 pontos
Ao se executar trecho de código, quantas vezes o método Console.WiriteLine() será
executado ?
for (int i = 10; i != 0; -=2)
{
Console.WiriteLine("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.
Comentário
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:
• Pergunta 5
0,25 em 0,25 pontos
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.WiriteLine("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
Comentário
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
0,25 em 0,25 pontos
Observe o seguinte trecho de código e responda qual o valor será armazenado na variáel
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”
Comentário
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
0,25 em 0,25 pontos
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;
Comentário
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
0,25 em 0,25 pontos
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 parase 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.
Comentário 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
0,25 em 0,25 pontos
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());
Comentário
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
0,25 em 0,25 pontos
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.
Comentário
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.
• Pergunta 1
0,25 em 0,25 pontos
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;
}
class Program
{
static void Main(string[] args)
{
Vegetal tomate = new Vegetal();
Vegetal banana = new Vegetal();
tomate.Nome = "Carmen";
banana.Nome = "Prata";
console.WiriteLine("{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.
Comentário
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
0,25 em 0,25 pontos
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;
}
class Program
{
static void Main(string[] args)
{
Vegetal tomate = new Vegetal();
Vegetal banana = tomate();
tomate.Nome = "Carmen";
banana.Nome = "Prata";
console.WiriteLine("{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.
Comentário
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
{
public void Metodo()
{
}
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.
Comentário 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
0,25 em 0,25 pontos
Assinale a alternativa que explica corretamente qual é o erro do código abaixo:
class Data
{
public int Dia;
public int Mes;
public int Ano;
public Data(int Dia, int Mes, int Ano)
{
this.Dia = Dia;
this.Mes = Mes;
this.Ano = Ano;
}
}
class Program
{
stattic 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.
Comentário
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
0,25 em 0,25 pontos
Observe o código abaixo e assinale a alternativa correta:
class Vegetal
{
public string Especie;
}
class Legume : Vegetal
{
public string Nome;
{
class Program
{
static void Main(string[]args)
Legume l = new Legume();
l.Especie = "Lactuca Sativa";
l.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.
Comentário
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
0,25 em 0,25 pontos
Considere o seguinte trecho de código e assinale a alternativa correta:
class Vegetal
{
public string Especie;
}
class Legume : Vegetal
{
public string Nome;
}
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.
Comentário
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
0,25 em 0,25 pontos
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.
Comentário 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
0,25 em 0,25 pontos
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.
Comentário
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
0,25 em 0,25 pontos
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.
Comentário
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
0,25 em 0,25 pontos
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)
Comentário
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.
• Pergunta 1
0,25 em 0,25 pontos
Observe o código a seguir. O que pode ser dito a respeito das classes Program e Console?
class Program
{
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.
Comentário da
resposta:
Alternativa: A
Comentário: quando uma classe utiliza outra, a primeira depende
da segunda.
• Pergunta 2
0,25 em 0,25 pontos
Considere o código a seguir e assinale qual será a saída no console resultante de sua
execução:
Resposta Selecionada: d.
Ocorreu uma divisão porzero.
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.
Comentário
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
0,25 em 0,25 pontos
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.ToInt23(texto);
Console.WriteLine(10 / n);
}
catch (InvalidCastException)
{
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 (DivideByZeroException)
{
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.
Comentário
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
0,25 em 0,25 pontos
A classe Object não é:
static void Main(string[]args){
try
{
Object texto = "0";
int n = Convert.ToInt23(texto);
Console.WriteLine(10 / n);
}
catch (InvalidCastException)
{
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 (DivideByZeroException)
{
Console.WriteLine("Ocorreu uma divisão por
zero");
}
}
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.
Comentário 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
0,25 em 0,25 pontos
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.
Comentário
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
0,25 em 0,25 pontos
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.
Comentário 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
0,25 em 0,25 pontos
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.
Comentário 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
0,25 em 0,25 pontos
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.
Comentário 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
0,25 em 0,25 pontos
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 usar o bloco try sem usar nenhum bloco catch.
e.
Podemos usar o bloco catch sem usar nenhum bloco try.
Comentário 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
0,25 em 0,25 pontos
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.
Comentário da
resposta:
Alternativa: A
Comentário: uma classe só pode herdar de uma classe, mas pode
realizar quantas interfaces forem desejadas.
• Pergunta 1
0 em 0 pontos
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.
Comentário da resposta: Resposta: C.
• Pergunta 2
0 em 0 pontos
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.
Comentário da resposta: Resposta: A.
• Pergunta 3
0 em 0 pontos
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.
Comentário da resposta: Resposta: C.
• Pergunta 4
0 em 0 pontos
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.
Comentário da resposta: Resposta: E.
• Pergunta 1
0 em 0 pontos
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.
Comentário da resposta: Resposta: A.
• Pergunta 2
0 em 0 pontos
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.
Comentário da resposta: Resposta: A.
• Pergunta 3
0 em 0 pontos
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”;
Comentário da resposta: Resposta: E.
• Pergunta 4
0 em 0 pontos
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)
Comentário da resposta: Resposta: E.