[MÚSICA] [MÚSICA] Estamos aqui, então, na nossa terceira parte do hands on, que estamos fazendo tradutor, certo? Então, a gente já fez aqui os 3 primeiros cenários aqui, o tradutor sem palavras, uma tradução, 2 traduções. Agora a gente vai fazer 2 traduções para a mesma palavra, tá? Que é uma coisa que acontece, né. Então vamos ver como que a gente vai fazer o teste para isso daqui. Opa! Pára, pára tudo! Preciso botar aqui o meu chapéu vermelhinho, que é onde eu posso fazer o meu teste. Certo, então vamos lá. Vou pegar esse aqui como base, né e então eu vou adicionar, vou chamar o teste de DuasTraduções, MesmaPalavra, certo? E eu vou adicionar aqui, bom Good e bom nice, certo. Então, vamos lá, quando eu mandar traduzir bom, o que que ele tem que retornar? Bom, eu poderia falar assim, ele vai retornar uma lista de palavras, de significados, mas eu já estou usando aqui string. Eu vou fazer igual, por exemplo, o dicionário, que ele retorna os significados separados por vírgula. Então ele vai colocar o good, nice, depois o outro, tá? Então tem o meu teste, eu já posso rodá-lo, então eu executo aqui, roda, ok. Então olha, falhou. Perfeito, meu chapéu vermelhinho fez a parte dele e eu já posso passar para o meu chapéu verde, onde eu quero fazer esse teste passar. Então eu vim aqui no meu tradutor e o que que eu vou fazer aqui para esse teste passar? Já sei, na hora de adicionar a tradução, eu vou verificar primeiro se essa tradução existe. Então se (if), eu já posso tirar esse this aqui porque agora já não precisa mais se (if) traduções contém, já contém a palavra, então o que que eu vou fazer? Vamos lá. Já sei, eu vou fazer que a tradução, ela vai ser, ela vai ser igual à tradução, né e eu vou chamar aqui o próprio traduzir palavra mais a vírgula, com espacinho, mais a tradução nova. Ok? Será que vai funcionar, só isso? Salva aqui, roda. Funcionou! Que beleza, tranquilo, tá? Aqui eu queria fazer uma observação que é o seguinte: eu, por exemplo e confesso isso para vocês com toda a sinceridade, a primeira vez que peguei para fazer esse hands on, eu achei que eu fosse ter que criar uma mapa de listas e aí, quando eu fui fazendo eu vi que a solução poderia ser muito mais simples do que isso. Então isso é uma coisa que realmente acontece, a gente às vezes pensa soluções mais sofisticadas, mais complicadas, que talvez para requisitos mais complexos realmente fossem necessários, mas muitas vezes não precisa disso tudo. A gente consegue fazer uma solução mais simples, talvez para requisitos futuros, mais complexos talvez eu precise de prioridade entre as palavras e tal, mas de repente vale a pena ter mapa de lista, mas por enquanto nesses requisitos aqui eu acho que talvez não, tá? Vamos seguir com o nosso teste e ver o que acontece, tá? Então eu vou marcar aqui 2 traduções para a mesma palavra. OK. Muito bom! Então a refatoração tem alguma coisa? Eu acho que, por enquanto não, eu vou seguir criando aqui mais teste. Então eu vou, qual que é o próximo aqui? É traduzir uma frase. Vamos lá. Então, vou pegar esse aqui como parâmetro aqui DuasTraduções, então eu vou colocar aqui TraduzirFrases. Então, vamos lá, qual é a frase que eu vou traduzir aqui? A primeira decisão que eu queria fazer aqui é o seguinte, eu poderia usar o mesmo nome de método, traduzir aí verificar se é uma frase ou se é uma palavra, eu vou optar na minha classe por ter métodos diferentes. Eu vou ter o traduzir, que eu estou traduzindo uma palavra que eu posso ter vários significados ou tenho que traduzir a frase, que aí eu estou interessado estar traduzindo a frase como todo, tá? Então eu vou ter aqui guerra is good, não, o contrário. Guerra é ruim, não eu sou ruim, mas a guerra, né, a guerra no mundo é ruim, tá? Então, ele tem que traduzir aqui como War is bad, tá? Então, eu adicionar as traduções, né guerra ele tem que traduzir para war, é ele tem que traduzir para is e, vamos lá, ruim ele tem que traduzir para bad, tá? Então, como eu falei para vocês, a primeira que coisa que eu tenho que fazer ainda no meu chapeuzinho vermelho é fazer o código, pelo menos compilar, para eu poder rodar o teste. Então, eu vou criar novo método ali, eu vou salvar e vou rodar o meu teste. OK, então falhou! Eu só queria fazer uma observação aqui, note como é importante você dar bons nomes para os seus testes para você saber exatamente onde que foi o erro, né. Eu vejo aqui traduzir frase, eu sei qual foi o problema aqui, qual cenário que deu esse problema. Bom, agora que eu tenho aqui o meu traduzir frase, eu posso trocar aqui o meu chapéu para o verde para fazer a tradução da frase funcionar. Primeira coisa, eu já vou ajustar aqui os meus retornos, o Eclipse nem sempre cria da melhor forma possível, então String ele vai receber aqui uma frase. Então, a primeira coisa que eu vou fazer com essa frase é quebrar ela palavras, né. Então, vou vir aqui, vou quebrar palavras e vou quebrar aqui a frase usando o split, né. Então, frase, ponto, split, eu vou separar as palavras por espaço, que é o que está quebrando ali na frase. Então o que que eu vou fazer? Eu vou fazer agora for, né, nessas palavras. Então, palavra, string, palavra de palavras e aí eu vou traduzir cada uma delas, né. Eu preciso também de uma string para adicionar aqui, então eu vou ter aqui a frase traduzida, onde eu vou traduzindo e colocando, né. Eu vou começar com ela aqui com uma string vazia. Então, eu vou criar uma string, que eu vou chamar de tradução, onde eu vou chamar o método traduzir na palavra. Então, eu pego ali a tradução, eu vou adicionar na minha frase traduzida. Então, eu vou colocar aqui, mais igual, espaço, mais a minha tradução. Então, ele sempre bota espacinho antes e aí é que eu vou retornar a minha frase traduzida. Então, vou salvo aqui e vamos rodar o teste. Opa, continuou falhando. Vamos dar uma olhada aqui o que é que tem de diferente, ele mostra aqui que o que tem de diferente é espaço, antes do meu método traduzir frase. Bom, o que eu posso fazer aqui? Eu posso tanto fazer if aqui para que no primeiro não passa nada, ou eu posso optar por vir aqui e dar trim, né, que ele corta os espaços da string. Será que ele vai funcionar? Roda aqui. Funcionou, certo? Então, com isso a gente termina aqui os nossos oks, mas eu tenho certeza que você ainda está com uma pulguinha atrás da orelha, porque você está pensando assim, pera aí mas se eu tiver 2 traduções para mesma palavra e mandar traduzir a frase, isso não vai dar certo, tá? Então, o que que a gente faria nesse caso? A gente adiciona novo teste, a gente fala, opa, tem uma caso que vai dar errado aqui. Então, a gente adicionaria novo item na nossa lista, eu não vou escrever, tá e seguiria com o novo teste, tá? Então, não acabámos ainda, vamos ter mais video. Espero você para a gente finalizar esse exemplo. Muito obrigado. [MÚSICA]