

Seu próximo nível começa aqui
Com a Assinatura Ilimitada, você tem tudo que precisa para sua aprovação.
Com a Assinatura Ilimitada, você combina prática, teoria e método em uma única assinatura com tudo que você precisa para sua aprovação.
Em Programação Orientada a Objetos, o encapsulamento protege o estado interno de um objeto e define como ele pode ser acessado/modificado. Já a herança permite criar classes derivadas a partir de classes base, promovendo reuso e especialização. Dentro desse assunto, considere o trecho de código em Python, usado para modelar pessoas de uma escola.

Assinale a alternativa correta sobre o acesso ao atributo “__nome” e a herança entre as classes.
A herança só ocorre se “Aluno” declarar novamente o método “get_nome”; sem isso, objetos de “Aluno” não possuem “get_nome”.
O atributo “__nome” é público e pode ser acessado diretamente por “aluno.__nome” sem restrições, pois Python não tem encapsulamento.
A chamada “super().__init__(nome)” é inválida em Python; para herdar, corretamente, é necessário repetir todo o código do construtor de “Pessoa” dentro de “Aluno”.
O atributo “__nome” pode ser acessado por “Aluno” como “self.__nome” dentro de “Aluno”, pois a herança permite que subclasses utilizem diretamente os atributos definidos na classe base.
O atributo “__nome” está encapsulado na classe “Pessoa” e deve ser acessado por “get_nome()”; “Aluno” herda de “Pessoa” e reutiliza a inicialização do nome via “super().__init__(nome)”.
Durante uma análise de código para um sistema bancário, o perito identificou um problema de projeto conhecido como “Fragile Base Class Problem”, típico em hierarquias de herança.
Esse problema geralmente ocorre quando
se tenta sobrescrever métodos privados.
uma modificação na superclasse afeta negativamente o comportamento de subclasses existentes.
uma interface é implementada sem exploração de polimorfismo.
se tenta herdar de uma classe marcada como final.
o coletor de lixo remove objetos derivados antes dos objetos base.
Na linguagem Java, a herança múltipla é suportada apenas para tipos (interfaces), sendo vedada a herança múltipla de estado (campos) em classes. Analise as afirmativas a seguir:
(__)Interfaces podem declarar atributos de instância com modificadores variados, incluindo privados e não finais.
(__)É possível utilizar a sintaxe InterfaceName.super.metodo() para invocar explicitamente um método default de uma interface.
(__)Se uma classe implementar duas interfaces que possuem métodos default com a mesma assinatura, ela deve sobrescrever o método para resolver o conflito.
Assinale a alternativa que apresenta a sequência correta:
F − V − F.
V − F − F.
V − F − V.
F − V − V.
F − F − V.
São propriedades que o controle de concorrência em um sistema gerenciador de bancos de dados relacionais deve implementar:
1. Atomicidade
2. Consistência
3. Isolamento
4. Durabilidade
5. Disponibilidade
Assinale a alternativa que indica todas as afirmativas corretas.
São corretas apenas as afirmativas 1, 2, 3 e 4.
São corretas apenas as afirmativas 1, 2, 3 e 5.
São corretas apenas as afirmativas 1, 2, 4 e 5.
São corretas apenas as afirmativas 2, 3, 4 e 5.
São corretas as afirmativas 1, 2, 3, 4 e 5.
O Princípio de Substituição de Liskov (Liskov Substitution Principle — LSP) é um dos pilares da programação orientada a objetos. Ele estabelece regras fundamentais para o uso correto da herança entre classes. Assinale a alternativa que descreve corretamente o Princípio de Substituição de Liskov (LSP):
A composição deve ser preferida em relação à herança como principal forma de reutilização de código.
Classes derivadas devem herdar todos os métodos, incluindo os privados, da classe base.
Uma classe deve possuir apenas uma única responsabilidade bem definida, evitando múltiplos motivos para mudança.
Objetos de uma subclasse devem ser capazes de substituir objetos da superclasse sem alterar o comportamento esperado do programa ou comprometer sua correção.
Interfaces devem ser específicas e adaptadas às necessidades de cada cliente, evitando dependências desnecessárias.


Seu próximo nível começa aqui

Seu próximo nível começa aqui
Destrave a preparação completa para sua aprovação. Com a Assinatura Ilimitada, você estuda com os melhores professores do Brasil e todos os recursos Gran.
Considere o seguinte código escrito em PHP 8.

