הבדל בין וירטואלי ומופשט

הבדל בין וירטואלי ומופשט
הבדל בין וירטואלי ומופשט

וִידֵאוֹ: הבדל בין וירטואלי ומופשט

וִידֵאוֹ: הבדל בין וירטואלי ומופשט
וִידֵאוֹ: The main DIFFERENCES between IaaS, SaaS and PaaS explained... 2024, נוֹבֶמבֶּר
Anonim

וירטואלי לעומת מופשט

Virtual and Abstract הן שתי מילות מפתח המשמשות ברוב שפות התכנות מונחה עצמים (OO) כמו Java ו-C. למרות שיש הבדלים קלים במשמעות של זה בשפות שונות, הן מילות מפתח וירטואליות והן מילות מפתח מופשטות מספקות תחושה של יישום חלקי לישויות שהיא מתחברת אליהן.

Abstract

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

Virtual

שיטות/פונקציות וירטואליות מספקות את היכולת לעקוף באופן אופציונלי את ההתנהגות שלה על ידי מחלקה יורשת (באמצעות פונקציה עם אותה חתימה). הרעיון של פונקציה וירטואלית חשוב בתרחיש הבא. נניח שמחלקה נגזרת ממחלקת ילד, אז בכל פעם שמשתמשים באובייקט של המחלקה הנגזרת, זה עשוי להתייחס לאובייקט של מחלקת הבסיס או המחלקה הנגזרת. עם זאת, התנהגות קריאת מתודה יכולה להיות מעורפלת אם שיטות מחלקות הבסיס נדרוסות. לכן, על מנת לפתור את העמימות הזו, נעשה שימוש במילת מפתח וירטואלית. אם השיטה מסומנת וירטואלית, הפונקציה של המחלקה הנגזרת נקראת (אם קיימת) או לפונקציה של מחלקת הבסיס נקראת. לדוגמה, ב-C++, מילת מפתח וירטואלית משמשת בדיוק למטרה זו. ב-C, מילת המפתח הווירטואלית משמשת באופן דומה, אך בנוסף, יש להשתמש במילת המפתח כדי לשנות את כל השיטות שנעקפו.אבל ב-Java, אין מילת מפתח וירטואלית מפורשת. כל השיטות הלא סטטיות נחשבות וירטואליות. פונקציות וירטואליות ללא גוף נקראות Pure Virtual functions. ב-Java ו-C, שיטות מופשטות הן למעשה Pure Virtual.

הבדל בין וירטואלי ומופשט

למרות שמופשט וירטואלי הן שתי מילות מפתח/מושגים המספקות משמעות של יישום לא שלם לישויות המשויכות לה, יש להן הבדלים. לשיטות מופשטות (שחייבות להיות מוגדרות בתוך מחלקות מופשטות) אין מימוש כלל, בעוד שלשיטות וירטואליות עשוי להיות מימוש. אם מתודות מופשטות מורחבות על ידי מחלקה קונקרטית, יש ליישם את כל השיטות המופשטות שעברו בירושה, בעוד ששיטות וירטואליות שעברו בירושה עשויות להיות או לא לעקוף.

מוּמלָץ: