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:
Comentários.
Métodos
Classe
Objetos
Atributos
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.
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().
Não é necessária a criação de métodos de acesso como get e set, pois a classe possui apenas um atributo.
3
Para um método de classe acessar membros de classe não estáticos, devemos:
Devemos declarar o método usando o set na frente do seu nome
Colocar a palavra-chave static no membro a ser acessado.
Um método estático não pode acessar membros de classe não estáticos
Colocarmos a palavra-chave protected no membro a ser acessado.
Devemos declarar o método usando o get na frente do seu nome.
4
Em relação à forma geral de uma classe, podemos afirmar:
Uma classe é criada com o uso da palavra-chave public.
Os parênteses são caracteres que delimitam o bloco da classe.
Podemos usar palavras reservadas de uma linguagem de programação para nomearmos classes.
Uma classe é criada com a palavra-chave class.
É impossível usar comentários dentro de uma classe.
5
Marque a afirmativa correta. Escolha uma opçã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.
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.
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.
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 o valor de um atributo pode ser compartilhado entre vários objetos.
Dizemos que há herança quando duas ou mais classes dependem uma da outra
Herança refere-se ao comportamento dos objetos.
Quando há a necessidade de utilizar uma classe que está em outro pacote, fazemos uso da palavra-chave herança.
A herança é um mecanismo para aprimorar as classes existentes.
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
Protected
Private
Public
Package
8
A unidade básica de encapsulamento, em Java, é: Escolha uma opção:
Interface pública da classe.
Pacote
Método
Modificadores de acesso.
Classe
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.
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.
É 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.
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:
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.
A classe Veiculo tem quatro variáveis de instância.
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.
As variáveis de instância da classe veículo poderão ser visualizadas por qualquer outra classe da aplicação.
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.
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 é deixar os métodos inacessíveis para os usuários da classe.
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.
Existe outro tipo de encapsulamento, necessário para construir grandes programas, o encapsulamento de nomeação.
Encapsulamentos são colocados em bibliotecas e disponibilizados para reuso em programas além daqueles para os quais eles foram escritos.
13
Em programação orientada a objetos, qual o papel da classe?
Classes são boas práticas de programação.
As classes são a fundação, na qual linguagens orientadas a objetos se estruturam
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.
Uma classe é, basicamente, um conjunto de planos que especifica como construir um pacote.
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 "Cachorro" está estendendo de "Mamifero"
A sintaxe da classe "Homem" está incorreta.
A classe "Animal" é subclasse de "Mamifero".
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 ?
class
private
public
void
static
16
Sobre objetos, podemos afirmar que:
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.
É uma abstração lógica.
Considere o seguinte código: “Cliente cli = new Cliente();” a palavra “new” é o método construtor da classe.
Um objeto é composto por estado e comportamento.
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.
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
Métodos estáticos servem apenas para operações de inserção de dados
Métodos estáticos não são membros de classes.
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.
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.
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 temos uma relação e um ou vários atributos em comum entre duas ou mais classes.
Quando necessitamos aumentar a produtividade no desenvolvimento.
Quando classes possuem muitos atributos.
Quando existe relação entre classes.
Quando temos a necessidade de reduzir código.
20
Para encapsular um atributo, deixando-o visível apenas para a classe que o contém, utilizamos qual palavra-chave?
Não é necessário informar modificador de acesso.
Public
Static
Void
Private
21
A forma geral de uma declaração class que herda uma superclasse é:
class nome-subclasse extends nome-superclasse { //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-superclasse extends nome-subclasse{ //corpo da classe }
22
Marque a afirmativa que define interface.
Interface serve para organizar classes de uma aplicação.
Interface define tipos em forma abstrata
São formulários que interagem com o usuário.
Interfaces são classes que possuem apenas métodos e podem ser instanciadas
São elementos da classe.
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.
Um dos indicativos para criar herança é quando possuímos atributos semelhantes entre duas ou mais classes.
Quando uma subclasse herda um método abstrato da superclasse, o mesmo não deve ser implementado.
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.
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.
Sobrescrita
Modificador de acesso.
25
Em relação ao polimorfismo, marque a alternativa incorreta.
O polimorfismo permite que programemos no geral, e não no específico.
Programar no específico é quando o programa determina o tipo de objeto no momento da execução
A técnica de polimorfismo não permite que alteremos a implementação de um método
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
Para trabalharmos com polimorfismo, podemos herdar métodos de uma superclasse ou implementarmos uma interface.
26
Em uma estrutura de herança, para instanciarmos uma classe-filha, utilizamos qual construtor?
Ambos os construtores
Nenhum, pois estamos trabalhando com estrutura de herança
O construtor da superclasse.
O construtor da subclasse.
Apenas o construtor padrão.
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 que não podem receber valores por parâmetros.
São métodos sem implementação.
28
Em relação a classes abstratas, marque a alternativa incorreta
Não se pode criar objetos de uma classe abstrata.
O oposto de abstrato é concreto.
Quando possuem métodos abstratos, devem ser declaradas abstratas.
Classes abstratas fornecem a implementação de um ou mais métodos.
Cada método não implementado na classe abstrata é marcado com abstract.
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
Ao herdar um método da superclasse, ele não poderá ser sobrescrito pela superclasse
Para criarmos uma estrutura de herança, devemos limitar a duas o número de subclasses.
Uma superclasse não pode ser instanciada.
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 3 está escrito de forma correta.
O código 4 está escrito de forma errada, pois, para utilizarmos uma interface, devemos colocar a palavra-chave implements, não extends
Sendo o código 1 a interface, podemos concluir que nos códigos 2, 3 e 4, temos um comportamento polimórfico.
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.
O código 1 refere-se à criação de uma classe abstrata.
31
Marque a alternativa incorreta
superovo sempre referencia a superclasse imediatamente acima da classe chamadora.
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
A única forma de usar super é a seguinte: super()
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.
Diferentemente de uma classe, um tipo de interface não fornece nenhuma implementação.
Interfaces são classes que não podem ser instanciadas
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.
São classes que possuem apenas atributos
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.
Atributos
Classes
Método
Modificadores de acesso
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 class Contrato{ void entrarComTexto(String texto); }
public interface Contrato{ void entrarComTexto(String texto); }
public interface Contrato{ void entrarComTexto(String texto){ text = texto; System.out.println(texto); } }
public Interface class Contrato{ void entrarComTextoString texto;}
public abstract class Contrato{ void entrarComTexto(String texto); }
35
Marque a alternativa que melhor define classes abstratas
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.
Classes abstratas são aquelas que não possuem métodos
Classes abstratas auxiliam quando algum comportamento é definido para a maioria ou todos os objetos de um dado tipo.
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
super
this
extends
O nome da classe
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 classe herda membros de outra classe.
Quando uma subclasse usa um método da superclasse.
38
Qual a relação do polimorfismo com interfaces e superclasses?
Quando uma classe herda membros de uma interface, ativa um comportamento polimórfico
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 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, ela se obriga a utilizar e implementar todos os métodos da interface, com isso, temos um comportamento polimórfico
Há polimorfismo quando uma subclasse herda membros de uma superclasse
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 class A extends B { }
public interface B { }
public class A extends C implements B { }
40
Em relação a construtores, marque a afirmativa incorreta.
Toda classe em java possui, no mínimo, um construtor
Os modificadores de acesso do construtor podem ser: public, private e protected
O construtor não possui tipo de retorno.
Ao nomearmos um construtor, devemos colocar o mesmo nome da classe a que pertence.
Construtores não podem ter argumentos.
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
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.
A classe Pessoa possui uma erro na geração do código, pois o método getMatricula() não possui implementação.
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
II e III.
II.
I e IV.
I.
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.
I, II e III, apenas.
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
II, III e IV.
I, II e III.
I e III.
II e IV.
I e IV.