virtual and pure virtual

timeatime

New member
virtual and pure virtual

שלום לכולם למישהו יש קישור לכתבות בעברית שמסבירות פולימורפיזם? ומה ההבדל בין פונקציה ויראוטלית לבין וירטואלית טהורה הבנתי שאת הטהורה נותנים לה ערך של 0 ולא ממשים אותה ב אב חוץ מזה יש הבדל?
 
טוב...

פונקציה וירטואלית טהורה - בעצם מסמנת שמהמחלקה שבה היא נמצאת אי אפשר ליצור אובייקטים. לדוגמה : מחלקת "צורה" , זה יותר מדי מופשט, איך תממש אותה? אבל כדי לממש פולימורפיזם (תיכף נגיע לזה) - תוכל להשתמש בה. ריבוע הוא צורה. גם עיגול הוא צורה. לכן גם ריבוע וגם עיגול יכולים לירוש מ"צורה". מחלקת אבסטרקטית (ז"א שמוגדרת בה פונקציה=0) מיועדת בעיקר ליצור מחלקת גג שתאחד תחתיה כמה מחלקות. פונקציה וירטואלית רגילה היא פונקציה שעבור מחלקה מסויימת היא ממומשת בצורה אחת, אבל עבור מחלקה שיורשת ממנה - היא תמומש בצורה אחרת. סוף סוף... מה זה פולימורפיזם (רב צורתיות). פולימורפיזם היא התכונה החשובה ביותר של OOP. בוא נגיד שיש לך עיגולים ויש לך ריבועים. כדי להתייחס אליהם באופם לא OOP-י תצטרך שני מערכים - אחד לעיגולים ושני לריבועים. די מגעיל ומסורבל (מה אם יש לך 300 צורות? תשתמש ב 300 מערכים?) אבל אם תאחד אותם תחת "צורה" - יהיה לך מערך אחד של "צורות" שיכיל גם את העיגולים וגם את הריבועים. הרי שניהם "צורות". כעת עבור כל צורה תופעל פונקציה וירטואלית (בנהחה שהגדרת אחת כזו) המתאימה לה. למה זה טוב? בוא נניח שתרצה בשלב מאוחר יותר להוסיף גם משולשים. כל מה שתצטרך לעשות, זה להגדיר את המחלקה הזו ולגרום לה לירוש מ"צורה". וזהו. תוכל להוסיף למערך שלך גם משולשים בלי להסתבך יותר מדי ובלי לשנות יותר מדי דברים. מקווה שהבנת
 

gmorphus

New member
אין מצב...

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