Modeling and Representing Domain Concepts

It is extremely recommended to adopt an object oriented approach to build domain models. Essentially because the concepts of abstraction/specialization (to capture commonalities and encapsulate variances), aggregation/decomposition (to master the complexity) and differentiation, critical to represent domain knowledge, are inherent to the OO representation. [#!JR91!#]