BCX Console Demonstration Program s154.bas

 '======================================================================= 
 '          Semi-OOP implementation for BCX by Kevin Diggins  
 '======================================================================= 
 
 TYPE FOO
    MyVar
    FUNCTION Squared (MyClass AS FOO_CLASS) AS INTEGER
    FUNCTION Cubed   (MyClass AS FOO_CLASS) AS INTEGER
    FUNCTION TimesX  (MyClass AS FOO_CLASS, X AS INTEGER) AS INTEGER
  END TYPE
 
  DIM IAm AS FOO : Initialize(&IAm, 3)
  DIM You AS FOO : Initialize(&You, 4)
 
  CLS
 
  PRINT "================="
  PRINT "IAm.Squared " , IAm.Squared(&IAm)
  PRINT "IAm.Cubed " , IAm.Cubed(&IAm)
  PRINT "IAm.TimesX " , IAm.TimesX(&IAm, 100)
  PRINT "================="
  PRINT "You.Squared " , You.Squared(&You)
  PRINT "You.Cubed " , You.Cubed(&You)
  PRINT "You.TimesX " , You.TimesX(&You, 100)
  PRINT "================="
 
  PRINT "Changing .MyVar in IAm and You"
 
  IAm.MyVar = 6
  You.MyVar = 7
 
  PRINT "================="
  PRINT "IAm.Squared " , IAm.Squared(&IAm)
  PRINT "IAm.Cubed " , IAm.Cubed(&IAm)
  PRINT "IAm.TimesX " , IAm.TimesX(&IAm, 100)
  PRINT "================="
  PRINT "You.Squared " , You.Squared(&You)
  PRINT "You.Cubed " , You.Cubed(&You)
  PRINT "You.TimesX " , You.TimesX(&You, 100)
  PRINT "================="
 
 
  SUB Initialize (ME AS FOO_CLASS, b AS INTEGER)
    WITH ME
      .MyVar = b
      .Squared = Squared
      .Cubed = Cubed
      .TimesX = TimesX
    END WITH
  END SUB
 
 
  FUNCTION Squared (ME AS FOO_CLASS)
    FUNCTION = ME.MyVar * ME.MyVar
  END FUNCTION
 
 
 FUNCTION Cubed (ME AS FOO_CLASS)
    FUNCTION = ME.MyVar * ME.MyVar * ME.MyVar
  END FUNCTION
 
 
 FUNCTION TimesX (ME AS FOO_CLASS, X)
    FUNCTION = ME.MyVar * X
  END FUNCTION
 

Result:


 =================
 IAm.Squared  9
 IAm.Cubed  27
 IAm.TimesX  300
 =================
 You.Squared  16
 You.Cubed  64
 You.TimesX  400
 =================
 Changing .MyVar in IAm and You
 =================
 IAm.Squared  36
 IAm.Cubed  216
 IAm.TimesX  600
 =================
 You.Squared  49
 You.Cubed  343
 You.TimesX  700
 =================