Created
April 7, 2022 21:05
-
-
Save wesleysaraujo/24ebae7256ea7252c5e001aa8a588471 to your computer and use it in GitHub Desktop.
Exemplo ruim de uma classe que fere o princípio da responsabilidade única.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export default class BadCarro | |
{ | |
private _ano: number | |
private _velocidade: number = 0 | |
private _modelo: string | |
private _marca: string | |
private _cor: string | |
constructor(ano: number, modelo: string, marca: string, cor: string){ | |
this._ano = ano | |
this._modelo = modelo | |
this._marca = marca | |
this._cor = cor | |
} | |
public acelerar(): void{ | |
this._velocidade += 10 | |
} | |
public frear(): void{ | |
if (this._velocidade > 10) { | |
this._velocidade -= 10 | |
} else { | |
this._velocidade = 0 | |
} | |
} | |
public buzinar(): void{ | |
console.log('Beeeeeee') | |
} | |
public trocarPneu(): void{ | |
console.log('Trocando pneu') | |
} | |
public trocarOleo(): void{ | |
console.log('Evaziando oleo velho') | |
console.log('Trocando o filtro de óleo') | |
console.log('Colocando oleo novo') | |
console.log('Óleo trocado') | |
} | |
public abastacer(litros: number): void{ | |
console.log(`Abastecendo com ${litros} litros`) | |
} | |
public lavar(): void{ | |
console.log('Lavando o carro') | |
} | |
get ano(): number{ | |
return this._ano | |
} | |
get modelo(): string{ | |
return this._modelo | |
} | |
get marca(): string{ | |
return this._marca | |
} | |
get velocidade(): number{ | |
return this._velocidade | |
} | |
get cor(): string{ | |
return this._cor | |
} | |
set cor(cor: string){ | |
this._cor = cor | |
} | |
} | |
// Uso da classe Carro | |
let carro: BadCarro = new BadCarro(2016, 'New Fiesta', 'Ford', 'Branco') | |
console.log('Comprei o seguinte carro:') | |
console.log(`Modelo: ${carro.modelo} - Marca: ${carro.marca} - Cor: ${carro.cor} - Ano: ${carro.ano}`) | |
console.log(`Velocidade: ${carro.velocidade}`) | |
console.log('Acelerando...') | |
carro.acelerar() | |
console.log(`Velocidade: ${carro.velocidade}`) | |
console.log('Acelerando +...') | |
carro.acelerar() | |
carro.acelerar() | |
console.log(`Velocidade: ${carro.velocidade}`) | |
console.log('Freando...') | |
carro.frear() | |
console.log(`Velocidade: ${carro.velocidade}`) | |
// As coisas ficam bizarras daqui pŕa baixo | |
console.log('Trocando oleo...') | |
carro.trocarOleo() | |
carro.trocarPneu() | |
// Um carro por si só não tem a funcionlidade de trocarOleo nem trocarPneu |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment