Boa noite, venho de alguns anos desenvolvendo em programação procedural e atualmente resolvi estudar sobre orientacao a objetos e aprender definitivamente a trabalhar dessa forma, sei que pra quem programa em procedural é dificil achar uma lógica nas classes e métodos e até mesmo nos getters and setters, mas enfim, vamos a pergunta.
Digamos que na classe Conta eu tenho o método sacar() certo? Sendo assim para que eu saque um valor eu preciso somente usar esse método, mas se por algum motivo precisamos adicionar uma taxa de saque para alguns casos, e o que define esse caso fica do lado do cliente (onde chamaria o metodo sacar()), por exemplo, dois botões, sacar 1 e sacar 2, os dois usam o metodo sacar() na na minha visao procedural eu passaria um atributo por exemplo taxa=1 ou taxa=0 e dentro da funcao de saque validaria para definir se descontamos a taxa ou nao.
Enfim, minha duvida seria o seguinte, como ficaria na orientacao a objetos usando boas praticas? eu teria que fazer dois metodos sacarComTaxa() e sacarSemTaxa()? Simplesmente passaria um atributo e dentro da classe sacar() validaria esse atributo? Chamaria o metodo sacar() e depois o metodo descontarTaxa() e assim poderia validar do lado do cliente se chamou ou nao o descontarTaxa()?
Eis a minha duvida, valeu Obrigado!!