// 01

class ContaBancaria {
    constructor(
        public numeroConta: string,
        public saldo: number,
        public titular: string
    ) {}

    depositar(valor: number): void {
        this.saldo += valor;
    }

    sacar(valor: number): void {
        if (valor <= this.saldo) {
            this.saldo -= valor;
        }
    }
}

const conta = new ContaBancaria("12345-6", 1000, "João Silva");
conta.depositar(500);
conta.sacar(200);
console.log(conta.saldo); // 1300


// 02
/*class Produto {
    constructor(
        public nome: string,
        public preco: number,
        public quantidadeEmEstoque: number
    ) {}

    vender(quantidade: number): void {
        if (quantidade <= this.quantidadeEmEstoque) {
            this.quantidadeEmEstoque -= quantidade;
        }
    }

    repor(quantidade: number): void {
        this.quantidadeEmEstoque += quantidade;
    }
}

const produto = new Produto("Notebook", 2500, 10);
produto.vender(3);
console.log(produto.quantidadeEmEstoque); // 7*/


// 03
/*class Livro {
    constructor(
        public titulo: string,
        public autor: string,
        public ISBN: string
    ) {}
}

class Biblioteca {
    public livros: Livro[] = [];

    adicionarLivro(livro: Livro): void {
        this.livros.push(livro);
    }

    removerLivro(ISBN: string): void {
        this.livros = this.livros.filter(livro => livro.ISBN !== ISBN);
    }
}

const biblioteca = new Biblioteca();
biblioteca.adicionarLivro(new Livro("TypeScript", "Autor", "123"));
console.log(biblioteca.livros.length); // 1*/


// 04
/*class Retangulo {
    constructor(
        public largura: number,
        public altura: number
    ) {}

    calcularArea(): number {
        return this.largura * this.altura;
    }
}

class Circulo {
    constructor(public raio: number) {}

    calcularArea(): number {
        return Math.PI * this.raio ** 2;
    }
}

const retangulo = new Retangulo(5, 10);
console.log(retangulo.calcularArea()); // 50*/

// 05
/*class Pedido {
    public itens: string[] = [];
    
    constructor(public cliente: string) {}

    adicionarItem(item: string): void {
        this.itens.push(item);
    }
}

const pedido = new Pedido("João");
pedido.adicionarItem("Camisa");
console.log(pedido.itens); // ["Camisa"]*/

// 06
/*class Cachorro {
    constructor(public nome: string) {}

    latir(): string {
        return "Mijar no poste!";
    }
}

class Gato {
    constructor(public nome: string) {}

    miar(): string {
        return "Arranhar o sofá!";
    }
}

const cachorro = new Cachorro("Rex");
console.log(cachorro.latir()); // "Mijar no poste!"*/

// 07
/*class Configuracoes {
    constructor(
        public tema: string = "light",
        public idioma: string = "pt-BR"
    ) {}
}

const config = new Configuracoes();
config.tema = "dark";
console.log(config.tema); // "dark"*/

// 08
/*class Usuario {
    constructor(
        public login: string,
        private senha: string
    ) {}

    alterarSenha(novaSenha: string): void {
        if (novaSenha.length >= 6) {
            this.senha = novaSenha;
        }
    }

    verificarSenha(senha: string): boolean {
        return this.senha === senha;
    }
}

const usuario = new Usuario("admin", "123456");
console.log(usuario.verificarSenha("123456")); // true*/

// 09
/*class Aluno {
    public notas: number[] = [];
    
    constructor(public nome: string) {}

    adicionarNota(nota: number): void {
        this.notas.push(nota);
    }

    calcularMedia(): number {
        return this.notas.reduce((a, b) => a + b, 0) / this.notas.length;
    }
}

const aluno = new Aluno("Maria");
aluno.adicionarNota(8);
aluno.adicionarNota(7);
console.log(aluno.calcularMedia()); // 7.5 */

// 10
/*class Quadrado {
    constructor(public lado: number) {}

    area(): number {
        return this.lado ** 2;
    }

    perimetro(): number {
        return this.lado * 4;
    }
}

const quadrado = new Quadrado(5);
console.log(quadrado.area()); // 25  */


Embed on website

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