In my opinion DDD tends to complicate what is simple. These classes call value objetct which are usually called the value types and the entities that are called types by reference. Learn more about this at question about C # .
Types by value have their own identity and any change in their value changes the identity, that is, another object. Types by value do not have associated objects, the object is treated directly in its storage location.
Types by value are usually immutable and small . They represent something unique, like quantifications. Non- scalars types of any language are usually value objetcs .
There are cases of types that are by reference as a facilitator, but they remain value objects , this is the case of string .
Dates are often great examples. Codes, miscellaneous monetary values, points, identifiers, etc.