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

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

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

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

Сообщение Brainenjii » 19.04.2013 08:42:21

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

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

Сообщение NTFS » 19.04.2013 08:50:20

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

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

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

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




Как это будет реализовано внутри класса - уже никого, кроме класса, не волнует: инкапсуляция, однако.
NTFS
постоялец
 
Сообщения: 388
Зарегистрирован: 05.11.2007 14:57:50
Откуда: Краснодар

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

Сообщение Brainenjii » 19.04.2013 08:57:45

Так у меня вопрос - как это реализовать с минимальным оверхедом
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

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

Сообщение Climber » 19.04.2013 19:37:30

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

Взять реляционную БД и перенести логику на сервер! :mrgreen:
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22

Рейтинг@Mail.ru
cron