Лучший способ связать объекты в коллекциях для простого библиотечного приложения?

#objective-c #cocoa

#objective-c #cocoa

Вопрос:

Я просто настраиваю простое библиотечное приложение, в основном коллекцию «Участников» и коллекцию «Книг». Моя идея состояла в том, чтобы реализовать оба из них в виде NSMutableArrays, чтобы я мог легко добавлять и удалять объекты. Я хотел бы спросить, каков наилучший способ реализовать связь между «Участником» и «Книгой», когда они берут книгу из библиотеки?

Изначально для простоты я думал ограничить каждого участника удалением только одной книги за раз, но мне были бы интересны идеи по представлению нескольких удалений книг.

Редактировать

Могу я просто спросить, правильным ли способом сделать это было бы создать объект «Library» как объект верхнего уровня, который содержит коллекции «Book» и «Member». Я как раз думал об этом, поскольку в противном случае их нужно было бы создавать в main(), что кажется немного не объектно-ориентированным.

большое спасибо за любую помощь / информацию.

гэри

Ответ №1:

Предоставьте каждому объекту-члену свойство mutable-collection (либо array, либо set, на ваш выбор), содержащее книги участника. Также присвоите каждому объекту Book свойство, не являющееся владельцем, идентифицирующее участника, у которого оно проверено (если кто-либо; nil если никто).

Вам не нужно удалять книгу из массива всех книг, если библиотека не продает, не раздает или не теряет книгу.

Могу я просто спросить, правильным ли способом сделать это было бы создать объект «Library» как объект верхнего уровня, который содержит коллекции «Book» и «Member».

ДА.

Вы захотите решить, является ли это объектом контроллера или объектом модели. Если это объект модели, вам нужно будет создать контроллер для владения библиотекой (и окном библиотеки), и вы предоставите библиотеку в AppleScript. Если это контроллер, то это объект, которому принадлежит окно библиотеки (а также Книги и участники), и вы не будете предоставлять его в AppleScript.