Buscar

Programação Orientada a Objetos I - UNIP EAD - Provas

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

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.
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.
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.
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.
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
Qual é a relação entre classe e objeto?			
	Resposta Selecionada:	 a. O objeto é uma instância de uma classe.
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.
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 
Pergunta 7
Sobre a associação, podemos dizer:
Resposta Selecionada:	 d. É uma maneira de se relacionar classes entre si.
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 8
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.
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 9
Sobre polimorfismo, é errado afirmar que:
Resposta Selecionada:	 a. Ajuda a economizar memória e aumentar a velocidade de processamento.
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 10
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”.
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 11
Resposta Selecionada:	 e. 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.
Pergunta 12
Resposta Selecionada:	 a. 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 -.
Pergunta 13
Resposta Selecionada:	 c. 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
Pergunta 14
Resposta Selecionada:	 a. 5 vezes.
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 15
Resposta Selecionada:	 c. 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.
Pergunta 16
Resposta Selecionada:	 e. “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.
Pergunta 17
Qual das linhas abaixo apresenta erros e não pode ser compilada?
Resposta Selecionada:	 c. 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ávelnumé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 18
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;
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 19
Qual das alternativas abaixo apresenta uma declaração de variável correta?
Resposta Selecionada:	 c. 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.
			
Pergunta 20
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
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 21
Resposta Selecionada:	 a. 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.
Pergunta 22
Resposta Selecionada:	 d. 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 tomate também é atribuído, porque ambos são o mesmo objeto.
Pergunta 23
Resposta Selecionada:	 c. 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.
Pergunta 24
Resposta Selecionada:	 b. 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.
Pergunta 25
Resposta Selecionada:	 e. 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.
Pergunta 26
Resposta Selecionada:	 a. 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.
Pergunta 27
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.
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 28
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.
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 29
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.
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 30
Qual das linhas abaixo apresenta uma declaração correta de um método?
Resposta Selecionada:	 a. void Metodo()
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 31
Resposta Selecionada:	 a. A classe Program depende da classe Console.
Comentário: quando uma classe utiliza outra, a primeira depende da segunda.
Pergunta 32
Resposta Selecionada:	 d. 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.
Pergunta 33
Resposta Selecionada:	 a. 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.
Pergunta 34
A classe Object não é:
Resposta Selecionada:	 c. Uma classe ondeé declarado o método Main().
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 35
O que é uma interface?
Resposta Selecionada:	 c. Ela pode ser entendida como uma classe abstrata sem atributos e que defina apenas métodos abstratos.
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 36
Se uma classe especializa (herda de) uma classe abstrata:
Resposta Selecionada:	 d. Ela será concreta se sobrescrever todos os métodos abstratos da superclasse.
Comentário: uma classe que especialize uma superclasse abstrata só será concreta se sobrescrever todos os métodos abstratos herdados da superclasse.
Pergunta 37
Sobre classes abstratas, assinale a alternativa correta.
Resposta Selecionada:	 c. Uma classe abstrata pode declarar métodos concretos e abstratos.
Comentário: uma classe abstrata deve declarar ao menos um método abstrato e pode declarar qualquer quantidade de métodos concretos.
Pergunta 38
Sobre o mecanismo de tratamento de exceções, podemos dizer:
Resposta Selecionada:	 e. Pode tornar o programa mais tolerante a falhas.
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 39
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.
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 40
Uma classe não pode:
Resposta Selecionada:	 a. Herdar de uma classe abstrata e uma classe concreta.
Comentário: uma classe só pode herdar de uma classe, mas pode realizar quantas interfaces forem desejadas.

Outros materiais