Cursos / Automação Industrial / Programação Orientada a Objetos / Aula
import { SaldoInsuficienteError } from "./errors/saldoinsuficienteerror";
import { ValorInvalidoError } from "./errors/valorinvalidoerror";
export class ContaBancaria{
private _saldo: number;
public constructor(){
this._saldo = 0;
}
public depositar(valor: number):void{
if(valor <= 0){
throw new ValorInvalidoError('Valor inválido para depósito',valor);
}
this._saldo += valor;
}
public sacar(valor: number): void{
if(valor <= 0){
throw new ValorInvalidoError('Valor inválido para saque',valor);
}
if(this._saldo - valor < 0){
throw new SaldoInsuficienteError('Não insuficiente', this._saldo);
}
this._saldo -= valor;
}
public transferir(valor: number, contaDestino: ContaBancaria){
this.sacar(valor);
contaDestino.depositar(valor);
}
public get saldo() : number {
return this._saldo;
}
}
export class SaldoInsuficienteError implements Error{
name: string;
message: string;
private _saldoDisponivel: number;
constructor(message: string, saldoDisponivel: number){
this.name = 'SaldoInsuficienteError';
this.message = `${this.name}: ${message}`;
this._saldoDisponivel = saldoDisponivel;
}
public get saldoDisponivel() : number {
return this._saldoDisponivel;
}
}
export class ValorInvalidoError implements Error{
name: string;
message: string;
private _valorInvalido: number;
constructor(message: string, valorInvalido: number){
this.name = 'ValorInvalidoError';
this.message = `${this.name}: ${message}`;
this._valorInvalido = valorInvalido;
}
public get valorInvalido() : number {
return this._valorInvalido;
}
}
Versão 5.3 - Todos os Direitos reservados