Ótima explicação! Só um detalhe, a abstração usada no momento de explicar sobre a verificação de saldo na conta pode não ser adequada em todos os cenários. Por exemplo, se o pagamento for feito com cartão de crédito deve-se verificar se o cartão possui limite, com cartão de débito se possui saldo na conta por exemplo. Ainda assim podem ter até mesmo outras abstrações dependendo se o pagamento é feito num e-commerce por exemplo ou em um app de banco, mas sei que esses detalhes claro não precisariam ser tão explorados a fundo pois tornariam a explicação mais complexa. Mesmo assim valeu o esforço e o excelente trabalho neste vídeo para ensinar sobre esse conceito super importante de forma simplificada e fácil de entender, muito sucesso!.
Fala Paulo, beleza? Obrigado pelo comentário e por acrescentar ainda mais no conteúdo. Eu concordo contigo, pois cada cenário vai ter uma implementação diferente. Eu particularmente gosto da ideia da validação dentro do método de pagamento, podendo usar o polimorfismo se necessário, mas também sei da necessidade de validar dentro de cada classe específica, como você falou, saldo no cartão, ou numeração de boleto, enfim. Optei por mostrar dessa maneira pelo o dia a dia que vivo e vejo, mas a tua forma de pensar está correta também. Obrigado mais uma vez. Grande abraço.
@@giarettaio Sensacional cara! Muito sucesso para o seu canal! Continue esse ótimo trabalho de educar novos desenvolvedores, e algumas vezes até uns mais velhos rsrs
Por quê que CheckAccountMoney é private da classe Payment? Isso não é um detalhe da implementação? Por exemplo CreditCardPayment não teria uma forma de consultar saldo diferente do PixInstantPayment?
Faala Felype, tudo certo? CheckAccountMoney é uma abstração onde somente a classe Paymente vai ter acesso. Todas as outras classes que herdam de Payment (cartão, boleto...) vão usar esse método, pois quando eu efetuar o pagamento eu preciso verificar se tenho saldo em conta, no cartão, enfim. Se tu tens que fazer uma verificação que é exclusiva do Cartão de Crédito antes de efetuar o pagamento, por exemplo, tu pode criar essa abstração na classe do cartão. Agora, se tu vai usar a mesma validação para várias classes, minha opinião é criar uma abstração maior disso, para ter o reuso e não duplicidade de código. Tmj, abraço.
Quanto mais vejo videos sobre programação mais eu sei que servem apenas pra vender curso pois quem ja tem conhecimento sabe que esses videos sao muito rasos e as vezes acabam ensinando de uma forma errada. Abstracao nao esta ligado a uma classe com o modificador "abstract", abstração e uma definição de um tipo onde esse tipo representa uma funcionalidade, e o tipo mais abstrato seria uma interface onde ela nao quer saber o que cada membro faz. e uma classe pode ser um tipo menos abstrato onde uma classe to tipo cachorro, onde tem o metodo latir, comer , dormir. vc nao sabe como um cachorro pode latir, mas pode criar uma representação mais simples entao ja esta abstraindo .
Vídeo começa nos 2:25
Ótima explicação! Só um detalhe, a abstração usada no momento de explicar sobre a verificação de saldo na conta pode não ser adequada em todos os cenários. Por exemplo, se o pagamento for feito com cartão de crédito deve-se verificar se o cartão possui limite, com cartão de débito se possui saldo na conta por exemplo. Ainda assim podem ter até mesmo outras abstrações dependendo se o pagamento é feito num e-commerce por exemplo ou em um app de banco, mas sei que esses detalhes claro não precisariam ser tão explorados a fundo pois tornariam a explicação mais complexa. Mesmo assim valeu o esforço e o excelente trabalho neste vídeo para ensinar sobre esse conceito super importante de forma simplificada e fácil de entender, muito sucesso!.
Fala Paulo, beleza? Obrigado pelo comentário e por acrescentar ainda mais no conteúdo. Eu concordo contigo, pois cada cenário vai ter uma implementação diferente. Eu particularmente gosto da ideia da validação dentro do método de pagamento, podendo usar o polimorfismo se necessário, mas também sei da necessidade de validar dentro de cada classe específica, como você falou, saldo no cartão, ou numeração de boleto, enfim. Optei por mostrar dessa maneira pelo o dia a dia que vivo e vejo, mas a tua forma de pensar está correta também. Obrigado mais uma vez. Grande abraço.
@@giarettaio Sensacional cara! Muito sucesso para o seu canal! Continue esse ótimo trabalho de educar novos desenvolvedores, e algumas vezes até uns mais velhos rsrs
Tmj Paulo. Obrigado de coração pelas palavras.
Conteúdo simplesmente incrível, didática exemplar, meus parabéns e muito obrigado por compartilhar seu conhecimento
Tmj demais! Obrigado pelas palavras.
O vídeo começa mesmo em 2:24. De nada
Que conteúdo simples e rico em ensinamento, obrigado!
Valeeu, Gabriel. Fico feliz que esteja curtindo. Grande abraço, tmj.
Parabéns, cara. Seus videos são muitos concisos e claros.
Muito obrigado. Tmj demais. Abraço.
Excelente conteúdo e didática! Parabéns!
Valeeu, cara. Obrigado pelas palavras. Tmj!
Parabens ótima explicação!!
Tmj demais! Abraço
Por quê que CheckAccountMoney é private da classe Payment?
Isso não é um detalhe da implementação?
Por exemplo CreditCardPayment não teria uma forma de consultar saldo diferente do PixInstantPayment?
Faala Felype, tudo certo? CheckAccountMoney é uma abstração onde somente a classe Paymente vai ter acesso. Todas as outras classes que herdam de Payment (cartão, boleto...) vão usar esse método, pois quando eu efetuar o pagamento eu preciso verificar se tenho saldo em conta, no cartão, enfim.
Se tu tens que fazer uma verificação que é exclusiva do Cartão de Crédito antes de efetuar o pagamento, por exemplo, tu pode criar essa abstração na classe do cartão. Agora, se tu vai usar a mesma validação para várias classes, minha opinião é criar uma abstração maior disso, para ter o reuso e não duplicidade de código. Tmj, abraço.
Quanto mais vejo videos sobre programação mais eu sei que servem apenas pra vender curso pois quem ja tem conhecimento sabe que esses videos sao muito rasos e as vezes acabam ensinando de uma forma errada.
Abstracao nao esta ligado a uma classe com o modificador "abstract", abstração e uma definição de um tipo onde esse tipo representa uma funcionalidade, e o tipo mais abstrato seria uma interface onde ela nao quer saber o que cada membro faz. e uma classe pode ser um tipo menos abstrato onde uma classe to tipo cachorro, onde tem o metodo latir, comer , dormir. vc nao sabe como um cachorro pode latir, mas pode criar uma representação mais simples entao ja esta abstraindo .
Obrigado 🚀