Диаграмма классов Angular2, ассоциация или зависимость при внедрении и использовании маршрутизации

Мне нужно создать диаграмму классов моего недавно созданного приложения Angular2. Я знаю основы создания диаграмм классов для .NET-приложений, написанных на C#, но никогда не делал их на основе архитектуры Angular2.

Сценарий 1. Класс, зависящий от сервиса

код:

@Injectable()
export class AmendmentAccountComponent implements OnInit 
{

    constructor(private accountService: AccountService) 
    {

    }
}

Допустим, я создал компонент под названием AccountComponent. Этому компоненту нужна служба с именем AccountService, которая будет внедрена в конструктор. Прямо сейчас я думаю о том, чтобы нарисовать зависимость (не ассоциацию) от AccountComponent к AccountService, которая указывает, что эта зависимость нужна до того, как компонент будет выполнен.

Зависимость по сравнению с тем, как она выглядит в этом статья

Является ли зависимость правильным способом отображения (то, что я объяснил) на диаграмме классов?

Сценарий 2. Компонент использует маршрутизацию (RouteConfig)

Допустим, у меня есть компонент с именем PageComponent. У него есть класс с таким же именем. Компонент получил некоторую маршрутизацию, как показано в коде RouteConfig здесь:

@RouteConfig([
    { path: '/', name: 'Bookings', component: BookingsComponent },
    { path: '/bookings', name: 'Bookings', component: BookingsComponent, useAsDefault: true },
])

Таким образом, дочерним элементом этого компонента является BookingsComponent. Как мне нарисовать эту связь на диаграмме классов? просто с нормальной ассоциацией?

Надеюсь, кто-то может помочь, особенно со сценарием 2, который я не знаю, как нарисовать.


person Mikkel    schedule 21.05.2016    source источник


Ответы (2)


Сценарий 1: Да, зависимость между AccountComponent и AccountService верна.

Сценарий 2: зависимость от PageComponent до BookingComponent подходит и в этом случае. Обычная ассоциация (со стрелкой, указывающей на BookingComponent) будет означать, что экземпляр PageComponent может иметь ссылку (в смысле слова UML) на экземпляр BookingComponent. . В Angular2 я бы использовал ассоциацию только в том случае, если бы класс PageComponent имел поле типа BookingComponent.

Для получения дополнительной информации о моделировании UML для программного обеспечения Angular см. Технический дизайн в UML для приложений AngularJS

person www.admiraalit.nl    schedule 24.05.2016
comment
Итак, вы говорите, что если PageComponent использует маршрутизацию для доступа к своему дочернему компоненту, определяя ‹router-outlet›‹/router-outlet›, тогда я должен использовать зависимость, иначе я использую ассоциацию? - person Mikkel; 24.05.2016
comment
Используйте ассоциацию, если объекты (экземпляры классов) связаны, в противном случае используйте зависимость. Значение ссылки в терминах Angular открыто для обсуждения, но я бы сказал, что если класс PageComponent имеет поле (член, атрибут, свойство, вы называете его), ссылающееся на экземпляр BookingComponent, тогда используйте ассоциацию, указывающую из PageComponent для BookingComponent, в противном случае используйте зависимость. - person www.admiraalit.nl; 24.05.2016
comment
Хорошо, спасибо за вашу помощь. В итоге я сделал это ассоциацией, потому что мне важны дочерние компоненты и использование ‹router-outlet›. - person Mikkel; 24.05.2016

1) Зависимость — это правильная ссылка:

введите здесь описание изображения

2) Ваш RouteConfig представляет собой массив ассоциативных массивов. Сам ассоциативный массив, по-видимому, несет в себе какую-то структуру. Эту структуру вполне можно представить как единый класс. Так что я придумал эту картину:

введите здесь описание изображения

person qwerty_so    schedule 22.05.2016
comment
Я понимаю первое изображение, которое вы сделали, но я не уверен во втором. Где компонент страницы? Я имею в виду, что PageComponent является родителем BookingComponent, поэтому должна быть какая-то связь? или я что-то упускаю? - person Mikkel; 22.05.2016
comment
Я не знаком с Angular2. Второе изображение представляет собой @RouteConfig. Может быть, это просто какие-то леса, но тогда я не могу угадать его значение, связанное с вашим компонентом страницы. - person qwerty_so; 22.05.2016