Prévia do material em texto
GABARITO DE PROGRAMAÇÃO ORIENTADA A OBJETOS 1
QUESTIONÁRIO 1° MÓDULO
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.
R: 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.
2. Qual a novidade introduzida pelo paradigma estruturado que continua sendo adotada até hoje, mesmo quando utilizamos o paradigma orientado a objetos?
R: A proibição do uso de desvios incondicionais.
3. Qual das alternativas abaixo não se aplica ao conceito de “encapsulamento”?
R: Promover a reutilização de código.
4. Qual é a motivação para o surgimento do paradigma orientado a objetos?
R: O tratamento simultâneo de dados e comportamentos.
5. Qual é a relação entre classe e objeto?
R: O objeto é uma instância de uma classe.
6. Quando usamos as expressões “paradigma estruturado” e “paradigma orientado a objetos”, usamos o termo “paradigma” com qual significado?
R: Linguagem de programação e análise de sistemas.
7. Sobre a agregação, podemos dizer:
R: É uma associação em que pode ser entendido o relacionamento entre “o todo e a parte”.
8. Sobre a associação, podemos dizer:
R: É uma maneira de se relacionar classes entre si.
9. Sobre a generalização, podemos dizer:
R: É a maneira com que se podem definir atributos e métodos comuns a várias classes.
10. Sobre polimorfismo, é errado afirmar que:
R: Ajuda a economizar memória e aumentar a velocidade de processamento.
VÍDEO AULAS 1° MÓDULO
1. Qual a mudança proposta pelo paradigma orientado a objetos que o torna diferente do paradigma estruturado?
R: O tratamento simultâneo de dados e comportamentos que modificam estes dados.
2. Qual das alternativas abaixo não se aplica ao conceito de herança em orientação a objetos?
R: O uso de herança torna o programa mais eficiente no uso de memória e processamento.
3. Qual das seguintes afirmações é falsa?
R: Classes não podem se relacionar com outras classes, afinal, cada classe abstrai um único conceito.
4. Se estivermos modelando uma classe para representar um automóvel de passeio, qual dos seguintes atributos não seria apropriado?
R: CNH Do Proprietário.
QUESTIONÁRIO 2° MÓDULO
1. Considere o trecho do código em C# abaixo e escolha a alternativa correta:
int numero = 10:
numero = 10:
R: As variáveis numero e Numero são variáveis diferentes.
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.
2. Ao se 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);
R: 10
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 -.
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);
R: False e True
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
4. Ao se executar o seguinte trecho do código, quantas vezes o método “ConsoleWrite()” será executado?
For (int i = 10; ! = 0; i = -= 2)
{
Console.WriteLine(“i = {0}”, i);
}
R: 5 vezes.
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);
R: I = 10.
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.
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):
R: “ação”
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.
7. Qual das alternativas abaixo apresenta uma declaração de variável correta?
R: int a;
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.
8. Qual das alternativas abaixo está correta com relação ao Framework.NET?
R: É um conjunto de ferramentas necessárias para se executar qualquer sistema .NET
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.
9. Qual das linhas abaixo apresenta erros e não pode ser compilada?
R: int i = Console.ReadLine();
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.).
10. Quando compilamos um código fonte em alguma das linguagens do Framework.NET, nós obtemos:
R: Um código compilado em Linguagem Intermediária que pode ser executado em qualquer plataforma que possua um Framework.NET instalado;
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.
VÍDEO AULAS 2° MÓDULO
1. Qual será a saída gerada por esse código?
R: Nada.
2. Qual das alternativas abaixo pode ser atribuída como uma característica do Framework .NET?
R: É um ambiente capaz de executar código semicompilado para a Linguagem Intermediária .NET.
3. Qual das linhas abaixo faz uma declaração de variável de maneira correta?
R: string a = “5”;
4. Qual das seguintes declarações do laço for está incorreta?
R: for (int i = 0; i +5; i += 5)
QUESTIONÁRIO 3° MÓDULO
1.
R: Carmen, Prata.
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.
2.
R: Prata, Prata.
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 tomatetambém é atribuído, porque ambos são o mesmo objeto.
3.
R: A classe Exemplo apresenta um método construtor.
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.
4.
R: A classe Data não possui um construtor, que não recebe nenhum parâmetro.
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.
5.
R: O código compila sem erros.
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.
6.
R: O código é um exemplo de polimorfismo.
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.
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:
R: 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).
8. O que significa o modificador static?
R: Quando aplicado a um atributo, indica que ele terá o mesmo valor para todas as instâncias da classe.
9. O que significa “encapsular atributos”?
R: Significa que os atributos são declarados como privados e seu acesso é feito por métodos que garantem a integridade dos dados.
10. Qual das linhas abaixo apresenta uma declaração correta de um método?
R: void Metodo()
VÍDEO AULAS 3° MÓDULO
1. Assinale a alternativa incorreta.
R: Um atributo static tem seu valor constante, ou seja, não pode ser alterado.
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?
R: Com o polimorfismo entre classes, economizamos a escrita de código
3. Qual das alternativas abaixo pode ser afirmada com relação aos métodos construtores?
R: Uma classe pode ter mais de um método construtor.
4. Sobre os atributos e métodos de uma classe, podemos afirmar que:
R: atributos não apresentam parêntesis;
QUESTIONÁRIO 4° MÓDULO
1
R: A classe Program depende da classe Console.
Comentário: quando uma classe utiliza outra, a primeira depende da segunda.
2.
R: Ocorreu uma divisão por zero.
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.
3.
R: Erro de cast inválido.
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.
4. A classe Object não é:
R: Uma classe onde é declarado o método Main().
5. O que é uma interface?
R: Ela pode ser entendida como uma classe abstrata sem atributos e que defina apenas métodos abstratos.
6. Se uma classe especializa (herda de) uma classe abstrata:
R: Ela será concreta se sobrescrever todos os métodos abstratos da superclasse.
7. Sobre classes abstratas, assinale a alternativa correta.
R: Uma classe abstrata pode declarar métodos concretos e abstratos.
8. Sobre o mecanismo de tratamento de exceções, podemos dizer:
R: Pode tornar o programa mais tolerante a falhas.
9. Sobre o tratamento de exceções, podemos dizer:
R: Com um bloco try, podemos tratar várias exceções, cada uma tratada em um bloco catch.
10. Uma classe não pode:
R: Herdar de uma classe abstrata e uma classe concreta.
VÍDEO AULAS 4° MÓDULO
1 Qual das alternativas abaixo não é uma característica do tratamento de exceções?
R: O tratamento de todas as exceções pode tornar a manutenção do programa mais difícil.
2. Sobre a especialização de classes e a realização de interfaces, assinale a alternativa incorreta.
R: Interfaces só podem declarar atributos estáticos e constantes.
3. Sobre a especialização de classes e a realização de interfaces, assinale a alternativa incorreta.
R: Uma classe pode especializar uma classe concreta e uma classe abstrata.
4. Uma classe concreta (não abstrata) pode especializar uma classe abstrata ou uma classe concreta. Com isto em mente, assinale a alternativa correta.
R: Se a classe pai define um método abstrato, a classe filha deverá implementar este método ou também será uma classe abstrata.