Prévia do material em texto
1. A sobrecarga de métodos, considerada um tipo de polimorfismo, é um mecanismo que permite que dois ou mais métodos compartilhem o
mesmo nome, contanto que tenham diferentes conjuntos de parâmetros. Dessa forma, com o código-fonte apresentado, referente à classe
Bicicleta, e a correta sintaxe aplicada ao polimorfismo de sobrecarga para os dois métodos construtores da referida classe, classifique V para
as sentenças verdadeiras e F para as falsas:
public class Bicicleta{
private char tamanhoQuadro;
private int numeroMarchas;
private char tamanhoRoda;
public void movimentar(){
System.out.println("O objeto bike está em movimento!!");
}
}
( )
public Bicicleta(char tamanhoQuadro, int numeroMarchas, char tamanhoRoda){
this.tamanhoQuadro = tamanhoQuadro;
this.numeroMarchas = numeroMarchas;
this.tamanhoRoda = tamanhoRoda;
}
public Bicicleta(char tQuadro, int nMarchas){
this.tamanhoQuadro = tQuadro;
this.numeroMarchas = nMarchas;
}
( )
public Bicicleta(int numeroMarchas, char tamanhoRoda, char tamanhoQuadro){
this.numeroMarchas = numeroMarchas;
this.tamanhoQuadro = tamanhoQuadro;
this.tamanhoRoda = tamanhoRoda;
}
public Bicicleta(char roda){
this.tamanhoRoda = roda;
}
( )
public Bicicleta(char tamanhoQuadro, int numeroMarchas, char tamanhoRoda){
this.tamanhoQuadro = tamanhoQuadro;
this.tamanhoRoda = tamanhoRoda;
}
public Bicicleta(char tamanhoQuadro, int numeroMarchas){
this.tamanhoQuadro = tamanhoQuadro;
this.numeroMarchas = numeroMarchas;
this.tamanhoRoda = tamanhoRoda;
}
( )
public Bicicleta(){
this.numeroMarchas = numeroMarchas;
}
public Bicicleta(char tamanhoQuadro, int numeroMarchas, char tamanhoRoda){
}
Assinale a alternativa que apresenta a sequência CORRETA:
A) F - V - V - F.
B) F - V - F - V.
C) V - V - F - F.
D) V - F - F - V.
2. Uma das principais características da orientação a objetos é a possibilidade de ocultar partes do código de um objeto, chamada de
encapsulamento. Com o encapsulamento, cada parte do código-fonte é menor e independente de outras partes, isto é, cada método é específico,
realizando uma única operação, tornando o código-fonte mais reutilizável e legível. Com relação ao encapsulamento, assinale a alternativa
CORRETA:
A) Ao ocultar detalhes do código-fonte, aumenta-se o acoplamento.
B) A interface exposta de uma classe, se alterada para privada, encapsulada, não requer cuidado para os métodos chamadores.
C) O encapsulamento evita que alguma entidade externa altere os valores dos atributos de um objeto indevidamente.
D) O encapsulamento permite a instância de uma classe em memória.A) V - F - V - F.
3. A herança, juntamente ao encapsulamento, o polimorfismo e a abstração, representa um dos pilares da programação orientada a objetos e
pode, quando bem modelada e utilizada, diminuir o esforço na manutenção do código-fonte. Considerando o relacionamento de herança entre
duas ou mais classes, assinale a alternativa CORRETA:
A) Com a utilização do recurso de herança é possível compartilhar métodos entre uma classe pai e uma classe filha, porém esse compartilhamento
não é possível no tocante aos atributos.
B) Com a utilização do recurso de herança é possível compartilhar atributos entre uma classe pai e uma classe filha, porém esse compartilhamento
não é possível no tocante aos métodos.
C) A herança de métodos é possível, porém os métodos do tipo "get" e "set" devem ser reescritos através do polimorfismo.
D) A palavra extends define a herança na linguagem de programação Java.
4. 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 devem ser utilizados na solução de problemas diferentes. Sobre esses relacionamentos, analise
as sentenças a seguir:
I- Quando um relacionamento de associação é estabelecido entre duas ou mais classes, significa que os objetos dessas classes estão relacionados,
de alguma maneira, no mundo real.
II- Nos relacionamentos de associação, o conceito de superclasse é utilizado de maneira diferente do que nos relacionamentos de herança.
III- Os relacionamentos do tipo "associação" são implementados na linguagem de programação Java através das palavras reservadas "associate
to".
IV- Um relacionamento que responde de maneira positiva à pergunta "é um tipo de" representa uma herança.
Assinale a alternativa CORRETA:
A) As sentenças I e IV estão corretas.
B) As sentenças II e III estão corretas.
C) As sentenças I e III estão corretas.
D) As sentenças II e IV estão corretas.
5. 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);
}
}
I- A classe em questão não apresenta nenhum problema de sintaxe.
II- O método "competirPor(int pais)" está gerando um erro de sintaxe, e adicionando a palavra-chave "abstract", antes da palavra chave "void",
resolverá o erro gerado.
III- O método "competirPor(int pais)" não gera erros de sintaxe, logo não necessita da palavra-chave "abstract", antes da palavra-chave "void".
IV- O método "competir(String modalidade)" gera erro de sintaxe.
Assinale a alternativa CORRETA:
A) As sentenças II e III estão corretas.
B) As sentenças II e IV estão corretas.
C) As sentenças III e IV estão corretas.
D) As sentenças I e II estão corretas.
6. O encapsulamento ajuda a diminuir o acoplamento entre os objetos de um sistema, pois prega que somente o que é absolutamente necessário
deve ser exposto aos demais. Com relação ao encapsulamento, assinale a alternativa CORRETA:
A) Um bom cidadão é um objeto que tem todos os valores de seus atributos preenchidos no momento da instanciação.
B) O alto acoplamento é positivo, pois permite que os objetos se comuniquem com mais facilidade.
C) Para fazer uso do encapsulamento, basta modificarmos a visibilidade de nossos atributos.
D) Métodos também podem ser ocultados, no sentido de garantir um maior encapsulamento.
7. (Questão Anulada) O polimorfismo é caracterizado quando duas ou mais classes possuem o mesmo nome de método ou operação, e outra
classe, abstrata, possui um método com mesmo nome dos métodos das classes anteriores, podendo receber a invocação de qualquer um dos dois
objetos (classes instanciadas), executando a operação correta. Conforme exemplificado, a implementação de polimorfismo pode ocorrer através
de uma classe abstrata, cujos métodos são declarados, mas não definidos. Com relação ao código-fonte a seguir e ao polimorfismo da orientação
a objetos, assinale a alternativa CORRETA:
A) As classes abstratas "Carro" e "Caminhao" referenciam o comportamento da classe "Veiculo", e ao ser executada a classe "Teste", será
impresso primeiramente a mensagem "Acelerando o caminhão...." e depois "Acelerando o carro....".
B) Não existe polimorfismo implementado entre as classes do código-fonte apresentado.
C) Ao ser executada a classe "Teste", ocorrerá um erro designando que a instância da classe "Veiculo" nas linhas 19 e 20 são inválidas, pois
recebem a instância de classes de outro tipo ("Carro" e "Caminhao").
D) A classe abstrata "Veiculo" referencia o comportamento das classes "Carro" e "Caminhao", e ao ser executadaa classe "Teste", será impresso
primeiramente a mensagem "Acelerando o carro...." e depois "Acelerando o caminhão....".
8. 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, analise as sentenças a seguir:
(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)}
I- Apesar do código-fonte não lidar com classes abstratas, existe o polimorfismo implementado entre as classes do exemplo.
II- 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).
III- 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 (Parando o veículo utilitário!!).
IV- As classes Motocicleta e Suv referenciam o comportamento da classe Veiculo, e ao executarmos a classe Principal, será impresso
primeiramente a mensagem (Parando o veículo utilitário!!) e depois (Parando a motocicleta!!).
Assinale a alternativa CORRETA:
A) As sentenças I e II estão corretas.
B) As sentenças III e IV estão corretas.
C) As sentenças II e IV estão corretas.
D) As sentenças I e III estão corretas.
9. A coesão é a característica que faz com que uma classe tenha somente uma responsabilidade dentro do sistema, o que faz com que a sua
correção, em caso de erros ou a manutenção em caso de evolução, seja simplificada. No que se refere à coesão de uma classe, assinale a alternativa
CORRETA:
A) Uma classe coesa é, necessariamente, uma classe com alto acoplamento.
B) Tanto a coesão quanto o encapsulamento são obtidos na linguagem de programação Java através do modificador de acesso private.
C) Se uma classe tiver uma e somente uma responsabilidade, a probabilidade de esta sofrer manutenção diminui.
D) A coesão, embora seja uma característica importante, não auxilia o encapsulamento de uma classe.
10. Java é uma linguagem de programação interpretada orientada a objetos desenvolvida na década de 90 por uma equipe de programadores.
Observe a figura anexa que ilustra uma situação típica em que podemos aplicar o conceito de herança de classes em Java. Considerando os
conceitos de programação orientada a objetos, analise as sentenças a seguir:
I- A classe FormaGeometrica, indicada pela letra A, é considerada a superclasse das classes contidas na área indicada pela letra B.
II- Quadrado é uma classe filha da classe FormaGeometrica.
III- O método enfatizado pela letra C, calcularArea(), está sobrescrevendo a implementação da superclasse de Triangulo.
IV- A classe FormaGeometrica também é conhecida na linguagem Java como JGF.
Agora, assinale a alternativa CORRETA:
A) Somente a sentença III está correta.
B) As sentenças II e IV estão corretas.
C) As sentenças I e IV estão corretas.
D) As sentenças I, II e III estão corretas.