Class: BoletoBancario::Calculos::Modulo11 Abstract
- Inherits:
-
String
- Object
- String
- BoletoBancario::Calculos::Modulo11
- Defined in:
- lib/boleto_bancario/calculos/modulo11.rb
Overview
This class is abstract.
Precisa implementar { #fatores, #calculate } nas subclasses.
Classe que possue a convenção de calculo do modulo 11. O que muda para cada classe é a forma de verificar o total do cálculo.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#number ⇒ Object
readonly
Número que será feito o cálculo do módulo 11.
Instance Method Summary collapse
- #calculate ⇒ Fixnum
-
#fatores ⇒ Array
número passado como argumento no initialize.
- #initialize(number) ⇒ String constructor
-
#mod_division ⇒ Fixnum
Realiza o cálculo retornando o resto da divisão do cálculo dos fatores por 11.
-
#total ⇒ Fixnum
Subtrai 11 do resto da divisão para se ter o total do módulo 11.
Constructor Details
#initialize(number) ⇒ String
16 17 18 19 20 |
# File 'lib/boleto_bancario/calculos/modulo11.rb', line 16 def initialize(number) @number = number super(calculate.to_s) end |
Instance Attribute Details
#number ⇒ Object (readonly)
Número que será feito o cálculo do módulo 11.
11 12 13 |
# File 'lib/boleto_bancario/calculos/modulo11.rb', line 11 def number @number end |
Instance Method Details
#calculate ⇒ Fixnum
33 34 35 |
# File 'lib/boleto_bancario/calculos/modulo11.rb', line 33 def calculate raise NotImplementedError, "Not implemented #calculate in subclass." end |
#fatores ⇒ Array
número passado como argumento no initialize.
26 27 28 |
# File 'lib/boleto_bancario/calculos/modulo11.rb', line 26 def fatores raise NotImplementedError, "Not implemented #fatores in subclass." end |
#mod_division ⇒ Fixnum
Realiza o cálculo retornando o resto da divisão do cálculo dos fatores por 11.
41 42 43 |
# File 'lib/boleto_bancario/calculos/modulo11.rb', line 41 def mod_division @mod_division ||= FatoresDeMultiplicacao.new(@number, fatores: fatores).sum % 11 end |
#total ⇒ Fixnum
Subtrai 11 do resto da divisão para se ter o total do módulo 11.
49 50 51 |
# File 'lib/boleto_bancario/calculos/modulo11.rb', line 49 def total @total ||= 11 - mod_division end |