Я считаю, что для этого вам не нужны слоты. Вы можете просто использовать переменные экземпляра.
Предположим, вы хотите смоделировать связь между книгой (экземпляр класса Book) и ее авторами (экземплярами класса Person).
Затем вы объявляете «переменную экземпляра», называемую авторами в классной книге. Эта переменная будет держать коллекцию (экземпляр некоторого класса коллекции), что в свою очередь будет держать авторов (экземпляры класса Person)
Object subclass: #Book
instanceVariableNames: 'authors'
classVariableNames: ''
category: 'examples'
Затем нужно создать (в первую очередь) коллекции. Вы делаете это в методе initialize вашего класса Book (это первое сообщение, которое получает объект, когда он создается).
Я использовал набор, но есть другие объекты коллекции.
Тогда вам нужен метод в этом классе, чтобы сообщить книгу, когда у него есть новый автор:
>> addAuthor: someObject
authors add: someObject
Затем, вы можете просто использовать его, как это:
a := Book new.
p := Person new.
a addAuthor: p.
Поскольку Pharo динамически типизируется (вам не нужно явно вводить переменные), параметр author: может быть любым объектом. С документацией и хорошими именами переменных вы можете сказать, что это должен быть Лич (на самом деле параметр должен быть лучше назван aPerson).
Резюме: В книге есть коллекция в переменной экземпляра «авторы». Когда вы сообщаете книге, чтобы добавить нового автора (с сообщением addAuthor:), он сообщает коллекции о сохранении объекта (с сообщением add:).