← Voltar para a lista de provas Banco do Estado do Rio Grande do Sul S.A. (BANRISUL) · Técnico em Tecnologia da Informação II — Área 2: Desenvolvimento de Software 50 questões nesta prova · página 2 de 3 · 47 com gabarito Gabarito disponível A classe define atributos e comportamentos dos objetos. A classe é o molde (estrutura) que define atributos e métodos; os objetos são instâncias dela. B) As linguagens não definem automaticamente todas as classes necessárias; o programador cria as suas. C) Objetos são justamente instanciados a partir de classes. D) Quem representa uma instância específica é o objeto. E) Atributos e métodos são definidos na classe. Referência: POO: conceitos de classe e objeto. Resolução comentada do VaiConcursos. Gabarito disponível Apenas o item II está correto: uma classe pode implementar várias interfaces. II está certo: Java e C# permitem a uma classe implementar múltiplas interfaces. I está errado: a classe pode declarar métodos adicionais além dos exigidos pela interface. III está errado: os métodos de interface são implementados como públicos. A) Ignora que o II é certo. B) O item I é falso. D) Inclui I e III, ambos falsos. E) O III é falso, pois os métodos que implementam a interface precisam ser públicos. Referência: POO: interfaces em Java. Resolução comentada do VaiConcursos. Gabarito disponível No polimorfismo, uma variável da superclasse pode referenciar objeto da subclasse. Pelo polimorfismo de subtipagem, uma referência do tipo da superclasse (ou interface) pode apontar para instâncias de subclasses, e a chamada de método é resolvida dinamicamente conforme o tipo real do objeto. A) Generics e polimorfismo são complementares; um não elimina o outro. C) Dada a gabarito oficial, a sobrescrita exige a mesma assinatura, mas a questão tem a B como a afirmação inequivocamente correta e geral. D) A sobrescrita é o que viabiliza o comportamento polimórfico. E) O polimorfismo bem aplicado respeita o princípio de substituição de Liskov. Referência: POO: polimorfismo de subtipagem; princípio de Liskov. Resolução comentada do VaiConcursos. Gabarito disponível A herança permite reutilizar métodos e atributos da superclasse. Na herança, a subclasse aproveita os membros herdados da superclasse (respeitada a visibilidade), promovendo reuso de código e especialização. A) Herança gera acoplamento forte. B) Não elimina a composição, que continua útil e muitas vezes preferível. D) Atributos privados não são acessíveis diretamente pela subclasse. E) Várias linguagens (como Java e C#) não permitem herança múltipla de classes. Referência: POO: herança e encapsulamento. Resolução comentada do VaiConcursos. Gabarito disponível Composição representa relação 'possui um' ou 'é parte de'. Composição indica que um objeto contém outro(s) como parte de si, expressando as relações 'tem um' / 'é parte de', diferentemente da herança, que expressa 'é um'. A) O texto inverte a dependência: na composição forte, é o componente que não existe sem o composto, não o contrário. B) Herança é definida em tempo de compilação; composição permite variar em execução, logo os efeitos diferem. C) A relação 'é um' é da herança. E) Composição não é herança, nem direta nem indireta. Referência: POO: relações de composição, agregação e herança. Resolução comentada do VaiConcursos. Gabarito disponível Itens I e II corretos; III incorreto. I está certo: o polimorfismo permite escrever código genérico sobre abstrações, evitando duplicação. II está certo: interfaces definem contratos que diversas classes implementam de formas distintas. III está errado: métodos privados não são visíveis nas subclasses e, portanto, não podem ser sobrescritos, sendo incompatíveis com o polimorfismo. A) Omite o item I, que está certo. B) Considera só o III, que é falso. D) Inclui o III (falso) e exclui o II. E) Inclui o III, falso. Referência: POO: polimorfismo, sobrescrita e interfaces. Resolução comentada do VaiConcursos. Gabarito disponível Interfaces servem para simular múltiplas heranças de comportamento. Uma classe Java pode implementar várias interfaces, o que permite combinar contratos de comportamento de fontes distintas e simula a herança múltipla, que Java não permite entre classes. A) Uma classe pode implementar interface e também estender outra classe. B) A interface define o contrato (o que fazer), não o comportamento interno. C) Só a partir do Java 8 (métodos default/static) há implementações; não em qualquer versão. D) Classes abstratas podem ter métodos concretos. Referência: Java: interfaces e classes abstratas. Resolução comentada do VaiConcursos. Gabarito disponível Composição oferece mais flexibilidade por permitir comportamentos dinâmicos. Na composição, objetos delegam funções a outros objetos que podem ser trocados em tempo de execução, o que dá flexibilidade e menor acoplamento. Por isso se recomenda 'favorecer composição sobre herança'. A) A escolha afeta diretamente a manutenibilidade. C) A herança gera acoplamento forte com a superclasse, não desacoplamento. D) A composição favorece a reutilização. E) A herança múltipla traz complexidade (ex.: problema do diamante) e não é recomendada sempre. Referência: Princípio 'favoreça a composição sobre a herança' (Gang of Four). Resolução comentada do VaiConcursos. Gabarito disponível Na comunicação assíncrona, o emissor não espera resposta imediata. A característica fundamental é que o emissor envia a mensagem e segue seu trabalho, sem bloqueio, enquanto o receptor processa de forma independente e responde depois, se necessário. Isso reduz o acoplamento temporal entre os serviços. B) Não há tempos fixos de espera impostos a todas as mensagens. C) Bloqueio do fluxo é característica da comunicação síncrona. D) Assíncrona busca baixo acoplamento, não rígido nem síncrono. E) Processar a resposta na mesma execução é típico do modelo síncrono. Referência: Comunicação síncrona versus assíncrona em arquiteturas distribuídas/microsserviços. Resolução comentada do VaiConcursos. Gabarito disponível Filas de mensagens desacoplam processos, dando flexibilidade e escalabilidade. Com filas, produtor e consumidor não precisam operar ao mesmo tempo nem se conhecer, pois a fila intermedeia a comunicação. Isso favorece o desacoplamento, a flexibilidade e a escalabilidade, já que consumidores podem ser adicionados conforme a demanda. A) Filas não limitam o volume de forma inerente; ao contrário, absorvem picos. B) Filas favorecem comunicação assíncrona, sem protocolo exclusivo síncrono. D) Não exigem disponibilidade simultânea dos serviços. E) Justamente permitem o armazenamento temporário das mensagens. Referência: Conceitos de mensageria e message queue (ex.: RabbitMQ, JMS, AMQP). Resolução comentada do VaiConcursos. Gabarito disponível Barramento de eventos assíncrono com múltiplos assinantes melhora a escalabilidade. Um event bus/broker permite que produtores publiquem eventos sem conhecer os consumidores, e vários serviços interessados os assinam (publish/subscribe) de forma assíncrona. Isso desacopla os componentes e permite escalar consumidores de forma independente. A) Vincular o processador a um único emissor, sem múltiplas assinaturas, reduz a flexibilidade. B) Reduzir eventos limita a funcionalidade e não é solução de escalabilidade. C) Envio síncrono acopla e bloqueia, prejudicando a escala. E) Fluxo fixo e sequencial limita paralelismo e escalabilidade. Referência: Arquitetura orientada a eventos; padrão publish/subscribe. Resolução comentada do VaiConcursos. Gabarito disponível Garantia de entrega em mensageria: fila persistente até processamento com sucesso. Para evitar perda de mensagens, o broker armazena a mensagem de forma durável na fila e só a remove após o consumidor confirmar o processamento (ack). Assim, falhas do consumidor ou do sistema não causam perda, pois a mensagem pode ser reentregue. A) Sem recuperação em falha, há perda de mensagens. B) Envio indiscriminado por múltiplos canais não garante entrega nem ordem. D) Repetição sem controle gera duplicidade e não é técnica eficiente. E) Comunicação direta sem armazenamento intermediário perde mensagens se o destino estiver indisponível. Referência: Padrões de mensageria (Enterprise Integration Patterns: Guaranteed Delivery); conceitos de filas persistentes e ack. Resolução comentada do VaiConcursos. Gabarito disponível Uma classe deve ter apenas uma razão para mudar. O princípio da responsabilidade única diz que uma classe deve ter uma única responsabilidade, ou seja, apenas uma razão para ser modificada. Isso torna o código mais coeso e fácil de manter. A, B, C e D defendem acumular várias responsabilidades ou funções genéricas, o que contraria o princípio. Referência: Robert C. Martin, princípios SOLID (SRP). Resolução comentada do VaiConcursos. Gabarito disponível Módulos de alto nível se comunicam com os de baixo nível por meio de abstrações. O princípio da inversão de dependência estabelece que módulos de alto nível não devem depender de módulos de baixo nível, e que ambos devem depender de abstrações. A comunicação indireta por interfaces reduz o acoplamento e favorece manutenção e testes. A, C, D e E propõem dependência direta de classes concretas ou a eliminação de abstrações e interfaces, o que contraria o princípio. Referência: Robert C. Martin, princípios SOLID (DIP). Resolução comentada do VaiConcursos. Gabarito disponível Singleton controla as instâncias e oferece um ponto de acesso global. O Singleton garante uma única instância da classe e fornece um ponto global de acesso a ela. Isso evita objetos redundantes e centraliza o acesso. B) Não há destruição automática após cada uso. C) Criar múltiplas instâncias contraria o padrão. D) Acessos devem chegar à mesma instância. E) O padrão não usa herança para gerar múltiplas instâncias. Referência: Gamma et al., Design Patterns (GoF). Resolução comentada do VaiConcursos. Gabarito disponível O factory method define uma abstração de criação que as subclasses concretizam. O Factory Method define uma interface ou método abstrato para criar objetos e deixa que as subclasses decidam qual classe concreta instanciar. Com isso reduz o acoplamento e aumenta a flexibilidade. A) Descreve o Singleton. B) Não impede a criação de objetos. C) Contraria o padrão, que delega a criação a subclasses. E) Descreve um método estático único, que não é o Factory Method. Referência: Gamma et al., Design Patterns (GoF). Resolução comentada do VaiConcursos. Gabarito disponível Linguagem de descrição de projeto usa recursos de linguagem de programação para definir um modelo operacional. Segundo Sommerville, a linguagem de descrição de projeto (PDL) usa construções de linguagem de programação, porém mais abstratas, para especificar os requisitos por meio de um modelo operacional do sistema. A) Notações gráficas usam diagramas e texto. B) Especificações matemáticas usam conceitos formais, como autômatos e conjuntos. D) Sentenças em linguagem natural são texto livre. E) Linguagem natural estruturada limita a liberdade de escrita com formulários e templates. Referência: Sommerville, Engenharia de Software, formas de especificação de requisitos. Resolução comentada do VaiConcursos. Gabarito disponível O model encapsula o estado da aplicação e o banco de dados. No MVC, o model encapsula o estado da aplicação e o acesso aos dados, ou seja, o banco de dados. A view apresenta e o controller trata as solicitações. B) Enviar eventos de usuário ao controller é papel da view. C) Validar entradas e gerenciar formulários é função do controller ou da camada de apresentação. D) Processar solicitações HTTP é do controller. E) Gerar páginas dinamicamente é da view. Referência: Sommerville, Engenharia de Software (padrão MVC). Resolução comentada do VaiConcursos. Gabarito disponível O mesmo método sobrescrito em subclasses, com comportamentos distintos, é polimorfismo. ContaCorrente e PrevidenciaPrivada sobrescrevem consultarSaldo() da superclasse, e a mesma chamada produz resultados diferentes conforme o objeto. Isso caracteriza polimorfismo (sobrescrita). A) Não há agregação, e JavaScript não tem sobrecarga nativa de métodos. B) Não há composição, e a classe não é estática. C e E) A herança existe, mas a pergunta trata do comportamento do método nas chamadas, e o código não define encapsulamento privado ou protegido. Referência: Conceitos de programação orientada a objetos. Resolução comentada do VaiConcursos. Gabarito disponível Teste baseado em thread integra o conjunto de classes que responde a uma entrada. No teste de integração de sistemas orientados a objetos, o thread-based testing integra o conjunto de classes necessárias para responder a uma entrada ou evento, e cada thread é integrado e testado individualmente. Já o teste baseado em uso agrupa as classes por camadas de dependência. A) Class partition é um método de teste de classes, não de integração por sequência de execução. B) Não é uma estratégia reconhecida desse tipo. C) Não é termo consagrado. D) Usage-based testing integra por camadas de dependência de classes, não por thread. Referência: Pressman, Engenharia de Software (teste de integração orientado a objetos). Resolução comentada do VaiConcursos.BANRISUL 2025 — Técnico em Tecnologia da Informação II — Área 2: Desenvolvimento de Software — Prova Objetiva — Conhecimentos Específicos
Resolução comentada
Análise das alternativas
I A implementação de uma interface impede que o desenvolvedor declare métodos a ela.
II Várias interfaces podem ser implementadas em uma classe.
III A implementação de uma interface dispensa a necessidade de métodos públicos.
Assinale a opção correta.Resolução comentada
Análise das alternativas
Resolução comentada
Análise das alternativas
Resolução comentada
Análise das alternativas
Resolução comentada
Análise das alternativas
I O uso de polimorfismo reduz a duplicação de código visto que permite abstrações genéricas.
II Interfaces são frequentemente utilizadas na aplicação de polimorfismo por contrato.
III Métodos polimórficos devem ser declarados exclusivamente como privados.
Assinale a opção correta.Resolução comentada
Análise das alternativas
Resolução comentada
Análise das alternativas
Resolução comentada
Análise das alternativas
Resolução comentada
Análise das alternativas
Resolução comentada
Análise das alternativas
Resolução comentada
Análise das alternativas
Resolução comentada
Análise das alternativas
Resolução comentada
Análise das alternativas
Resolução comentada
Análise das alternativas
Resolução comentada
Análise das alternativas
Resolução comentada
Análise das alternativas
Resolução comentada
Análise das alternativas
Resolução comentada
Análise das alternativas
consultarSaldo() {}
}
class ContaCorrente extends ContaBanrisul {
consultarSaldo() { return "Conta Corrente:
R$ 22.000,01"; }
}
class PrevidenciaPrivada extends ContaBanrisul {
consultarSaldo() { return "Previdência:
R$ 120.000,53"; }
}
const contaCorrente = new ContaCorrente();
const previdencia = new PrevidenciaPrivada();
console.log(contaCorrente.consultarSaldo());
console.log(previdencia.consultarSaldo());
Com base no código precedente, em JavaScript, e nos conceitos da orientação a objetos, é correto afirmar que, nas duas últimas linhas, consultarSaldo() constituiResolução comentada
Análise das alternativas
Resolução comentada
Análise das alternativas
Acerca da programação orientada a objetos, assinale a opção correta.
A respeito das interfaces na programação orientada a objetos, julgue os itens a seguir.
Assinale a opção correta em relação ao polimorfismo.
No que se refere à herança na programação orientada a objetos, assinale a opção correta.
Assinale a opção correta, a respeito de composição na programação orientada a objetos.
Acerca do polimorfismo, julgue os itens a seguir.
Assinale a opção correta no que se refere a interfaces e classes abstratas.
Considerando que a escolha entre herança e composição impacta diretamente a flexibilidade e o acoplamento de um sistema orientado a objetos, assinale a opção correta.
Constitui característica fundamental da comunicação assíncrona entre serviços
Assinale a opção em que é apresentada característica de um sistema que utiliza filas de mensagens para comunicação entre serviços.
Em um sistema distribuído que usa eventos para a comunicação entre serviços, uma ação que melhora a escalabilidade da arquitetura é
Em arquiteturas que utilizam mensageria para a comunicação entre sistemas, uma técnica eficiente para a garantia da entrega de mensagens sem perda é
Segundo o princípio da responsabilidade única (single responsibility principle), em boas práticas de desenvolvimento orientado a objetos, uma classe deve
O princípio de inversão de dependência (dependency inversion principle) visa tornar o código mais flexível e desacoplado e favorecer sua manutenção e testabilidade. Uma abordagem alinhada a esse princípio consiste em
Durante o desenvolvimento de sistemas que exigem controle sobre a criação de instâncias, o padrão de projeto cuja adoção pode evitar múltiplos objetos redundantes e facilitar o acesso centralizado caracteriza-se por
O padrão de projeto factory method, utilizado para delegar a criação de objetos a subclasses e permitir maior flexibilidade e desacoplamento,
Considerando que, na engenharia de software, há várias formas de se escrever uma especificação de requisitos de sistema, assinale a opção em que é apresentada a abordagem baseada no uso de uma linguagem de programação com características mais abstratas, para especificar os requisitos, definindo um modelo operacional do sistema.
Na utilização do padrão MVC (model-view-controller) em uma arquitetura de aplicação web, cabe ao model
class ContaBanrisul {
Assinale a opção em que é apresentada a estratégia para teste de integração de sistemas orientados a objetos com base em sequência de execução que integra o conjunto de classes necessárias para responder a uma entrada onde cada sequência de execução é integrada e testada individualmente.