/**
   * O método writeObject persiste o objeto recebido por parâmetro em arquivo. Recebe o seguinte
   * parâmetro:
   *
   * @param obj <code>Object</code> com o objeto a ser persistido. O método dispara as seguintes
   *     exceções.
   * @exception IOException caso não seja possível persistir o objeto no arquivo.
   * @exception ClassCastException caso o objeto seja de um tipo diferente do que pode ser
   *     persistido no arquivo.
   */
  @Override
  public void writeObject(Object obj) throws IOException, ClassCastException {
    Despesa despesa;

    if (obj instanceof Despesa) despesa = (Despesa) obj;
    else throw new ClassCastException();

    arquivoBinario.writeInt(despesa.getCodigo());

    arquivoBinario.writeInt(despesa.getCodigoCategoria());

    arquivoBinario.writeInt(despesa.getCodigoPagamento());

    arquivoBinario.writeLong(despesa.getDataDespesa().getTimeInMillis());

    arquivoBinario.writeLong(despesa.getDataPagamento().getTimeInMillis());

    arquivoBinario.writeChars(setStringLength(despesa.getDescricao(), 40));

    arquivoBinario.writeDouble(despesa.getValorDespesa());

    arquivoBinario.writeInt(despesa.getNumeroParcelas());

    arquivoBinario.writeChars(setStringLength(despesa.getNumeroCheque(), 20));
  } // writeObject()