// 02

/*class nome_da_classe{ // escopo da classe
    // atributos e métodos aqui
    nome:string;
    idade:number;
    data_nascimento:Date;

    // construtor
    constructor(idade:number){
        this.idade = idade; //inicialização
    }

    // métodos
    nome_metodo(nome:string):void{
        //implementação
    }
}

let x = new Nome("", 30, '2025-04-25'); // objeto*/




// ATIVIDADES PRÁTICAS
// 1. Classe Pessoa

// classe
/*class Pessoa {
  nome: string; // atributos
  idade: number;
  cidade: string;

    // método construtor
  constructor(nome: string, idade: number, cidade: string) {
    this.nome = nome; // inicializar atributos ou variáveis
    this.idade = idade;
    this.cidade = cidade;
  }

    // método apresentar
  apresentar(): void {
    console.log(`Olá, meu nome é ${this.nome}, tenho ${this.idade} anos e moro em ${this.cidade}.`);
  }
}

// Exemplo de uso do objeto
const pessoa1 = new Pessoa("João", 30, "São Paulo");

// inicializar método
pessoa1.apresentar();*/


// 2. Calculando idade a partir da data de nascimento

/*class Pessoa {
  nome: string;
  dataNascimento: Date;

  constructor(nome: string, dataNascimento: Date) {
    this.nome = nome;
    this.dataNascimento = dataNascimento;
  }

  calcularIdade(): number {
    const hoje = new Date();
    let idade = hoje.getFullYear() - this.dataNascimento.getFullYear();
    
    const mesAtual = hoje.getMonth();
    const mesNascimento = this.dataNascimento.getMonth();
    
    if (mesNascimento > mesAtual || 
        (mesNascimento === mesAtual && hoje.getDate() < this.dataNascimento.getDate())) {
      idade--;
    }
    
    return idade;
  }
}

// Exemplo de uso
const pessoa2 = new Pessoa("Maria", new Date("1990-05-15"));
console.log(`${pessoa2.nome} tem ${pessoa2.calcularIdade()} anos.`);*/


// 3. Classe Carro

/*class Carro {
  marca: string;
  modelo: string;
  ano: number;

  constructor(marca: string, modelo: string, ano: number) {
    this.marca = marca;
    this.modelo = modelo;
    this.ano = ano;
  }

  ligar(): void {
    console.log("Carro ligado!");
  }
}

// Exemplo de uso
const meuCarro = new Carro("Ford", "Ka", 2020);
meuCarro.ligar();*/



// 4. Classe Animal com polimorfismo

/*class Animal {
  nome: string;

  constructor(nome: string) {
    this.nome = nome;
  }

  fazerSom(): void {
    console.log("Som genérico de animal");
  }
}

class Cachorro extends Animal {
  fazerSom(): void {
    console.log("Au au!");
  }
}

class Gato extends Animal {
  fazerSom(): void {
    console.log("Miau!");
  }
}

class Vaca extends Animal {
  fazerSom(): void {
    console.log("Muuu!");
  }
}

// Exemplos de uso
const animais: Animal[] = [
  new Cachorro("Rex"),
  new Gato("Mimi"),
  new Vaca("Mimosa")
];

animais.forEach(animal => {
  console.log(`${animal.nome} faz: `);
  animal.fazerSom();
});*/


// 5. Classe ContaBancaria

class ContaBancaria {
  numero: string;
  saldo: number;
  titular: string;

  constructor(numero: string, titular: string, saldoInicial: number = 0) {
    this.numero = numero;
    this.titular = titular;
    this.saldo = saldoInicial;
  }

  depositar(valor: number): void {
    if (valor > 0) {
      this.saldo += valor;
      console.log(`Depósito de R$${valor} realizado. Novo saldo: R$${this.saldo}`);
    } else {
      console.log("Valor de depósito inválido");
    }
  }

  sacar(valor: number): void {
    if (valor > 0 && valor <= this.saldo) {
      this.saldo -= valor;
      console.log(`Saque de R$${valor} realizado. Novo saldo: R$${this.saldo}`);
    } else {
      console.log("Saldo insuficiente ou valor inválido");
    }
  }

  consultarSaldo(): void {
    console.log(`Saldo atual: R$${this.saldo}`);
  }
}

// Exemplo de uso
const minhaConta = new ContaBancaria("12345-6", "Carlos Silva", 10000);
minhaConta.consultarSaldo();
//minhaConta.depositar(500);
//minhaConta.sacar(200);
//minhaConta.sacar(999); // Deve falhar








Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: