1
resposta

[Dúvida] Sobre programação procedural | orientação a objetos.

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!!

1 resposta

Olá, Braian. Tudo bem?

Eu vi aqui no seu perfil que você ainda não completou os cursos de Orientação a Objetos. Sugiro que você complete eles, pois eu tenho certeza que depois que você completar você terá uma outra visão sobre Orientação a Objetos.

Sobre a sua dúvida, aqui na Alura temos um capítulo que aborda justamente esta problemática, vou deixar o link para você assistir, pois eu acho que será melhor:

Vale lembrar que este é um a parte 2 de um curso de Orientação a Objetos com PHP. O ideal era que você fizesse o curso 1 antes de prosseguir:

Após você conferir o material, se tiver alguma outra dúvida estou à disposição.

Bons estudos :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