Simulado

Avatar do usuário
bernardino
Site Admin
Mensagens: 945
Registrado em: 28 Ago 2020, 15:11

Simulado

Mensagem por bernardino »

Aguardando confirmação em gabarito.

1) Como a modelagem UML contribui para a implementação de sistemas orientados a objetos na prática?

UML facilita o design, comunicação e implementação de sistemas orientados a objetos com diagramas que representam estrutura e comportamento.

2) Combine os conceitos de POO com suas respectivas definições.
  • Classe → Um molde que define atributos e comportamentos.
  • Objeto → Instância de uma classe.
  • Herança → Mecanismo que permite a uma classe herdar atributos e métodos de outra.
  • Encapsulamento → Prática de esconder os detalhes internos de uma classe.
3) Qual dos seguintes diagramas é mais utilizado para representar a estrutura de classes em UML?

A) Diagrama de Atividades
B) Diagrama de Casos de Uso
C) Diagrama de Classes
D) Diagrama de Sequência

4) Qual é a função principal de um diagrama de casos de uso?

A) Descrever a estrutura estática do sistema.
B) Representar funcionalidades do sistema.
C) Especificar a lógica de programação.
D) Identificar classes e atributos.

5) A Programação Orientada a Objetos (POO) é um paradigma fundamental na linguagem Java, permitindo a construção de sistemas complexos de forma organizada e modular. Conceitos como encapsulamento, herança e polimorfismo são cruciais para o desenvolvimento de software robusto e de fácil manutenção. A correta compreensão desses conceitos é vital para qualquer desenvolvedor Java.

DEITEL, P; DEITEL, H. Java: como programar. São Paulo: Pearson Education do Brasil, 2017 (adaptado).

Situação-Problema: Sofia é uma líder de equipe de desenvolvimento de software e está preparando um material de nivelamento para novos programadores Java que se juntarão ao seu time. Ela deseja criar questões que avaliem o entendimento dos conceitos essenciais da POO aplicados em Java.

Acerca dos princípios da Programação Orientada a Objetos em Java, marque a alternativa que Sofia apresentaria como correta.


A) Sofia poderia informar que, em Java, interfaces são utilizadas apenas para declarar constantes e não podem definir métodos, nem mesmo default ou static.

B) Sofia poderia ensinar que, em Java, para uma classe ser considerada verdadeiramente encapsulada, todos os seus atributos devem ser declarados como public para facilitar o acesso direto.

C) Na apresentação, Sofia poderia destacar que o polimorfismo em Java permite que métodos com a mesma assinatura (nome e parâmetros) em classes diferentes na mesma hierarquia de herança sejam executados de forma distinta, dependendo do tipo real do objeto em tempo de execução

D) Durante a capacitação, Sofia poderia afirmar que a herança múltipla entre classes é um recurso amplamente suportado em Java para aumentar a flexibilidade do código.

E) Sobre a linguagem Java, Sofia poderia explicar que uma classe abstrata pode ser instanciada diretamente, desde que todos os seus métodos abstratos tenham sido implementados por ela mesma.

6) Em programação orientada a objetos, um dos grandes desafios é como encontrar as classes. A análise e o design de sistemas de software é uma área extensa, complexa e problemática. Existem diferentes metodologias na literatura para extração e para o reconhecimento de objetos e de classes do mundo real em elementos de software.

Levando em consideração um possível estudo de caso, qual a afirmativa CORRETA sobre os elementos a serem observados?


A) Os verbos correspondem às classes e aos objetos, enquanto os adjetivos correspondem a coisas que os objetos fazem: isto é, aos métodos.
B) Os adjetivos correspondem às classes e aos objetos, enquanto os substantivos correspondem a coisas que os objetos fazem: isto é, aos métodos.
C) Os substantivos correspondem às classes e aos objetos, enquanto os verbos correspondem a coisas que os objetos fazem: isto é, aos métodos.
D) Os substantivos correspondem às classes e aos objetos, além de corresponder também a coisas que os objetos fazem: isto é, aos métodos.
E) Os verbos correspondem às classes e aos objetos, enquanto os substantivos correspondem a coisas que os objetos fazem: isto é, aos métodos.

7) O encapsulamento é um mecanismo da programação orientada a objetos no qual os membros de uma classe (atributos e métodos) constituem uma caixa preta. O nível de visibilidade dos membros pode ser definido pelos modificadores de visibilidade "privado" (-), 'público" (+) e "protegido" (#).

Com relação ao comportamento gerado pelos modificadores de visibilidade, assinale a opção correta.


