Customer Class

The address, firstNames, lastName, and number properties are part of the exposure because they will be accessed from .NET.

The allBankAccounts reference is not exposed, in accordance with the decision to exclude bank account classes from the exposure.

The myBank reference is not exposed because it refers to the root object, which is the same for all Customer objects and therefore not semantically important. The myBank reference can be regarded as part of the JADE implementation in that when it is set, a Customer object is added to the root object's allCustomers collection through the automatic inverse reference maintenance that is triggered. The setting of the myBank reference is encapsulated in the setPropertiesOnCreate method.

The setPropertiesOnCreate method is exposed. If this method was not exposed, you would need to expose the myBank reference, as explained previously.

When you expose a JADE method to .NET, you do not need to expose the properties and methods that are accessed in that method. This is in line with the practice of exposing an interface but hiding the implementation.

The create method is not exposed. However, when a Customer object is created in .NET code, the JADE constructor is executed causing a unique value to be assigned to the number property.