Страница 1 из 1

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

СообщениеДобавлено: 19.04.2013 08:42:21
Brainenjii
Довольно частая ситуация. Есть объект, скажем, ручка. Есть объект, скажем, ученик. Ученики владеют наборами ручек. Одна ручка может встретиться у нескольких учеников. При этом ученик может запомнить несколько дополнительных полей к каждой ручке, например, степень любимости этой ручки, может он ей писать, или нет и т.д.
Как это реализовать?
Сейчас у меня только одна мысль - создавать третий класс, композицию из ручки и дополнительных полей, и ученик будет хранить не список ручек, а список этих композиций. Это работает, но многословно, тяжеловесно и вообще фи. Есть ли какие иные способы?

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

СообщениеДобавлено: 19.04.2013 08:50:20
NTFS
По-хорошему, раз начались такие вопросы, самое время почитать по паттерны и рефакторинг. Нет смысла изобретать то, что уже изобретено до нас.

Добавлено спустя 3 минуты 15 секунд:
В конкретном случае, связи между учеником и ручками должны, ИМХО, храниться не в ручке, а в ученике.

Код: Выделить всё
TPen = class
...
end ;

TStudent = class
...
public
   function CanWriteByPen(_Pen:TPen):Boolean ;
   procedure SetCanWriteByPen(_Pen:TPen; IsCanWrite:Boolean)
end ;




Как это будет реализовано внутри класса - уже никого, кроме класса, не волнует: инкапсуляция, однако.

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

СообщениеДобавлено: 19.04.2013 08:57:45
Brainenjii
Так у меня вопрос - как это реализовать с минимальным оверхедом

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

СообщениеДобавлено: 19.04.2013 19:37:30
Climber
Brainenjii писал(а):Есть ли какие иные способы?

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