José Malcher Jr.

Eng. Software – Analista de Sistemas

Lista de Exercícios de Projeto e Implementação Orientado a Objeto – Lista 1


Questão 1
Encapsulamento é a técnica que faz com que detalhes internos do funcionamento dos métodos de uma classe permaneçam ocultos para os objetos.
Selecione a opção abaixo que apresenta a abrangência do modificador protected.
a) Acessado na classe, no pacote e na subclasse.
b) Acessado apenas na classe e na subclasse.
c) Acessado no pacote e na subclasse.
d) Acessado de qualquer lugar.
e) Acessado na classe e no pacote.


Questão 2
Em orientação a objetos, uma Função (ou função membro) é uma sub-rotina (ou procedimento ou função) associada a um objeto, e que possui acesso aos seus dados, as variáveis membro. Ele é executado por um objeto ao receber uma mensagem. Os métodos determinam o comportamento dos objetos de uma classe e são análogos às funções ou procedimentos da programação estruturada. O envio de mensagens (chamada de métodos) pode alterar o estado de um objeto.
Portanto marque a alternativa CORRETA referente aos métodos de uma classe:
a) No momento em que um método é chamado , seus argumentos são atribuídos a seus parâmetros. Então o corpo do método utiliza as variáveis de parâmetro para acessar os valores de argumento;
b) Em geral você pode chamar um método de uma classe, mesmo sem ter criado um objeto desta classe;
c) Um método pode especificar múltiplos parâmetros, separando cada parâmetro do seguinte por um ponto e vírgula;
d) O número de argumentos na chamada de um método não precisa necessariamente corresponder ao número de parâmetros definidos no método;
e) Nem todo parâmetro precisa especificar necessariamente o tipo ou o identificador.


Questão 3
(ENADE/2011) Considerando os conceitos da programação orientada a objetos, analise as afirmações abaixo.
I. O objeto tem determinadas propriedades que o caracterizam e que são armazenadas no próprio objeto. As propriedades de um objeto são chamadas de instâncias.
II. As mensagens são informações enviadas ao objeto para que ele se comporte de uma determinada maneira. Um programa orientado a objetos em execução consiste em envios, interpretações e respostas às mensagens. São os métodos, os procedimentos residentes nos objetos, que determinam como eles irão atuar ao receber as mensagens.
III. A herança é um mecanismo para o compartilhamento de métodos e atributos entre classes e subclasses, permitindo a criação de novas classes através da programação das diferenças entre a nova classe e a classe-pai.
IV. O encapsulamento é um mecanismo que permite o acesso aos dados de um objeto somente através dos métodos desse. Nenhuma outra parte do programa pode operar sobre os dados do objeto. A comunicação entre os objetos é feita apenas através de troca de mensagens.
É correto apenas o que afirma em:
a) I e II
b) I e III
c) III e IV
d) I, II e IV
e) II, III e IV


Questão 4
(EAOT/2011) Para que seja estabelecida a sobrecarga de métodos na linguagem Java, uma das características obrigatórias é a utilização de métodos:
a) Com a mesma assinatura.
b) Com o mesmo número de parâmetros.
c) O mesmo nome, declarados na mesma classe.
d) Herdados da superclasse direta.
e) Com métodos polimórficos.


Questão 5
5. (ENADE/2011) Eclipse, Netbeans, Jdeveloper são exemplos de ambientes integrados de desenvolvimento, chamados de IDE, que têm por objetivo facilitar o desenvolvimento de softwares, provendo maior produtividade e gerenciamento de projetos. A especificação JavaBeans foi criada para ser um padrão de desenvolvimento de componentes que possam ser facilmente usados por outros desenvolvedores em diferentes IDE. Com relação ao tema, analise as asserções a seguir:
Seja para o Netbeans ou para o Eclipse, é possível adquirir componentes de terceiros que facilitem a implementação do seu projeto
PORQUE
como o código desses componentes está em linguagem intermediária, ou seja, independente da arquitetura de um computador real, só é necessário que a máquina virtual esteja instalada no computador onde o aplicativo será executado e a máquina virtual será a responsável pela interpretação do código para a linguagem de máquina do computador em execução.
Acerca dessas asserções, assinale a alternativa correta:
a) As duas asserções são proposições verdadeiras, e a segunda é uma justificativa correta da primeira.
b) As duas asserções são proposições verdadeiras, mas a segunda não é uma justificativa correta da primeira.
c) A primeira asserção é uma proposição verdadeira, e a segunda, uma proposição falsa.
d) A primeira asserção é uma proposição falsa, e a segunda, uma proposição verdadeira.
e) Tanto a primeira quanto a segunda asserções são proposições falsas.


