[MÚSICA] Olá! Bem-vindo ao curso de Desenvolvimento Ágil de Padrão com padrões de projeto. Eu sou Clóvis Fernandes e na aula de hoje iremos falar sobre alguns problemas que ocorrem quando você usa construtor. Quando, nem sempre você criar objeto usando o new é uma coisa apropriada. Nesta aula que está dividida três partes, nós iremos mostrar pra vocês dois problemas que normalmente ocorrem. Suponha que a jogosDadosonline.com, Startup, inexistente provavelmente, imaginada por mim. Queira montar site com jogos de dados. O que a gente precisa então pra trabalhar com jogos de dados, pra que que a gente usa os dados? Pra gerar aleatoriamente valores que vão fazer parte do jogo, pra cada participante. Então, normalmente o que que a gente faz, por exemplo, jogo de dados que tenha o uso de dois dados você põe copo, mexe pouco e atira. O resultado que sair, quando sair, por exemplo, você soma. Seis e quatro dá dez e aí o jogo pro participante vai continuar de acordo com esse resultado e o resultado dos jogos dos outros jogadores, dos valores de dados dos outros jogadores. O que acontece? Nós teremos jogos de dados, existem jogos com dado dois dados, três dados, número k de dados. Então, por exemplo, quando você tem dado, o valor mínimo que você tem é o valor máximo é seis. Com dois dados, quando eu for somar os valores, o valor mínimo é dois. Dado sai o outro sai o esse é o mínimo, a soma vai dar dois. E o máximo vai ser doze e assim você vai indo, conforme o número de dados que você estiver usando. O que que acontece que para gerar número aleatório nós vamos precisar saber que quantidades são e pra isso, algorítmo que eu estivesse usando pra gerar números aleatórios ia precisar de mínimo e de máximo. Obviamente existem outros jogos, ou outras situações que não é nem jogos e a geração de números aleatórios também seria importante. E que normalmente você tem sempre valor mínimo e valor máximo pra esse algorítmo. Então vamos dar uma olhada nesse algorítmo: Eu estou propondo pra vocês aqui, ele é apenas pra exemplificar, nosso problema de construtores, a classe geradora índice aleatória que eu estou especificando que o mínimo e o máximo, a gente pode dizer pelos comentários aí, vai ser inclusive. O valor min pode ser gerado aleatoriamente e o max também, por uma simplicidade porque eu estava fazendo algorítmo muito rapidamente eu estou simplificando e dizendo que o min vai ser igual ou menor a zero, ou seja o min não pode ser número negativo, mas isso não atrapalha o entendimento do problema, ok?! Então o que que eu tenho? Eu tenho método next e toda vez que ele for e toda vez que ele for acionado ele vai me voltar valor aleatório, entre inclusive as pontas o mín e o máx. Por princípio, a criação dessa classe, tem uma intenção inicial clara, que é o que ele está mostrando aí. Eu vou gerar número aleatório entre o mín e o max, inclusivo, tá certo? Isso é o que a intenção que eu to querendo fazer. Para definir essa intenção, eu estou propondo construtor, que recebe como parâmetro mín e máx. E eu simplesmente, só pra garantir que o usuário não colocou valor, mín maior do que o valor que está no máx. Eu usei essa o mín. e o máx. da biblioteca math, a biblioteca matemática. Pra garantir isso, mas vocês vejam que eu to colocando comentário pra deixar bem claro qual que é a intenção deste construtor. Ele vai ajudar a definir, número aleatório entre o mínimo e o máximo. Vamos mostrar aqui o seu uso, isto não é nada diferente do que normalmente você já faz. Eu testou criando uma variável gerAleat do tipo Gerador de Índice aleatório. E estou criando uma instância da classe Gerador Índice aleatório, então eu usei o new, e passei por dois parâmetros, o três e o dezoito. Eu estou intuindo três é o mínimo e dezoito é o máximo que podemos gerar. Agora, prestem atenção nesse raio que eu estou colocando aqui Eu estou querendo dizer, vocês conseguem ver claramente, está explícita a intenção que é entre três e dezoito? A intenção não está muito clara. Eu tenho que voltar pra documentação pra ter uma certeza, muitas vezes. Se eu estou usando corretamente, aí eu percebo como vocês veem agora nesse rainho lá cima, que é o entre, a intenção que eu estou querendo é entre três e o dezoito. Ou seja, mas esta intenção não está explícita, porque a criação do Construtor, ela segue o nome da classe. Ela não explicita claramente que eu quero gerador de Índice aleatório, entro mínimo e o máximo, isso não está explícito. E esse é dos problemas. Na parte dois, eu ainda vou mostrar outro exemplo pra tornar bem mais claro este problema da falta de expressão de intenção do Construtor. Então na aula de hoje, você vai sair dessa aula sabendo que o Construtor falta expressar de forma bem clara, explícita esta intenção. Vamos então mostrar na próxima aula, outro exemplo que vai tornar mais clara essa necessidade, isso realmente é problema. Obrigada! [MÚSICA]