تفاوت کلیدی - اتصال ایستا در مقابل اتصال پویا
زبان های برنامه نویسی مانند جاوا و سی شارپ از برنامه نویسی شی گرا (OOP) پشتیبانی می کنند. امکان ساخت نرم افزار با استفاده از اشیاء را فراهم می کند. در یک سیستم نرم افزاری یا یک برنامه اشیاء زیادی وجود دارد. این اشیا دارای ویژگی ها و روش هایی هستند. ویژگی ها ویژگی ها را توصیف می کنند. متدها اقداماتی را که می تواند توسط شیء انجام شود را توصیف می کند. داده ها با استفاده از روش ها از طریق اشیا منتقل می شوند. مقادیر مورد نیاز از طریق فراخوانی متد با پارامترها ارسال می شود. پیاده سازی روش واقعی در تعریف روش است. بین فراخوانی متد و تعریف متد پیوندی وجود دارد.به عنوان الزام آور شناخته می شود. دو نوع اتصال وجود دارد. آنها اتصال ایستا و اتصال پویا هستند. تفاوت اصلی بین اتصال استاتیک و اتصال پویا در این است که در اتصال استاتیک، اتصال در زمان کامپایل حل می شود در حالی که اتصال پویا در زمان اجرا، که زمان واقعی اجرا است، حل می شود. این مقاله تفاوت بین این دو مکانیسم اتصال را مورد بحث قرار میدهد.
Static Binding چیست؟
Binding پیوند بین فراخوانی متد و تعاریف متد است.
شکل 01: اتصال استاتیک و اتصال پویا
به برنامه زیر که در جاوا نوشته شده است مراجعه کنید.
کلاس عمومی A{
metod public void1(){
System.out.println("Method1");
}
public void method2(){
System.out.println("Method2");
}
public static void main (string args){
A obj=جدید A();
obj.method1();
obj.method2();
}
}
طبق برنامه فوق، یک شی از نوع A ایجاد می شود. سپس متد 1 و متد 2 فراخوانی می شوند. تشخیص اینکه کدام متد باید برای اجرا فراخوانی کند به عنوان binding شناخته می شود. دستور obj.method1() متد1() و obj.method2() متد2 را فراخوانی می کند. این پیوند الزام آور است.
در binding ایستا، binding در زمان کامپایل توسط کامپایلر حل می شود. همچنین به عنوان اتصال اولیه شناخته می شود. اتصال قبل از اجرای واقعی برنامه اتفاق می افتد. اتصال استاتیک در اضافه بار روش اتفاق می افتد. به برنامه زیر که در جاوا نوشته شده است مراجعه کنید.
محاسبه خلأ عمومی{
جمع خلأ عمومی (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)، روش جمع را با دو مقدار دوگانه فراخوانی می کند. تمام اطلاعات مورد نیاز قبل از زمان اجرا مشخص است، بنابراین کارایی برنامه و سرعت اجرا را افزایش می دهد.
Dynamic Binding چیست؟
در Dynamic Binding کامپایلر اتصال را در زمان کامپایل حل نمی کند. اتصال در زمان اجرا اتفاق می افتد. به آن صحافی دیررس نیز می گویند. Dynamic Binding در روش overriding رخ می دهد. به برنامه نوشته شده در جاوا مراجعه کنید.
کلاس عمومی Shape(){
public void draw(){
System.out.println("Draw shape");
}
}
public class Circle() Shape را گسترش می دهد{
public void draw(){
System.out.println("Draw circle");
}
}
کلاس عمومی Triangle() شکل را گسترش می دهد{
public void draw(){
System.out.println("مثلث ترسیم");
}
}
تست کلاس عمومی{
public static void main(string args){
Shape s;
s=شکل جدید();
s.draw();
s=new Circle();
s.draw();
s=New Triangle();
s.draw();
}
}
طبق برنامه بالا، کلاس Shape دارای متد draw() است. کلاس Circle و کلاس Triangle کلاس Shape را گسترش می دهند. کلاس Circle و کلاس Triangle می توانند ویژگی ها و متدهای کلاس Shape را به ارث ببرند. بنابراین، کلاس Shape، کلاس فوق العاده یا کلاس والد است. Class Circle و Class Triangle زیر کلاس ها یا کلاس های مشتق شده هستند. این کلاس ها همچنین دارای متد draw() با پیاده سازی های خاص خود هستند. بنابراین، متد draw() در کلاس super لغو می شود.
در روش اصلی، اشیاء مختلف فراخوانی می شوند. یک متغیر مرجع از نوع Shape وجود دارد که s است. سپس s متد را با توجه به کلاس خاص فراخوانی می کند. در زمان کامپایل، کامپایلر فقط روش ترسیم کلاس فوق العاده را ارجاع می دهد.هنگامی که اجرای واقعی شروع می شود، منجر به اجرای روش های مختلف قرعه کشی می شود. ابتدا، s به شیء نوع Shape اشاره می کند. بنابراین، متد draw را در کلاس Shape فراخوانی می کند. سپس s به شیء نوع Circle اشاره می کند و متد ترسیم کلاس Circle را فراخوانی می کند. در نهایت، s به شی از نوع Triangle اشاره می کند و متد draw را در کلاس Triangle فراخوانی می کند. حتی اگر متغیر مرجع از نوع Shape است، اتصال به نوع شی بستگی دارد. این مفهوم به عنوان Dynamic Binding شناخته می شود. اطلاعات در زمان اجرا ارائه می شود، بنابراین سرعت اجرا در مقایسه با اتصال ایستا کمتر است.
شباهت بین اتصال استاتیک و اتصال دینامیک چیست؟
هر دو اینها به یک چندشکلی مرتبط هستند که به یک جسم اجازه می دهد به روش های مختلف رفتار کند
تفاوت بین اتصال استاتیک و اتصال دینامیک چیست؟
Static Binding در مقابل Dynamic Binding |
|
Static Binding نوعی از اتصال است که تمام اطلاعات مورد نیاز برای فراخوانی یک تابع را در طول زمان کامپایل جمعآوری میکند. | Dynamic Binding نوعی از اتصال است که تمام اطلاعات مورد نیاز برای فراخوانی یک تابع را در طول زمان اجرا جمعآوری میکند. |
زمان صحافی | |
Static Binding در زمان کامپایل رخ می دهد. | پیوند پویا در زمان اجرا رخ می دهد. |
کارکرد | |
Static Binding از اطلاعات نوع برای صحافی استفاده می کند. | Dynamic Binding از اشیاء برای حل کردن برای اتصال استفاده می کند. |
شی واقعی | |
پیوند ایستا از یک شی واقعی برای اتصال استفاده نمی کند. | Dynamic binding، از شی واقعی برای اتصال استفاده کنید. |
مترادف | |
صحافی استاتیک به عنوان اتصال اولیه نیز شناخته می شود. | صحافی پویا همچنین به عنوان اتصال دیرهنگام شناخته می شود. |
اجرا | |
سرعت اجرا در صحافی استاتیک سریع است. | سرعت اجرا در اتصال پویا کم است. |
مثال | |
پیوند استاتیک در بارگذاری بیش از حد روش استفاده می شود. | Dynamic binding در overriding روش استفاده می شود. |
خلاصه - اتصال ایستا در مقابل اتصال پویا
بین فراخوانی متد و تعریف متد پیوندی وجود دارد.به عنوان الزام آور شناخته می شود. دو نوع اتصال وجود دارد به نام های اتصال ایستا و اتصال پویا. تفاوت بین اتصال استاتیک و اتصال دینامیک در این است که در اتصال استاتیک، اتصال در زمان کامپایل حل می شود در حالی که اتصال پویا در زمان اجرا، که زمان واقعی اجرا است، حل می شود. از آنجایی که اطلاعات مورد نیاز قبل از زمان اجرا ارائه می شود، اتصال استاتیک در مقایسه با اتصال پویا سریع اجرا می شود.
دانلود PDF مربوط به Static Binding vs Dynamic Binding
می توانید نسخه PDF این مقاله را دانلود کنید و طبق یادداشت استنادی از آن برای اهداف آفلاین استفاده کنید. لطفاً نسخه PDF را از اینجا دانلود کنید: تفاوت بین صحافی استاتیک و صحافی پویا