BCX Console Demonstration Program S154.bas
  
    TYPE FOO
   MyVar
    FUNCTION Squared(ME AS FOO_CLASS) AS INTEGER
    FUNCTION Cubed(ME AS FOO_CLASS) AS INTEGER
    FUNCTION TimesX(ME 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
=================