Sobre a visibilidade dos atributos e a herança no código acima, assinale a alternativa COR RETA.
O método exibirDados na classe Computador resultará em erro, pois o atributo $codigo não pode ser acessado por classes filhas.
O atributo $status da classe pai poderia ser acessado e exibido dentro do método exibirDados da classe Computador sem restrições.
A classe Computador consegue acessar $nome e $codigo, mas não tem acesso direto ao atributo $status.
Em PHP, todos os atributos de uma classe pai são automaticamente convertidos para public quando herdados por uma classe filha.
Analise o seguinte código desenvolvido em Java SE 11:
class Animal {
public void fale() { }
}
class Cao extends Animal {
public void fale() {
System.out.print("au au ");
}
}
class Gato extends Animal {
public void fale() {
System.out.print("miau ");
}
}
class GatoPersa extends Gato {
public void fale() {
super.fale();
System.out.print("persa ");
}
}
class Tigre extends Gato {
public void fale() {
System.out.print("tigre ");
super.fale();
}
}
public class Principal {
public static void main(String[] args) {
Animal[] animais = {
new GatoPersa(),
new Cao(),
new Gato(),
new Tigre()
};
for (Animal a : animais) {
a.fale();
}
}
}
Assinale a alternativa que apresenta a saída impressa no console.
miau persa au au miau tigre miau
persa au au miau tigre miau
miau au au miau tigre miau
persa au au miau miau tigre
miau persa au au tigre miau
No desenvolvimento de um software de apoio à decisão, utilizado para consolidar dados epidemiológicos e administrativos do SUS, um DEV (programador) precisa garantir reuso de código, manutenibilidade, integridade das regras de negócio e confiabilidade dos resultados, especialmente ao modelar entidades do domínio da saúde. Considere o seguinte código em Python, utilizado na modelagem de relatórios gerados por diferentes módulos do sistema.

Fonte: a banca
Com base nos conceitos de herança, sobrescrita de métodos e uso de super(), assinale a alternativa que expressa CORRETAMENTE o comportamento do código e o conceito aplicado, considerando boas práticas na implementação de sistemas críticos de saúde pública.
A herança apresentada é desnecessária, pois as classes filhas em Python não podem reutilizar métodos da superclasse neste trecho de código.
O código utiliza herança para especializar o comportamento da classe base, permitindo reaproveitamento de código e extensão funcional, sendo o método super() responsável por invocar a implementação original do método na superclasse.
O código apresenta erro conceitual, pois o uso de herança não é recomendado em sistemas críticos do SUS devido a riscos de desempenho.
O método super() substitui completamente o método da superclasse, fazendo com que apenas o texto da classe filha seja exibido na saída.
O uso de herança neste código viola o princípio da integridade dos dados, pois a sobrescrita do método gerar() impede a reutilização da lógica definida na classe base.
O Polimorfismo Paramétrico em Java, implementado via Generics, utiliza o mecanismo de Type Erasure para manter a compatibilidade com versões legadas da JVM. Esse mecanismo impõe restrições à variância dos tipos. Para lidar com isso, a linguagem utiliza coringas (wildcards) com limites superiores (extends) e inferiores (super). Para a questão, considere o método apresentado:

