I have a strong dislike for incompletely initialised objects.
So I would do it like this:
���� myInstVar := TheDependentClass newFor: self.
(together with any other essential information as parameters).
In my Smalltalk system it would look like this:
�� Whatever subclass: #TheDependentClass
������ instanceConstantNames: 'owner'
������ ...
������ class methods for: 'instance creation'
���������� newFor: owner
�������������� ^(self basicNew) pvtOwner: owner; yourself
������ methods for: 'initialising'
���������� pvtOwner: anObject
�������������� super pvtPostNew.
�������������� owner := anObject.
Private access to methods with a 'pvt' prefix is enforced.
Instance constants can only be set in private methods.
There's an additional wrinkle that makes it a run time
error to call TheDependentClass new, so that you cannot get
an incompletely initialised object.
In any Smalltalk you can follow similar conventions even if
they are not enforced.
Of course if you don't mind incompletely initialised objects,
nothing stops you writing code that allows them.�� The question
is whether you want to be able to trust the 'owner' field or
not.