Роль программирования в смеле

Роль программирования в смеле


пример реализации актер/узор роль полужирным шрифтом.


<р класса="step_content "><р выровнять="центр"><Стронг><у>ролевое программирование жирным шрифтом<р класса="step_content "><р выровнять="левой">полужирный позволяет разработчикам для разработки ООП приложений, которые сохраняются в базе данных. Это дает нам возможность добавлять наследство для наших приложений, но эта способность может быть использована.<р класса="step_content "><р выровнять="левой">в качестве примера в приложение я разработал в смелый раз у меня была такая модель.

<р выровнять="центр">UMLInheritance.jpg<р класса="step_content "><р выровнять="левой">эта структура позволяет приложение для записи заказов от клиентов, работа администратор может быть назначен на AdminEmployee, и полетной информации могут быть записаны на пилота.<р класса="step_content "><р выровнять="центр"><Стронг><у>роль<р класса="step_content "><р выровнять="левой">проблема с выше сценарий, когда роли начинают смешиваться. Например, сотрудник может стать клиентом, или Пилот может выполнять некоторые работы администрации.<р класса="step_content "><р выровнять="левой">решение этой проблемы заключается в использовании актер/рисунок роли. Каждый актер (абстрактный класс) может получить несколько ролей (также абстрактный класс). Это такие роли, которые имеют бизнес, связанный сведения, связанные с ними. Например, PilotRole бы иметь информацию о рейсах связанные с ним, и CustomerRole бы заказы, связанные с ним.<р класса="step_content "><р выровнять="левой">новая модель будет выглядеть так.<р класса="step_content "><р выровнять="центр">UMLActor.jpg<р класса="step_content ">

  1. актер может не иметь никакой роли или нескольких ролей.
  2. конкретного экземпляра актер может запретить снятие с роли.
  3. роль может отказать в применении к конкретному актеру.
  4. роль может указать, что оно является обязательным и не может быть удален (т. е. LoginRole не может быть удален, потому что пользователь также имеет SystemAdministratorRoleв)
  5. конкретного экземпляра актер может отказаться от роли.
  6. <р класса="step_content "><ем>листинг 1: актер<р класса="step_content "><Ширина таблицы="100%" граница="0"><элемента tbody><тр><тд для bgcolor="#ffff00">//принять или отвергнуть роль
    и функция TActor.CanAcceptRole(ARoleClass: TRoleClass): boolean значение
    и начинается
    если не ARoleClass.AllowDuplicates и HasRole(ARoleClass, шь), то есть
    результат := ложь
    и еще
    если не ARoleClass.AllowActiveDuplicates и
    HasActiveRole(ARoleClass, шь), то есть
    результат := ложь
    и еще
    В результате := ARoleClass.CanApplyTo(Самовыдвижение)
    В конце <р класса="step_content ">



    //разрешить или запретить удаление роли
    и функция TActor.CanRemoveRole(ARole: TRole): boolean значение
    и начинается
    результат := не ARole.Требуется
    В конце



    //возвращает роль, но только если он активен<функция бр />TActor.FindActiveRole(в aclass: TClass ExcludeInstance: TRole): TRole
    вар
    я: число
    и начинается
    результат := мь
    для меня := 0 ролям.Счет - 1 делать
    если роли[я].Активный и (ролей[я].Типа класса = класс) и
    (функций[я] <> ExcludeInstance) тогда
    и начинается
    результат := роли[я] и
    перерыв
    В итоге
    В конце



    //возвращает роль, будь то активный или нет
    и функция TActor.FindRole(в aclass: TClass ExcludeInstance: TRole): TRole
    вар
    я: число
    и начинается
    результат := мь
    для меня := 0 ролям.Счет - 1 делать
    если (роли[я].Типа класса = класс) и
    (функций[я] <> ExcludeInstance) тогда
    и начинается
    результат := роли[я]
    перерыв
    В итоге
    В конце



    //возвращает True, если актер владеет определенной роли, и он активен и
    функция TActor.HasActiveRole(в aclass: TClass ExcludeInstance: TRole): boolean значение
    и начинается
    результат := назначенных(FindActiveRole(класс, ExcludeInstance))
    В конце



    //возвращает True, если Актеры владеет определенной роли (активные или неактивные);
    и функция TActor.HasRole(в aclass: TClass ExcludeInstance: TRole): boolean значение
    и начинается
    результат := назначенных(FindRole(класс, ExcludeInstance))
    В конце



    функции TActor.ReceiveQueryFromOwned(Отправитель: TObject OriginalEvent: TBoldEvent
    и константные Аргументы: массив константный абонента: TBoldSubscriber): Булевы функции
    вар
    В ObjectLocator: TBoldObjectLocator
    в роли: TRole
    и начинается
    результат := наследству ReceiveQueryFromOwned(Составитель, OriginalEvent, Аргументы, Абонент)
    если нет результата или BoldObjectIsDeleted после выхода //проверка на ввод ролей
    если (Отправитель = M_Roles) затем
    и начинается
    если OriginalEvent = bqMayInsert тогда
    и начинается
    //получить роль, которую вставляться
    утверждать(параметр args[1].Премиумной техники = vtObject)
    В ObjectLocator := (параметр args[1].VObject как TBoldObjectLocator)
    на роль := (ObjectLocator.BoldObject как TRole) //проверка на дублирование функций которой не допускается
    если (не последнюю роль.AllowDuplicates) и
    (HasRole(роль.Типа класса, шь)) тогда
    и начинается
    результат := ложь
    В SetBoldLastFailureReason(
    В TBoldFailureReason.Создать('эта роль может быть применен только один раз', я)
    В )
    В конце еще и
    //проверка на дублирование активных ролей, которые не допускаются
    если (не последнюю роль.AllowActiveDuplicates) и
    (HasActiveRole(роль.Типа класса, шь)) затем
    с начала<див класс='embed_block_0'> <див ИД="блок-google_admanager-1" класса="блок блок-google_admanager области-другие области-количество-1 Количество-1 блок-Без названия "> <див класс="блок-топ"> <див класс="блок-внутренний"> <див класс="содержание"> <див класс="блок-дна"> <див класс='embed_block_1'><див>
    результат := ложь
    В SetBoldLastFailureReason(
    В TBoldFailureReason.Создать('не может претендовать на эту роль, потому что'
    и там уже активную роль такого', я)
    В )
    В конце еще
    В результате := CanAcceptRole(TRoleClass(роль.Типа класса)) <р класса="step_content "> если не результат тогда
    В SetBoldLastFailureReason(
    В TBoldFailureReason.Создать('роли не могут быть применены к данному объекту', я)
    В )
    В конце еще //bqMayInsert
    В //проверки для удаления ролей
    если OriginalEvent = bqMayRemove затем
    и начинается
    //получить роль объекта удаляется
    как утверждают(параметр args[0].Премиумной техники = число)
    в роли := роли[параметр args[0].VInteger]
    В результате := (не роль.Активный) или (не роль.Требуется)
    если не результат тогда
    В SetBoldLastFailureReason(
    В TBoldFailureReason.Создать('роль не может быть удалена,'
    'это необходимо еще активное роль самих себе)
    В )
    В итоге //bqMayRemove
    В конце
    В конце <р класса="step_content "><р класса="step_content "><ем>в листинге 2: Роль на сайте<р класса="step_content "><Ширина таблицы="100%" граница="0"><элемента tbody><тр><тд для bgcolor="#ffff00">//разрешить или запретить применение к конкретному актер
    в классе функция TRole.CanApplyTo(AObject: TActor): boolean значение
    и начинается
    результат := ложь
    В конце



    //виртуальный метод, чтобы переопределить в потомках, которые описывает роль
    в классе функция TRole.GetRoleName: строки
    и начинается
    результат := "
    В конце



    //необязательный, задает ли активные дубли разрешены или нет
    в классе функция TRole.AllowActiveDuplicates: логическое
    и начинается
    результат := ложь
    В конце



    //необязательный, указывает, если дубликатов не допускается или нет (активные или неактивные);
    в классе функция TRole.AllowDuplicates: логическое
    и начинается
    результат := ложь
    В конце



    //возвращает True, если любая роль, от этого зависит роль, которую должны представить в
    функция TRole.Требуется: логическое и
    вар
    я: число
    и начинается
    если актер <> нулю, то
    и начинается
    результат := истина
    для меня := 0 для актера.Роли.Счет - 1 делать
    если актера.Роли[я] <> самостоятельно, то
    если актера.Роли[Я].RequiresRole(самовыдвижение) тогда
    на выходе
    В конце
    как результат := ложь
    В конце



    //Переопределить это, чтобы указать, если другой роли зависит от того,
    функция TRole.RequiresRole(ARole: TRole): boolean значение
    и начинается
    результат := ложь
    В конце



    //заполняет производными имя роли атрибута из класса метод
    в процедуре TRole._RoleName_DeriveAndSubscribe(DerivedObject: TObject абонента: TBoldSubscriber)
    и начинается
    унаследовала
    В M_RoleName.AsString := GetRoleName
    В конце



    //предотвращает удаление необходимый роль
    и функция TRole.MayDelete: логическое
    и начинается
    результат := не требуется
    В конце



    функции TRole.ReceiveQueryFromOwned(Отправитель: TObject OriginalEvent: TBoldEvent
    и константные Аргументы: массив константный абонента: TBoldSubscriber): boolean значение
    и начинается
    результат := наследству ReceiveQueryFromOwned(Составитель,
    В OriginalEvent, Аргументы, Абонент)
    если не результат тогда выход
    если (Отправитель = M_Active) тогда //Активный атрибут
    и начинается
    если OriginalEvent = bqMayModify затем
    и начинается
    если актер = шь то, что
    результат := истина
    и еще
    если, то
    и начинается
    //запрет отключения если еще одна роль требует
    при //этом роль активных
    В результате := не требуется
    если не результат тогда
    В SetBoldLastFailureReason(
    В TBoldFailureReason.Создать('не могу Выключить эту роль,'
    и другие роли, требующие это, я)
    В )
    В конце еще
    и начинается
    //запрет повторной активации, если еще активную роль существует
    С //и дубликаты не разрешены
    В результате := AllowActiveDuplicates или (не актер.HasActiveRole(Самовыдвижение.Типа класса, самостоятельно))
    если не результат тогда
    В SetBoldLastFailureReason(
    В TBoldFailureReason.Создать('не удается активировать эту роль'
    'потому что есть уже похожие активную роль, проблемы)
    В )
    В конце
    В итоге //bqMayModify
    В итоге //Активный attributeend
    В конце <р класса="step_content "><Стронг>
    <р класса="step_content "><р выровнять="левой">код до сих пор все было абстрактно. Все, что осталось спуститься какие-то конкретные классы от актера и роль.<р класса="step_content "><р выровнять="левой"><Стронг><ем>UMLRoles.jpg
    <р класса="step_content "><р выровнять="центр"><размер шрифта="3"><у><Стронг><ем>заключение<р класса="step_content "><р выровнять="левой"><размер шрифта="3">вместо того, что работник класс или класс клиентов, мы можем теперь легко назначают EmployeeRole или CustomerRole для любого типа лица объекта (который актер). <р класса="step_content "><р выровнять="левой"><размер шрифта="3">кроме того, мы можем смешивать роли, Пилот может выполнять администрация, и все может быть клиент (человек, Отдел, компания или даже Страна).<р класса="step_content "><р выровнять="левой"><размер шрифта="3">я надеюсь, что эта статья была информативной.<дел стиль= \ ясно:оба поплавка:нет'><дел стиль= \ ясно:оба поплавка:нет'> & мочекаменная







Роль программирования в смеле


Роль программирования в смеле : Несколько тысяч советов, которые сделают вашу жизнь проще.


пример реализации актер/узор роль полужирным шрифтом.


<р класса="step_content "><р выровнять="центр"><Стронг><у>ролевое программирование жирным шрифтом<р класса="step_content "><р выровнять="левой">полужирный позволяет разработчикам для разработки ООП приложений, которые сохраняются в базе данных. Это дает нам возможность добавлять наследство для наших приложений, но эта способность может быть использована.<р класса="step_content "><р выровнять="левой">в качестве примера в приложение я разработал в смелый раз у меня была такая модель.

<р выровнять="центр">UMLInheritance.jpg<р класса="step_content "><р выровнять="левой">эта структура позволяет приложение для записи заказов от клиентов, работа администратор может быть назначен на AdminEmployee, и полетной информации могут быть записаны на пилота.<р класса="step_content "><р выровнять="центр"><Стронг><у>роль<р класса="step_content "><р выровнять="левой">проблема с выше сценарий, когда роли начинают смешиваться. Например, сотрудник может стать клиентом, или Пилот может выполнять некоторые работы администрации.<р класса="step_content "><р выровнять="левой">решение этой проблемы заключается в использовании актер/рисунок роли. Каждый актер (абстрактный класс) может получить несколько ролей (также абстрактный класс). Это такие роли, которые имеют бизнес, связанный сведения, связанные с ними. Например, PilotRole бы иметь информацию о рейсах связанные с ним, и CustomerRole бы заказы, связанные с ним.<р класса="step_content "><р выровнять="левой">новая модель будет выглядеть так.<р класса="step_content "><р выровнять="центр">UMLActor.jpg<р класса="step_content ">

  1. актер может не иметь никакой роли или нескольких ролей.
  2. конкретного экземпляра актер может запретить снятие с роли.
  3. роль может отказать в применении к конкретному актеру.
  4. роль может указать, что оно является обязательным и не может быть удален (т. е. LoginRole не может быть удален, потому что пользователь также имеет SystemAdministratorRoleв)
  5. конкретного экземпляра актер может отказаться от роли.
  6. <р класса="step_content "><ем>листинг 1: актер<р класса="step_content "><Ширина таблицы="100%" граница="0"><элемента tbody><тр><тд для bgcolor="#ffff00">//принять или отвергнуть роль
    и функция TActor.CanAcceptRole(ARoleClass: TRoleClass): boolean значение
    и начинается
    если не ARoleClass.AllowDuplicates и HasRole(ARoleClass, шь), то есть
    результат := ложь
    и еще
    если не ARoleClass.AllowActiveDuplicates и
    HasActiveRole(ARoleClass, шь), то есть
    результат := ложь
    и еще
    В результате := ARoleClass.CanApplyTo(Самовыдвижение)
    В конце <р класса="step_content ">



    //разрешить или запретить удаление роли
    и функция TActor.CanRemoveRole(ARole: TRole): boolean значение
    и начинается
    результат := не ARole.Требуется
    В конце



    //возвращает роль, но только если он активен<функция бр />TActor.FindActiveRole(в aclass: TClass ExcludeInstance: TRole): TRole
    вар
    я: число
    и начинается
    результат := мь
    для меня := 0 ролям.Счет - 1 делать
    если роли[я].Активный и (ролей[я].Типа класса = класс) и
    (функций[я] <> ExcludeInstance) тогда
    и начинается
    результат := роли[я] и
    перерыв
    В итоге
    В конце



    //возвращает роль, будь то активный или нет
    и функция TActor.FindRole(в aclass: TClass ExcludeInstance: TRole): TRole
    вар
    я: число
    и начинается
    результат := мь
    для меня := 0 ролям.Счет - 1 делать
    если (роли[я].Типа класса = класс) и
    (функций[я] <> ExcludeInstance) тогда
    и начинается
    результат := роли[я]
    перерыв
    В итоге
    В конце



    //возвращает True, если актер владеет определенной роли, и он активен и
    функция TActor.HasActiveRole(в aclass: TClass ExcludeInstance: TRole): boolean значение
    и начинается
    результат := назначенных(FindActiveRole(класс, ExcludeInstance))
    В конце



    //возвращает True, если Актеры владеет определенной роли (активные или неактивные);
    и функция TActor.HasRole(в aclass: TClass ExcludeInstance: TRole): boolean значение
    и начинается
    результат := назначенных(FindRole(класс, ExcludeInstance))
    В конце



    функции TActor.ReceiveQueryFromOwned(Отправитель: TObject OriginalEvent: TBoldEvent
    и константные Аргументы: массив константный абонента: TBoldSubscriber): Булевы функции
    вар
    В ObjectLocator: TBoldObjectLocator
    в роли: TRole
    и начинается
    результат := наследству ReceiveQueryFromOwned(Составитель, OriginalEvent, Аргументы, Абонент)
    если нет результата или BoldObjectIsDeleted после выхода //проверка на ввод ролей
    если (Отправитель = M_Roles) затем
    и начинается
    если OriginalEvent = bqMayInsert тогда
    и начинается
    //получить роль, которую вставляться
    утверждать(параметр args[1].Премиумной техники = vtObject)
    В ObjectLocator := (параметр args[1].VObject как TBoldObjectLocator)
    на роль := (ObjectLocator.BoldObject как TRole) //проверка на дублирование функций которой не допускается
    если (не последнюю роль.AllowDuplicates) и
    (HasRole(роль.Типа класса, шь)) тогда
    и начинается
    результат := ложь
    В SetBoldLastFailureReason(
    В TBoldFailureReason.Создать('эта роль может быть применен только один раз', я)
    В )
    В конце еще и
    //проверка на дублирование активных ролей, которые не допускаются
    если (не последнюю роль.AllowActiveDuplicates) и
    (HasActiveRole(роль.Типа класса, шь)) затем
    с начала<див класс='embed_block_0'> <див ИД="блок-google_admanager-1" класса="блок блок-google_admanager области-другие области-количество-1 Количество-1 блок-Без названия "> <див класс="блок-топ"> <див класс="блок-внутренний"> <див класс="содержание"> <див класс="блок-дна"> <див класс='embed_block_1'><див>
    результат := ложь
    В SetBoldLastFailureReason(
    В TBoldFailureReason.Создать('не может претендовать на эту роль, потому что'
    и там уже активную роль такого', я)
    В )
    В конце еще
    В результате := CanAcceptRole(TRoleClass(роль.Типа класса)) <р класса="step_content "> если не результат тогда
    В SetBoldLastFailureReason(
    В TBoldFailureReason.Создать('роли не могут быть применены к данному объекту', я)
    В )
    В конце еще //bqMayInsert
    В //проверки для удаления ролей
    если OriginalEvent = bqMayRemove затем
    и начинается
    //получить роль объекта удаляется
    как утверждают(параметр args[0].Премиумной техники = число)
    в роли := роли[параметр args[0].VInteger]
    В результате := (не роль.Активный) или (не роль.Требуется)
    если не результат тогда
    В SetBoldLastFailureReason(
    В TBoldFailureReason.Создать('роль не может быть удалена,'
    'это необходимо еще активное роль самих себе)
    В )
    В итоге //bqMayRemove
    В конце
    В конце <р класса="step_content "><р класса="step_content "><ем>в листинге 2: Роль на сайте<р класса="step_content "><Ширина таблицы="100%" граница="0"><элемента tbody><тр><тд для bgcolor="#ffff00">//разрешить или запретить применение к конкретному актер
    в классе функция TRole.CanApplyTo(AObject: TActor): boolean значение
    и начинается
    результат := ложь
    В конце



    //виртуальный метод, чтобы переопределить в потомках, которые описывает роль
    в классе функция TRole.GetRoleName: строки
    и начинается
    результат := "
    В конце



    //необязательный, задает ли активные дубли разрешены или нет
    в классе функция TRole.AllowActiveDuplicates: логическое
    и начинается
    результат := ложь
    В конце



    //необязательный, указывает, если дубликатов не допускается или нет (активные или неактивные);
    в классе функция TRole.AllowDuplicates: логическое
    и начинается
    результат := ложь
    В конце



    //возвращает True, если любая роль, от этого зависит роль, которую должны представить в
    функция TRole.Требуется: логическое и
    вар
    я: число
    и начинается
    если актер <> нулю, то
    и начинается
    результат := истина
    для меня := 0 для актера.Роли.Счет - 1 делать
    если актера.Роли[я] <> самостоятельно, то
    если актера.Роли[Я].RequiresRole(самовыдвижение) тогда
    на выходе
    В конце
    как результат := ложь
    В конце



    //Переопределить это, чтобы указать, если другой роли зависит от того,
    функция TRole.RequiresRole(ARole: TRole): boolean значение
    и начинается
    результат := ложь
    В конце



    //заполняет производными имя роли атрибута из класса метод
    в процедуре TRole._RoleName_DeriveAndSubscribe(DerivedObject: TObject абонента: TBoldSubscriber)
    и начинается
    унаследовала
    В M_RoleName.AsString := GetRoleName
    В конце



    //предотвращает удаление необходимый роль
    и функция TRole.MayDelete: логическое
    и начинается
    результат := не требуется
    В конце



    функции TRole.ReceiveQueryFromOwned(Отправитель: TObject OriginalEvent: TBoldEvent
    и константные Аргументы: массив константный абонента: TBoldSubscriber): boolean значение
    и начинается
    результат := наследству ReceiveQueryFromOwned(Составитель,
    В OriginalEvent, Аргументы, Абонент)
    если не результат тогда выход
    если (Отправитель = M_Active) тогда //Активный атрибут
    и начинается
    если OriginalEvent = bqMayModify затем
    и начинается
    если актер = шь то, что
    результат := истина
    и еще
    если, то
    и начинается
    //запрет отключения если еще одна роль требует
    при //этом роль активных
    В результате := не требуется
    если не результат тогда
    В SetBoldLastFailureReason(
    В TBoldFailureReason.Создать('не могу Выключить эту роль,'
    и другие роли, требующие это, я)
    В )
    В конце еще
    и начинается
    //запрет повторной активации, если еще активную роль существует
    С //и дубликаты не разрешены
    В результате := AllowActiveDuplicates или (не актер.HasActiveRole(Самовыдвижение.Типа класса, самостоятельно))
    если не результат тогда
    В SetBoldLastFailureReason(
    В TBoldFailureReason.Создать('не удается активировать эту роль'
    'потому что есть уже похожие активную роль, проблемы)
    В )
    В конце
    В итоге //bqMayModify
    В итоге //Активный attributeend
    В конце <р класса="step_content "><Стронг>
    <р класса="step_content "><р выровнять="левой">код до сих пор все было абстрактно. Все, что осталось спуститься какие-то конкретные классы от актера и роль.<р класса="step_content "><р выровнять="левой"><Стронг><ем>UMLRoles.jpg
    <р класса="step_content "><р выровнять="центр"><размер шрифта="3"><у><Стронг><ем>заключение<р класса="step_content "><р выровнять="левой"><размер шрифта="3">вместо того, что работник класс или класс клиентов, мы можем теперь легко назначают EmployeeRole или CustomerRole для любого типа лица объекта (который актер). <р класса="step_content "><р выровнять="левой"><размер шрифта="3">кроме того, мы можем смешивать роли, Пилот может выполнять администрация, и все может быть клиент (человек, Отдел, компания или даже Страна).<р класса="step_content "><р выровнять="левой"><размер шрифта="3">я надеюсь, что эта статья была информативной.<дел стиль= \ ясно:оба поплавка:нет'><дел стиль= \ ясно:оба поплавка:нет'> & мочекаменная

Роль программирования в смеле

Роль программирования в смеле : Несколько тысяч советов, которые сделают вашу жизнь проще.
рекомендовать друзьям
  • gplus
  • pinterest

Комментарий

Оставить комментарий

Оценивать