[MÚSICA] Olá a todos. Bem vindos a mais Hands On do curso de Orientação de Objetos com Java. Eu sou Eduardo Guerra, hoje vamos falar sobre construtores. Vamos ver por exemplo, quando uma classe pode ter mais de construtor. Queremos ver por exemplo, que uma classe, pode ser construída de formas diferentes, ta? A gente vai fazer isso exemplo que a gente vai criar uma classe que representa uma compra, e vamos ver diferentes formas de se inicializar essa compra dependendo se ela é uma compra parcelada, ou se ela é uma compra à vista. Então vou criar aqui novo projeto. Então vou vir aqui, vou chamar ele de comércio. Então, criado aqui o projeto eu vou vir e vou criar a minha classe compra, então criei aqui a classe compra. Bom, nessa classe eu vou ter aqui inteiro que vai ser o valor, e vou colocar aqui como valor total, e vou ter inteiro aqui que vai ser número de parcelas. Então eu vou ter construtores, por exemplo, aqui da Compra, que vai estar recebendo nesse caso aqui, eu vou até colocar aqui uma observação, seria aqui quando for à vista, então ele vai receber só o valor. Então, nesse caso eu venho aqui e faço, valor total é igual ao valor, opa deu pouquinho a mais aqui e o número de parcelas, vai receber 1 porque ele está pagando à vista, quando paga à vista é uma parcela só. Agora eu vou ter o meu construtor aqui, que vai ser o à prazo. Na verdade vou colocar aqui, parcelado, então nesse caso ao invés de receber o valor total, eu vou receber quantidade de parcelas e o valor da parcela. Então, nesse caso, o número de parcelas. [SEM ÁUDIO] Ele vai receber a quantidade de parcelas, e ali o meu valor total ele vai estar recebendo o valor da parcela vezes a quantidade de parcelas. Então, note que a inicialização é completamente diferente, assim como a quantidade de parâmetros também de cada deles. Eu vou criar aqui agora alguns métodos, no caso vou criar só métodos get para poder estar recuperando ali, e eu vou criar aqui também, certo? Para pegar, vou botar aqui getValor Parcela, que ele vai retornar o valor total dividido pelo número de parcelas. Tá? Então note que eu tenho uma informação aqui que é calculada. Tá? Vamos ver então se isso aqui está funcionando direitinho? Então eu vou vir aqui, vou criar teste de unidade, como a gente já aprendeu outras aulas. Vou criar aqui o TesteCompra. adiciono o JUnit, quero sim. Então vou vir aqui, vou chamar aqui de compra AVista. E aqui, eu vou criar uma nova compra, usando o construtor à vista que recebe aqui só inteiro, então uma conta aqui de por exemplo 500 Aí eu vou verificar aqui utilizando o método assertEquals, se c. getNumeroParcelas. Na verdade o JUnit é ao contrário, é sempre o que eu primeiro, então, eu estou vendo se o número de parcelas é 1 assertEquals. Eu quero saber, se o valor da compra, se o valor total é 500 e o valor da parcela no caso, também tem que ser 500, que é uma parcela só. Então o valor, ele acaba sendo igual ao valor total. Então, o valor da parcela também é 500. Então vamos rodar o teste aqui, para ver se está, se está funcionando direitinho. Ele vai rodar ali o JUnit, e vai falar para gente se o teste está ok, a princípio este aqui está. Eu vou copiar aqui, eu vou fazer o teste da compra a prazo, vou botar aqui parcelado, melhor parcelado. Então, no caso aqui eu vou criar aqui uma compra de 1000 de por exemplo, 4 vezes, é isso mesmo? Vamos ver aqui. Não, primeiro é a quantidade de parcelas, então tem que ser de 4 vezes o valor de 1000, então o número de parcelas que ele tem que retornar é 4, o valor total tem que ser 1000 e o valor da parcela tem que ser 250. Vamos salvar aqui e vamos rodar o teste novamente opa, deu problema, qual foi o, qual foi o resultado aqui? Sim! Está errado mesmo, porque aqui eu não passo o valor total, passo o valor da parcela. Então teria que estar passando ali 250. Viu como é que o teste ajuda a gente a ver aqui os problemas, certo? Lembrando aqui que não é a quantidade e o valor da parcela, não o valor total, ta? Poderia ser o valor total, se assim eu quisesse que fosse o meu construtor. Ok? Então, o objetivo aqui desse Hands On foi mostrar que é possível ter mais de tipo de construtor para a mesma classe, e muitas vezes esses construtores eles podem ter digamos, significados diferentes, eles podem ser utilizados situações diferentes para construir objeto de uma mesma classe, certo? Muito obrigado por assistir. Até à próxima.