OCL 2.0 NO IDEA Avatar
  1. OMG Issue

OCL2_ — Issue: oclIUndefined() versus isEmpty()

  • Key: OCL2_-19
  • Legacy Issue Number: 6568
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Description: OCL offers two choices to test if a value is undefined or not: isEmpty and oclIsUndefined.
    Rationale: Most of the modern programming languages contain null values. The best OCL mapping for null value is the undefined value. Using isEmpty to test if a value is null/undefined is some how confusing:

    • the result of property->isEmpty() must be true if the value of the property is null/undefined
    • the result of Set {1/0}

      ->isEmpty() must be false
      because the expression property->isEmpty() is converted according to the OCL specification to Set


      These situations are a source of errors and confusion at the implementation level. I think that isEmpty() should be used only to test if a collection is empty or not; the null/undefined values should be tested using ocIslUndefined. This operation should be also valid on collections. This approach will also work nice and clear for nested collections. On the other hand I don't think that () should not be optional if the called operation has no arguments. This is feature specific to old languages like TAL and Pascal, while in modern languages like C, C++ the meaning of f and f() is different.

  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT