Aula: 12 - Os métodos de Empréstimo e Devolução

Afinal é isso que uma Biblioteca faz
Agora que temos os métodos básicos da Classe Biblioteca criados, vamos implementar a parte de Empréstimo e Devolução de Livros.
Estes métodos vão ver um pouco mais complexos do que os que fizemos até aqui.
Prosseguindo no uso da metodologia TDD, vamos criar um método de teste para tudo isso, assim:
testMovimentaLivro
  • Ele vai testar os métodos de Empréstimo e Devolução
    • Empresta um Livro
    • Empresta um segundo Livro
    • Devolve um Livro
    • Devolve um segundo Livro
    • Comandos de verificação depois de cada chamada de método

Planejamento e Design
Como já foi mencionado, estes métodos vão ser um pouco mais complexos, portanto, vamos cuidar do seu planejamento e design antes de começar a codificar.
Vamos estabelecer agora as características do nosso método de Empréstimo.
  • Deve estabelecer o objeto Pessoa no campo pessoa do Livro
  • Usando o método setPessoa
  • O que acontece se o Livro já foi emprestado?
    • Não deve permitir o empréstimo
  • Precisa testar isso no próprio método de Empréstimo
  • O método deve indicar sucesso ou falha de acordo com a situação
  • Devemos informar ao método chamador se o empréstimo foi bem sucedido ou não
Sabendo de tudo isso, vamos detalhar em Pseudo código, o que o método de Empréstimo deve fazer:
  1. Garantir que o Livro ainda não foi emprestado.
  2. Se ainda não foi emprestado, atribuir uma Pessoa para o Livro e retornar para o método
    chamador que o empréstimo foi bem sucedido.
  3. Caso contrário, simplesmente retornar ao método chamador que o empréstimo não ocorreu.
Agora que sabemos o que o método deve fazer, vamos estabelecer o "como" ele vai fazer, definindo a sua assinatura:
  1. Vai retornar um booleano (true ou false), indicando sucesso ou falha.
  2. No Pseudo-Código, foi mencionado "uma Pessoa para o Livro". Mas qual Pessoa e qual Livro?
  3. Livro e Pessoa portanto, vão ser parâmetros do nosso método.
Sendo assim, a assinatura do método seria esta:
      public boolean emprestimo(Livro li, Pessoa pe)
      
Com tudo isso em mente, podemos iniciar a construção do nosso método de teste, na Classe BibliotecaTest.
Nada de novo aqui. Usando os facilitadores do Eclipse, estamos prontos para começar.
Os primeiros passos, vão ser: Inicializar os objetos, com o já conhecido método setUp(). E adicionar Livros e Pessoas à Biblioteca, assim:
Neste ponto, vamos usar uma sintaxe um pouco diferente do método assertTrue do JUnit. De forma que: caso o retorno do método sendo testado seja falso, uma mensagem seja exibida, assim:
Lembrando que o método "emprestimo", que ainda vamos criar, retorna um valor booleano, indicando se a operação foi bem sucedida ou não.
Depois disso, supondo que o empréstimo tenha sido bem sucedido, devemos verificar se o nome da Pessoa atribuído ao Livro, é o que se espera, assim:
Lembrando aqui, que devemos recuperar o nome da Pessoa, e não comparar com o objeto Pessoa simplesmente. Como já foi mencionado, comparar dois objetos em Java pode ser enganador...
Também supondo que o empréstimo foi bem sucedido, podemos nos certificar que: uma tentativa de emprestar o mesmo livro vai falhar, usando agora o método assertFalse do JUnit. De forma que: caso o retorno do método sendo testado seja verdadeiro, uma mensagem seja exibida, assim:
Guarde na memória:
  • assertTrue - dá certo se o método sendo testado retorna true.
    Caso contrário, emite a mensagem.
  • assertFalse - dá certo se o método sendo testado retorna false.
    Caso contrário, emite a mensagem.
Com tudo isso, o método de Empréstimo está razoavelmente bem criticado.
Usando a mesma técnica e os mesmo dados, vamos fazer as verificações para o método de Devolução, assim:
Reparem que o método de Devolução, só precisa receber o Livro como parâmetro.
O próximo passo, é usar o "Quick Fix" do Eclipse para nos ajudar a criar os métodos que precisamos:
O que nos leva a isto:
Fazendo o mesmo para o método de Devolução:
Teremos:
Neste ponto, estamos aptos a implementar os métodos de Empréstimo e Devolução propriamente ditos.
Mas para isso, devemos considerar alguns detalhes
Por exemplo: o método de Empréstimo, vai precisar atribuir uma Pessoa a um Livro, mas apenas se o Objeto Pessoa estiver vazio (null).
Desta forma:
Aqui surgem algumas informações novas, que precisamos comentar.
  • O comando if, que é de uso frequente, e portanto precisa ser bem estudado.
  • O operador de igualdade ==, que não deve ser confundido com o de atribuição =. Um erro frequente entre os iniciantes.
  • O Literal1 null, que define um Objeto2 vazio.
    Notas:
  1. Diferente do que muitos imaginam, "null" não é uma palavra reservada. É um Literal.
  2. Entenda-se qualquer Objeto: um Campo, uma Variável, ou a instância de uma Classe.
Referências:
Portanto, com a expressão:
        if (l1.getPessoa() == null)
      
Estamos verificando se não há nenhuma Pessoa atribuída ao Livro "l1".
O código do método de Devolução, vai ser muito semelhante, assim:
Nada de novo aqui, a não ser:
  • O operador de diferente !=.
Neste caso, com a expressão:
        if (l1.getPessoa() != null)
      
Estamos constatando que já existe uma Pessoa atribuída ao Livro "l1".
Agora, estamos prontos para testar tudo que fizemos até agora. Como as modificações foram feitas apenas na Classe Biblioteca, podemos executar apenas os testes da Classe correspondente: BibliotecaTest.
Desta vez, com a Classe de Teste selecionada:
Vamos usar o atalho: Alt + Shift + X + T.
Se tudo correu bem e não houve erros de digitação, o teste deve passar:
Assim, os nossos métodos de Empréstimo e Devolução estão prontos para evoluir.

Um comentário:

  1. Você está procurando um empréstimo comercial, empréstimos pessoais, empréstimos hipotecários, empréstimos para carros, empréstimos estudantis, empréstimos não garantidos para consolidação, financiamento de projetos etc ... ou simplesmente recusar empréstimos de um banco ou instituição financeira por um ou mais motivos? Somos as soluções certas para crédito! Oferecemos empréstimos a empresas e indivíduos com uma taxa de juros baixa e acessível de 2%. Portanto, se você estiver interessado em um empréstimo urgente e seguro. Para mais informações, envie um email hoje: Via: Elegantloanfirm@hotmail.com.

    ResponderExcluir