Index: tests/parameters.test =================================================================== diff -u -r6baac71ced92839d10c87b18acdca3d5e7858d2a -r551a41a1d6502070f966b5f0be2559cf3fe12804 --- tests/parameters.test (.../parameters.test) (revision 6baac71ced92839d10c87b18acdca3d5e7858d2a) +++ tests/parameters.test (.../parameters.test) (revision 551a41a1d6502070f966b5f0be2559cf3fe12804) @@ -1757,4 +1757,42 @@ [o info slots a] reconfigure ? {o eval {info exists :a}} 1 ? {o a} anothervalue + + # + # Object parameters (specified e.g. via attributes) are defined to + # configure fresh objects (therefore, the definition is on the class + # level). Therefore, object-level object parameter do not fulfill + # this purpose, since they can only be defined, *after* the object + # is created. + # + # In general, object parameters have creational aspects (providing + # configurations for the object creation, such as e.g. defaults, and + # configurations) and object-lifetime aspects (valid through the + # lifetime of objects, such as e.g. setters/checkers). + # + # Object-level attributes cannot be used for the creational aspects + # of object parameters. + # + # Strengths of object-level parameters: + # - same interface as class-level attributes + # - can use same meta-data mechanisms as for class-level attributes + # (e.g database types, attribute name in the database, persistence + # information, ...) + # - can use same setters/checkers as for class-level attributes + # - can use as well incremental as for class-level attributes + # + # Shortcomings of object-level parameters: + # - no nice introspection: + # "info parameter ...." is defined on cls, not on obj + # - default handling is not the same as for classes level attributes + # (we have already some special mechanisms to set instance + # attributes, if they do not exist) + # - object-level parameters cannot be used in a "configure" + # of the object, since configure allows the same signature + # as on object creation, all object parameters are cached + # on the class level + # - Since configure does not include object-level parameters, + # positional object level parameters do not make sense, since they + # cannot be called. + } \ No newline at end of file