Object model ************ An ``Object``, simply ===================== .. pharo:autocompiledmethod:: EssentialsObjectTest>>#testInspectObject .. image:: ../../../Containers-Essentials/images/EssentialsObjectTest-testInspectObject.svg :align: center ``nil``, even more simpler ========================== .. pharo:autocompiledmethod:: EssentialsObjectTest>>#testInspectNil .. image:: ../../../Containers-Essentials/images/EssentialsObjectTest-testInspectNil.svg :align: center ``true`` and ``false`` ====================== On one hand, *truthness* is encoded by, .. pharo:autocompiledmethod:: EssentialsObjectTest>>#testInspectTrue .. image:: ../../../Containers-Essentials/images/EssentialsObjectTest-testInspectTrue.svg :align: center On the other hand, *falsehood* is encoded by, .. pharo:autocompiledmethod:: EssentialsObjectTest>>#testInspectFalse .. image:: ../../../Containers-Essentials/images/EssentialsObjectTest-testInspectFalse.svg :align: center ``Object`` class and its superclasses ===================================== .. .. pharo:autocompiledmethod:: EssentialsObjectTest>>#testInspectObjectModel .. image:: ../../../Containers-Essentials/images/EssentialsObjectTest-testInspectObjectModel.svg :align: center ``Trait`` class +++++++++++++++ First introduced in :cite:`10.1007/978-3-540-45070-2_12` then extended in :cite:`10.1145/1119479.1119483`, traits are another mechanism to define behavior. Some applications can be found in both :cite:`10.1145/949343.949311` and :cite:`CASSOU20092`, also a wiki page exists at :cite:`pharowiki-traits`. .. image:: ../../../Containers-Essentials/images/EssentialsObjectTest-testInspectTraitModel.svg :align: center As a real case, the class definition .. pharo:autoclass:: CollectionRootTest is an example of traits usage and its inspection produces .. image:: ../../../Containers-Essentials/images/EssentialsObjectTest-testInspectCollectionRootTest.svg :align: center