Using the information design model shown in Figure 10.5 above as the starting point, we make a JavaScript class model, essentially by decorating attributes with a «get/set» stereotype (implying that they have implicit getters and setters), and by adding (class-level) check methods:
Notice that, for any multi-valued enumeration attribute (like
someThings
) we add a class-level check function for single
values (like checkSomeThing
) and another one for value sets
(like checkSomeThings
) both returning an object of type
ConstraintViolation
.
The implicit getters and setters implied by the «get/set» stereotype are a special feature of ES5, allowing to define
methods for getting and setting the value of a property p
while keeping the simple syntax of getting its value with v =
o.p, and setting it with o.p = expr. They require to define another, internal, property (like _p
) for
storing the value of p because the name "p" does not refer to
a normal property, but rather to a pair of get/set methods.
The most common reason for using implicit getters and setters is the need to always check constraints before setting a property. This is also the reason why we will use them.