Class NaturalNumber2

java.lang.Object
components.naturalnumber.NaturalNumberSecondary
components.naturalnumber.NaturalNumber2
All Implemented Interfaces:
NaturalNumber, NaturalNumberKernel, Standard<NaturalNumber>, Comparable<NaturalNumber>

NaturalNumber represented as a Stack<Integer> with implementations of primary methods.

Execution-time performance of all methods implemented in this class is O(1), except the constructors from String (which is O(|s|)) and from NaturalNumber (which is O(log n)).

Mathematical Definitions:
HAS_ONLY_DIGITS (
 s: string of integer
): boolean satisfies
if s = empty_string
 then HAS_ONLY_DIGITS (s) = true
 else for all a: string of integer, k: integer where (s = a * <k>)
       (HAS_ONLY_DIGITS (s) = (HAS_ONLY_DIGITS (a)  and  0 <= k < 10))

IS_WELL_FORMED_RADIX_REPRESENTATION (
 s: string of integer
): boolean is
s = empty_string  or
    there exists k: integer, a: string of integer
     (s = <k> * a  and
      1 <= k < 10  and
      HAS_ONLY_DIGITS (a))

NUMERICAL_VALUE (
 s: string of integer
): integer satisfies
if s = empty_string
 then NUMERICAL_VALUE (s) = 0
 else for all a: string of integer, k: integer where (s = a * <k>)
       (NUMERICAL_VALUE (s) = NUMERICAL_VALUE (a) * 10 + k)

REVERSED_STRING_OF_DIGITS (
 n: NATURAL
): string of integer satisfies
if n = 0
then REVERSED_STRING_OF_DIGITS (n) = empty_string
else REVERSED_STRING_OF_DIGITS (n) = <n mod 10> * REVERSED_STRING_OF_DIGITS (n / 10)
Representation Invariant (concrete invariant of $this):
IS_WELL_FORMED_RADIX_REPRESENTATION (rev($this.digits))
Abstraction Relation (interpretation mapping between $this and this):
this = NUMERICAL_VALUE (rev($this.digits))
  • Constructor Details

    • NaturalNumber2

      public NaturalNumber2()
      No-argument constructor.
    • NaturalNumber2

      public NaturalNumber2(int i)
      Constructor from int.
      Parameters:
      i - int to initialize from
    • NaturalNumber2

      Constructor from String.
      Parameters:
      s - String to initialize from
    • NaturalNumber2

      Constructor from NaturalNumber.
      Parameters:
      n - NaturalNumber to initialize from
  • Method Details

    • newInstance

      public final NaturalNumber newInstance()
      Description copied from interface: Standard
      Returns a new object with the same dynamic type as this, having an initial value. If the type T has a no-argument constructor, then the value of the new returned object satisfies the contract of the no-argument constructor for T. If T does not have a no-argument constructor, then the value of the new returned object satisfies the contract of the constructor call that was used to initialize this .
      Returns:
      new object "like" this with an initial value
    • clear

      public final void clear()
      Description copied from interface: Standard
      Resets this to an initial value. If the type T has a no-argument constructor, then this satisfies the contract of the no-argument constructor for T. If T does not have a no-argument constructor, then this satisfies the contract of the constructor call that was used to initialize #this.
    • transferFrom

      public final void transferFrom(NaturalNumber source)
      Description copied from interface: Standard
      Sets this to the incoming value of source, and resets source to an initial value; the declaration notwithstanding, the dynamic type of source must be the same as the dynamic type of this. If the type T has a no-argument constructor, then source satisfies the contract of the no-argument constructor for T. If T does not have a no-argument constructor, then source satisfies the contract of the constructor call that was used to initialize #source.
      Parameters:
      source - object whose value is to be transferred
    • multiplyBy10

      public final void multiplyBy10(int k)
      Description copied from interface: NaturalNumberKernel
      Multiplies this by 10 and adds k.
      Parameters:
      k - the int to be added
    • divideBy10

      public final int divideBy10()
      Description copied from interface: NaturalNumberKernel
      Divides this by 10 and reports the remainder.
      Returns:
      the remainder
    • isZero

      public final boolean isZero()
      Description copied from interface: NaturalNumberKernel
      Reports whether this is zero.
      Returns:
      true iff this is zero