Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação orientada a objetos 1 Questionário unidade 3 Questão 01 - Considere o seguinte trecho de código e assinale a alternativa que traz a saída que é apresentada quando o programa é executado: 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. Questão 02 - Considere o seguinte trecho de código e assinale a alternativa que traz a saída que é apresentada quando o programa é executado: 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 tomate também é atribuído, porque ambos são o mesmo objeto. Questão 03 - Observe o código abaixo e assinale a alternativa correta: 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. Questão 04 - Assinale a alternativa que explica corretamente qual é o erro do código abaixo: 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. Questão 05 - Observe o código abaixo e assinale a alternativa correta: 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. Questão 06 - Considere o seguinte trecho de código e assinale a alternativa correta: 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. Questão 07 - 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 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). Questão 08 - 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. 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. Questão 09 - 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. 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. Questão 10 - Qual das linhas abaixo apresenta uma declaração correta de um método? R: 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.
Compartilhar