Programação orientada a objeto
Analise o seguinte código de uma classe em java: public class Agua extends Bebida { private String ph; public String getPh(){ return ph; } public void setPh(String ph){ this.ph=ph; } } Escolha uma opção:
0
0
0
1
São implementados para realizarem algum tipo de tarefa:
Classe
Atributos
Objetos
Comentários.
Métodos
2
Analise o seguinte código de uma classe em java: public class Agua extends Bebida { private String ph; public String getPh(){ return ph; } public void setPh(String ph){ this.ph=ph; } } Escolha uma opção:
A palavra-chave "extends" informa que a classe "Agua” é uma extensão da classe "Bebida".
A classe "Agua", quando instanciada, terá acesso apenas ao atributo ph, através dos métodos set e get.
Não é necessária a criação de métodos de acesso como get e set, pois a classe possui apenas um atributo.
A palavra-chave "extends" informa que a classe "Agua” é uma extensão da classe "Bebida".
O código é inválido pois não possui um método main().
3
Para um método de classe acessar membros de classe não estáticos, devemos:
Devemos declarar o método usando o get na frente do seu nome.
Colocar a palavra-chave static no membro a ser acessado.
Colocarmos a palavra-chave protected no membro a ser acessado.
Um método estático não pode acessar membros de classe não estáticos
Devemos declarar o método usando o set na frente do seu nome
4
Em relação à forma geral de uma classe, podemos afirmar:
É impossível usar comentários dentro de uma classe.
Uma classe é criada com o uso da palavra-chave public.
Podemos usar palavras reservadas de uma linguagem de programação para nomearmos classes.
Uma classe é criada com a palavra-chave class.
Os parênteses são caracteres que delimitam o bloco da classe.
5
Marque a afirmativa correta. Escolha uma opção:
As variáveis e os métodos de classe estáticos existem apenas quando um objeto dessa classe tenha sido instanciado.
Se um método estático tentar acessar um outro método não estático da classe usando somente o nome do método, ocorrerá um erro de compilação.
A referência this pode ser usada em métodos estáticos.
Para fazermos a chamada de um método estático, é necessário apenas colocar o nome do método seguido de parênteses.
Métodos e variáveis estáticas são associados a um objeto.
6
Na orientação a objetos temos um importante conceito, que é a herança. Marque a alternativa que melhor define herança em orientação a objetos:
Quando há a necessidade de utilizar uma classe que está em outro pacote, fazemos uso da palavra-chave herança.
Dizemos que há herança quando duas ou mais classes dependem uma da outra
Quando o valor de um atributo pode ser compartilhado entre vários objetos.
A herança é um mecanismo para aprimorar as classes existentes.
Herança refere-se ao comportamento dos objetos.
7
Membros declarados com esse modificador de acesso são acessíveis em subclasses da classe, em subclasses do mesmo pacote e na própria classe:
Protected
Public
Private
Static
Package
8
A unidade básica de encapsulamento, em Java, é: Escolha uma opção:
Modificadores de acesso.
Classe
Pacote
Interface pública da classe.
Método
9
Analise o seguinte código e aponte a afirmativa INCORRETA: public class Aluno { private String nome; protected String Sobrenome; public int matricula; public String email; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getSobrenome() { return Sobrenome; } public void setSobrenome(String Sobrenome) { this.Sobrenome = Sobrenome; } public int getMatricula() { return matricula; } public void setMatricula(int matricula) { this.matricula = matricula; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } Escolha uma opção:
Toda classe que possui atributos privados não obriga que cada atributo tenha o método que fará acesso ao mesmo.
Todos os atributos desta classe poderão ser acessados apenas por seus respectivos métodos.
É recomendado que todos atributos da classe aluno sejam implementados com o modificador de acesso private.
Ao instanciarmos esta classe através de uma classe de controle, quando chamarmos os membros através da variável de referência, apenas o atributo nome não estará visível.
Os métodos cujo nome é precedido da palavra get são métodos de retorno.
10
Analise o seguinte código: public class Veiculo { private String placa; private String cor; private int anoFabricacao; public String getPlaca() { return placa; } public void setPlaca(String placa) { this.placa = placa; } public String getCor() { return cor; } public void setCor(String cor) { this.cor = cor; } public int getAnoFabricacao() { return anoFabricacao; } public void setAnoFabricacao(int anoFabricacao) { this.anoFabricacao = anoFabricacao; } } Escolha uma opção:
As variáveis de instância da classe veículo poderão ser visualizadas por qualquer outra classe da aplicação.
A palavra void é necessária para criação de todos os métodos.
As palavras-chave this em this.cor, this.placa e this.anoFrabricacao informam ao método que estamos nos referindo à variável de instância.
A classe Veiculo tem quatro variáveis de instância.
O código está incorreto, pois métodos e variáveis de instância não são elementos de uma classe.
11
Em relação à herança podemos afirmar que:
Métodos não podem ser herdados por subclasses.
Em herança possuímos classes genéricas e especializadas.
A herança acontece quando, no desenvolvimento, temos a possibilidade de reuso de componentes.
Classes especializadas são aquelas específicas de um determinado domínio.
Em uma estrutura de herança, todas as classes necessitam possuir o método main().
12
Em relação ao encapsulamento, marque a afirmativa INCORRETA: Escolha uma opção:
Encapsular é organizar os programas em coleções de códigos e dados logicamente relacionados.
Encapsular é deixar disponível para o usuário apenas o que lhe interessa, sem a necessidade de expor detalhes do código.
Encapsulamentos são colocados em bibliotecas e disponibilizados para reuso em programas além daqueles para os quais eles foram escritos.
Existe outro tipo de encapsulamento, necessário para construir grandes programas, o encapsulamento de nomeação.
Encapsular é deixar os métodos inacessíveis para os usuários da classe.
13
Em programação orientada a objetos, qual o papel da classe?
Classes são boas práticas de programação.
Classes possuem um papel irrelevante na programação orientada a objetos
Uma classe é, basicamente, um conjunto de planos que especifica como construir um pacote.
Dentro de uma classe são escritos todos comentários de uma aplicação.
As classes são a fundação, na qual linguagens orientadas a objetos se estruturam
14
Analise o código abaixo: public class Animal { private int idAnimal; private String nome; private int idade; public String getNome(){ return nome; } public void setNome(String nome){ this.nome = nome; } public int getIdade(){ return idade; } public void setIdade(int idade){ this.idade = idade; } } =================== // ============================ public class Mamifero extends Animal{ private String gestacao; private String especVida; public String getGestacao(){ return gestacao; } public void setGestacao(String gestacao){ this.gestacao = gestacao; } public String getEspecVida(){ return especVida; } public void setEspecVida(String especVida){ this.especVida = especVida; } } =============================//========================== public class Cachorro Mamifero{ private String raca; public String getRaca(){ return raca; } public void setRaca(String raca){ this.raca = raca; } } ============================//============================ public class Homem extends Mamifero{ private String etnia; public String getEtnia(){ return etnia; } public void setEtnia(String etnia){ this.etnia = etnia; } } Escolha uma opção:
Na estrutura implementada podemos afirmar que a classe "Homem" é subclasse; a classe "Mamifero" é subclasse e superclasse e a classe "Animal" é superclasse.
A sintaxe da classe "Homem" está incorreta.
Por se tratar de herança, a classe "Homem" poderá herdar apenas membros da classe "Mamifero"
A classe "Animal" é subclasse de "Mamifero".
A classe "Cachorro" está estendendo de "Mamifero"
15
A declaração de uma variável de classe começa com qual palavra-chave ?
void
static
class
public
private
16
Sobre objetos, podemos afirmar que:
Um objeto é composto por estado e comportamento.
Para criarmos uma classe, é necessário seguirmos a especificação de um objeto.
Não há comunicação entre objetos dentro de um sistema orientado a objetos.
Considere o seguinte código: “Cliente cli = new Cliente();” a palavra “new” é o método construtor da classe.
É uma abstração lógica.
17
Em relação aos métodos estáticos ou de classes, marque a afirmativa correta
Métodos estáticos servem apenas para operações de inserção de dados
Métodos estáticos são declarados colocando-se a palavra-chave static antes do tipo de retorno.
Por serem estáticos, os métodos não podem ser chamados em outras classes.
Métodos estáticos não são membros de classes.
Métodos são variáveis que tem a capacidade de receber uma quantidade maior de informação
18
Marque a alternativa correta.
Uma variável estática representa informações em nível de classe.
Se vários objetos precisam acessar uma determinada variável em comum, a medida que transformamos esta variável em estática, estamos desperdiçando espaço na memória.
Uma variável estática representa informações em nível de classe.
Todo objeto tem sua própria cópia de todas as variáveis estáticas da classe.
Uma variável estática não muda seu valor.
19
Quando identificamos a possibilidade de usar herança em nosso projeto?
Quando existe relação entre classes.
Quando necessitamos aumentar a produtividade no desenvolvimento.
Quando temos a necessidade de reduzir código.
Quando temos uma relação e um ou vários atributos em comum entre duas ou mais classes.
Quando classes possuem muitos atributos.
20
Para encapsular um atributo, deixando-o visível apenas para a classe que o contém, utilizamos qual palavra-chave?
Private
Void
Static
Não é necessário informar modificador de acesso.
Public
21
A forma geral de uma declaração class que herda uma superclasse é:
nome-subclasse extends nome-superclasse { //corpo da classe }
class nome-superclasse extends nome-subclasse{ //corpo da classe }
class nome-subclasse extends nome-superclasse ( //corpo da classe )
class nome-subclasse nome-superclasse { //corpo da classe }
class nome-subclasse extends nome-superclasse { //corpo da classe }
22
Marque a afirmativa que define interface.
São formulários que interagem com o usuário.
Interface serve para organizar classes de uma aplicação.
Interfaces são classes que possuem apenas métodos e podem ser instanciadas
São elementos da classe.
Interface define tipos em forma abstrata
23
Em relação à herança em orientação a objetos, marque a alternativa incorreta
Subclasses também são conhecidas como classes filhas e estas podem herdar métodos das superclasses.
O conceito de herança refere-se a classes que herdam membros de outras classes.
Uma classe genérica é aquela que possui membros que são comuns entre duas ou mais classes.
Quando uma subclasse herda um método abstrato da superclasse, o mesmo não deve ser implementado.
Um dos indicativos para criar herança é quando possuímos atributos semelhantes entre duas ou mais classes.
24
Em classes abstratas, temos um padrão no qual uma área de conhecimento particular de uma classe exige que outra pessoa providencie uma parte que está faltando. Como esse padrão é conhecido?
Método gabarito.
Sobrescrita
Modificador de acesso.
Subclasses
Passagem de parâmetros.
25
Em relação ao polimorfismo, marque a alternativa incorreta.
O polimorfismo permite que programemos no geral, e não no específico.
Para trabalharmos com polimorfismo, podemos herdar métodos de uma superclasse ou implementarmos uma interface.
Programar no específico é quando o programa determina o tipo de objeto no momento da execução
Novos tipos de objeto que podem responder às chamadas de método já existentes podem ser incorporados ao sistema sem alterar o sistema básico
A técnica de polimorfismo não permite que alteremos a implementação de um método
26
Em uma estrutura de herança, para instanciarmos uma classe-filha, utilizamos qual construtor?
Nenhum, pois estamos trabalhando com estrutura de herança
O construtor da superclasse.
Ambos os construtores
O construtor da subclasse.
Apenas o construtor padrão.
27
Marque a alternativa que define métodos abstratos.
São métodos sem implementação.
Métodos abstratos são aqueles escritos com a palavra private
São métodos que não podem ser implementados por outras classes.
São métodos que não podem ser usados em outras classes.
São métodos que não podem receber valores por parâmetros.
28
Em relação a classes abstratas, marque a alternativa incorreta
Classes abstratas fornecem a implementação de um ou mais métodos.
Cada método não implementado na classe abstrata é marcado com abstract.
Quando possuem métodos abstratos, devem ser declaradas abstratas.
Não se pode criar objetos de uma classe abstrata.
O oposto de abstrato é concreto.
29
Em uma estrutura de herança, uma classe usa membros de outra classe. Interfaces fornecem membros para que outras classes possam fazer uso deles. Com isso, é importante conhecermos o conceito de herança para podermos analisar suas diferenças com implementação de interfaces. Marque a alternativa que melhor define herança.
Herança é uma estrutura que possui uma superclasse e subclasses que herdam membros desta superclasse.
Em uma estrutura de herança, as subclasses herdam apenas métodos da superclasse
Uma superclasse não pode ser instanciada.
Para criarmos uma estrutura de herança, devemos limitar a duas o número de subclasses.
Ao herdar um método da superclasse, ele não poderá ser sobrescrito pela superclasse
30
Analise o código abaixo e marque a alternativa correta. 1) public interface InterfaceTeste { public void locomover(); } 2)public class Formiga implements InterfaceTeste{ public void locomover() { System.out.println("Caminha"); } } 3)public class Passaro implements InterfaceTeste { public void locomover() {} } 4)public class Peixe extendes InterfaceTeste { public void locomover() { System.out.println("Nada"); } }
O código 4 está escrito de forma errada, pois, para utilizarmos uma interface, devemos colocar a palavra-chave implements, não extends
O código 3 está escrito de forma correta.
O código 1 refere-se à criação de uma classe abstrata.
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.
Sendo o código 1 a interface, podemos concluir que nos códigos 2, 3 e 4, temos um comportamento polimórfico.
31
Marque a alternativa incorreta
A única forma de usar super é a seguinte: super()
superovo deve ser sempre a primeira instrução executada dentro de um construtor de subclasse.
Há uma segunda forma de super que age um pouco como this, exceto por referenciar sempre a superclasse da subclasse em que é usada. Essa aplicação tem a forma geral a seguir: super.membro
Quando uma classe chama super(), está chamando o construtor de sua superclasse imediatamente
superovo sempre referencia a superclasse imediatamente acima da classe chamadora.
32
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 são classes que não podem ser instanciadas
Interfaces são classes que possuem métodos que não podem ser implementados por outras classes.
São classes que possuem apenas atributos
Diferentemente de uma classe, um tipo de interface não fornece nenhuma implementação.
Interfaces possuem variáveis de instância e métodos abstratos.
33
Para que possamos ter um melhor entendimento do conceito de interfaces, é importante termos um conhecimento sobre a unidade fundamental em linguagem de programação orientado a objeto. Marque a afirmativa que cita esta unidade.
Modificadores de acesso
Atributos
Pacote
Método
Classes
34
Queremos criar uma interface com o nome Contrato e com o método sem retorno chamado entrarComTexto(). Marque a afirmativa que escreve corretamente o código.
public abstract class Contrato{ void entrarComTexto(String texto); }
public interface Contrato{ void entrarComTexto(String texto); }
public class Contrato{ void entrarComTexto(String texto); }
public Interface class Contrato{ void entrarComTextoString texto;}
public interface Contrato{ void entrarComTexto(String texto){ text = texto; System.out.println(texto); } }
35
Marque a alternativa que melhor define classes abstratas
Classes abstratas auxiliam quando algum comportamento é definido para a maioria ou todos os objetos de um dado tipo.
Classes abstratas são aquelas que não possuem métodos
Classes abstratas são conhecidas como interfaces.
Classes abstratas são classes que apenas definem como os objetos serão criados.
Classes abstratas são classes que definem seus atributos como privados.
36
Quando tanto a superclasse quanto a subclasse definem construtores, o processo é um pouco mais complicado, porque os dois construtores devem ser executados. Nesse caso, devemos usar outra das palavras-chave do Java. Marque a alternativa que apresente a palavra-chave a ser usada nesta situação.
protected
extends
super
O nome da classe
this
37
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
Quando uma classe possui métodos abstratos.
Quando uma classe possui um ou mais métodos sem retorno.
Quando uma subclasse usa um método da superclasse.
Quando uma classe herda membros de outra classe.
38
Qual a relação do polimorfismo com interfaces e superclasses?
Há polimorfismo quando uma subclasse herda membros de uma superclasse
Quando uma classe implementa uma interface, não há necessidade de utilizar todos os seus métodos. Entretanto, para que haja um comportamento polimórfico, é necessário implementar os métodos utilizados de acordo com sua necessidade
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
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
39
Uma classe que implementa uma interface assume a responsabilidade de executar as ações que a interface define. Dessa forma, para podermos obter as assinaturas dos métodos da interface em uma classe, considere os códigos abaixo e marque a afirmativa correta. A é nossa classe e B é nossa interface
public implements A class B { }
public class A extends C implements B { }
public interface B { }
public class A implements B { }
public class A extends B { }
40
Em relação a construtores, marque a afirmativa incorreta.
O construtor não possui tipo de retorno.
Construtores não podem ter argumentos.
Os modificadores de acesso do construtor podem ser: public, private e protected
Ao nomearmos um construtor, devemos colocar o mesmo nome da classe a que pertence.
Toda classe em java possui, no mínimo, um construtor
41
Leia os textos a seguir. Texto I Ao iniciar o trabalho em uma empresa madura de desenvolvimento de software, Megan observou que haviam diversos diagramas UML na documentação dos softwares desenvolvidos. Esses diagramas foram elaborados por uma ferramenta desenvolvida internamente pela companhia com objetivo de atender as demandas gerenciais e de que o código-fonte pudesse ser gerado automaticamente. Contudo, Megan desconfiou de tal automatismo e decidiu verificar se o código gerado pela ferramenta refletia o que foi definido no diagrama de classe. O Texto II apresenta o diagrama de classe que Megan criou, e o Texto III o código gerado pela ferramenta. Texto II Observe a imagem a seguir. Texto III public abstract class Pessoa{ protected String nome; protected Integer matricula; public String getNome(){ return null; } public abstract Integer getMatricula(); } public class Aluno extends Pessoa{ public Integer anoInicio; public void verificarDisciplinas(){} } public class Professor extends Pessoa{ public Integer sala; public void verificarDiario(){} } Analise as informações dos textos expostos e assinale a alternativa correta.
O código gerado pela ferramenta não considerou que o método getMatricula() é abstrato e que deve ser implementados nas subclasses.
O código gerado satisfaz o diagrama de classe e não precisa de correção para que possa ser compilado
A classe Pessoa possui uma erro na geração do código, pois o método getMatricula() não possui implementação.
A ferramenta de geração de código não produziu um código correto, pois a classe Pessoa não pode possuir atributos devido ao seu tipo, classe abstrata.
As classes Aluno e Professor possuem erros na sua implementação, pois a classe Pessoa não poderia ser herdada por ser abstrata.
42
As classes Java que seguem foram extraídas de um sistema de controle acadêmico de uma universidade e representam uma Disciplina Regular e uma Disciplina de Dependência. 1 public class Disciplina { 2 public String nome; 3 public int numeroFaltasMaximo; 4 public double notaMinimaAprovacao; 5 public Disciplina(String nome, int numeroFaltasMaximo, 6 double notaMinimaAprovacao){ 7 this.nome=nome; 8 this.numeroFaltasMaximo=numeroFaltasMaximo; 9 this.notaMinimaAprovacao=notaMinimaAprovacao; 10 } 11 public boolean isAprovado(int numeroFaltas, double notaTrabalho, 12 double notaProva ){ 13 if(numeroFaltas<=numeroFaltasMaximo && 14 ((notaTrabalho+notaProva)/2) >= notaMinimaAprovacao){ 15 return true; 16 }else{ 17 return false; 18 } 19 } 20 } 21 22 public class DisciplinaDP extends Disciplina { 23 public double pesoTrabalho; 24 public double pesoProva; 25 public DisciplinaDP(String nome, int numeroFaltasMaximo, 26 int notaMinimaAprovacao, double pesoTrabalho, double pesoProva) { 27 super(nome, numeroFaltasMaximo, notaMinimaAprovacao); 28 this.pesoProva=pesoProva; 29 this.pesoTrabalho=pesoTrabalho; 30 } 31 public boolean isAprovado(double notaTrabalho, double notaProva){ 32 return this.isAprovado(numeroFaltasMaximo, notaTrabalho, notaProva); 33 } 34 public boolean isAprovado(int numeroFaltas, double notaTrabalho, 35 double notaProva){ 36 double notaFinal = notaTrabalho * pesoTrabalho + 37 notaProva * pesoProva; 38 if(numeroFaltas<=numeroFaltasMaximo && 39 notaFinal >= notaMinimaAprovacao){ 40 return true; 41 }else{ 42 return false; 43 } 44 } 45 } Considerando o texto apresentado, avalie as afirmativas a seguir. I. Ocorre polimorfismo por sobrecarga e por sobrescrita nas linhas 31 e 34, referentes à isAprovado, respectivamente. II. Ocorre polimorfismo por sobrecarga e por sobrescrita nas linhas 11, referente à Pai, e 22, referente à DisciplinaDP, respectivamente. III. Ocorre polimorfismo por sobrecarga e por sobrescrita nas linhas 25, referente à DisciplinaDP, e 5, referente à Disciplina, respectivamente. IV. Ocorre polimorfismo por sobrecarga e por sobrescritanas linhas 34, referente à isAprovado, e 25, referente à DisciplinaDP, respectivamente. É correto apenas o que se afirma em
III e IV.
I.
I e IV.
II e III.
II.
43
Leia os textos a seguir. Texto I Polimorfismo significa "muitas formas", é o termo definido em linguagens orientadas a objeto, como por exemplo Java, C# e C++, que permite ao desenvolvedor usar o mesmo elemento de formas diferentes. Polimorfismo denota uma situação na qual um objeto pode se comportar de maneiras diferentes ao receber uma mensagem. No Polimorfismo temos dois tipos: Polimorfismo Estático ou Sobrecarga; Polimorfismo Dinâmico ou Sobreposição. Fonte: DEVMEDIA. Uso de Polimorfismo em Java. Disponível em: <https://www.devmedia.com.br/uso-de-polimorfismo-em-java/26140>;. Acesso em: 01 maio 2018. Texto II Observe o trecho de código a seguir. Com base nos textos I e II, avalie as asserções a seguir. I. O polimorfismo de sobrecarga é aplicado corretamente no método move na linha 21. II. O polimorfismo de sobreposição é aplicado corretamente no método move na linha 26. III. O polimorfismo de sobreposição é aplicado corretamente nos métodos getY e getX nas linhas 30 e 34. É correto o que se afirma em
II e III, apenas.
I, apenas.
I, II e III, apenas.
III, apenas.
I e II, apenas
44
À medida que o projeto de uma interface do usuário evolui, quatro questões de projeto comuns quase sempre vêm à tona: tempo de resposta do sistema, recursos de ajuda ao usuário, informações de tratamento de erros e atribuição de nomes a comandos. PRESSMAN, R. 5. Engenharia de software: uma abordagem profissional. 8. ed. São Paulo: AMGH, 2016 (adaptado). Nesse contexto, avalie as afirmações a seguir, a respeito do projeto de interface e dos requisitos de software. I. A análise de interfaces tem por objetivo identificar o perfil dos usuários e auxiliar na especificação do requisito não funcional de segurança pertinente ao perfil de acesso dos usuários. II. O requisito não funcional de segurança descreve as características relacionadas a inteligibilidade, modo de usar ou operar o sistema. III. O requisito não funcional de confiabilidade descreve as características relacionadas ao tempo de resposta para processamento de dados ou informações. IV. O requisito não funcional de usabilidade descreve diretrizes de acessibilidade para pessoas com deficiência. É correto apenas o que se afirma em
I e IV.
I, II e III.
I e III.
II, III e IV.
II e IV.