Questão 6
Classes abstratas são feitas para serem modelos para suas classes derivadas. Com relação a uma classe abstrata é correto afirmar que:
a) Esta não pode ser instanciada;
b) Esta só pode ser instanciada se o objeto também for abstrato;
c) Esta não possui métodos;
d) Esta só possui métodos e atributos abstratos;
e) Esta não possui métodos nem atributos abstratos.


Questão 7
(ENADE/2011) O paradigma de programação orientado a objetos tem sido largamente utilizado no desenvolvimento de sistemas.
Considerando o conceito de herança, avalie as afirmações abaixo.
I. Herança é uma propriedade que facilita a implementação de reuso.
II. Quando uma subclasse é criada, essa herda todas as características da superclasse, não podendo possuir propriedades e métodos próprios.
III. Herança múltipla é uma propriedade na qual uma superclasse possui diversas subclasses.
IV. Extensão é uma das formas de se implementar herança.
É correto apenas o que se afirma em:
a) I
b) III
c) I e IV
d) II e III
e) II e IV


Questão 8
A orientação a objetos é um modelo de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos. Com relação a conceitos de orientação a objetos, julgue os seguintes itens:
I – As variáveis ou métodos declarados com modificador de acesso private só são acessíveis a métodos da classe em que são declarados.
II – Uma classe deve possuir uma única declaração de método construtor
III – Uma instância de uma classe abstrata herda atributos e métodos de sua superclasse direta.
IV – O polimorfismo permite substituir a lógica condicional múltipla (lógica switch ou faça caso).
a) I e II
b) I e III
c) I e IV
d) II e III
e) II e IV


Questão 9
Analise as seguintes afirmativas (Fonte: Poscomp 2011).
I. Ocultar dados dentro das classes e torná-los disponíveis apenas por meio de métodos é uma técnica muito usada em programas orientados a objetos e é chamada de sobrescrita de atributos.
II. Uma subclasse pode implementar novamente métodos que foram herdados de uma superclasse. Chamamos isso de sobrecarga de métodos.
III. Em Java não existe Herança múltipla como em C++. A única maneira se se obter algo parecido é via interfaces.
a) Apenas a afirmativa I está incorreta.
b) Apenas a afirmativa II está incorreta.
c) Apenas a afirmativa III está incorreta.
d) Apenas as afirmativas I e III estão incorretas.
e) Apenas as afirmativas I e II estão incorretas.


Questão 10
Considerando o esquema de herança existente na metodologia de Orientação a Objeto, em uma hierarquia de classes em Java, temos:
I. Os construtores da superclasse não são herdados pelas instâncias de uma subclasse.
II. Todo método construtor de uma superclasse precisa também chamar um construtor da subclasse.
III. O comando super( ), chamada ao construtor da superclasse, deve ser declarado obrigatoriamente na primeira linha do construtor da subclasse.
Marque a alternativa CORRETA:
a) Apenas as a sentença I e III são verdadeiras.
b) Apenas as sentenças I e II são verdadeiras.
c) Apenas as sentenças II e III são verdadeiras.
d) Todas as sentenças são verdadeiras.
e) Nenhuma sentença é verdadeira.


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


