As a .NET programmer, how do you define the following terms?

As a .NET programmer, how do you define the following terms?

  1. Problem Domain and Domain Model
  2. Class and Object
  3. Object and Entity
  4. Business Object and POCO (Plain Old CLR Object)
  5. POCO and DTO (Data Transfer Object)
  6. 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