Lab-AdminLab-AdminBusiness LogicBusiness Logic
אלעד וייסאלעד וייס
מירון הורודימירון הורודי
ראשי פרקיםראשי פרקים
רקע – מצב קיים.רקע – מצב קיים.
מטרות הפרויקט.מטרות הפרויקט.
תהליך התכנון – רעיונות לפתרונות שונים.תהליך התכנון – רעיונות לפתרונות שונים.
סקירת התכן.סקירת התכן.
הצגת יכולות – כולל יכולות חדשותהצגת יכולות – כולל יכולות חדשות
רקערקע
הקיימת מבוססת ממשק הקיימת מבוססת ממשק Lab-AdminLab-Adminמערכת מערכת משתמש הפועל ישירות מול מסד הנתונים.משתמש הפועל ישירות מול מסד הנתונים.
היקף המערכת גדול: איתור תקלות מסורבל היקף המערכת גדול: איתור תקלות מסורבלומחייב חיפוש בכמות רבה של קוד.ומחייב חיפוש בכמות רבה של קוד.
שאילתות שאילתותSQLSQL בתוך קוד הממשק: מבנה מסד בתוך קוד הממשק: מבנה מסד הנתונים חשוף למתכנת הממשק.הנתונים חשוף למתכנת הממשק.
DatabaseDatabase GUIGUI
מטרות הפרויקטמטרות הפרויקט
Lab Labהוספת מערך מחלקות חדש למערכת הוספת מערך מחלקות חדש למערכת AdminAdmin:שיספק את המטרות הבאות: שיספק את המטרות הבאות
.הוצאת הגישה למסד הנתונים מממשק המשתמש.הוצאת הגישה למסד הנתונים מממשק המשתמש מודולאריות – קוד מסודר המפשט פעולות אחזקה מודולאריות – קוד מסודר המפשט פעולות אחזקה
ושדרוג.ושדרוג. גישה למסד נתונים רק באמצעות גישה למסד נתונים רק באמצעותStored Stored
ProceduresProcedures– – הסתרה של מבנה מסד הנתונים ממתכנת הממשק.הסתרה של מבנה מסד הנתונים ממתכנת הממשק.
DatabaseDatabaseSSPP
BusinessBusinessLogicLogic
GUIGUI
תהליך התכנוןתהליך התכנון
אופי האובייקטיםאופי האובייקטים
יצירת אובייקטים דומים במבנה לדפי יצירת אובייקטים דומים במבנה לדפי רעיון א':רעיון א':הממשק השונים.הממשק השונים.
:יתרון:יתרוןכל הפרטים למילוי דף ממשק באובייקט יחיד.כל הפרטים למילוי דף ממשק באובייקט יחיד.
:חיסרון:חיסרוןהבאת נתונים ממסד הנתונים מסורבלת וגורמת:הבאת נתונים ממסד הנתונים מסורבלת וגורמת:
.חוסר גמישות בשליטה על המידע הנלקח. שינוי ממשק בעייתי.חוסר גמישות בשליטה על המידע הנלקח. שינוי ממשק בעייתי.שאילתות ארוכות ומסורבלות. איתור תקלות קשה.שאילתות ארוכות ומסורבלות. איתור תקלות קשה
אופי האובייקטים )המשך(אופי האובייקטים )המשך(
יצירת אובייקט עבור כל טבלת מסד יצירת אובייקט עבור כל טבלת מסד רעיון ב':רעיון ב':נתונים אשר יש לה תפקיד במילוי מידע בממשק.נתונים אשר יש לה תפקיד במילוי מידע בממשק.
:יתרון:יתרוןמודולאריות רבה. ניתן להרכיב את המידע עבור דף ממשק מודולאריות רבה. ניתן להרכיב את המידע עבור דף ממשק
מתוך מגוון רחב של אובייקטים.מתוך מגוון רחב של אובייקטים.:חסרונות:חסרונות
המון אובייקטים אשר לחלקם תפקיד זניח במערכת. המון אובייקטים אשר לחלקם תפקיד זניח במערכת.
יותר מדי גישות למסד הנתונים. יותר מדי גישות למסד הנתונים.
אופי האובייקטים )המשך(אופי האובייקטים )המשך(
יצירת אובייקטים בעלי משמעות יצירת אובייקטים בעלי משמעות הרעיון הנבחר:הרעיון הנבחר:בעולם של מסד הנתונים )לפעמים מיותר מטבלה בעולם של מסד הנתונים )לפעמים מיותר מטבלה
אחת(, אשר ניתן להרכיב מהם תצורות שונות לפי צרכי אחת(, אשר ניתן להרכיב מהם תצורות שונות לפי צרכי הממשק )מעיין לגו(. בנוסף, השליטה על הממשק )מעיין לגו(. בנוסף, השליטה על
פתיחת/סגירת קשר למסד הנתונים הועברה לממשק.פתיחת/סגירת קשר למסד הנתונים הועברה לממשק.:יתרונות:יתרונות
מודולאריות מלאה, הבאת כל המידע שצריך ורק אותו.מודולאריות מלאה, הבאת כל המידע שצריך ורק אותו.
פתיחת קשר למסד הנתונים וסגירתו רק לאחר ביצוע כל הפעולות.פתיחת קשר למסד הנתונים וסגירתו רק לאחר ביצוע כל הפעולות.:חסרונות:חסרונות
הממשק אחראי על פתיחת/סגירת קשר – הוספת אחריות.הממשק אחראי על פתיחת/סגירת קשר – הוספת אחריות.
תפעול האובייקטיםתפעול האובייקטים
לכל אובייקט יהיה אוסף קבוע של מתודות לכל אובייקט יהיה אוסף קבוע של מתודות רעיון א':רעיון א':שכולל מתודת טעינה, מתודת שמירה ומתודת שכולל מתודת טעינה, מתודת שמירה ומתודת
מחיקה.מחיקה.:יתרון:יתרון
כל הפעולות הקשורות לאובייקט הן במקום אחד.כל הפעולות הקשורות לאובייקט הן במקום אחד.:חסרונות:חסרונות
פעולות בעלות אופי פעולה דומה מפוזרות בין הרבה פעולות בעלות אופי פעולה דומה מפוזרות בין הרבה אובייקטים שונים.אובייקטים שונים.
תפעול האובייקטים )המשך(תפעול האובייקטים )המשך(
איגוד כל מתודות התפעול איגוד כל מתודות התפעול רעיון הנבחר:רעיון הנבחר:לאובייקטי תפעול. כל מתודות הטעינה באובייקט לאובייקטי תפעול. כל מתודות הטעינה באובייקט אחד, מתודות השמירה באובייקט אחר, וכן הלאה.אחד, מתודות השמירה באובייקט אחר, וכן הלאה.
:יתרונות:יתרונותהפרדה ברורה בין אובייקטים שתפקידם להחזיק מידע לבין הפרדה ברורה בין אובייקטים שתפקידם להחזיק מידע לבין אובייקטים המתפעלים את הקשר בינם לבין מסד הנתונים.אובייקטים המתפעלים את הקשר בינם לבין מסד הנתונים.
ריכוז כל הפעולות מאותו אופי במקום אחד. נוחות באחזקה.ריכוז כל הפעולות מאותו אופי במקום אחד. נוחות באחזקה.
..Aspect OrientedAspect Orientedכל היתרונות הנובעים מתכנון שהוא כל היתרונות הנובעים מתכנון שהוא :חסרונות:חסרונות
סרבול מסוים בהוספת אובייקט חדש. נדרש עדכון של מספר סרבול מסוים בהוספת אובייקט חדש. נדרש עדכון של מספר אובייקטים.אובייקטים.
סקירת התכןסקירת התכן
Business LogicBusiness Logicמחלקות ה-מחלקות ה-
Business LogicBusiness Logicניתן לחלק את מחלקות ה-ניתן לחלק את מחלקות ה-לשלושה סוגים עיקריים:לשלושה סוגים עיקריים:
אובייקטים בדידים אובייקטים בדידים((ObjectsObjects)) כל אובייקט מייצג – כל אובייקט מייצג – ישות/תת-ישות נפרדת כגון סטודנט, מעבדה, ישות/תת-ישות נפרדת כגון סטודנט, מעבדה,
הרשמה...הרשמה... קבוצות קבוצות((CollectionsCollections)) מחלקות המאגדות בתוכן – מחלקות המאגדות בתוכן –
אובייקטים רבים מאותו סוג, ומאפשרות בין השאר אובייקטים רבים מאותו סוג, ומאפשרות בין השאר מילוי נוח של אובייקטי ממשק המציגים רשימות.מילוי נוח של אובייקטי ממשק המציגים רשימות.
אובייקטי תפעול אובייקטי תפעול((BLBL)) אובייקטים אלה מאפשרים – אובייקטים אלה מאפשרים – לכותב הממשק לבצע פעולות שונות על האובייקטים לכותב הממשק לבצע פעולות שונות על האובייקטים הנ"ל, כגון טעינת שדות, עדכון שדות במסד הנתונים הנ"ל, כגון טעינת שדות, עדכון שדות במסד הנתונים
וכדומה.וכדומה.
((ObjectsObjects))אובייקטים בדידים אובייקטים בדידים
EmployeeTypeEmployeeType
FacultyFaculty
FinalCheckListItemFinalCheckListItem
KdamKdam
LAProjectDisplayLAProjectDisplay
LAStudentDisplayLAStudentDisplay
LAStudentReportLAStudentReport
LASupervisorDisplayLASupervisorDisplay
LASupervisorReportLASupervisorReport
LabLab
LabStudentLabStudent
PersonPerson
ProjectProject
ProjectProposalProjectProposal
ProjectStatusProjectStatus
ProjectTypeProjectType
RegistrationRegistration
SeasonSeason
SemesterSemester
StudentStatusStudentStatus
SupervisorSupervisor
, כלומר זהו LabAdmin משמעותה LAקידומת אובייקט שמטרתו היחידה היא להציג מידע כללי
, בדרך-כלל ייכנס לתוך LabAdminבמערכת Collection ויוצג בתוך datagrid או drop-down-list.
((CollectionsCollections))קבוצות אובייקטים קבוצות אובייקטים
EmployeeTypeCollectionEmployeeTypeCollection
FacultyCollectionFacultyCollection
FinalCheckListCollectionFinalCheckListCollection
KdamCollectionKdamCollection
LabCollectionLabCollection
LAProjectDisplayCollectionLAProjectDisplayCollection
LAStudentDisplayCollectionLAStudentDisplayCollection
LAStudentReportCollectionLAStudentReportCollection
LASupervisorDisplayCollectionLASupervisorDisplayCollection
LASupervisorReportCollectionLASupervisorReportCollection
ProjectStatusCollectionProjectStatusCollection
ProjectTypeCollectionProjectTypeCollection
RegistrationCollectionRegistrationCollection
SemesterCollectionSemesterCollection
אובייקטי תפעולאובייקטי תפעול
BL – Base class for all Objects classesBL – Base class for all Objects classesBLCollection – Base class for all collectionsBLCollection – Base class for all collectionsBLCommonProceduresBLCommonProceduresDBDB DBLoaderDBLoader DBSaverDBSaver DBDeleterDBDeleter
דוגמת מילוי ממשקדוגמת מילוי ממשקטבלת סטודנטיםטבלת סטודנטים
private void bSearch_Click)object sender, System.EventArgs e({
LoadDataGrid)(;dgRegistrations.SelectedIndex = -1;
}
private void LoadDataGrid)({
dgRegistrations.CurrentPageIndex = currentPageIndex;LAStudentDisplayCollection collection = new
LAStudentDisplayCollection)this.ddlLab.SelectedValue,this.ddlSearchCriteria.SelectedValue,this.tbSearchValue.Text (;
DB.OpenConnection)(;DB.Loader.Load)collection(;DB.CloseConnection)(;collection.sort)eDirection.d_Increasing, this.ddlSortCriteria.SelectedValue(;dgRegistrations.DataSource = collection;dgRegistrations.DataBind)(;
}
דוגמת מילוי ממשקדוגמת מילוי ממשקדף סטודנט – הדף מייצג הרשמת סטודנט בסמסטר.דף סטודנט – הדף מייצג הרשמת סטודנט בסמסטר.
….Registration registration = new Registration)tbRegistrationID.Text(;DB.OpenConnection)(;DB.Loader.Load)registration(;DB.Loader.Load)registration.Student(;DB.Loader.Load)registration.Student.Kdams(;DB.Loader.Load)registration.Student.Faculty(;DB.Loader.Load)registration.Semester(;DB.Loader.Load)registration.ProjectType(;DB.Loader.Load)registration.Lab(;DB.Loader.Load)registration.Lab.Kdams(;DB.Loader.Load)registration.Status(;DB.CloseConnection)(; בדוגמה זו תשעה אובייקטים שונים נטענו ממסד
, ויוצרים יחדיו DB.Loaderהנתונים באמצעות ה-את מכלול המידע הנחוץ לממשק.
שלב א' : טעינת המידע ממסד הנתונים לאובייקטים
ddlSFaculty.SelectedValue = registration.Student.Faculty.Number;…tbSFirstNameHeb.Text = registration.Student.FirstNameHeb;tbSLastNameHeb.Text = registration.Student.LastNameHeb;tbSLoginRequest.Text = registration.Studenta.LoginRequest;tbSAcademicPoints.Text = registration.Student.AcademicPoints;tbSAddress.Text = registration.Student.Address;tbSAverage.Text = registration.Student.Average;tbSCellPhone.Text = registration.Student.CellPhone;tbSEmail.Text = registration.Student.Email;…tbGrade.Text = registration.Grade;ddlRPreference1.SelectedValue = registration.Request1;ddlRPreference2.SelectedValue = registration.Request2;ddlRPreference3.SelectedValue = registration.Request3;…foreach)Kdam k in registration.Student.Kdams( {
ListItem item = lbKdams.Items.FindByValue)k.Number(;if )item != null(
lbKdams.Items[lbKdams.Items.IndexOf)item(].Selected = true;}
שלב ב' : הצגת המידע מהאובייקטים בממשק המשתמש
+ID : string+TeudatZeut : string+FirstName : string+LasrName : string+Email : string+HomePhone : string+CellPhone : string+Address : string+GradeAverage : string+AcademicPoints : string+Faculty : Faculty+LoginRequest : string+PasswordRequest : string+StudentNotes : string+FirstNameEng : string+LastNameEng : string+IsSubmittedToAnam : bool+Kdams : Kdam
LabStudent
+ID : string+Student : LabStudent+Semester : Semester+Lab : Lab+Requests : string+StudentStatus : StudentStatus+Project : ProjectProposal
Registration
1
*
+ID : string+Season : Season+Year : short+StartDate : string+EndDate : string+Status : EStatus
Semester
**
+Name : string+Number : string+BudgetNumber : string+Kdams : Kdam+FinalCheckList : FinalCheckListItem
Lab
*
* 1*
+ID : string+Number : string+Name : string
ProjectType+Number : string+NameEng : string+NameHeb : string
Kdam
1*
+ID : string+Number : string+Name : string
Faculty
-End3
1
-End4
*
-End5
1
-End6
*
+NameHeb : string+NameEng : string
Season
+Name : string+Number : string
StudentStatus
-End7
1
-End8
*
-End11
1
-End12
*
+ID : string+Number : string+Name : string+Notes : string
FinalCheckListItem
1
*
1
*
Project
החלקים שטענוהחלקים שטענו
1
2
3
4
5
6
7
8
9
הצגת יכולותהצגת יכולות
הפרויקט מוגש עם כלי להערכת ביצועים הפרויקט מוגש עם כלי להערכת ביצועים הכולל ממשק משתמש צבעוני, נוח וקל הכולל ממשק משתמש צבעוני, נוח וקל
לתפעול המספק את כל הפונקציונאליות של לתפעול המספק את כל הפונקציונאליות של הקיימת, וקצת יותר... הקיימת, וקצת יותר...Lab AdminLab Adminמערכת מערכת
יכולות חדשותיכולות חדשות
תיקון תעודת זהות של מנחה.תיקון תעודת זהות של מנחה.
תיקון תעודת זהות של סטודנט.תיקון תעודת זהות של סטודנט.
מיון טבלאות לפי סמסטרים בסדר כרונולוגי )לא מיון טבלאות לפי סמסטרים בסדר כרונולוגי )לא לקסיקוגרפי(.לקסיקוגרפי(.
בחירת כל קורס טכניוני כקדם* לביצוע פרויקט במעבדה.בחירת כל קורס טכניוני כקדם* לביצוע פרויקט במעבדה.
אפשרות הצלבה בין קדמים נדרשים לקורסים שביצע אפשרות הצלבה בין קדמים נדרשים לקורסים שביצע סטודנט*.סטודנט*.
הרכבת מערך אובייקטים וטעינתם ללא הכרות עם מסד הרכבת מערך אובייקטים וטעינתם ללא הכרות עם מסד הנתונים.הנתונים.
* מתאפשר בזכות תמיכת מסד נתונים אודות לרמי ורומן.* מתאפשר בזכות תמיכת מסד נתונים אודות לרמי ורומן.
Top Related