test driven development with object oriented programming and constructors