Поддержка сайта

Высокие позиции в поисковой системе, на прямую зависят от развития вашего сайта.

Продвижение сайтов

Эффективность стратегий продвижения подтверждается сотрудничеством с крупными клиентами и отзывами о нашей работе.

Создание сайтов

Мы делаем сайты быстро, недорого и профессионально. От работы с нами, у вас останутся только положительные эмоции.

Служебные объекты

Служебные объекты обеспечивают доступ к прикладным службам приложения. Служба приложения — это сущность, определяющая некоторое действие приложения. В нашем случае потребуются объекты для выполнения таких операций, как создание клиента, удаление клиента, просмотр заполненного клиентом заказа и т. д. Все эти действия (например, операция создания нового клиента) удовлетворяют единому критерию — реализации бизнес-правила.

Возможно, мы захотим, чтобы создавать клиента мог любой объект модели за счет вызова соответствующего объекта. Кроме того, можно разрешить создание клиента не только объектам, но и коду ASP. Именно через такие служебные объекты код уровня представления получает доступ к бизнес-правилам.

 

Объекты данных

Объекты данных определяют одиночный экземпляр некоторого элемента в системе. Это слишком широкое определение, в нашем случае оно примерно соответствует строке базы данных. Таким образом, нам понадобятся объекты, описывающие одного клиента, один заказ и т. д. Преимущество такого подхода состоит в высокой точности спецификации объектов данных.

 

Выбор объектов для приложения

Зная типы объектов модели, можно приступить к выделению объектов модели приложения. Для этого придется рассмотреть сценарии общения разных категорий пользователей с системой. Любое действие пользователя связано с некоторым событием (не в смысле "событий" среды Visual Basic) — действия пользователя требуют определенных ответных действий системы.

 

Сценарии

Для анализа различных событий в системе и связанных с ними действий полезно рассмотреть реальные сценарии работы пользователя с системой и поставить себя на место посетителя, открывающего в браузере домашнюю страницу сайта. Проанализировав события, мы получим список элементов, которые нужно показать пользователю, и добавим на web-страницу соответствующие коды HTML. В целом мы должны получить примерный набор объектов, необходимых приложению. Мы придерживаемся концепции объектно-ориентированного программирования, поэтому реальные действия в системе должны инкапсулироваться в объектах. Распределив действия по объектам, мы сможем решить, какие методы и свойства требуются объектам для реализации планируемых действий системы.

Для большей части событий реального мира действует правило 80:20. Необходимо исследовать 20% всех возможных событий в системе, чтобы получить 80% необходимых пользователям действий. Так что обсудим только 20% возможных сценариев поведения пользователей, поэтому нашу объектную модель нельзя будет считать полностью завершенной. В реальном мире может потребоваться реализация дополнительных объектов, хотя обеспечиваемые ими функции будут использоваться редко.

Итак, проанализируем возможные события нашего сайта и начнем с открытия пользователем домашней страницы.

1. Пользователь открывает домашнюю страницу сайта.

В этом случае ему необходим список товаров, продаваемых на сайте. Это так называемый рекламный каталог (featured items). Описания товаров должны быть преобразованы в HTML.

Мы уже выбрали объект visit для отражения одиночного посещения сайта (этот же объект является корневым в объектной модели). По сути, это точка входа в объектную модель, через которую открывается доступ к другим объектам модели.

Кроме того, нужно будет запрашивать сведения в базе данных, поэтому требуется объект для общения с базой данных. Назовем его Database. Это инфраструктурный объект, поскольку он обеспечивает службу, "видимую" только на уровне бизнес-правил. Однако объект Database ничего не делает, пока не получит запрос, поэтому нужен объект, способный обращаться к базе данных и возвращать элементы каталога товаров. Назовем его Catalog. Это служебный объект, так как он обеспечивает службу по запросу. Объекту Catalog необходим метод GetFeaturedProducts (получить рекламный каталог). Пока мы не рассматриваем код, который будет преобразовывать элементы каталога в HTML и помещать их на страницу сайта. Добавление кода HTML относится к уровню представления, а наша объектная модель — только к уровню бизнес-правил.

Таким образом, определены три объекта: visit, Database и Catalog.

2. Пользователь хочет получить описание товара.

Рассмотрим сценарий, описывающий запрос пользователем дополнительной информации об одном из товаров, показанных на домашней странице. Необходимо обеспечить доступ к этой информации и ее преобразование в HTML. Для доступа к информации о товаре можно использовать специальный объект, который извлекает строку из базы данных и представляет ее в виде объекта с набором свойств и методов, позволяющих манипулировать этим объектом. Назовем новый объект Product. Это объект данных, поскольку он отражает одну строку в базе данных и не предоставляет службы другим объектам системы. Product будет пользоваться объектом Database для извлечения информации из базы данных. Объект Catalog создает объект Product по требованию, инициируемому методом GetProductObject. Объект Product может самостоятельно возвращать сведения о товаре через значения свойств Name (название) и Price (цена).

Таким образом, мы добавили лишь один объект (Product). Заметьте, что расширение функциональности проводилось за счет добавления методов и свойств объектов, без введения новых объектов в модель. Сокращение числа объектов упрощает реализацию модели и понимание ее структуры. Итак, мы имеем:

3. Пользователь добавляет товар в корзину.

Рассмотрим действия в системе, связанные с добавлением пользователем товара в корзину (карту). Для этого нам потребуется объект, представляющий как саму корзину базы данных, так и методы изменения содержимого корзины. Для объекта Basket различия между объектом данных и служебным объектом незначительны. Реализуем его в виде объекта данных. Для создания объекта Basket потребуется служебный объект Orders. Расширенная версия нашей модели приобретает вид, показаный на рис. слева. Самой сложной операцией нашего сайта является преобразование товаров, содержащихся в корзине, в оформленный заказ на их покупку. Мы должны предусмотреть следующие аспекты:

□ Во-первых, необходимо выполнить преобразование Basket в заказ методом объекта Orders, который мы назовем SplitBasket.

Во-вторых, потребуется объект, представляющий заказ. Назовем его Order (это объект данных).

□ В-третьих, сам заказ имеет смысл только для определенного покупателя, поэтому сформируем служебный объект Customers, создающий нового клиента методом CreateCustomer. Затем потребуется объект данных Customer, отражающий соответствующий объект в базе данных.

Потребовалось не так много сценариев, чтобы понять состав и возможности объектов модели с точки зрения получения необходимых данных в приложении. Например, если мы добавляем метод GetOrdersForCustomer в объект Orders, то предполагаем, что разработчик может выполнить запрос на просмотр любого заказа, оформленного данным клиентом. Если же мы добавляем в объект Orders свойство Customer, мы должны обеспечить получение значения этого свойства из метода GetOrdersForCustomer. Достаточно написать один код запроса к базе данных и извлечения заказа потребителя, чтобы реализовать два общепринятых способа получения этих данных.

Читайте так же:
Not found

Нам доверяют

Интернет магазин