Questão nº 58

Questão de Tecnologia da Informação · FGV TRF1 2024 (nº 58)

FGV2024Técnico Judiciário - Desenvolvimento de SistemasTecnologia da Informação
Gabarito: Aver comentário ↓

Considere o seguinte código em TypeScript (TS):

interface Orgao { print(): void; }
abstract class Tribunal implements Orgao {
    protected nome: string;
    constructor(nome: string) { this.nome = nome; }
    abstract sigla(): string;
    print(): void { console.log(this.nome); }
}
class TRF extends Tribunal {
    private numRegiao: number;
    constructor(nome: string, numRegiao: number) {
        super(nome);
        this.numRegiao = numRegiao;
    }
    sigla(): string {return `TRF\${this.numRegiao}`;}
}
let trf1 = new TRF("TRF", 1);
console.log(trf1.sigla());

Ao ser executado, o código acima irá:

Resposta comentada

Gabarito Alternativa A

Em TypeScript, interfaces definem contratos de forma e comportamento que classes devem seguir, enquanto classes abstratas são classes que não podem ser instanciadas diretamente e podem conter métodos abstratos (sem implementação) que devem ser implementados por suas subclasses, além de métodos concretos.

  • (A) Correta: O código está sintaticamente correto em TypeScript. A classe TRF estende Tribunal e implementa o método abstrato sigla(). Ao criar trf1 com numRegiao igual a 1 e chamar trf1.sigla(), o método sigla() de TRF é executado, retornando a string TRF1, que é então impressa no console.
  • (B) Incorreta: Em TypeScript, o modificador de acesso protected existe e funciona exatamente como esperado: membros protected são acessíveis dentro da própria classe e em suas subclasses. A armadilha aqui é que alguns podem confundir TypeScript com JavaScript puro (que não tem protected nativo) ou não conhecerem bem os modificadores de acesso em TS.
  • (C) Incorreta: Prefixar interfaces com "I" (ex: IOrgao) é uma convenção de estilo comum em algumas comunidades (como C#), mas não é um requisito de sintaxe em TypeScript. O código é perfeitamente válido sem o prefixo.
  • (D) Incorreta: Classes abstratas em TypeScript podem e frequentemente implementam interfaces. Isso permite que a classe abstrata declare que cumprirá um contrato, mas deixe a implementação de alguns de seus próprios métodos (ou dos métodos da interface) para suas subclasses concretas.
  • (E) Incorreta: Classes abstratas em TypeScript podem conter métodos concretos (com implementação) além do construtor, bem como métodos abstratos. O método print() na classe Tribunal é um exemplo de método concreto em uma classe abstrata.

Fonte: FGV TRF1 2024 Técnico Judiciário - Desenvolvimento de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho