Baixe o app para aproveitar ainda mais
Prévia do material em texto
Acadêmico: Tiago Rosa da Silva (3252647) Disciplina: Programação Orientada a Objetos (ADS17) Avaliação: Avaliação II - Individual ( Cod.:677028) ( peso.:1,50) Prova: 33273162 Nota da Prova: 6,00 Legenda: Resposta Certa Sua Resposta Errada 1. Por intermédio da herança e do encapsulamento, é possível implementarmos o polimorfismo, mecanismo que permite que duas ou mais classes derivadas de uma mesma superclasse possam criar e/ou invocar métodos com a mesma assinatura, mas com comportamentos diferentes. Com relação ao conceito de polimorfismo e sua implementação na linguagem Java, analise as afirmativas a seguir: I- Polimorfismo de inclusão, polimorfismo paramétrico, sobreposição e sobrecarga são exemplos de tipos de polimorfismo. II- O Java não permite a implementação do polimorfismo paramétrico. III- A técnica de sobrecarga pode ser utilizada para distinguir, em uma determinada classe, dois métodos com o mesmo nome, o mesmo retorno e o mesmo conjunto de argumentos, mas com uma lógica diferente. IV- Na sobrecarga de métodos, é necessário utilizar a anotação @Override. Agora, assinale a alternativa CORRETA: a) As afirmativas II e IV 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. 2. Define-se um objeto como a instância de uma classe, um objeto pode ser considerado como a "materialização" de uma classe. A linguagem de programação Java utiliza uma categoria especial de métodos para essa função, os chamados construtores que são invocados através do operador "new". Sobre a utilização de métodos construtores na linguagem de programação Java, classifique V para as sentenças verdadeiras e F para as falsas: ( ) Se não forem definidos parâmetros de inicialização, a linguagem de programação Java utiliza um construtor padrão sem parâmetros. ( ) Se uma classe contiver pelo menos um construtor com parâmetros, a instanciação de objetos com o construtor implícito, não declarado na classe, sem parâmetros (vazio) deixa de existir. ( ) Uma classe pode conter quantos construtores forem necessários, considerando a combinação de seus atributos, inclusive o construtor sem parâmetros. ( ) Uma classe pode conter apenas uma quantidade de construtores igual à quantidade de seus atributos. Assinale a alternativa que apresenta a sequência CORRETA: a) V - F - F - V. b) V - V - V - F. c) V - V - V - V. d) F - F - F - F. 3. 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. 4. 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 referida classe: public class Bicicleta{ 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 I e II estão corretas. b) As sentenças II e III estão corretas. c) As sentenças III e IV estão corretas. d) As sentenças II e IV estão corretas. 5. Quanto maior o acoplamento entre duas classes, maior o grau de relacionamento entre estas, o que é contrário aos princípios do encapsulamento. Assinale a alternativa CORRETA que explique um malefício causado pelo alto acoplamento: a) O alto acoplamento impede que os objetos se comuniquem livremente através de mensagens, deixando o sistema pouco flexível. b) Em um sistema em que ocorre alto acoplamento, a performance tende a ser baixa. c) Em uma situação na qual duas classes são fortemente acopladas, a comunicação entre estas torna-se mais difícil. d) Quanto maior o acoplamento, maior a dependência entre os objetos e, consequentemente, mais difícil a manutenção do código fonte. 6. 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, a seguir, e classifique V para as sentenças verdadeiras e F para as falsas: 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); } } ( ) A classe em questão não apresenta problemas de sintaxe. ( ) O método competirPor(int pais) está gerando erro de sintaxe e usa incorretamente a palavra-chave void. ( ) O método competirPor(int pais) possui um retorno de tipo definido. ( ) O método "competir(String modalidade)" não gera erro de sintaxe e usa a palavra-chave abstract corretamente. Assinale a alternativa que apresenta a sequência CORRETA: a) V - F - V - V. b) F - F - V - V. c) F - F - F - F. d) V - V - V - V. 7. 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 subclasse das classes contidas na área indicada pela letra B. II- Quadrado é uma classe filha da classe FormaGeometrica. III- A classe Triangulo tem como superclasse a classe FormaGeometrica. Agora, assinale a alternativa CORRETA: a) Somente a sentença I está correta. b) As sentenças I e III estão corretas. c) As sentenças IIe III estão corretas. d) As sentenças I e II estão corretas. 8. Através do encapsulamento, é possível deixar o software mais manutenível, através da centralização de responsabilidades, ocultação de implementação e exposição de interfaces. Com relação ao encapsulamento e sua implementação na linguagem de programação Java, analise as sentenças a seguir: I- Atributos também podem ser ocultados, no sentido de garantir um maior encapsulamento. II- O modificador default permite o acesso padrão a todos dentro da mesma aplicação. III- Quanto maior o acoplamento, maior a dependência entre os objetos e, consequentemente, mais difícil a manutenção do código fonte. IV- Tanto a coesão quanto o encapsulamento são obtidos na linguagem de programação Java através do modificador de acesso protected. Agora, assinale a alternativa CORRETA: a) Somente a sentença II está correta. b) As sentenças I e III estão corretas. c) As sentenças III e IV estão corretas. d) Somente a sentença IV está correta. 9. 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) V - V - F - F. c) V - F - V - V. d) F - V - F - F. 10.Na linguagem de programação Java, existem os modificadores de acesso que fornecem visibilidade ou invisibilidade para classes, métodos ou atributos. Através destes modificadores de acesso, pode-se tornar um atributo acessível para outra classe, por exemplo, ou ainda torná- lo visível apenas dentro da própria classe. Analise o código-fonte, escrito em linguagem de programação Java, a seguir e classifique V para as sentenças verdadeiras e F para as falsas: ( ) A classe "Carro" é visível em todas as demais classes da aplicação. ( ) Os atributos "codigo" e "modelo" são visíveis por todas as classes que delegarem a classe "Carro". ( ) O atributo "valor" é acessível apenas na subclasse do relacionamento de herança, se houver. ( ) O atributo "qtdePortas" é visível por todas as classes que delegarem a classe "Carro". Assinale a alternativa que apresenta a sequência CORRETA: a) V - F - F - V. b) F - V - F - F. c) V - V - V - F. d) V - F - V - V. Prova finalizada com 6 acertos e 4 questões erradas.
Compartilhar