Я бы сказал, что ваш профессор по введению в информационные системы был прав. И ваш профессор SE тоже (если его отсутствие комментариев делает его противником). Каждый из них прав в зависимости от ваших требований и домена, с которым вы работаете. Но без каких-либо других деталей это трудно смоделировать для вас, и я бы склонялся к тому, что сказал ваш профессор СЕ. Помните все эти забавные маленькие принципы, которые вы изучили: ПОЦЕЛУЙ, СУХОЙ и т. Д., И примените их к своей проблеме.
Если Client
никогда не будет иметь более одного телефонного номера, и никакой другой объект в вашем домене не нуждается в телефонном номере, то отдельный класс Telephone
не требуется. В реальном мире, если ваши требования расплывчаты, узнайте больше информации от вашего клиента.
Если кто-то в будущем решит, что Client
s может использовать более одного телефонного номера, или в вашем домене введена другая сущность, для которой нужен телефонный номер, это довольно просто выполнить рефакторинг.
Итак, с учетом этого предположим, что у вашего Client
был отдельный класс Address
, который вместо этого включал телефонный номер. Может быть, этот класс Address
повторно используется другим классом, может быть Invoice
или Shipment
, где Address
может использоваться совместно или применяться в обоих случаях. В этом примере вы можете захотеть, чтобы Address
(Telephone
) был его собственным классом.
В вашем примере Telephone
может быть немного надуманным. Вы бы хотели, чтобы это был отдельный класс для повторного использования, если бы он имел много свойств (AreaCode
, InternationalPrefix
, Number
и т. Д.), Но если бы Client
просто требовалось строковое значение с именем Telephone
что пользователь будет вводить просто для справки, тогда, вероятно, не имеет смысла быть его собственным классом.