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:
Objetos
Comentários.
Atributos
Métodos
Classe
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".
O código é inválido pois não possui um método main().
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".
3
Para um método de classe acessar membros de classe não estáticos, devemos:
Um método estático não pode acessar membros de classe não estáticos
Colocar a palavra-chave static no membro a ser acessado.
Devemos declarar o método usando o get na frente do seu nome.
Colocarmos a palavra-chave protected no membro a ser acessado.
Devemos declarar o método usando o set na frente do seu nome
4
Em relação à forma geral de uma classe, podemos afirmar:
Uma classe é criada com a palavra-chave class.
Podemos usar palavras reservadas de uma linguagem de programação para nomearmos classes.
Uma classe é criada com o uso da palavra-chave public.
Os parênteses são caracteres que delimitam o bloco da classe.
É impossível usar comentários dentro de uma classe.
5
Marque a afirmativa correta. Escolha uma opção:
Para fazermos a chamada de um método estático, é necessário apenas colocar o nome do método seguido de parênteses.
As variáveis e os métodos de classe estáticos existem apenas quando um objeto dessa classe tenha sido instanciado.
Métodos e variáveis estáticas são associados a um objeto.
A referência this pode ser usada em métodos estáticos.
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.
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:
A herança é um mecanismo para aprimorar as classes existentes.
Quando o valor de um atributo pode ser compartilhado entre vários objetos.
Quando há a necessidade de utilizar uma classe que está em outro pacote, fazemos uso da palavra-chave herança.
Herança refere-se ao comportamento dos objetos.
Dizemos que há herança quando duas ou mais classes dependem uma da outra
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:
Static
Package
Public
Private
Protected
8
A unidade básica de encapsulamento, em Java, é: Escolha uma opção:
Classe
Modificadores de acesso.
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:
Os métodos cujo nome é precedido da palavra get são métodos de retorno.
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.
É recomendado que todos atributos da classe aluno sejam implementados com o modificador de acesso private.
Todos os atributos desta classe poderão ser acessados apenas por seus respectivos métodos.
Toda classe que possui atributos privados não obriga que cada atributo tenha o método que fará acesso ao mesmo.
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 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.
As variáveis de instância da classe veículo poderão ser visualizadas por qualquer outra classe da aplicação.
O código está incorreto, pois métodos e variáveis de instância não são elementos de uma classe.
A palavra void é necessária para criação de todos os métodos.
11
Em relação à herança podemos afirmar que:
Em herança possuímos classes genéricas e especializadas.
Métodos não podem ser herdados por subclasses.
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().
A herança acontece quando, no desenvolvimento, temos a possibilidade de reuso de componentes.
12
Em relação ao encapsulamento, marque a afirmativa INCORRETA: Escolha uma opção:
Encapsulamentos são colocados em bibliotecas e disponibilizados para reuso em programas além daqueles para os quais eles foram escritos.
Encapsular é deixar disponível para o usuário apenas o que lhe interessa, sem a necessidade de expor detalhes do código.
Encapsular é organizar os programas em coleções de códigos e dados logicamente relacionados.
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?
As classes são a fundação, na qual linguagens orientadas a objetos se estruturam
Uma classe é, basicamente, um conjunto de planos que especifica como construir um pacote.
Classes possuem um papel irrelevante na programação orientada a objetos
Dentro de uma classe são escritos todos comentários de uma aplicação.
Classes são boas práticas de programação.
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:
A classe "Animal" é subclasse de "Mamifero".
A classe "Cachorro" está estendendo de "Mamifero"
A sintaxe da classe "Homem" está incorreta.
Por se tratar de herança, a classe "Homem" poderá herdar apenas membros da classe "Mamifero"
Na estrutura implementada podemos afirmar que a classe "Homem" é subclasse; a classe "Mamifero" é subclasse e superclasse e a classe "Animal" é superclasse.
15
A declaração de uma variável de classe começa com qual palavra-chave ?
static
void
private
public
class
16
Sobre objetos, podemos afirmar que:
Um objeto é composto por estado e comportamento.
Não há comunicação entre objetos dentro de um sistema orientado a objetos.
Para criarmos uma classe, é necessário seguirmos a especificação de um objeto.
É uma abstração lógica.
Considere o seguinte código: “Cliente cli = new Cliente();” a palavra “new” é o método construtor da classe.
17
Em relação aos métodos estáticos ou de classes, marque a afirmativa correta
Métodos estáticos são declarados colocando-se a palavra-chave static antes do tipo de retorno.
Métodos estáticos não são membros de classes.
Métodos estáticos servem apenas para operações de inserção de dados
Por serem estáticos, os métodos não podem ser chamados em outras 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.
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.
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.
19
Quando identificamos a possibilidade de usar herança em nosso projeto?
Quando classes possuem muitos atributos.
Quando temos a necessidade de reduzir código.
Quando necessitamos aumentar a produtividade no desenvolvimento.
Quando existe relação entre classes.
Quando temos uma relação e um ou vários atributos em comum entre duas ou mais classes.
20
Para encapsular um atributo, deixando-o visível apenas para a classe que o contém, utilizamos qual palavra-chave?
Void
Public
Private
Static
Não é necessário informar modificador de acesso.
21
A forma geral de uma declaração class que herda uma superclasse é:
class nome-superclasse extends nome-subclasse{ //corpo da classe }
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 }
class nome-subclasse extends nome-superclasse ( //corpo da classe )
22
Marque a afirmativa que define interface.
São elementos da classe.
Interfaces são classes que possuem apenas métodos e podem ser instanciadas
Interface define tipos em forma abstrata
Interface serve para organizar classes de uma aplicação.
São formulários que interagem com o usuário.
23
Em relação à herança em orientação a objetos, marque a alternativa incorreta
Um dos indicativos para criar herança é quando possuímos atributos semelhantes entre duas ou mais classes.
Subclasses também são conhecidas como classes filhas e estas podem herdar métodos das superclasses.
Uma classe genérica é aquela que possui membros que são comuns entre duas ou mais classes.
O conceito de herança refere-se a classes que herdam membros de outras classes.
Quando uma subclasse herda um método abstrato da superclasse, o mesmo não deve ser implementado.
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.
Subclasses
Passagem de parâmetros.
Modificador de acesso.
Sobrescrita
25
Em relação ao polimorfismo, marque a alternativa incorreta.
Para trabalharmos com polimorfismo, podemos herdar métodos de uma superclasse ou implementarmos uma interface.
A técnica de polimorfismo não permite que alteremos a implementação de um método
Programar no específico é quando o programa determina o tipo de objeto no momento da execução
O polimorfismo permite que programemos no geral, e não no específico.
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
26
Em uma estrutura de herança, para instanciarmos uma classe-filha, utilizamos qual construtor?
O construtor da superclasse.
Apenas o construtor padrão.
O construtor da subclasse.
Ambos os construtores
Nenhum, pois estamos trabalhando com estrutura de herança
27
Marque a alternativa que define métodos abstratos.
São métodos que não podem ser implementados por outras classes.
Métodos abstratos são aqueles escritos com a palavra private
São métodos que não podem ser usados em outras classes.
São métodos sem implementação.
São métodos que não podem receber valores por parâmetros.
28
Em relação a classes abstratas, marque a alternativa incorreta
Não se pode criar objetos de uma classe abstrata.
Cada método não implementado na classe abstrata é marcado com abstract.
Classes abstratas fornecem a implementação de um ou mais métodos.
O oposto de abstrato é concreto.
Quando possuem métodos abstratos, devem ser declaradas abstratas.
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.
Uma superclasse não pode ser instanciada.
Herança é uma estrutura que possui uma superclasse e subclasses que herdam membros desta superclasse.
Para criarmos uma estrutura de herança, devemos limitar a duas o número de subclasses.
Em uma estrutura de herança, as subclasses herdam apenas métodos da superclasse
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
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
A única forma de usar super é a seguinte: super()
Quando uma classe chama super(), está chamando o construtor de sua superclasse imediatamente
superovo deve ser sempre a primeira instrução executada dentro de um construtor de subclasse.
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.
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.
Interfaces são classes que possuem métodos que não podem ser implementados por outras classes.
Interfaces são classes que não podem ser instanciadas
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
Classes
Método
Atributos
Pacote
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 interface Contrato{ void entrarComTexto(String texto); }
public class Contrato{ void entrarComTexto(String texto); }
public Interface class Contrato{ void entrarComTextoString texto;}
public abstract class Contrato{ void entrarComTexto(String 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 classes que definem seus atributos como privados.
Classes abstratas são classes que apenas definem como os objetos serão criados.
Classes abstratas são conhecidas como interfaces.
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.
super
this
extends
O nome da classe
protected
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 um ou mais métodos sem retorno.
Quando uma classe herda membros de outra classe.
Quando uma subclasse usa um método da superclasse.
Quando uma classe possui métodos abstratos.
38
Qual a relação do polimorfismo com interfaces e superclasses?
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
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
Há polimorfismo quando uma subclasse herda membros de uma superclasse
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
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 class A implements B { }
public implements A class B { }
public interface B { }
public class A extends B { }
public class A extends C implements B { }
40
Em relação a construtores, marque a afirmativa incorreta.
Construtores não podem ter argumentos.
Toda classe em java possui, no mínimo, um construtor
Ao nomearmos um construtor, devemos colocar o mesmo nome da classe a que pertence.
O construtor não possui tipo de retorno.
Os modificadores de acesso do construtor podem ser: public, private e protected
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.
A classe Pessoa possui uma erro na geração do código, pois o método getMatricula() não possui implementação.
O código gerado pela ferramenta não considerou que o método getMatricula() é abstrato e que deve ser implementados nas subclasses.
As classes Aluno e Professor possuem erros na sua implementação, pois a classe Pessoa não poderia ser herdada por ser abstrata.
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.
O código gerado satisfaz o diagrama de classe e não precisa de correção para que possa ser compilado
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
I.
I e IV.
II.
II e III.
III e IV.
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
I e II, apenas
II e III, apenas.
I, apenas.
III, apenas.
I, II e III, 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 III.
II e IV.
I, II e III.
II, III e IV.
I e IV.