As a .NET programmer, how do you define the following terms?
- Problem Domain and Domain Model
- Class and Object
- Object and Entity
- Business Object and POCO (Plain Old CLR Object)
- POCO and DTO (Data Transfer Object)
- Anemic Domain Model
My thoughts:
- A domain model defines the scope of the problem domain, helps to the understanding of the problem domain among various stakeholders and facilitates communications between the technical and business teams through a shared vocabulary.
- A class is a structure of data and its manipulation logics or codes.
- An object is created on the basis of a class. A collection of objects contains one or more object instances.
- An entity is an object that has its own identity to distinguish one object from another.
- A business object, also known as domain object, is a regular object modeled after the real-world things. A business object separates domain model from implementation details.
- A POCO, also known as persistence-ignorant objects, is a business object without persistence methods. A POCO may implement properties (or data members), validation rules and/or any other business logics but methods related to persistence.
- A DTO is an object designed to move data between layers or tiers. In terms of the costly process to move data across boundaries, a DTO usually implements properties or data members only.
- Anemic domain model is the use of a software domain model where the domain objects contain little or no business logic (validations, calculations, business rules etc).
References