Baixe o app para aproveitar ainda mais
Prévia do material em texto
GABARITO | Avaliação II - Individual (Cod.:) Peso da Avaliação 1,50 Qtd. de Questões 10 Acertos/Erros 9/1 Nota 9,00 Encapsular, basicamente, significa ocultar. No caso específico do Java, são marcados com modificadores de visibilidade os atributos, métodos ou classes que desejamos encapsular. São quatro os modificadores de visibilidade da linguagem de programação Java. Considerando esses modificadores, assinale a alternativa INCORRETA: A Protected: este modificador indica que o método será visível na subclasse de um relacionamento de herança. B Public: fornece acesso dentro da aplicação onde estiver declarado, no caso de classes, atributos ou métodos. Quando marcamos uma classe como public, queremos dizer que esta será visível a todas as demais classes da aplicação. C Default: o modificador default é implementado simplesmente não colocando nenhum modificador na frente da classe, atributo ou método. D Private: fornece acesso somente dentro da classe onde estiver declarado, no caso de atributos ou métodos. 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, assinale a alternativa CORRETA: (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)} A 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). VOLTAR A+ Alterar modo de visualização 1 2 B 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!!). C 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!!). D Não existe polimorfismo implementado entre as classes do código-fonte apresentado. A própria API do Java implementa a herança em diversos locais. Nas APIs descritas a seguir, assinale a alternativa INCORRETA: A MessageFormat, ChoiceFormat e SimpleDateFormat. B TextFormat, MessageFormat e ChoiceFormat. C NumberFormat, DateFormat e DecimalFormat. D Format, NumberFormat e SimpleDateFormat. 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, classifique V para as sentenças verdadeiras e F para as falsas: ( ) A herança possibilita o compartilhamento de atributos entre uma superclasse subclasse, limitando esse compartilhamento para os atributos indicados com o modificador "private". ( ) A palavra-chave extends define que uma classe está estendendo outra, que em outras palavras significa o uso de herança na linguagem de programação Java. ( ) A herança possibilita o compartilhamento de métodos entre uma superclasse subclasse, limitando esse compartilhamento para alguns tipos especiais de métodos. ( ) A herança de métodos é possível, porém os métodos construtores podem ser reescritos através do polimorfismo. Assinale a alternativa que apresenta a sequência CORRETA: A V - F - F - V. B F - V - F - F. C F - F - V - V. D V - V - V - F. 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. Uma classe construída através de herança pode ter alguns métodos e atributos. Sobre eles, assinale a alternativa INCORRETA: A Orientado: com herança de implementação, atributos e comportamento. B Novo: a nova classe adiciona um método ou atributo completamente novo. C Sobreposto: a nova classe herda o método da progenitora, mas fornece uma nova definição. D Recursivo: a nova classe simplesmente herda um método ou atributo da classe mãe. 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. Dessa forma, sobre esses relacionamentos, assinale a alternativa CORRETA: A Uma associação não permite o compartilhamento de métodos e de atributos entre classes. B Nos relacionamentos de associação, o conceito de subclasse é utilizado de maneira diferente do que nos relacionamentos de herança. 3 4 5 6 C Os dois tipos de relacionamento são implementados na linguagem de programação Java através de palavras reservadas. D Um relacionamento que responde de maneira positiva à pergunta "é um tipo de" representa uma associação ou uma herança. 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 erro de sintaxe e não usa corretamente a palavra-chave void. III- O método competirPor(int pais) não gera erros de sintaxe, e 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 III e IV estão corretas. B As sentenças I e III estão corretas. C As sentenças II e III estão corretas. D As sentenças II e IV estão corretas. Em uma aplicação Java orientada a objetos, um Analista precisa criar um tipo de classe que não pode ser instanciada diretamente e que deve possuir um conjunto de atributos privados, um construtor, métodos getter e setter, métodos implementados que deseja que várias subclasses compartilhem, e assinatura de métodos que deseja obrigar as subclasses a implementar de maneiras diferentes. Assinale a alternativa CORRETA que apresenta o tipo de classe que o Analista deverá criar: A Interface. B Classe abstrata. C Classe estática. D Classe concreta. 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, analise as sentenças a seguir sobre a correta sintaxe aplicada ao polimorfismo de sobrecarga para os dois métodos construtores da referidaclasse: public class Bicicleta{ 7 8 9 private char tamanhoQuadro; private int numeroMarchas; private char tamanhoRoda; public void movimentar(){ System.out.println("O objeto bike está em movimento!!"); } } I- public Bicicleta(char tamanhoQuadro, int numeroMarchas){ this.tamanhoQuadro = tamanhoQuadro; this.numeroMarchas = numeroMarchas; } public Bicicleta(){ this.tamanhoQuadro = tamanhoQuadro; this.numeroMarchas = numeroMarchas; } II- public Bicicleta(char tamanhoQuadro, int numeroMarchas, char tamanhoRoda){ this.tamanhoQuadro = tamanhoQuadro; this.numeroMarchas = numeroMarchas; this.tamanhoRoda = tamanhoRoda; } public Bicicleta(){ } III- public Bicicleta(char tamanhoQuadro, int numeroMarchas, char tamanhoRoda){ this.tamanhoQuadro = tamanhoQuadro; this.numeroMarchas = numeroMarchas; this.tamanhoRoda = tamanhoRoda; } public Bicicleta(int numeroMarchas, char tamanhoRoda){ this.tamanhoQuadro = tamanhoQuadro; this.numeroMarchas = numeroMarchas; this.tamanhoRoda = tamanhoRoda; } IV- public Bicicleta(int numeroMarchas){ this.numeroMarchas = numeroMarchas; } public Bicicleta(char tamanhoQuadro, int numeroMarchas){ this.tamanhoQuadro = tamanhoQuadro; this.numeroMarchas = numeroMarchas; } Assinale a alternativa CORRETA: A As sentenças II e III estão corretas. B As sentenças I e II estão corretas. C As sentenças III e IV estão corretas. D As sentenças II e IV estão corretas. Aprendemos que a classe abstrata não pode ser instanciada, servindo basicamente como um aglutinador de comportamentos e atributos comuns a subclasses. Alguns detalhes devem ser observados sobre os métodos abstratos. A respeito deles, assinale a alternativa INCORRETA: A Nas subclasses, a marcação de que determinado método está sendo sobrescrito ou sobreposto ocorre através de uma Annotation. B Métodos abstratos requerem definições abstratas. C Métodos abstratos somente podem ser definidos em classes abstratas. D Uma classe abstrata pode ter quantos métodos concretos (não abstratos) e abstratos forem necessários. 10
Compartilhar