4.1. Entities: Identifiable objects that track changes and record events4.2. Value objects: Replaceable, anonymous, and immutable values4.3. Data transfer objects: Simple objects with fewer design rules4.4. Prefer immutable objects4.5. A modifier on an immutable object should return a modified copy4.6. On a mutable object, modifier methods should be command methods4.7. On an immutable object, modifier methods should have declarative names4.8. Compare whole objects4.9. When comparing immutable objects, assert equality, not sameness4.10. Calling a modifier method should always result in a valid object4.11. A modifier method should verify that the requested state change is valid4.12. Use internally recorded events to verify changes on mutable objects4.13. Don’t implement fluent interfaces on mutable objectsSummaryAnswers to the exercises