Created abstractions for Domain model

Created abstractions for Domain model which includes Entity and
ValueObject classes.

Also, tests are defined for those abstractions.