Довольно частая ситуация. Есть объект, скажем, ручка. Есть объект, скажем, ученик. Ученики владеют наборами ручек. Одна ручка может встретиться у нескольких учеников. При этом ученик может запомнить несколько дополнительных полей к каждой ручке, например, степень любимости этой ручки, может он ей писать, или нет и т.д.
Как это реализовать?
Сейчас у меня только одна мысль - создавать третий класс, композицию из ручки и дополнительных полей, и ученик будет хранить не список ручек, а список этих композиций. Это работает, но многословно, тяжеловесно и вообще фи. Есть ли какие иные способы?
Добавить пару полей к классу
Модератор: Модераторы
- Brainenjii
- энтузиаст
- Сообщения: 1351
- Зарегистрирован: 10.05.2007 00:04:46
-
NTFS
- постоялец
- Сообщения: 388
- Зарегистрирован: 05.11.2007 13:57:50
- Откуда: Краснодар
- Контактная информация:
По-хорошему, раз начались такие вопросы, самое время почитать по паттерны и рефакторинг. Нет смысла изобретать то, что уже изобретено до нас.
Добавлено спустя 3 минуты 15 секунд:
В конкретном случае, связи между учеником и ручками должны, ИМХО, храниться не в ручке, а в ученике.
Как это будет реализовано внутри класса - уже никого, кроме класса, не волнует: инкапсуляция, однако.
Добавлено спустя 3 минуты 15 секунд:
В конкретном случае, связи между учеником и ручками должны, ИМХО, храниться не в ручке, а в ученике.
Код: Выделить всё
TPen = class
...
end ;
TStudent = class
...
public
function CanWriteByPen(_Pen:TPen):Boolean ;
procedure SetCanWriteByPen(_Pen:TPen; IsCanWrite:Boolean)
end ;
Как это будет реализовано внутри класса - уже никого, кроме класса, не волнует: инкапсуляция, однако.
- Brainenjii
- энтузиаст
- Сообщения: 1351
- Зарегистрирован: 10.05.2007 00:04:46
Так у меня вопрос - как это реализовать с минимальным оверхедом
Brainenjii писал(а):Есть ли какие иные способы?
Взять реляционную БД и перенести логику на сервер!
