2015-07-19 2 views
0

У меня есть три класса: пользователь, поставщик и клиент. Теперь Клиент является «пользователем» и имеет те же атрибуты, что и пользователь, поэтому он должен наследовать класс пользователя. Но путаница в случае с Продавцом. Поставщик «не-а» Пользователь в соответствии с бизнес-правилами, поскольку поставщик не должен использовать приложение, но он также имеет те же атрибуты, которые пользователь имеет. Должен ли поставщик наследоваться от класса User в данном конкретном случае или нет?Наследие отношений путаницы

+0

Если у Продавца есть * каждый атрибут *, который Пользователь делает, он не использует приложение, тогда есть что-то о пользователе, которое вы еще не захватили. –

+0

Я предлагаю читать образцы дизайна. Шаблоны проектирования не будут отвечать на ваш вопрос напрямую, но помогут вам понять общие проблемы (как организовать свои классы) связанные проблемы/решения в oop. – Spidey

ответ

1

Логично, я бы сказал, нет. Если бы я разрабатывал такую ​​систему, я бы предположил, что объект User имеет такие методы, как Login, ChangePassword, GetLastLoginDate и т. Д. С другой стороны, у Поставщика могут быть такие методы, как AddProduct, ReceivePurchaseOrder и т. Д.

Просто потому, что он имеет такие атрибуты, как имя и фамилия, а другие такие переменные не делают его пользователем. Объект больше, чем просто свойства, он также включает действия (методы). Я бы предположил, что методы, которые будут частью класса User, будут сильно отличаться от поставщиков, основанных на том, что я знаю как пользователей приложения, так и поставщиков. Если продавцы были типом пользователей, которые вошли в ваше приложение, но имели другой доступ, чем клиенты, тогда я бы сказал «да». Однако, основываясь на вашем описании, они очень разные вещи.

1

Есть два способа подойти к этому:

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

2) Если атрибуты Поставщика всегда будут соответствовать атрибутам пользователя, вы можете добавить атрибут «Войти в систему» ​​для пользователя и наследовать от него. Это будет менее сложно в краткосрочной перспективе, но может привести к проблемам позже, если пользователь и поставщик расходятся.

Смежные вопросы