#objective-c #cocoa
#objective-c #cocoa
Вопрос:
Я просто настраиваю простое библиотечное приложение, в основном коллекцию «Участников» и коллекцию «Книг». Моя идея состояла в том, чтобы реализовать оба из них в виде NSMutableArrays, чтобы я мог легко добавлять и удалять объекты. Я хотел бы спросить, каков наилучший способ реализовать связь между «Участником» и «Книгой», когда они берут книгу из библиотеки?
Изначально для простоты я думал ограничить каждого участника удалением только одной книги за раз, но мне были бы интересны идеи по представлению нескольких удалений книг.
Редактировать
Могу я просто спросить, правильным ли способом сделать это было бы создать объект «Library» как объект верхнего уровня, который содержит коллекции «Book» и «Member». Я как раз думал об этом, поскольку в противном случае их нужно было бы создавать в main(), что кажется немного не объектно-ориентированным.
большое спасибо за любую помощь / информацию.
гэри
Ответ №1:
Предоставьте каждому объекту-члену свойство mutable-collection (либо array, либо set, на ваш выбор), содержащее книги участника. Также присвоите каждому объекту Book свойство, не являющееся владельцем, идентифицирующее участника, у которого оно проверено (если кто-либо; nil
если никто).
Вам не нужно удалять книгу из массива всех книг, если библиотека не продает, не раздает или не теряет книгу.
Могу я просто спросить, правильным ли способом сделать это было бы создать объект «Library» как объект верхнего уровня, который содержит коллекции «Book» и «Member».
ДА.
Вы захотите решить, является ли это объектом контроллера или объектом модели. Если это объект модели, вам нужно будет создать контроллер для владения библиотекой (и окном библиотеки), и вы предоставите библиотеку в AppleScript. Если это контроллер, то это объект, которому принадлежит окно библиотеки (а также Книги и участники), и вы не будете предоставлять его в AppleScript.