Many OOP languages (Smalltalk, C++, Java, Objective-C) provide a feature that
ties together object creation and initialization. This
thus avoids a pair of twin problems:
Creating an object, but not property initializing the fields in the object.
Creating an object, and initializing the fields in the object more than once.
We will discuss two mechanisms, class (factory) methods and constructors.