in reply to Re: •Re: inheritance and object creation
in thread inheritance and object creation

/-----------\ /-------------------\ | Company |--@(has-N)-> | Company::Division | \-----------/ \-------------------/ /|\ /|\ | | (is-a) | | | /- - - - - - - - - -\ | (is-a) AcmeLtd::Division ? | \- - - - - - - - - -/ | /|\ | | (is-a) | | /-----------\ /-------------\ | AcmeLtd |-----create--> | AcmeLtd::IT | \-----------/ \-------------/

A company may have more than one division, and the number may change over time, but the distinction between them doesn't really matter. So consider a collection of generic divisions.

In the AcmeLtd construction, or later in its operation, you may choose to add an AcmeLtd::IT instance to the collection of generic divisions of the company. You may choose to nix it later, or outsource it to some Vendor::IT that has a similar interface.

If there's nothing particularly distinguishing about all AcmeLtd::Divisions that would not be required of any generic Company::Division, then kill that class.

(ASCII is not a very good way to draw Booch diagrams.)

--
[ e d @ h a l l e y . c c ]