RESPOSTAS
Questão 1 – A
Justificativa: Existem quatro tipos de modificadores:
public: Este pode ser acessado de qualquer lugar.
private: Este só pode ser acessado por membros da classe.
protected: Pode ser acessado por classes do mesmo pacote ou através da herança.
default: pode ser acessado por membros de mesmo pacote.
Questão 2 – A
Justificativa: Analisando as opções:
1 – A alternativa “em geral você pode chamar um método de uma classe, mesmo sem ter criado um objeto desta classe” é falsa, pois em geral precisamos criar objetos para acessar seus métodos. Um caso, particular, são os métodos estáticos.
2 – A alternativa “um método pode especificar múltiplos parâmetros, separando cada parâmetro do seguinte por um ponto e vírgula” é falsa, pois a separação é efetuada por uma vírgula.
3 – A alternativa “o número de argumentos na chamada de um método não precisa necessariamente corresponder ao número de parâmetros definidos no método é falsa porque precisa corresponder.
4 – A alternativa “Nem todo parâmetro precisa especificar necessariamente o tipo ou o identificador é falsa pois é preciso especificar ambos.
5 – No momento em que um método é chamado, seus argumentos são atribuídos a seus parâmetros. Então o corpo do método utiliza as variáveis de parâmetro para acessar os valores de argumento está correta.
Questão 3 – E
Justificativa: Analisando as opções, observa-se que a única opção incorreta é:
I. O objeto tem determinadas propriedades que o caracterizam e que são armazenadas no próprio objeto. As propriedades de um objeto são chamadas de instâncias.
Opção errada, pois as instâncias de uma classe são chamadas de objetos.
Questão 4 – C
Justificativa: É muito comum a confusão referente aos conceitos de sobrecarga e sobrescrita:
Sobrescrita: Quando temos um método em uma Classe que herda outra, e possui um método com a mesma assinatura que a da classe Ancestral.
Sobrecarga: Quando temos dois ou mais métodos com mesmo nome, porém recebendo parâmetros diferentes, ou seja, com uma assinatura diferente.
Analisemos as opções dadas:
• com a mesma assinatura – Falso, pois é referente a sobrescrita.
• com o mesmo número de parâmetros – Falso, pois não é obrigatório ter o mesmo número de parâmetros.
• com métodos polimórficos – Falso, pois não é obrigado necessariamente.
• herdados da superclasse direta – Falso, pois não é obrigatório ser referente a métodos herdados.
Questão 5 – B
Justificativa: As duas opções estão corretas, mas nem todos os componentes necessariamente são desenvolvidos em Java. Por isto a segunda afirmação não é justificativa da primeira.
Questão 6 – A
Justificativa: Analisando as opções:
• Esta só pode ser instanciada se o objeto também for abstrato -> Errada, pois em hipótese nenhuma uma classe abstrata pode ser instanciada.
• Esta não possui métodos -> Errada, pois pode possuir métodos abstratos ou não.
• Esta só possui métodos e atributos abstratos -> Errada, pois pode possuir métodos concretos.
• Esta não possui métodos nem atributos abstratos – Errada, pois pode possuir métodos abstratos e concretos.
• Esta não pode ser instanciada – Verdadeira. Uma classe abstrata nunca pode ser instanciada.
Questão 7 – C
Justificativa: Analisando as opções:
• Herança é uma propriedade que facilita a implementação de reuso -> Correta, pois podemos implementar métodos em uma superclasse e herdarmos em todas suas subclasses, evitando assim a reescrita dos mesmos.
• Quando uma subclasse é criada, essa herda todas as características da superclasse, não podendo possuir propriedades e métodos próprios -> Errada, pois as subclasses , não só podem, como normalmente, implementam seus atributos e métodos próprios.
• Herança múltipla é uma propriedade na qual uma superclasse possui diversas subclasses- > Errada, pois consiste em uma subclasses possuir diversas superclasse.
• Extensão é uma das formas de se implementar herança -> Correto. Inclusive usamos a palavras reservada extends.
Questão 8 – C
Justificativa: Analisando as opções:
• As variáveis ou métodos declarados com modificador de acesso private só são acessíveis a métodos da classe em que são declarados –> Correto. Por isto existem os demais modificadores como, por exemplo, public, protected e default.
• Uma classe deve possuir uma única declaração de método construtor -> Errado, pois podemos declarar vários construtores ou até mesmo nenhum.
• Uma instância de uma classe abstrata herda atributos e métodos de sua superclasse direta.-> Errado, pois classe abstrata não pode ser instanciada.
• O polimorfismo permite substituir a lógica condicional múltipla (lógica switch ou faça caso). Correto. Polimorfismos possui esta característica.
Questão 9 – E
Justificativa: Analisando as opções:
• Ocultar dados dentro das classes e torná-los disponíveis apenas por meio de métodos é uma técnica muito usada em programas orientados a objetos e é chamada de sobrescrita de atributos -> Errada, pois é conhecida como Encapsulamento.
• Uma subclasse pode implementar novamente métodos que foram herdados de uma superclasse. Chamamos isso de sobrecarga de métodos -> Errada, pois é conhecida por sobrescrita de métodos.
• Em Java não existe Herança múltipla como em C++. A única maneira se se obter algo parecido é via interfaces. -> Correto. A linguagem Java não permite herança múltipla com herança de código.Para tanto, implementa o conceito de interface. É possível herdar múltiplas interfaces. Uma classe pode estender uma outra classe e implementar zero ou mais interfaces. Inclusive, para implementar uma interface em uma classe, usamos a palavra implements.

Questão 10 – A
Justificativa: Analisando as opções:
• Os construtores da superclasse não são herdados pelas instâncias de uma subclasse. -> Correto. Inclusive, em herança, todos os construtores de classe base são chamados antes de construtores de classe derivada na ordem em que as classes aparecem na hierarquia de classes.
• Todo método construtor de uma superclasse precisa também chamar um construtor da subclasse. -> Errada. O construtor da super classe não chama explicitamente o construtor da subclasse.
• O comando super( ), chamada ao construtor da superclasse, deve ser declarado obrigatoriamente na primeira linha do construtor da subclasse. -> Correto. Caso contrário, será gerado um erro.


Material retirado da Web.

Se você tiver alguma dúvida ou correção a fazer, por favor, comente! Obrigado!

novembro 5th, 2016

Posted In: Engenharia de Software, Exercícios, Projeto e Implementação Orientado a Objeto

Tags:, ,