A) Um atributo privado pode ser acessado pelos métodos públicos da própria classe e pelos métodos públicos das suas classes descendentes.
B) Um método protegido não pode acessar os atributos privados e declarados na própria classe.
C) Um membro público é visível na classe à qual ele pertence, mas não é visível nas suas classes descendentes.
D) Um atributo privado pode ser acessado pelos métodos privados da própria classe e pelos métodos protegidos das suas classes descendentes.
E) Um membro protegido é visível na classe à qual pertence e em suas classes descendentes.


8) Em POO (Programação Orientada a Objetos), os métodos representam as ações que uma classe é capaz de fazer, ou seja, as tarefas que os objetos desta classe podem desempenhar. Cada método possui uma assinatura que é usada para identificá-lo. Esta assinatura possui um identificador (nome do método), o tipo de dado que será retornado e uma lista de argumentos com seu respectivo tipo e nome.

É possível ainda realizar processos de sobrecarga, também denominado overloading, que consiste em manter um mesmo nome para dois ou mais métodos dentro de uma mesma classe; esta sobrecarga, para funcionar corretamente, requer que a assinatura dos métodos seja diferente. Embora manter o mesmo nome para métodos totalmente distintos possa soar um tanto estranho, o compilador é capaz de diferenciá-los e evitar conflitos. De acordo com Ricarte (2001), o processo de overloading “não gera conflito, pois o compilador é capaz de detectar qual método deve ser escolhido a partir da análise dos tipos dos argumentos do método. Nesse caso, diz-se que ocorre a ligação prematura (early binding) para o método correto”.

RICARTE, Ivan L. M. Programação orientada a objetos: uma abordagem com Java. Disponível em: http://www.dca.fee.unicamp.br/cursos/Po ... oojava.pdf. Acesso em: 30 dez. 2019.

Os métodos têm uma participação fundamental na estruturação de classes e nas ações que elas irão executar dentro de um sistema. Um método bastante útil no dia a dia de programadores é o método construtor, que tem algumas características e funções específicas.

A respeito dessas características e funções, avalie as afirmações a seguir considerando o desenvolvimento de um sistema que precisa ser otimizado através de ações providas por métodos de uma classe.

I. Métodos servem para inicializar classes no sistema, de forma que seu carregamento, quando requisitado, seja mais célere.
II. Uma de suas funções é construir a estrutura de um objeto a partir de um esboço de uma classe abstrata através de herança.
III. Métodos abstratos por herança são utilizados quando uma subclasse estende as funcionalidades de uma superclasse abstrata.
IV. Métodos construtores atribuem valores padrões a uma classe instanciada, caso não haja parâmetros/argumentos envolvidos.
V. Algumas linguagens requerem um método destrutor, enquanto outras destroem o método quando não utilizado no escopo na instância.

É correto apenas o que se afirma em


A) IV
B) III, IV e V
C) I, II, III e V
D) I e II
E) II e III

9) Acerca da linguagem Java, julgue os próximos itens.

O método no código

Código: Selecionar todos

System.out.println(valor.codePointAt(0));
retornará a comparação entre duas strings em formato unicode.[/B][/color]

A) Verdadeiro
B) Falso

10) Em uma dada classe, as classes que são estendidas e as interfaces que são implementadas são coletivamente chamadas de supertipos, e, do ponto de vista dos supertipos, uma nova classe é um subtipo. A nova classe inclui todos os seus supertipos, de modo que a referência a um objeto do subtipo possa ser usada polimorficamente em qualquer lugar onde uma referência a um objeto de qualquer de seus supertipos é requerida.

Declarações de interfaces criam nomes de tipos, assim como fazem as declarações de classes. É possível usar o nome de uma interface como o nome de tipo de uma variável, e qualquer objeto cuja classe implemente esta interface pode ser atribuída a esta variável.

ARNOLD, Ken; GOSLING, James; HOLMES, David. A Linguagem de Programação Java. 4. ed. Porto Alegre: Bookman, 2009.

Uma interface é declarada usando a palavra-chave interface, fornecendo um nome à interface e relacionando os membros da interface entre chaves. Desta forma, uma interface pode declarar como tipos de membros

I. os membros do tipo objetos.
II. os membros do tipo métodos.
III. os membros do tipo constantes.
IV. os membros do tipo classes e interfaces aninhadas.

É correto o que se afirma em:


A) II, III, IV
B I e II
C) I, III, IV
D) II e IV
E) I, II, III, IV

