Я пытаюсь нарисовать модель предметной области или диаграмму классов в UML для автосалона. Я застрял в том, как представить тест-драйв в модели. Один из способов - записаться на прием, а затем пройти тест-драйв в качестве подкласса. Дилер также предлагает послепродажное обслуживание автомобилей, поэтому у меня может быть класс записи / бронирования как суперкласс, а затем обслуживание автомобиля и тест-драйв как два подкласса.
Другой способ - установить прямую связь между классом клиентов и классом тест-драйва и классом обслуживания транспортного средства в рамках класса назначения.
Дилер также продает новые и подержанные автомобили и их запчасти.
Дилер также предлагает финансирование на продажу автомобиля.
Будет ли класс testdrive иметь связь с классом транспортного средства или существует отдельный класс для класса display и testdrive?
Другой вопрос, как показать в модели потенциальных клиентов и их запросы о продаже и обслуживании. Дилер хочет сохранить подробную информацию о потенциальных клиентах, если они позволяют использовать его в маркетинговых целях. Должен ли я иметь два класса: один для клиентов и один для потенциальных клиентов, или этого можно достичь, просто используя атрибут в классе клиентов?

Вы действительно можете отличить правильное решение, только имея хороший набор вариантов использования или ожидаемого поведения модели.
Это проинформирует, является ли конкретная подклассификация действительно точной.
Я вижу, что встреча может включать несколько тест-драйвов, которые связаны с отдельными автомобилями, поэтому тест-драйв - это не что иное, как ссылка от клиента на транспортное средство, которое связано с записью.
Тест-драйв будет содержать информацию, относящуюся только к тест-драйву:
ссылка на покупателя - даже это может быть спорным вопросом о включении
ссылка на автомобиль
продолжительность тест-драйва
место (возможно, автомобиль находился в другом месте, чем можно было определить по назначению владельца)
температура клиента (горячая или холодная - т. е. покупатель казался восторженным)
Комментарии
и т.п.
Но в объекте тест-драйва нет ничего, что связано с встречей - поскольку она всегда содержится в коллекции - возможно, как часть встречи или какого-либо другого контейнера событий. Теперь, если контейнеры, которые могут содержать тест-драйвы, всегда содержат информацию о клиенте, я мог бы даже не включать ссылку клиента в объект тест-драйва - в конце концов, он будет избыточным.
Это зависит от того, могут ли тест-драйвы проводиться в сценариях без предварительной записи - возможно, на «мероприятии продаж» или «день открытых дверей» или где-то еще, где встречи фактически не создаются в сценариях использования, - или если тест-драйвы будут проводиться для нескольких клиентов. внутри контейнера.
Вторая часть вашего вопроса была забыта (это легко сделать, если вы задаете два вопроса в одном):
Another question is how do I show potential customers and their inquiries about sale and service in the model. A dealer wants to save details of potential customers if they allow for marketing purposes. Shall I have two classes: one for customers and one for potential customers or it can be achieved just by using an attribute in customer class?
Я думаю, ваш вариант использования такой: «Дилер хочет сохранить сведения о потенциальных клиентах, если они позволяют использовать его в маркетинговых целях». и самое простое решение - иметь коллекцию списков рассылки, в которой хранятся имя и адрес каждого потенциального клиента.
Я думаю, вы упустили суть. Цель модели предметной области - познакомить вас с предметной областью:
-- What kind of entities you have in yor domain?
-- If they are important for your system under desing,
what kind of properties they have, how they behave?
-- What kind of business rules they obey?
Остальное - детали. Думайте, как картограф. Запишите, что там есть. Создайте простую карту, чтобы вы не заблудились в этой области. Не пытайтесь придумывать. Абстрагируйте то, что существует в предметной области: Не бегайте за «причудливыми абстракциями», которые вы создали сами.
Domain model can be used as a source for object oriented analysis/design. But their aim is not to represent software abstractions.
Может ли кто-нибудь с правами редактирования исправить это, чтобы оно было более читабельным?