מושגים מתקדמים
טכנולוגית העצמים
בנויה על יסודות הנדסיים מבוססים ששילובם נקרא מודל ה-
Object.
אף אחד מהעקרונות האלה איננו חדש אך החשיבות של מודל העצמים היא שילובם באופן של
שיתוף פעולה (Synergistic).
להלן פירוט
העקרונות:
הפשטה
Abstraction))
המאפיינים
העיקריים של עצם (Object)
המבדילים בינו לבין כל הסוגים האחרים של עצמים וע"י כך
מגדירים בצורה קולעת את הגבולות המושגיים (Conceptual) ביחס לנקודת המבט
של המתבונן. זהו התהליך של התמקדות במאפיינים העיקריים של עצם.
לדוגמא:
-
מפת עיר מתמקדת ברחובות ובשכונות העיר ומתעלמת מסביבת העיר (המחוז, המדינה)
מחד גיסא ומקווי החשמל, המים והביוב בעיר מאידך גיסא.
-
תצ"א של האוניברסיטה מתאר את מבנה האוניברסיטה, אך מתעלם מפירוט החדרים
שבכל בניין ובכל קומה.
תהליך חלוקת (Compartmentalizing)
הרכיבים של הפשטה (Abstraction)
לאלו המהווים את המבנה (Structure)
ואת ההתנהגות (Behaviour)
שלה. ההסתרה (Encapsulation),
מסייעת להפריד בין המנשק
החוזי (Contractual
Interface) של הפשטה, לבין היישום שלה.
לדוגמא:
-
מבנה נתונים
מסוג מחסנית. הפעולות לגביו הם
Push, Pop, Top
בעוד המבנה שלה יכול להיות ממומש בשיטות
שונות (רשימה ליניארית, רשימה מקושרת וכדומה).
תכונת מערכת
להיות מופרדת (Decomposed)
לקבוצה של מודולים מלוכדים (Cohesive) המקושרים באופן רופף (Loosely
Coupled).
מדרג הוא דרוג או
סידור (Ranking
or Ordering) של הפשטות.
שתי ההיררכיות
החשובות ביותר במערכת מורכבת הם:
-
מבנה המחלקה (Class
Structure)
-
היררכית
“Is-A”.
-
מבנה העצם (Object
Structured)
היררכית
“Part-Of”.
הורשה (Inheritance)
הוא יחס בין מחלקות שבו מחלקה אחת יורשת את המבנה או ההתנהגות המוגדרים במחלקה
אחרת (Single
Inheritance)
או במספר מחלקות אחרות (Multiple Inheritance).
הורשה מגדירה
היררכיה
“Is-A”
בין מחלקות בה
Subclass
יורש מאחר או יותר
Superclasses
כלליים (Generalized)
יותר.
Subclass
מיחד (specializes) את ה
Superclass
שלו ע"י הרחבה (Augmenting) או הגדרה מחדש (Redefining)
של המבנה וההתנהגות הקיימים.
לדוגמא:
האכיפה (enforcement)
של מחלקה, של עצם המונע מעצמים מסוגים ((Types
שונים להתחלף או לכל היותר מאשר להם להתחלף באופן מאוד מוגבל.
Typing
מאפשר להביע את ההפשטות, באופן ששפת התכנות בה מממשים אותה, אוכפת את החלטות התכן.
שפת תכנות יכולה
להיות
Strongly Typed
כגון
Eiffel
Weakly Typed
-
כגון
C++ או
Untyped
כגון
Smalltalk ועדיין להיחשב כ- Object Oriented.
ברוב המקרים
המונחים
Class ו
-
Type
הם חליפיים.
Static Binding
או Early Binding פירושו שה
Type
של כל המשתנים והביטויים נקבעים בזמן הקומפילציה.
Dynamic Binding
או Late Binding פירושו שה
Types
של כל המשתנים והביטויים נקבעים בזמן ההרצה (Runtime).
שפה יכולה להיות
Strongly
and Static Typed (כגון
ADA)
או
Strongly Typed עם
Dynamic Binding
(כגון Object Pascal). או כל הצירופים האחרים.
התכונה המבחינה
בין עצם שהוא
Active
לבין עצם שאיננו
Active.
במערכת מבוססת על
OOD
ניתן להתייחס לעולם כמורכב מאוסף עצמים קואופרטיביים,
שחלקם
Active
ולכן משמשים כמרכזי
Activity
בלתי תלויים.
ברגע שקיימת
מקביליות במערכת, חייבים לקחת בחשבון (consider),
כיצד עצמים שהם
Active
מסנכרנים (Synchronize)
את הפעילויות (Activities)
שלהם זה עם זה וכן עם עצמים שהם לגמרי סדרתיים (Purely
Sequential).
מימוש של
מקביליות יכול להיות תכונה של שפת התכנות או ע"י שימוש בתוכניות ספריה מיוחדות לכך
(למשך הספרייה של
AT&T
עבור C++ מכילה מחלקות
Sched, Timer,
Task :
ואחרים) או ע"י שימוש בפסיקות (Interrupts)
הנותן אשליה של בו-זמניות.
התכונה של עצם
באמצעותה קיומו (Its
Existence)
הוא מעבר לזמן ו/או למקום (Transcends
Time and/or Space).
דהיינו, הוא
ממשיך להתקיים גם לאחר שהיוצר שלו הפסיק להתקיים ו/או מיקום העצם עובר
ממרחב הכתובות בו
הוא נוצר.
למשל עצם
Object
Oriented Database
מתקיים גם כאשר התוכניות שהפעילו אותו הפסיקו להתקיים, או במערכת מבוזרת, ייתכן ו-
עצם עובר ממעבד אחד למעבד אחר.
Polymorphism
Message
Association
Reuse
(מחזור)
מנשק מחלקה
(Class
Interface)
בנוסף על
העקרונות הבסיסיים הנ"ל, המאפיינים את ה-
Object Model
ע"פ Booch,
קיימים גם המושגים הבאים:
Polymorphism
(נקרא גםParametric Polymorphism )
-
היכולת לקבל
צורות שונות. למשל
H2O
יכול להיות מוצק, נוזל או גז. נהג המתקרב לצומת
-
יכול להגיב
לאור אדום, צהוב או ירוק. רוטינת הדפסה יכולה להדפיס טקסט או גרפיקה.
-
מושג ב
Type
Theory
לפיו שם יכול לציין עצמים
של מספר מחלקות שונות שיש להם
Superclassמשותף. לפיכך
כל עצם בעל אותו שם מסוגל להגיב לקבוצה משותפת של פעולות בדרכים שונות.
-
קיים גם
Polymorphism
Multiple, דהיינו
Polymorphism
ביותר מפרמטר אחד.
הפעולה (Operation)
שעצם אחד מבצע על עצם אחר. המושגים
Message,
Method
ו- Operation הם חליפיים.
איור- מסרים
יחס המציין קשר
משמעות (Semantic)
בין שני מחלקות. למשל ורדים ונרות הם מחלקות בלתי תלויות אך שניהם יכולים לשמש
(יחד) לקישוט שולחן לארוחה חגיגית.
ל-
reuse
שלוש צורות:
1.
Sharing
(שיתוף): למשל שימוש בטלפון ע"י אנשים שונים או רוטינה הבודקת חוקיות של מספר זיהוי (ID).
2.
Copying or
Cloning
(העתקה): למשל, ייצור אלפי מכוניות מאותו סוג עפ"י אבטיפוס (Prototype)
או העתקת קטע קוד לתוכניות שונות.
3.
Adjusting
(התאמה, הסגלה): למשל, ייצור מכוניות עפ"י אבטיפוס והוספת פריטים שונים (A/C, CD, Spoiler)
לכל מכונית, שהם למעשה רכיבים סטנדרטים
Reusable
הניתנים להרכבה
בקומבינציות
שונות או שימוש בשגרה מתוך ספריה והתאמתה למטרה מסוימת.
המנשק ((interface
של מחלקה נותן את המבט החיצוני ולפיכך מדגיש את ההפשטה תוך הסתרת המבנה וההתנהגות
שלו. המנשק מתחלק לשלושה חלקים:
-
-Public
נגיש לכל ה-
clients שלו.
-
Protected-
נגיש רק למחלקה עצמה,
subclasses שלה ומחלקות החברים (friends). (friend
של מחלקה היא מחלקה שמותר לה לגשת לחלק ה-
private
שלה ולכן כמובן גם לחלק ה-
protected
שלה).
-
-Private
נגיש רק למחלקה עצמה ולמחלקות החברים.
לסעיף הבא- יחסים סין עצמים...