// 01
/*abstract class Animal {
abstract emitirSom(): string;
}
class Cachorro extends Animal {
emitirSom(): string {
return "Au Au!";
}
}
class Gato extends Animal {
emitirSom(): string {
return "Miau!";
}
}
const animais: Animal[] = [new Cachorro(), new Gato()];
animais.forEach(animal => console.log(animal.emitirSom()));
// Saída: "Au Au!", "Miau!"*/
// 02
/*abstract class Veiculo {
abstract mover(): string;
}
class Carro extends Veiculo {
mover(): string {
return "O carro está acelerando!";
}
}
class Bicicleta extends Veiculo {
mover(): string {
return "A bicicleta está pedalando!";
}
}
const veiculos: Veiculo[] = [new Carro(), new Bicicleta()];
veiculos.forEach(v => console.log(v.mover()));
// Saída: "O carro está acelerando!", "A bicicleta está pedalando!"*/
// 03
/*abstract class ContaBancaria {
constructor(protected saldo: number) {}
abstract sacar(valor: number): string;
}
class ContaCorrente extends ContaBancaria {
sacar(valor: number): string {
if (valor <= this.saldo) {
this.saldo -= valor;
return `Saque de R$${valor} realizado. Saldo: R$${this.saldo}`;
}
return "Saldo insuficiente!";
}
}
class ContaPoupanca extends ContaBancaria {
sacar(valor: number): string {
if (valor <= this.saldo && valor <= 1000) {
this.saldo -= valor;
return `Saque de R$${valor} realizado. Saldo: R$${this.saldo}`;
}
return "Limite de saque excedido ou saldo insuficiente!";
}
}
const contas: ContaBancaria[] = [new ContaCorrente(500), new ContaPoupanca(1500)];
console.log(contas[0].sacar(200)); // Saque permitido
console.log(contas[1].sacar(1200)); // Limite excedido*/
// 04
/*abstract class Dispositivo {
abstract ligar(): string;
}
class Smartphone extends Dispositivo {
ligar(): string {
return "Smartphone ligando... Tela de bloqueio ativada!";
}
}
class Notebook extends Dispositivo {
ligar(): string {
return "Notebook iniciando... Windows carregando!";
}
}
const dispositivos: Dispositivo[] = [new Smartphone(), new Notebook()];
dispositivos.forEach(d => console.log(d.ligar()));*/
// 05
/*abstract class Funcionario {
abstract calcularSalario(): number;
}
class CLT extends Funcionario {
constructor(private salarioBase: number) {
super();
}
calcularSalario(): number {
return this.salarioBase * 0.85; // Desconto de 15%
}
}
class PJ extends Funcionario {
constructor(private valorHora: number, private horasTrabalhadas: number) {
super();
}
calcularSalario(): number {
return this.valorHora * this.horasTrabalhadas;
}
}
const funcionarios: Funcionario[] = [new CLT(3000), new PJ(100, 40)];
funcionarios.forEach(f => console.log(f.calcularSalario()));
// Saída: 2550, 4000 */
// 06
/*abstract class Forma {
abstract desenhar(): string;
}
class Circulo extends Forma {
desenhar(): string {
return "Desenhando um círculo ⭕";
}
}
class Retangulo extends Forma {
desenhar(): string {
return "Desenhando um retângulo ▭";
}
}
const formas: Forma[] = [new Circulo(), new Retangulo()];
formas.forEach(f => console.log(f.desenhar())); */
// 07
/*abstract class Produto {
constructor(protected preco: number) {}
abstract calcularDesconto(): number;
}
class Livro extends Produto {
calcularDesconto(): number {
return this.preco * 0.9; // 10% off
}
}
class Eletronico extends Produto {
calcularDesconto(): number {
return this.preco * 0.95; // 5% off
}
}
const produtos: Produto[] = [new Livro(50), new Eletronico(1000)];
produtos.forEach(p => console.log(p.calcularDesconto()));
// Saída: 45, 950 */
// 08
/*abstract class Personagem {
abstract atacar(): string;
}
class Guerreiro extends Personagem {
atacar(): string {
return "Guerreiro ataca com espada! ⚔️";
}
}
class Mago extends Personagem {
atacar(): string {
return "Mago lança bola de fogo! 🔥";
}
}
const personagens: Personagem[] = [new Guerreiro(), new Mago()];
personagens.forEach(p => console.log(p.atacar())); */
// 09
/*abstract class ServicoEnvio {
abstract enviar(destinatario: string): string;
}
class Email extends ServicoEnvio {
enviar(destinatario: string): string {
return `Email enviado para ${destinatario} 📧`;
}
}
class SMS extends ServicoEnvio {
enviar(destinatario: string): string {
return `SMS enviado para ${destinatario} 📱`;
}
}
const servicos: ServicoEnvio[] = [new Email(), new SMS()];
servicos.forEach(s => console.log(s.enviar("fulano@exemplo.com"))); */
// 10
abstract class InstrumentoMusical {
abstract tocar(): string;
}
class Violao extends InstrumentoMusical {
tocar(): string {
return "🎸 Strum strum strum...";
}
}
class Piano extends InstrumentoMusical {
tocar(): string {
return "🎹 Plim plim plim...";
}
}
const instrumentos: InstrumentoMusical[] = [new Violao(), new Piano()];
instrumentos.forEach(i => console.log(i.tocar()));
To embed this project on your website, copy the following code and paste it into your website's HTML: