It says: "I am an abstract collection of elements with a fixed range of integers (from 1 to n>=0) as external keys."
now that leaves me clueless, why then it does not defines (introduces) a protocol: #at: and #at:put: at least as an abstract one , i.e. subclassResponsibility is it because they are already in Object protocol? And because subclasses (like Array) using default #at: implementation? I don't know, but i think Object should not have #at:/#at:put: protocol.. because: - it applicable only to variable subclasses - many classes have own implementation of it - the behavior behind this is to access a variable fields . while other classes use this protocol for higher abstractions (like dictionaries) so, to my thinking, Object should not define this protocol.. for this purpose we having #basicAt:/put: methods. btw, just an idea to clarify things even more, we could rename them to variableAt: [put:] (or any other name which properly tells that method provides an access to variable fields of object). -- Best regards, Igor Stasenko.
