Class NaturalNumber4

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

NaturalNumber represented as a Sequence<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)

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

    • NaturalNumber4

      public NaturalNumber4()
      No-argument constructor.
    • NaturalNumber4

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

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

      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