Prévia do material em texto
Prova Impressa
GABARITO | Avaliação II - Individual (Cod.:825701)
Peso da Avaliação 1,50
Prova 66515865
Qtd. de Questões 10
Acertos/Erros 6/4
Nota 6,00
O polimorfismo é um mecanismo poderoso da programação orientada a objetos, pois permite
que se adicionem novas funcionalidades a um software sem alterar partes desse mesmo software que
já estejam funcionando. Com relação ao polimorfismo, classifique V para as sentenças verdadeiras e
F para as falsas:
( ) O polimorfismo de sobreposição consiste na colocação de novos parâmetros em outro método
que possua o mesmo nome de um método já existente.
( ) O polimorfismo paramétrico é altamente dependente da linguagem de programação, por este
motivo nem todas as linguagens de programação orientadas a objetos o implementam.
( ) A sobrecarga permite redefinir completamente um método, substituindo-o nas classes que
fizerem uso deste tipo de polimorfismo.
( ) As interfaces são uma maneira eficiente de implementar o polimorfismo.
Agora, assinale a alternativa que apresenta a sequência CORRETA:
A V - V - F - V.
B F - V - F - V.
C V - V - V - F.
D V - F - F - V.
O conceito de classes abstrata, através de suas características especiais, fornece ao conceito de
herança uma maior confiabilidade uma vez que as classes modeladas com herança precisam ser
melhor idealizadas e projetadas. Dessa forma, avalie o código-fonte da classe Atleta:
package fontes;
public class Atleta{
private int pais;
private String modalidade;
private boolean medalistaOlimpico;
public abstract void competir(String modalidade) {
System.out.println("É especialista em " + modalidade);
}
public void competirPor(int pais){
System.out.println("O atleta compete por " + pais);
}
VOLTAR
A+ Alterar modo de visualização
1
2
}
I- A classe em questão não apresenta nenhum problema de sintaxe.
II- O método competirPor(int pais) não está gerando nenhum erro de sintaxe e está usando
corretamente a palavra-chave void.
III- O método competirPor(int pais) gera erros de sintaxe, logo necessita da palavra-chave abstract
antes da palavra-chave void.
IV- O método "competir(String modalidade)" não gera erro de sintaxe.
Assinale a alternativa CORRETA:
A As sentenças III e IV estão corretas.
B As sentenças I e II estão corretas.
C As sentenças II e III estão corretas.
D As sentenças II e IV estão corretas.
Quando uma classe herda de outra, ela herda implementação, atributos e comportamento. Isso
significa que todos os métodos e atributos disponíveis na interface externa da classe mãe estarão
também na interface externa da filha (SINTES, 2002). Uma classe construída através de herança pode
ter tipos importantes de métodos e atributos.
FONTE: SINTES, Anthony. Aprenda programação orientada a objetos em 21 dias. Tradução João
Eduardo Nóbrega Tortello. São Paulo: Pearson Education do Brasil, 2002.
Sobre os tipos de métodos e atributos, assinale a alternativa INCORRETA:
A Novo.
B Sobreposto.
C Replicado.
D Recursivo.
Os modificadores de acesso são palavras reservadas da linguagem de programação Java e
definem os padrões de visibilidade de acesso às classes, aos atributos e aos métodos. Por intermédio
dos modificadores de acesso, é possível ocultar determinadas partes do código, dividindo o programa
em partes menores e independentes e esta ação, de ocultar e/ou dividir, é conhecida como
encapsulamento Acerca do conceito de encapsulamento e dos modificadores de acesso da linguagem
de programação Java, analise as afirmativas a seguir:
I- Uma declaração com o modificador "public" permite o acesso de qualquer lugar do projeto Java e
por qualquer entidade que possa visualizar a classe a que ela pertença.
II- Os membros de uma classe declarados com o modificador "protected" não podem ser acessados
ou utilizados por nenhuma outra classe.
III- Métodos declarados como "default" só podem ser acessados a partir dos métodos da própria
classe.
IV- O Java define quatro modificadores de visibilidade: "private", "public", "protected" e "default".
3
4
Agora, assinale a alternativa CORRETA:
A As afirmativas II e III estão corretas.
B As afirmativas I e IV estão corretas.
C Somente a afirmativa I está correta.
D As afirmativas II, III e IV estão corretas.
O polimorfismo é implementado de muitas formas dentro da linguagem de programação Java,
sendo que uma das mais utilizadas é a criação e a implementação de interfaces. Considerando a
criação e a utilização de interfaces dentro da linguagem de programação Java, analise o código fonte
da figura a seguir e classifique V para as sentenças verdadeiras e F para as falsas:
( ) A classe SHA faz a sobrecarga do método encript() nas linhas 8 a 12.
( ) O método encript() faz parte de uma interface chamada IAlgoritmoCriptografia.
( ) Se a classe SHA fosse abstrata, ela não poderia fornecer implementação para o método
gerarChaveCripto(Date data).
( ) Um vetor de IAlgoritmoCriptografia não pode conter um objeto do tipo SHA.
Agora, assinale a alternativa que apresenta a sequência CORRETA:
A V - V - F - V.
B F - V - F - F.
C V - V - F - F.
D V - F - V - V.
Diz-se que no paradigma da orientação a objetos, os objetos podem criar relações entre si, e
duas maneiras de se estabelecer uma relação entre objetos são através da associação e da herança que
5
6
devem ser utilizados na solução de problemas diferentes. Dessa forma, sobre esses relacionamentos,
assinale a alternativa CORRETA:
A Nos relacionamentos de associação, o conceito de subclasse é utilizado de maneira diferente do
que nos relacionamentos de herança.
B Uma associação não permite o compartilhamento de métodos e de atributos entre classes.
C Um relacionamento que responde de maneira positiva à pergunta "é um tipo de" representa uma
associação ou uma herança.
D Os dois tipos de relacionamento são implementados na linguagem de programação Java através
de palavras reservadas.
Dois dos relacionamentos mais utilizados na programação orientada a objetos são os
relacionamentos de herança e associação. Embora tenham algumas características comuns, estes
relacionamentos devem ser utilizados na solução de problemas diferentes. Com relação aos
relacionamentos de associação e herança, classifique V para as sentenças verdadeiras e F para as
falsas:
( ) A herança não permite a reutilização de métodos de superclasses, devido ao polimorfismo.
( ) Um relacionamento de associação é equivalente a um relacionamento de posse, pois a associação
é simplesmente a colocação de um atributo de determinado tipo em uma classe.
( ) Tanto a associação quanto a herança devem ser implementados na linguagem de programação
Java através de palavras reservadas.
( ) No relacionamento de herança, a subclasse deve responder positivamente à pergunta (é um tipo
de), feita para a superclasse.
Assinale a alternativa que apresenta a sequência CORRETA:
A F - V - F - F.
B F - V - F - V.
C V - V - F - F.
D V - V - V - F.
A utilização do recurso de Pacotes em Java permite uma melhor organização do código-fonte,
além de permitir que duas ou mais classes tenham o mesmo nome em pacotes diferentes. Juntamente
com eles, o uso dos modificadores de visibilidade compõe uma fórmula poderosa no tocante à
definição de segurança e encapsulamento de um programa ou aplicação. Sobre a utilização de
modificadores de visibilidade na linguagem de programação Java, classifique V para as sentenças
verdadeiras e F para as falsas:
( ) O modificador "default", aplicado para uma classe, permite o acesso a essa classe por uma classe
de outro pacote através do comando import.
( ) O modificador "default", definido para um método contido em uma classe pública, impede que o
método seja acessado por outra classe criada em outro pacote.
( ) O modificador "private", definido para um método contido em uma classe com o modificador
"default", não impede que o método seja acessado por outra classe criada no mesmo pacote.( ) O modificador "public", definido para um método contido em uma classe pública, elimina
qualquer tipo de restrição de acesso ao método, mesmo que ele seja acessado em uma classe criada
7
8
em outro pacote.
Assinale a alternativa que apresenta a sequência CORRETA:
A F - V - F - V.
B V - V - V - F.
C F - F - F - F.
D V - F - F - V.
O paradigma da orientação a objetos aplicada no desenvolvimento de software possui a
vantagem de tornar o código-fonte reutilizável, mais legível, e fácil de realizar manutenção. O
polimorfismo permite que outras classes representem o comportamento de classes que elas
referenciam. Com relação às classes criadas no código-fonte, classifique V para as sentenças
verdadeiras e F para as falsas:
(1)public class Veiculo {
(2) public void parar(){}
(3)}
(4)
(5)public class Motocicleta extends Veiculo{
(6) public void parar(){
(7) System.out.println("Parando a motocicleta!!");
(8) }
(9)}
(10)
(11)//Veiculo utilitario esporte (SUV: Sport Utility Vehicle)
(12)public class Suv extends Veiculo{
(13) public void parar(){
(14) System.out.println("Parando o veículo utilitário!!");
(15) }
(16)}
(17)
(18)public class Principal {
(19) public static void main(String[] args){
(20) Veiculo veiculo1 = new Motocicleta();
(21) Veiculo veiculo2 = new Suv();
(22)
(23) veiculo1.parar();
(24) veiculo2.parar();
(25) }
(26)}
( ) Não existe o polimorfismo implementado entre as classes do exemplo, uma vez que a classe
Veiculo não é uma classe abstrata.
( ) Ao executarmos a classe Principal, ocorrerá um erro designando que a instância da classe
Veiculo nas linhas 20 e 21 são inválidas, pois recebem a instância de classes de outro tipo
(Motocicleta e Suv).
( ) Existe o polimorfismo implementado entre as classes do exemplo, mesmo a classe Veiculo sendo
uma classe concreta.
( ) A classe Veiculo referencia o comportamento das classes Motocicleta e Suv, e ao executarmos a
classe Principal, será impresso primeiramente a mensagem (Parando a motocicleta!!) e depois
9
(Parando o veículo utilitário!!).
Assinale a alternativa que apresenta a sequência CORRETA:
A F - V - V - F.
B V - F - F - V.
C F - F - V - V.
D V - V - F - F.
Os modificadores de acesso possuem o objetivo de tornar classes, métodos ou atributos visíveis
ou invisíveis, facilitando o seu encapsulamento. Com estes modificadores, podemos, por exemplo,
liberar o acesso de um atributo de uma classe X por uma classe Y. Analise o código-fonte a seguir e
classifique V para as sentenças verdadeiras e F para as falsas:
( ) O método "getCodigo()"da classe "Carro" é visível em todas as classes do pacote.
( ) O método "getCodigo()"da classe "Carro" é visível somente na subclasse de um relacionamento
de herança.
( ) O método "getValor()"da classe "Carro" é visível somente na subclasse de um relacionamento de
herança.
( ) O método "getModelo()"da classe "Carro" é visível somente dentro da própria classe "Carro".
Assinale a alternativa que apresenta a sequência CORRETA:
A V - V - V - F.
B F - F - V - V.
C V - V - F - F.
10
D F - V - F - F.
Imprimir