23-03-2005, 09:42
|
|
|
|
חבר מתאריך: 20.06.03
הודעות: 5,616
|
|
תכנות מוכוון עצמים - Object Oriented Programming
לאור שאלות רבות שצצות לאחרונה על מה זה תכנות OO, ומה זה אובייקט (ולמה בכלל צריך את זה),
הנה חלק ממבוא למדריך שהיה אמור להכתב בעבר עבור הפורום ומעולם לא הסתיים עקב מחסור בזמן.
(נכתב במקור עבור ++C, אבל מסביר את העקרונות)
תכנות מונחה עצמים – מבוא
מהוא תכנות מבני?
מערכות תכנה הינן מסובכות מטבען. אלמנטי הסיבוך:- סיבוך במרחב הבעיה.
- הקושי בתהליך הפיתוח.
- מספר גדול של שורות קוד – קושי בהבנה.
- דרישות משתנות במהלך הפיתוח.
כדי להתגבר על אלמנטי הסיבוך משתמשים ב- decomposition – "חלק ומשול".
מחלקים את המערכת לחלקים יותר ויותר קטנים. כל חלק ניתן לשליטה והבנה קלה יותר.
הגישה המסורתית – פירוק אלגוריתמי- הגישה לפירוק הנה לפי האלגוריתם.
- כל מודול במערכת מביע צעד עיקרי בתהליך הכולל.
- חלוקת המערכת לאלמנטים פונקציונלים.
- תת-התוכניות מהוות את אבני הבניה.
- שבירת הסיבוכיות על ידי פירוק בעיה גדולה לצעדים קטנים יותר.
פירוק מונחה עצמים – Object Oriented
מזהים אובייקטים של הבעיה, הנגזרים ישירות מאוצר המלים של הבעיה.- מגדירים את התכונות של האובייקטים.
- מגדירים את הפעולות (Methods) של האובייקטים.
"העולם" – קבוצת גופים אוטונומיים משתפי פעולה לביצוע התנהגות ברמת תיאור גבוהה
יותר. פתרון הבעיה הינו סדרת קריאות לפעולות של האובייקטים.
החלוקה מבוססת על אובייקטים ולא על אלגוריתם ונקראת לכן – Object Oriented Decomposition.- פירוק אלגוריתמי – מציין את סדר האירועים.
- פירוק OO – מדגיש את הישויות הפועלות.
יתרונות פירוק OO - שימוש חוזר (re-use) של גורמים משותפים.
- קל לשינויים ולהתפתחות.
- עוזר להתגבר על הסיבוכיות האינהרנטית של התוכנה בעזרת בחירה נבונה של הפרדת נושאים במרחב מצבים גדול.
אבסטרקציה (הפשטה)
הפרט יכול להבין, לעבד ולזכור כמות מוגבלת של אינפורמציה. מתגברים על בעיה זו באמצעות
הפרדת האירועים למימדים אחדים ושבירת רצף האינפורמציה לקבוצות.
אבסטרקציה הנה טכניקה המתמודדת עם הסיבוכיות על-ידי התעלמות מפרטים קטנים ומבט על מודל
מוכלל של אובייקט. התרכזות בפרט אחד בכל פעם – ולא בכל הפרטים ביחד.
גישת ה-OO: עצמים הינם אבסטרקציות של גופים בעולם האמיתי, המייצגים בתוכם פרטי
אינפורמציה רבים.
עצם Object
לעצם שלושה אפיונים:זהות – שם האובייקט
מצב – מורכב מהתכונות (ערכים סטטיים) של האובייקט והערכים העכשוויים (ערכים דינאמיים)
של התכונות.
התנהגות – דרכה ניתן לשנות את המצב.
עצם תוכנה:
המצב נשמר במשתנים
ההתנהגות ממומשת בפעולות (Methods)
עצם, הנו צרוף תוכנה של זהות, משתנים ופעולות המתייחסות אליהם.
ייצוג ויזואלי של אובייקט תוכנה:
האריזה של המשתנים בתוך הגוף המגן של הפעולות נקראת encapsulation. האנקפסולציה (כימוס)
משמשת להסתיר פרטים לא חשובים או לא רלוונטיים מאובייקטים אחרים, ולהגן על פרטים אחרים.
הסתרה:
אין צורך לדעת איך ממומש האובייקט, אלא רק אילו פעולות יש להפעיל. לכן, פרטי מימוש יכולים
להשתנות מבלי להשפיע על חלקים אחרים במערכת.
נגישות:
לאובייקט יש שליטה מלאה על הנגישות של אובייקטים אחרים למשתנים ולפעולות
שלו (public, private).
יתרון הכימוס (Encapsulation):- מדולריות – ניתן לכתוב ולתחזק בנפרד את קוד המקור לאובייקטים שונים.
- הסתרת מידע – הקשר לאובייקט הינו דרך הממשק הציבורי שלו. האובייקט מחזיק
אינפורמציה פרטית אשר ניתנת לשינוי מבלי להשפיע על האובייקטים התלויים בו. מחלקה (Class)
ב-OO, ניתן לאמר כי המופע (instance) של מחלקה (class) הינו אובייקט.
מחלקה מייצגת קבוצת אובייקטים שלהם משתני מצב משותפים והתנהגות משותפת. המחלקה
משמשת ליצירת האובייקטים.
כל האובייקטים של מחלקה הינם בעלי אותם כללי התנהגות, ולכולם אותם משתנים אם כי המצב
של המשתנים עשוי להיות בעל ערכים שונים.
כמו כן, כל אובייקט צורך מקום (זיכרון).
ישנן שתי דרכים לראות מחלקה:- ממשק (interface) – המראה החיצוני של המחלקה המדגיש את האבסטרקציה שלה ומסתיר
את הפרטים של המימוש. - מימוש (implementation) – הצד הפנימי של המחלקה, המבנה ופרטי המימוש של הפעולות.
עד כאן נגיעה מאוד קטנה במבוא.....
אם יש שאלות נוספות על תכנות מוכוון (מונחה) עצמים - נשמח להשיב,
נערך לאחרונה ע"י fat fish בתאריך 24-03-2005 בשעה 16:13.
|