application design document
class diagram
1
1
1
1
1
1
1
1
data manager
מחלקה זו אחראית לתחזוק ה-database. בעזרתה מכניסים מידע, מעדכנים ומוחקים מה-database. כל המחלקות ב-Domain אשר משתמשות ב-database מחזיקות instance של מחלקה זו על מנת לגשת ל-database.
1
1
mongo connection
מחלקה זו אחראית לחיבור המערכת ל-mongo שמשמש כ-database של המערכת. במחלקה זו ניגשים ל-db - מכניסים, מעדכנים ומוחקים מידע. המחלקה DataManager מחזיקה instance של מחלקה זו על מנת לגשת ל-database.
dal
domain
1
1
game
מחלקה זו מתארת משחק שהוגדר על ידי בעל המקום. בעת ההגדרה יש להגדיר את סוג המשחק, מספר המנצחים, תאריך התחלה, תאריך סיום ופרס.
0..n
digital jukebox
מחלקה זו מתארת את המערכת עצמה, מחזיקה את כל המשתמשים והמקומות. דרכה נרשמים ומתחברים המשתמשים, פותחים מקום וקושרים בין משתמש למקום.
place
מחלקה זו מתארת מקום, מחזיקה את פרטי המקום, ואת הבעלים. במחלקה זו נמצאת הפונקציונאליות המרכזית שניתן לבצע על מקום. מחלקה זו מחזיקה גם את ה-music_provider שמספק את שירותי הסטרימינג למערכת וגם instance של המחלקה Filter שאחראית על מסגרות הפילטור של המערכת.
0..n
user
מחלקה שמתארת משתמש במערכת, לכל משתמש יש id ייחודי שניתן ע"י המערכת ובנוסף המחלקה תשמור את המקום הנוכחי בו שוהה המשתמש. במחלקה זו יש את כל הפונקציונאליות של משתמש כמו התחברות למקום, חיפוש, בחירת שיר, הצבעה לשיר הנוכחי.
owner
מחלקה שיורשת מ-User. מתארת בעל מקום, שיכול לעשות גם את הפעולות של משתמש וגם לקרוא לפעולות של המקום.
register
מחלקה שמייצגת משתמש שרשום למערכת, גם היא יורשת מ-User. בשונה ממשתמש לא רשום, היסטוריית השימוש של משתמש זה נשמרת והוא יכול להשתתף במשחקים.
extends
1
1
0..n
1
1
0..n
1
1
1
1
filtering
filter
מחלקה שאחראית על כל הטיפול במסגרות פילטור של מקום. מחזיקה רשימה של מסגרות פילטור וכן מחזיקה את ה-music_provider על מנת לקבל ממנו מידע על השירים.
filter frame
מחלקה זו מתארת מסגרת פילטור, בעלת שם למסגרת ותנאים.
0..n
1
spotify filter frame
מחלקה זו יורשת מ- FilterFrame, הפונקציונאליות של מחלקה זו כי אתחול ותחזוק תנאים של מסגרת שמתאימה ל-Spotify.
extends
list condition
מחלקה שמתארת תנאי מסוג רשימה, כלומר התנאי הוא בדיקת גודל החיתוך בין רשימות.
range condition
מחלקה שמתארת תנאי מסוג טווח, כלומר התנאי הוא שקריטריון מסויים יהיה בין שני ערכים.
0..n
1
1
0..n
extends
condition
מחלקה שמתארת תנאי למסגרות פילטור.
1
1
music
music provider
ממשק בו נמצאות הפונקציות עבורן יש לשלוח בקשות ל-API של שירות הסטרימינג. המטרה היא ליצור ממשק אחיד שממנו המערכת מבקשת בקשות בכל מה שקשור לשירותי הסטרימינג. את הממשק יממשו מחלקות שונות, כל אחת תממש התחברות ל-API של שירות אחר.
spotify integration
מחלקה זו מממשת את הממשק music_provider. במחלקה זו יש מימוש לכל הפונקציות שמתוארות לעיל ובהן יש בקשות API ל-Spotify. מחלקה זו מחזיקה תור שמייצג את רשימת ההשמעה.
1
1
1
Recommendation System
מחלקה זו מתארת את מערכת ההמלצה למסגרות פילטור. מחלקת jukebox מחזיקה אותה ועושה שימוש בפונקציונאליות שלה. במחלקה זו מחושבות מסגרות פילטור שונות על ידי שני מודלים שונים אשר משתמשים בנתוניו של כל משתמש - ממוצעים של הפרמטרים של השירים שהוא הציע או הצביע באופן חיובי.
collaborative filetring model
מחלקה זו יורשת מ-CalculationModel והיא משתמשת בספריה של collaborative filtering על מנת לחשב את המסגרת פילטור המומלצת.
average model
מחלקה זו יורשת מ-CalculationModel והיא מתארת מודל של חישוב מסגרות פילטור על ידי ממוצע נתוני הצעות והצבעות של כל משתמש.
calculation model
מחלקה זו מתארת את המודל לפיו מחשבים את מסגרת הפילטור.
extends
1
1
1
1
recommendation
bridge
מחלקה זו מחזיקה את ה-API של כל הפונקציונאליות של המערכת. הלקוח במערכת מחזיק את מחלקה זו על מנת לקרוא לפונקציות שלה. במימוש הפונקציות ישנן בקשות http אשר נשלחות לשרת על מנת להפעיל את הפונקציונאליות הנדרשת.
+ screens
screen
screen
screen
מחלקות אלה מייצגות את המסכים אשר מציגים את ממשק המשתמש