Добавить пару полей к классу

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Ответить
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Добавить пару полей к классу

Сообщение Brainenjii »

Довольно частая ситуация. Есть объект, скажем, ручка. Есть объект, скажем, ученик. Ученики владеют наборами ручек. Одна ручка может встретиться у нескольких учеников. При этом ученик может запомнить несколько дополнительных полей к каждой ручке, например, степень любимости этой ручки, может он ей писать, или нет и т.д.
Как это реализовать?
Сейчас у меня только одна мысль - создавать третий класс, композицию из ручки и дополнительных полей, и ученик будет хранить не список ручек, а список этих композиций. Это работает, но многословно, тяжеловесно и вообще фи. Есть ли какие иные способы?
NTFS
постоялец
Сообщения: 388
Зарегистрирован: 05.11.2007 13:57:50
Откуда: Краснодар
Контактная информация:

Сообщение NTFS »

По-хорошему, раз начались такие вопросы, самое время почитать по паттерны и рефакторинг. Нет смысла изобретать то, что уже изобретено до нас.

Добавлено спустя 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 »

Так у меня вопрос - как это реализовать с минимальным оверхедом
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Сообщение Climber »

Brainenjii писал(а):Есть ли какие иные способы?

Взять реляционную БД и перенести логику на сервер! :mrgreen:
Ответить