Com base nas regras de covariância e contravariância, assinale a alternativa que apresenta uma operação tecnicamente válida, assumindo que a classe Cachorro herda explicitamente da classe Animal.
A instrução lista.add(new Object()); dentro do método, já que Object é um supertipo de Animal e, portanto, compatível com o limite inferior definido.
A instrução Animal a = lista.get(0); dentro do método, visto que o limite inferior garante que todos os elementos da lista sejam, no mínimo, do tipo Animal.
A chamada do método utilizando registrarAnimais(new ArrayList());, uma vez que Cachorro é um tipo compatível com a hierarquia de Animal.
A atribuição List lista = new ArrayList(); é inválida, pois o tipo genérico deve ser obrigatoriamente Animal ou um de seus descendentes.
A instrução lista.add(new Cachorro()); dentro do escopo do método, pois o wildcard ? super Animal garante que a lista pode aceitar com segurança instâncias de Animal ou de qualquer uma de suas subclasses.
Uma equipe desenvolveu um sistema de gerência de equipamentos de redes utilizando programação orientada a objetos. Nesse sistema, a classe DispositivoRede implementa o método exibirInfo() e possui dois atributos privados (modelo e enderecoIP) acessíveis apenas por meio de métodos públicos. A classe Roteador herda de DispositivoRede e redefine o método exibirInfo() para incluir informações da tabela de rotas, mantendo o mesmo nome e a mesma assinatura do método original. Com base nesse contexto, assinale a alternativa INCORRETA:
O acesso a modelo e enderecoIP por meio de métodos públicos caracteriza o encapsulamento, princípio que protege o estado interno do objeto contra modificações diretas não controladas.
A redefinição de exibirInfo() em Roteador mantendo o mesmo nome e a mesma assinatura do método da classe pai caracteriza sobrescrita de método (override).
Roteador herda os métodos públicos de DispositivoRede e pode utilizá-los diretamente sem necessidade de redefinição, pois a herança disponibiliza automaticamente à subclasse os métodos acessíveis da classe pai.
O fato de Roteador redefinir exibirInfo() permite que um objeto do tipo DispositivoRede, referenciando um Roteador, execute a versão do método definida em Roteador, o que caracteriza polimorfismo.
Como Roteador redefine exibirInfo() mantendo o mesmo nome e a mesma assinatura do método da classe pai, esse comportamento caracteriza sobrecarga de método (overloading), e não sobrescrita.


Seu próximo nível começa aqui
Seu desenvolvimento não pode ter limites. Garanta sua Assinatura Ilimitada e libere uma preparação completa com os melhores professores do Brasil.
No desenvolvimento de um sistema hospitalar, utiliza-se o paradigma da Orientação a Objetos para modelar entidades como "Médico" e "Enfermeiro", que compartilham características comuns da entidade genérica "Funcionário". O mecanismo que permite criar novas classes a partir de classes já existentes, absorvendo seus atributos e métodos, é denominado tecnicamente. Assinale a alternativa correta.
Encapsulamento.
Instanciação.
Abstração.
Herança.
Polimorfismo.
Considere que um sistema projetado para gerenciar diferentes tipos de contas bancárias foi desenvolvido considerando os princípios da programação orientada a objeto, e considerando as características a seguir:
▪ Uma classe abstrata Conta, que declara o método calcularTarifa(), sem implementação.
▪ Uma classe ContaCorrente, que herda de Conta e sobrescreve calcularTarifa().
▪ Uma classe ContaPoupanca, que herda de Conta e não sobrescreve calcularTarifa().
▪ Uma interface Tributavel, que declara o método calcularImposto().
▪ A classe ContaCorrente implementa a interface Tributavel.
▪ O sistema utiliza polimorfismo para manipular objetos do tipo Conta por meio de referências da superclasse.
Com base nos princípios da orientação a objetos, marque a alternativa CORRETA.
O sistema está corretamente modelado, pois uma classe concreta pode herdar métodos abstratos sem implementá-los, desde que esses métodos não sejam utilizados em tempo de execução.
A classe ContaPoupanca viola o princípio do polimorfismo, pois não implementa o método abstrato da superclasse, o que caracteriza erro de lógica, mas não de modelagem, conforme o paradigma da orientação a objetos.
A modelagem apresenta inconsistências conceituais, pois uma classe concreta, que herda de uma classe abstrata, deve implementar todos os métodos abstratos, e a implementação de uma interface estabelece um contrato obrigatório.
O uso de uma referência do tipo Conta para apontar para objetos de ContaCorrente elimina a necessidade de sobrescrita de métodos, uma vez que a vinculação ocorre em tempo de compilação, no instante em que é executado.
A implementação da interface Tributavel pela classe ContaCorrente impede que objetos dessa classe sejam tratados polimorficamente como instâncias de Conta, o que garante um nível primário de encapsulamento do código.
Java é uma linguagem de programação orientada a objetos. Analise o seguinte código Java que utiliza os conceitos de herança e polimorfismo e assinale a alternativa referente à saída desse código.

