Prévia do material em texto
PROGRAMAÇÃO
1. O conceito de polimorfismo é um dos principais pilares do paradigma de programação orientada
a objetos, sendo um conceito com algumas características interessantes, como o caso da
coerção. Qual definição a seguir descreve melhor o conceito de coerção?
Coerção é o processo que permite que ocorra a sobrecarga de método, ou seja, permite que
determinada operação ocorra em tempo de execução.
É quando estiver ocorrendo a subida na cadeia de herança — isto é, da subclasse para a superclasse.
Permite converter um objeto de volta ao seu tipo de tempo de execução original ou a qualquer
uma de suas superclasses. (Alternativa correta)
Permite realizar correções no método que herdou as características de uma superclasse, caso tenha
ocorrido algum erro.
2. Analise o código e marque a alternativa incorreta.
public class BankAccount {
private long number;
private long balance;
public static class Permissions {
public boolean canDeposit, canWithdraw, canClose;
}
//..
}
Permissions é um membro da classe BankAccount.
O nome completo da classe é BankAccount.Permissions.
A classe Permissions é declarada dentro da classe BankAccount.
A classe Permissions não pode acessar os membros de BankAccount. (Alternativa correta)
3. Marque a afirmativa correta:
Uma categoria útil de classes pode ser descrita como atores. Essas classes servem para iniciar um
programa.
Se você não pode afirmar, a partir do nome da classe, o que um objeto da classe supostamente
deve fazer, provavelmente você não está no caminho certo. (Alternativa correta)
Uma classe deve ser criada para representar vários conceitos do domínio do problema.
Nomeamos uma classe utilizando um verbo que define o objetivo dessa classe.
4. Para podermos entender melhor e trabalharmos com polimorfismo, é de extrema importância
sabermos alguns conceitos, como as "Interfaces". Portanto, marque a alternativa que melhor define
interfaces em programação orientada a objetos.
Interfaces possuem variáveis de instância e métodos abstratos.
Diferentemente de uma classe, um tipo de interface não fornece nenhuma
implementação. (Alternativa correta)
Interfaces são classes que não podem ser instanciadas.
São classes que possuem apenas atributos.
5. O que são classes aninhadas?
São classes declaradas dentro de um mesmo projeto.
São classes declaradas dentro do mesmo pacote.
São classes que podem ser declaradas dentro de outras classes. (Alternativa correta)
São classes declaradas com a palavra-chave abstract.
6. Qual a relação do polimorfismo com interfaces e superclasses?
Quando uma classe herda membros de uma interface, ativa um comportamento polimórfico.
Quando uma classe implementa uma interface, ela se obriga a utilizar e implementar todos os
métodos da interface, com isso, temos um comportamento polimórfico. (Alternativa correta)
Quando um método existente em uma interface é usado por uma classe que não altera a
implementação do método, temos um comportamento de polimorfismo.
Há polimorfismo quando uma subclasse herda membros de uma superclasse.
7. Analise o código abaixo e marque a alternativa correta.
O código 2 está incorreto, pois o método locomover pertence à interface "InterfaceTeste". Quando a
classe "Formiga" implementou a interface, a mesma alterou a implementação do método.
O código 1 refere-se à criação de uma classe abstrata.
O código 4 está escrito de forma errada, pois, para utilizarmos uma interface, devemos colocar
a palavra-chave implements, não extends. (Alternativa correta)
O código 3 está escrito de forma correta.
8. Em orientação a objetos, temos as chamadas classes externas ou envolventes. Marque a
alternativa correta.
A melhor definição para classes externas ou envolventes seria a de uma superclasse.
Classes externas ou envolventes são classes declaradas com o modificador de acesso public.
Classes externas ou envolventes são classes que não estão no mesmo pacote.
Classes externas ou envolventes são classes que contêm ou encapsulam classes
aninhadas. (Alternativa correta)
9. Em uma estrutura de herança, para instanciarmos uma classe-filha, utilizamos qual
construtor?
Nenhum, pois estamos trabalhando com estrutura de herança.
Ambos os construtores.
O construtor da superclasse.
O construtor da subclasse. (Alternativa correta)
10. A forma geral de uma declaração class que herda uma superclasse é:
nome-subclasse extends nome-superclasse { //corpo da classe }
class nome-subclasse extends nome-superclasse ( //corpo da classe )
class nome-subclasse extends nome-superclasse { //corpo da classe } (Alternativa correta)
class nome-superclasse extends nome-subclasse{ //corpo da classe }
1. Em relação a construtores, marque a afirmativa incorreta.
Ao nomearmos um construtor, devemos colocar o mesmo nome da classe a que pertence.
O construtor não possui tipo de retorno.
Construtores não podem ter argumentos. (Alternativa correta)
Os modificadores de acesso do construtor podem ser: public, private e protected.
2. Considerando o paradigma de programação orientada a objetos, o polimorfismo é a habilidade
de objetos de classes diferentes responderem à mesma mensagem de maneiras diferentes. Qual das
alternativas a seguir é um tipo de polimorfismo?
Polimorfismo de classificação.
Polimorfismo de sobrecarga. (Alternativa correta)
Polimorfismo de instanciação.
Polimorfismo de abstração.
3. Referente a coesão e acoplamento, podemos afirmar que:
Acoplamento refere-se à dependência que as classes possuem em relação aos seus métodos.
A interface pública de uma classe é coesa se abrange todos os requisitos funcionais do sistema.
Quando a interface pública de uma classe referencia vários conceitos, é um bom sinal de que
pode ser hora de utilizar classes separadas. (Alternativa correta)
Uma classe coesa representa uma solução bem estruturada no que se refere à criação do objeto.
4. Marque a alternativa incorreta.
A única forma de usar super é a seguinte: super(). (Alternativa correta)
super( ) deve ser sempre a primeira instrução executada dentro de um construtor de subclasse.
Quando uma classe chama super(), está chamando o construtor de sua superclasse imediatamente.
super( ) sempre referencia a superclasse imediatamente acima da classe chamadora.
5. O polimorfismo dinâmico acontece na herança, quando a subclasse sobrepõe o método
superclasse. Desta maneira, o método escolhido ocorre em tempo de execução e não mais em tempo
de compilação. Considerando as propriedades do polimorfismo dinâmico, escolha a opção que
explique qual é a saída do seguinte programa:
Erro de tempo na execução.
Estudou polimorfismo. (Alternativa correta)
Erro de compilação.
Não estudou polimorfismo
6. O polimorfismo é um dos quatro pilares da programação de orientação a objetos. Portanto,
marque a opção que melhor descreva o conceito de polimorfismo.
Quando cada classe implementa o mesmo método de diferentes maneiras. (Alternativa correta)
Quando uma classe herda membros de outra classe.
Quando uma classe possui métodos abstratos.
Quando uma subclasse usa um método da superclasse.
7. O que é um pacote?
Servem para iniciar programas.
É uma forma de organizar os métodos.
É um conjunto de classes relacionadas. (Alternativa correta)
É um modificador de acesso.
8. Em relação ao polimorfismo, marque a alternativa incorreta.
O polimorfismo permite que programemos no geral, e não no específico.
Programar no específico é quando o programa determina o tipo de objeto no momento da execução.
A técnica de polimorfismo não permite que alteremos a implementação de um
método. (Alternativa correta)
Para trabalharmos com polimorfismo, podemos herdar métodos de uma superclasse ou
implementarmos uma interface.
9. Considere os dois tipos principaisde polimorfismo, o estático e o dinâmico. Qual é a principal
diferença do funcionamento desses dois tipos de polimorfismo?
A principal diferença entre o polimorfismo estático e dinâmico é que o estático é um tipo de
polimorfismo resolvido em tempo de compilação, enquanto o dinâmico é um tipo de polimorfismo
resolvido em tempo de execução. (Alternativa correta)
No polimorfismo estático a velocidade de execução é baixa e no polimorfismo dinâmico a velocidade
de execução é alta. Essa relação em nada tem a ver com o tempo de execução ou compilação.
Na prática, não existe diferença entre os tipos de polimorfismo, eles têm apenas nomes diferentes
conforme a linguagem de programação utilizada.
A principal diferença entre o polimorfismo estático e dinâmico é que o estático é um tipo de
polimorfismo resolvido em tempo de execução, enquanto o dinâmico é um tipo de
polimorfismo resolvido em tempo de compilação.
10. Em programação orientada a objetos, podemos ter classes internas e aninhadas. Marque a
alternativa correta.
Classes internas são classes que não acessam os membros de sua classe envolvente.
Uma classe aninhada ou estática tem acesso a qualquer membro da classe envolvente.
Classes internas e aninhadas possuem o mesmo conceito. Portanto, significam a mesma forma de
declaração.
Para declararmos uma classe aninhada ou estática, e necessário colocarmos a palavra-chave
static antes da palavra-chave class. (Alternativa correta)