Дайте каждому объекту-члену свойство изменяемой коллекции (либо массива, либо набора по вашему выбору), содержащее книги участника. Также присвойте каждому объекту Book свойство, не являющееся владельцем, идентифицирующее участника, у которого оно получено (если кто-либо; nil
, если никто).
Вам не нужно удалять книгу из массива всех книг, если библиотека не продает, не раздает или не теряет книгу.
Могу ли я просто спросить, правильно ли было бы создать объект «Библиотека» в качестве объекта верхнего уровня, который содержит коллекции «Книга» и «Член».
Да.
Вы захотите решить, является ли это объектом контроллера или объектом модели. Если это объект модели, вам нужно будет создать контроллер для владения библиотекой (и окном библиотеки), и вы представите библиотеку в AppleScript. Если это контроллер, это объект, которому принадлежит окно библиотеки (а также книги и элементы), и вы не будете открывать его в AppleScript.