Miau, Miau!
Som genérico!
Erro de compilação.
Nenhuma saída.
Em linguagens orientadas a objetos que não oferecem suporte nativo para herança múltipla, é possível obter essa funcionalidade da seguinte forma:
usando interfaces ou classes abstratas para implementar os comportamentos de outras classes, permitindo que uma classe herde múltiplos comportamentos sem precisar de herança múltipla.
implementando-se a herança múltipla utilizando apenas uma classe base e criando múltiplos construtores dentro dessa classe, que simula o comportamento de herança de outras classes.
criando objetos dentro de uma classe e utilizando os métodos dessas classes internas para simular herança múltipla, sem modificar diretamente a classe.
usando apenas herança simples e implementando a duplicação de métodos dentro de cada classe filha, criando múltiplas instâncias de uma única classe base.
implementando-se a herança múltipla apenas em linguagens que oferecem suporte a isso diretamente, como C++ ou Python, não sendo possível simular em linguagens como Java ou C#.
Considere o seguinte trecho de código em Java.
class BancobeDados {
void conectar (String url) throws Exception {
if (url == null || url. isEmpty()) {
throw new Exception("URL inválida.");
}
System.out.printin("Conectado ao banco: " + url);
}
}
class ConsultaProcesso extends BancoDeDados {
@Override
void conectar (String url) throws Exception {
System.out.println("Conexão validada.");
___I___
}
}
Com base nos conceitos de herança e sobrescrita e sabendo que o código será executado em condições ideais, a lacuna I deve ser corretamente preenchida com
super.conectar("");
super.conectar (url);
this.conectar ("jdbc:padrao");
System.out.println("Conexão concluída.");
throw new Exception("Conexão não implementada.");


Seu próximo nível começa aqui

Seu próximo nível começa aqui
Destrave a preparação completa para sua aprovação. Com a Assinatura Ilimitada, você estuda com os melhores professores do Brasil e todos os recursos Gran.
Em uma implementação, para que a classe Prato herde os comportamentos e atributos da classe ItemCardapio, foi definido o seguinte código em Python 3.7:

Com base neste código e considerando as afirmativas abaixo, é INCORRETO dizer que:
O comando import permite a herança de informações e atributos da class Prato para a classe ItemCardapio.
A classe Prato está usando as informações e os atributos da classe ItemCardapio.
A class Prato(ltemCardapio) herda métodos e atributos de outra classe.
O uso do super() indica que estamos acessando informações de outra classe; nesse caso, da classe ItemCardapio.
A descrição não é da classe ItemCardapio; é referente ao prato.
Considere o seguinte trecho de código PHP que utiliza herança de classe. O código calcula o valor das férias de um trabalhador, incluindo o adicional de 1/3 sobre o salário.

Para que o trecho de código acima possa ser executado em condições ideais, a lacuna I deve ser corretamente preenchida com:
FeriasBase::calcularFerias($salario, $dias)
self::calcularFerias($salario, $dias)
parent.calcularFerias($salario, $dias)
$this.calcularFerias($salario, $dias)
parent::calcularFerias($salario, $dias)
Em Programação Orientada a Objetos (POO), a herança é um conceito fundamental que permite uma classe herdar características e comportamentos de outra. No que diz respeito à herança, assinale a afirmação verdadeira.
Em POO, a herança é uma forma de evitar a reutilização de código, pois permite que uma classe filha substitua completamente a classe pai.
A herança permite que uma classe filha acesse diretamente os membros privados da classe pai.
Uma classe filha pode herdar métodos e atributos de uma classe pai, mas não pode sobrescrever os métodos da classe pai.
A herança é um mecanismo que permite que uma classe filha herde métodos e atributos da classe pai, podendo modificar ou estender o comportamento da classe pai.
A herança impede que classes encapsulem dados.
A herança entre entidades pode ser implementada com tabelas separadas por subclasse ou com uma única tabela para a hierarquia.
Certo
Errado
As classes abstratas e concretas são fundamentais para organizar e estruturar sistemas de forma eficiente e flexível, pois promovem a reutilização de código e simplificam os processos de manutenção. O uso dessas classes permite ao desenvolvedor criar sistemas mais robustos, modulares e aderentes aos princípios da Programação Orientada a Objetos (POO).
Tendo como referência o tema classes concretas, classes abstratas e métodos abstratos, analise as afirmativas abaixo, assinalando V, para as Verdadeiras, e F, para as Falsas.
( ) As classes concretas atuam como modelos que definem um conjunto de características e comportamentos que suas subclasses devem seguir, sem estarem diretamente associadas a objetos.
( ) Superclasses abstratas obrigam suas subclasses a sobrescrever e implementar os métodos declarados como abstratos.
( ) Uma subclasse concreta deve fornecer implementações concretas de todos os métodos abstratos herdados da superclasse; caso contrário, será considerada abstrata também.
A sequência correta, de cima para baixo, é:
F – V – V.
V – V – F.
V – F – F.
F – F – V.