ההבדל בין אובייקט פסיבי לאובייקט פעיל ב-UML

...

UML עוזר לפשט את הייצוג של ההיגיון הפנימי של תוכנית.

"שפת הדוגמנות המאוחדת", או UML, היא שפה שנועדה להראות כיצד תוכנה מאורגנת; מהנדסים יכולים להשתמש ב-UML כדי לתאר את זרימת המידע בתוכנית, ולאפשר להם להבין טוב יותר כיצד ניתן לפשט או לשנות אותו. בעת מודלים של זרימת מידע, UML מבחין בין "אובייקטים פעילים" שיכולים ליזום זרימה זו, לבין "אובייקטים פסיביים" שאינם יכולים.

חפצים וכיתות

כשמדובר בתכנות כביכול "מונחה אובייקט", מדעי המחשב מבדיל בין "אובייקט" ל"כיתה". כיתה היא א תיאור כללי של קבוצה של דברים - כגון משתנים או שיטות - בעוד ש"אובייקט" הוא "מופע" של אותה מחלקה, עם ייחודיות משלה נכסים. חשבו על שיעורים כעל תוכנית או תבנית; בעולם הפיזי, "כלי כתיבה" עשוי להיחשב כמחלקה, עם דוגמאות "עט" או "עפרון כתום" של "אובייקטים" מאותו סוג מחלקה מסוים.

סרטון היום

אובייקטים ב-UML

UML משמרת הבחנה דומה בין מחלקות ואובייקטים, והם מיוצגים באותו אופן; מחלקות UML מכילות תיאורים רחבים, ואובייקטי UML מכילים ערכים ספציפיים המייצגים מופעים של תיאורים אלה. מבחינה פורמלית, אם כן, "אובייקט פעיל" ב-UML הוא כל מופע של "מחלקה פעילה", ובדומה לכך "פסיבי אובייקט" הוא מופע של "מעמד פסיבי" - במובן תיאורטי, אתה יכול לראות במונחים אלה בעצם ניתן להחלפה.

אובייקטים פעילים

ב-UML, מחלקות פעילות, ולפיכך אובייקטים פעילים, קיימות בשרשור הפעולות שלהן ויש להן מרחב כתובות משלהן. אם ביצוע, או פעילות קוד, נחשב במונחים של זרימה, אובייקטים פעילים יכולים להתחיל או לשלוט בזרימה זו. אובייקטים פעילים, במילים אחרות, הם עוקבים ועושים משהו: לשנות משתנים, לשנות את התנהגות התוכנית וכן הלאה. ב-UML, מחלקות ואובייקטים אקטיביים מובחנים בכך שהם בעלי גבול עבה יותר מאובייקטים פסיביים.

אובייקטים פסיביים

לאובייקטים פסיביים ב-UML אין בדרך כלל את היכולת לשנות או להתחיל את זרימת הביצוע, מכיוון שהם חייבים לחכות לאובייקט אחר שיקרא להם. במקום זאת, אובייקטים פסיביים משמשים בדרך כלל לאחסון מידע, ובמקרים רבים מידע זה עשוי להיות משותף בין מספר אובייקטים אחרים. זה עשוי לאפשר גישה לאובייקטים פסיביים במקביל, לא ברצף. כדי לוודא שלנתונים הכלולים בפנים יש שלמות גבוהה, UML מאפשר לאובייקטים פסיביים להתעקש על גישה אליהם ברצף; אם שני חוטים מנסים לקרוא לאותו אובייקט פסיבי רציף, האובייקט הזה יכול לעכב את השרשור השני עד שהראשון יסיים איתו.