Na aula de hoje, vamos explorar as classes abstratas em TypeScript, um conceito fundamental na programação orientada a objetos. Classes abstratas são classes base que não podem ser instanciadas diretamente, mas servem como estruturas para outras classes derivadas. Elas podem definir métodos abstratos que as subclasses devem implementar, criando um contrato que garante comportamentos específicos. Então, bora começar!
Definindo Classes Abstratas
Para definir uma classe abstrata em TypeScript, você utiliza a palavra-chave abstract antes da palavra-chave class. Além disso, você pode declarar métodos abstratos dentro dessa classe, que devem ser implementados nas subclasses.
abstract class Forma {
abstract calcularArea(): number; // Método abstrato
}
class Retangulo extends Forma {
constructor(private altura: number, private largura: number) {
super();
}
calcularArea(): number {
return this.altura * this.largura;
}
}
Neste exemplo, a classe Forma é uma classe abstrata com um método abstrato calcularArea(). A classe Retangulo estende Forma e implementa o método abstrato.
Vantagens de Classes Abstratas
- Definição de um contrato: As classes abstratas podem definir métodos que devem ser implementados pelas subclasses, garantindo que certos comportamentos estejam presentes.
- Flexibilidade: Permitem que você compartilhe código comum e forneçam uma estrutura para que as subclasses sigam.
Quando Usar Classes Abstratas
Você deve considerar usar classes abstratas quando desejar:
- Definir um contrato que as subclasses devem seguir.
- Fornecer uma implementação básica que pode ser estendida por subclasses.
- Evitar que a classe base seja instanciada diretamente.
Encerramos nossa exploração das classes em TypeScript. Agora você tem um entendimento sólido de como criar, estender e usar classes em seus projetos TypeScript. vocês também aprenderam diversos conceitos de Orientação a objetos que podem utilizar nos seus projetos Typescript ou em outras linguagens orientadas a objetos. Lembre-se de praticar o que aprendeu com os exercícios abaixo. Até a próxima aula!
Exercícios
Exercício 1: Criando uma Classe Abstrata
Começaremos criando uma classe abstrata chamada Animal. Essa classe deve ter um método abstrato chamado emitirSom(). Em seguida, crie duas subclasses: Cachorro e Gato. Ambas devem estender a classe Animal e implementar o método emitirSom(). O Cachorro deve exibir “Latindo!” e o Gato deve exibir “Miando!” quando o método emitirSom() for chamado. Crie instâncias dessas classes e chame o método emitirSom(), verificando se os sons corretos são exibidos no console.
Exercício 2: Calculando Áreas com Classes Abstratas
Crie uma classe abstrata chamada FiguraGeometrica com um método abstrato chamado calcularArea(). Em seguida, crie duas subclasses: Retangulo e Circulo. Ambas devem estender a classe FiguraGeometrica e implementar o método calcularArea(). O Retangulo deve aceitar altura e largura como parâmetros e calcular a área corretamente. O Circulo deve aceitar o raio como parâmetro e calcular a área corretamente. Crie instâncias dessas classes e chame o método calcularArea(), verificando se as áreas são calculadas corretamente e exibidas no console.
Exercício 3: Usando Classes Abstratas como Contratos
Crie uma classe abstrata chamada Funcionario com as seguintes propriedades e métodos:
nome: stringsalario: numberabstract calcularSalario(): number
Crie duas subclasses: Gerente e Desenvolvedor. Ambas devem estender a classe Funcionario e implementar o método calcularSalario(). O Gerente deve calcular o salário com um bônus de 10% sobre o salário base, enquanto o Desenvolvedor deve calcular o salário com um bônus de 20%. Crie instâncias dessas classes com nomes e salários iniciais e chame o método calcularSalario(), exibindo os salários calculados no console.