11) O paradigma da Programação Orientada a Objetos (POO) está presente na maioria das linguagens de programação atuais, principalmente aquelas consideradas de alto nível (que não têm interação direta com o hardware do dispositivo). Esse paradigma tem duas principais características que se destacam e o tornam popular entre os desenvolvedores: a segurança e a reutilização de código. A segurança é alcançada por meio do encapsulamento, enquanto a reutilização do código ocorre devido a alguns fatores, dentre eles, a possibilidade de herança de métodos e atributos de uma classe para outra.

A herança fornece às classes-filhas (chamadas também de subclasses) todo o escopo pertencente à classe-pai (superclasse), exceto aqueles protegidos pelas regras de encapsulamento. Linguagens como o C++ e Python dão ao desenvolvedor a possibilidade de realizar heranças múltiplas nas classes, ou seja, uma subclasse pode herdar métodos e atributos de duas ou mais classes ao mesmo tempo, enquanto a linguagem Java é mais restritiva nesse aspecto.

Considerando as definições expostas, é recomendado que todo desenvolvedor de sistemas domine ao menos a teoria que envolve a Programação Orientada a Objetos e suas especificidades quanto à herança. Ainda que existam mudanças sutis de linguagem para linguagem, o conhecimento amplo do assunto permite ao desenvolvedor escolher caminhos paralelos para a resolução de problemas.

Na linguagem Java, por exemplo, caso fosse necessário que uma CLASSE C recebesse herança da CLASSE A e da CLASSE B ao mesmo tempo, o desenvolvedor deverá


A) remover o encapsulamento (segurança) que impede a herança múltipla entre as várias classes do programa.
B) realizar a herança da Classe A para a Classe C e criar um objeto na Classe C, que acesse as propriedades da Classe B.
C) realizar uma herança da Classe A para a Classe B e, em seguida, uma outra herança da Classe B para a Classe C.
D) utilizar a sobreposição, para que a Classe A possa interagir diretamente com a Classe C, tornando-se sua classe-pai.
E) habilitar o encapsulamento na Classe C, para que seu escopo fique acessível para receber herança de outras classes.

12) Métodos construtores são utilizados para determinar as ações que devem ser executadas quando da criação de um objeto em Java.

I - O construtor é um método cujo nome deve ser o mesmo nome da classe e sem indicação do tipo de retorno.
II – O construtor define os valores iniciais aos atributos da classe.
III – Um método construtor deve ser declarado como sem retorno utilizando a especificação “void”.


A) I e III corretas
B) Todas corretas
C) II e III corretas
D) Somente afirmação II está correta
E) I e II corretas

13) O ambiente JCreator LE é um IDE (Integrated Development Environment ou Ambiente Integrado de Desenvolvimento) no qual você pode construir programas utilizando a linguagem Java. Existem muitos IDEs que utilizam a linguagem Java. O JCreator LE é uma boa opção por ser simples, estar no ambiente Windows e pela objetividade dos comandos e recursos disponíveis. Isso é fundamental para que se possa concentrar no desenvolvimento da linguagem de programação. Depois de instalado, o programa JCreator LE pode ser executado. Ao executar o programa, escolha a opção File, depois New, e em seguida Project.

PIVA JÚNIOR, D. et al. Algoritmos e programação de computadores. 2. ed. Rio de Janeiro: Elsevier, 2019 (adaptado).

Com base no texto lido, analise a situação hipotética a seguir.

Carlos, analista de sistemas de uma escola, está implementando um sistema, na Linguagem Java e na IDE JCreator, com as classes Aluno, Professor e Turma, permitindo a alocação de professores nas turmas e a inscrição dos alunos. Nesse sistema, Carlos identificou também a interface Avaliacao com o método avaliar (), que pode ser chamado nas classes Professor e Aluno.

Considerando a interface Avaliacao e o método avaliar (), avalie as asserções a seguir e a relação proposta entre elas.

I. Carlos pode implementar o conceito de polimorfismo se os comportamentos dos métodos na classe Aluno e Professor forem diferentes e a interface Avaliacao tiver sido definida como final.

PORQUE

II. O polimorfismo vem através de uma interface ou classe abstrata, fornecendo um método final para que o comportamento possa ser modificado entrando em pool de opções.

A respeito dessas asserções, assinale a opção correta.


A) As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
B) As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I
C) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
D) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
E) As asserções I e II são proposições falsas.

