leAccess з набору класів додатки, а отримувати наявність дозволу для поточного користувача на виконання тієї чи іншої операції в системі можна таким шляхом:
bool access=currentUser.UserRole.ExistAccess (ShowAdminPanel)
Виключаючи допоміжні класи, що містять невелику кількість членів можна полегшити сам додаток і спростити його подальшу розробку.
У результаті моделювання була отримана діаграма, що показує відносини класів у додатку. На малюнку 5 пунктирною лінією виділені класи, які не ввійшли до складу програми. Однак, ці класи мають свою сутність в базі даних.
Малюнок 5
Відносини 1, 4 - бінарна асоціація;
Ставлення 2 - N-арная асоціація;
Ставлення 3 - узагальнення.
Класи, що описують користувача і права доступу, і класи, які описують матеріали і склад невзаємопов'язані.
3. Архітектура програми
Системна архітектура додатка визначає, як взаємодіють елементи додатка і яку функціональність вони надають. Існує три типи системної архітектури: одно-, дво- і багаторівнева. Однорівневі додатки також називаються монолітними. У сценарії побудови багаторівневих додатків як правило використовується поділ на клієнтську і серверну частину. Клієнт надає інтерфейс користувача, а сервер - додаток бази даних. У курсовій роботі розглянуто варіант з локально розташованим файлом бази даних, щоб спростити демонстрацію роботи програми. Однак створені класи дозволять без зусиль переорієнтувати програму для взаємодії з віддаленої БД.
. 1 Структура класів
Клас User визначає облікові дані користувача, що пройшов авторизацію у додатку. Він має мінімальну кількість властивостей, необхідне для ідентифікації користувача:
· UserID - ідентифікаційний номер користувача;
· UserName - ім'я користувача (логін);
· UserPassword - пароль
При необхідності можна розширити даний клас полями: прізвище, ім'я, по батькові, рік народження, дата працевлаштування, посаду та ін. При цьому необхідно створити поля з тими ж назвами у відповідній таблиці бази даних. Це пов'язано з використанням простору імен System.Reflection (.NET Framework). Метод присвоєння значень властивостям об'єктів з використанням System.Reflection розглянуто в описі класу ObjectProvider.
Клас Role дозволяє привласнювати користувачеві ту чи іншу роль при використанні програми, визначити його права на редагування і перегляд даних. Кожному користувачеві присвоюється тільки одна роль. Список можливостей (дані таблиці RoleAccess) прив'язаний до ролі. Додаток дозволяє або забороняє певний функціонал для поточного користувача на підставі того, має чи ні роль цього користувача дозвіл із зазначеним AccessCode. Приклад методу перевірки права користувача на здійснення операції додавання матеріалу на склад:
boolean user. Клас Material має наступні властивості, що дозволяють описати будівельний матеріал, що розміщується на складі:
· MaterialID - ідентифікатор матеріалу;
· MaterialName - назва;
· MaterialMeasure - одиниця виміру
Для отримання кількості матеріалу, що знаходиться на складі, служить властивість StorageCount.
Ці класи, що знаходяться в просторі імен Storage_Coursework.Objects успадковують властивості об'єктів (записів) БД відповідних таблиць.
. 2 Класи-провайдери
Класи, службовці для конвертації набору отриманих в результаті запиту даних в зрозумілі додатком і зручні для розробника об'єкти представлені в просторі імен Storage_Coursework.Providers. Ці класи дозволяють передати «вимога» розробника, припустимо, отримати всі наявні на складі матеріали GetMaterials () у вигляді готового запиту до БД - SELECT * FROM Material.
Таким чином, додаток поділено на кілька рівнів. На нижньому рівні ми маємо клас для роботи з базою даних Storage_Coursework.SqlDB, на проміжному рівні - клас-провайдер, що має всі необхідні розробнику методи отримання готових, зрозумілих об'єктів на верхньому рівні і забезпечує запис змін об'єктів на верхньому рівні в БД.
Кожному з ключових класів (User, Role, Material) призначений свій клас-провайдер.
. 3 Провайдер об'єктів
Клас Object Provider дозволяє перетворити рядок даних з набору даних, отриманих в результаті запиту в екземпляр класу, описаного в додатку. Цей клас має всього один статичний метод
GetObject. Він приймає в якості арг...