הבדל מפתח – כריכה סטטית לעומת כריכה דינמית
שפות תכנות כגון Java ו-C תומכות בתכנות מונחה עצמים (OOP). הוא מאפשר בניית תוכנה באמצעות אובייקטים. ישנם אובייקטים רבים במערכת תוכנה או בתוכנית. לאובייקטים אלה יש תכונות ושיטות. תכונות מתארות את המאפיינים. שיטות מתארות את הפעולות שניתן לבצע על ידי האובייקט. נתונים מועברים דרך אובייקטים באמצעות שיטות. הערכים הנדרשים נשלחים באמצעות קריאות למתודה עם פרמטרים. יישום השיטה בפועל נמצא בהגדרת השיטה. יש קשר בין קריאה למתודה להגדרת שיטה.זה ידוע בתור מחייב. ישנם שני סוגים של כריכות. הם כריכה סטטית וכריכה דינמית. ההבדל העיקרי בין כריכה סטטית לכריכה דינמית הוא שבכריכה סטטית, הכריכה נפתרת בזמן ההידור ואילו כריכה דינמית נפתרת בזמן הריצה, שהוא זמן הביצוע בפועל. מאמר זה דן בהבדל בין שני מנגנוני הכריכה הללו.
מהי כריכה סטטית?
הכריכה היא הקישור בין קריאת שיטה להגדרות שיטה.
איור 01: כריכה סטטית וכריכה דינמית
עיין בתוכנית שלהלן שנכתבה ב-Java.
מחלקה ציבורית A{
public void method1(){
System.out.println(“Method1”);
}
public void method2(){
System.out.println(“Method2”);
}
public static void main(String args){
A obj=new A();
obj.method1();
obj.method2();
}
}
לפי התוכנית לעיל, נוצר אובייקט מסוג A. ואז מתודה1 ומתודה2 נקראות. זיהוי איזו שיטה צריכה לקרוא לביצוע מכונה כריכה. משפט obj.method1() יקרא ל-method1() ו-obj.method2() יקרא ל-method2(). הקישור הזה מחייב.
בכריכה סטטית, הכריכה נפתרת בזמן ההידור על ידי המהדר. זה ידוע גם בשם כריכה מוקדמת. הכריכה מתרחשת לפני שתוכנית פועלת בפועל. כריכה סטטית מתרחשת בעומס יתר של השיטה. עיין בתוכנית שלהלן שנכתבה ב-Java.
חישוב ריק ציבורי{
public void sum(int x, int y){
System.out.println(“Sum is “, x+y);
}
סכום ריק ציבורי(כפול x, כפול y){
System.out.println(“Sum is “, x+y);
}
public static void main(String args){
Calculation cal=new Calculation();
cal.sum(2, 3);
cal.sum(5.1, 6.4);
}
}
לפי התוכנית לעיל, בעת העברת שני המספרים השלמים, תופעל השיטה עם שני מספרים שלמים. בעת העברת שני ערכים כפולים, תופעל השיטה המתאימה לשני ערכים כפולים. תהליך כריכה זה מתרחש בזמן הקומפילציה. המהדר יודע שהוא צריך לקרוא לשיטת sum עם שני ערכים שלמים עבור cal.sum(2, 3). עבור cal(5.1, 6.4), הוא יקרא לשיטת הסכום עם שני ערכים כפולים. כל המידע הנדרש ידוע לפני זמן הריצה, כך שהוא מגביר את יעילות התוכנית ומהירות הביצוע.
מהי כריכה דינמית?
בקישור דינמי המהדר לא פותר את הקישור בזמן ההידור. הכריכה מתרחשת בזמן הריצה. זה ידוע גם בשם כריכה מאוחרת. כריכה דינמית מתרחשת בדריסת שיטה. עיין בתוכנית שנכתבה ב-Java.
public class Shape(){
public void draw(){
System.out.println(“Draw shape”);
}
}
public class Circle() מרחיב את הצורה{
public void draw(){
System.out.println(“Draw circle”);
}
}
public class Triangle() מרחיב את הצורה{
public void draw(){
System.out.println(“Draw triangle”);
}
}
מבחן בכיתה ציבורית{
public static void main(מחרוזת args){
Shape s;
s=new Shape();
s.draw();
s=new Circle();
s.draw();
s=משולש חדש();
s.draw();
}
}
לפי התוכנית לעיל, לכיתה Shape יש שיטה draw(). מעגל כיתה ומשולש כיתה מרחיב את מחלקת צורה. Class Circle ומשולש Class יכולים לרשת את התכונות והשיטות של Class Shape. לכן, כיתת צורה היא כיתת העל או כיתת האב. מעגל כיתה ומשולש כיתה הם תת מחלקות או מחלקות נגזרות. למחלקות הללו יש גם שיטת draw() עם יישומים משלהן. לכן, שיטת draw() במחלקת העל נדחית.
בשיטה הראשית, אובייקטים שונים מופעלים. יש משתנה התייחסות מסוג Shape, שהוא s. לאחר מכן, s מפעיל את השיטה בהתאם למחלקה הספציפית. בזמן הקומפילציה, המהדר יפנה רק לשיטת ה- super class draw.כאשר הביצוע בפועל מתחיל, זה יוביל לביצוע שיטות ציור שונות. ראשית, s יצביע על האובייקט מסוג Shape. לכן, הוא יפעיל את שיטת הציור במחלקה Shape. אז ה-s יצביע על האובייקט מהסוג Circle, והוא יפעיל את שיטת הציור של מחלקה Circle. לבסוף, s יתייחס לאובייקט מסוג Triangle, והוא יפעיל את שיטת הציור במחלקה Triangle. למרות שמשתנה ההתייחסות הוא מסוג Shape, הקשירה תלויה במקרה בסוג האובייקט. מושג זה ידוע בשם Dynamic Binding. המידע מסופק בזמן ריצה, כך שמהירות הביצוע איטית יותר בהשוואה לכריכה סטטית.
מהו הדמיון בין כריכה סטטית לכריכה דינמית?
שניהם קשורים לפולימורפיזם המאפשר לאובייקט להתנהג במספר דרכים
מה ההבדל בין כריכה סטטית לכריכה דינמית?
כריכה סטטית לעומת כריכה דינמית |
|
איגד סטטי הוא סוג הכריכה שאוסף את כל המידע הנדרש כדי לקרוא לפונקציה במהלך זמן ההידור. | Dynamic Binding הוא סוג הכריכה שאוסף את כל המידע הנדרש כדי לקרוא לפונקציה במהלך זמן הריצה. |
זמן הכריכה | |
כריכה סטטית מתרחשת בזמן ההידור. | כריכה דינמית מתרחשת בזמן הריצה. |
פונקציונליות | |
Static Binding משתמש במידע סוג לכריכה. | Dynamic Binding משתמש באובייקטים כדי לפתור לאגד. |
אובייקט בפועל | |
כריכה סטטית אינה משתמשת באובייקט ממשי לכריכה. | כריכה דינמית, השתמש באובייקט בפועל לכריכה. |
מילים נרדפות | |
כריכה סטטית ידועה גם ככריכה מוקדמת. | כריכה דינמית ידועה גם ככריכה מאוחרת. |
ביצוע | |
מהירות הביצוע מהירה בכריכה סטטית. | מהירות הביצוע נמוכה בכריכה דינמית. |
דוגמה | |
כריכה סטטית משמשת בעומס יתר של שיטה. | כריכה דינמית משמשת לעקיפה של שיטה. |
סיכום – כריכה סטטית לעומת כריכה דינמית
יש קשר בין קריאת שיטה להגדרת שיטה.זה ידוע בתור מחייב. ישנם שני סוגים של כריכות הנקראות כריכה סטטית וכריכה דינמית. ההבדל בין כריכה סטטית לכריכה דינמית הוא שבכריכה סטטית, הכריכה נפתרת בזמן הקומפילציה ואילו כריכה דינמית נפתרת בזמן הריצה, שהוא זמן הביצוע בפועל. מכיוון שהמידע הנדרש מסופק לפני זמן הריצה, הכריכה הסטטית היא מהירה בביצוע בהשוואה לכריכה דינמית.
הורד את ה-PDF של כריכה סטטית לעומת כריכה דינמית
ניתן להוריד את גרסת ה-PDF של מאמר זה ולהשתמש בה למטרות לא מקוונות לפי הערת ציטוט. אנא הורד את גרסת ה-PDF כאן: ההבדל בין כריכה סטטית לכריכה דינמית