14) A inovação nas linguagens de computador é impulsionada por dois fatores: melhorias na arte de programar e alterações no ambiente de computação. Java não é exceção. Construída a partir do rico legado herdado das linguagens C e C++, Java adiciona melhorias e recursos que refletem o estado atual da arte de programar. Respondendo à ascensão do ambiente online, a linguagem Java oferece recursos que otimizam a programação para uma arquitetura altamente distribuída. Java foi concebida por James Gosling, Patrick Naughton, Chris Warth, Ed Frank e Mike Sheridan na Sun Microsystems, em 1991. No início, a linguagem se chamava “Oak”, mas foi renomeada como “Java” em 1995.

SCHILDT, H. Java para iniciantes. 6. ed. Porto Alegre: Grupo A, 2015.

Diante disso, considere a situação a seguir.

Yago, analista de sistemas de uma empresa de consultoria em carreiras, está desenvolvendo um sistema na linguagem Java para cadastro de Clientes (pessoas físicas) que contratam a consultoria. Nesse sistema, a primeira coisa que Yago desenvolveu foi a classe Pessoa, mostrada a seguir.

Código: Selecionar todos

public class Pessoa {
    public String nome;
    public int idade;
    private String CPF;
    private String RG;
 
    public Pessoa(String nome, int idade, String CPF, String RG) {
        this.nome = nome;
        this.idade = idade;
        this.CPF = CPF;
        this.RG = RG;
    }
 
    public Pessoa(String nome, String CPF, String RG, int idade) {
        this.nome = nome;
        this.CPF = CPF;
        this.RG = RG;
        this.idade = idade;
    }
 
    public String getNome() {
        return nome;
    }
 
    public void setNome(String nome) {
        this.nome = nome;
    }
 
    public int getIdade() {
        return idade;
    }
 
    public String getCPF() {
        return CPF;
    }
 
    public String getRG() {
        return RG;
    }
}
Considerando o código apresentado, pode-se afirmar que é possível criar dois objetos da classe Pessoa com o trecho de código

A) Pessoa ("Miguel",38, "123", "321/RJ") -> new p1();
Pessoa ("Andressa", 28,"145","578/RJ") -> new p2();

B) Pessoa p1 = new Pessoa ("Miguel", 38, "123","321/RJ");
Pessoa p2 = new Pessoa ("Andressa","145","578/RJ", 28);

C) Pessoa p1 <- Pessoa ("Miguel", "123", 38, "321/RJ");
Pessoa p2 <- Pessoa ("Andressa", 28,"145","578/RJ");

D) Pessoa p1 = new Pessoa ("Miguel", "123", 38, "321/RJ");
Pessoa p2 = new Pessoa ("Andressa", 28,"145","578/RJ");

E) Pessoa ("Miguel",38, "123", "321/RJ") = new p1();
Pessoa ("Andressa", 28,"145","578/RJ") = new p2();

15) Uma classe representa objetos com as mesmas características e comportamentos. Dessa maneira, pode-se ter a classe Pessoa representando as características e comportamentos de todas as pessoas, por exemplo, as características nome e idade; a classe Aluno representando as características e comportamentos das instâncias de Aluno, como matrícula e inscrição em disciplina, etc.

Na linguagem Java, uma classe representa um conjunto de objetos, ou seja, é um molde para a construção de vários objetos. Dentro de uma classe, são descritos os atributos (características) e métodos (comportamento) comuns a todos os objetos.

Com base no texto lido, analise a situação hipotética a seguir.

Enzo, analista de sistemas do governo federal, está implementando um sistema para cadastramento de robôs da Feira de Robótica. Cada robô tem um nome, um código e faz uma tarefa específica para a feira. Nesse cenário, Enzo criou a seguinte Classe Robo para representar as instâncias de Robôs:

Código: Selecionar todos

public class Robo {
  public String nome;
  public String codigo;
  
  publuc Robo(String nome, String codigo){
    this.nome = nome;
    this.codigo = codigo;
  }
  public void tarefa(){
      // realizar uma tarefa
    }
}

Considerando o código apresentado, julgue os itens a seguir.

I. Utilizando essa classe, Enzo pode criar um objeto r1 com o seguinte código: Robo r1 = new Robo("R1","3ET"); .
II. Na classe implementada por Enzo, o método tarefa pode ser chamado sem que seja necessário criar um objeto.
III. A classe implementada por Enzo possui um método construtor, utilizado para a criação de objetos.

É correto o que se afirma em


A) I e III
B) I, II e III
C) II e III
D) I
E) II
Algumas pessoas acham que foco significa dizer sim para a coisa em que você vai se focar.
Mas não é nada disso.
Significa dizer não às centenas de outras boas ideias que existem.
Você precisa selecionar cuidadosamente.”

Steve Jobs
Responder