خرداد ۸, ۱۳۹۸ Mostafa بدون دیدگاه

اگر دنبال برنامه نویس برای ساخت افزونه ،قالب،سایت،برنامه ویندوز،اپلیکیشین اندروید،ربات تلگرام و.... هستید ،سفارش برنامه نویسی را مطالعه نمایید.

توجه : درخواست افزونه ،قالب، اسکریپت و نرم افزار و ... و سوالات و مشکلات خود را در انجمن ارسال نمایید

عبارت object cloning در برنامه نویسی به معنای ساخت یک نمونه ی عینی از روی آبجکت مورد نظر می باشد. در جاوا برای دستیابی به این هدف باید متد clone از کلاس پایه ی Object فراخوانی شود.

کلاسی که قرار است نمونه ی عینی از آبجکت آن ایجاد شود، بایستی اینترفیس java.lang.cloneable را پیاده سازی کند. اگر اینترفیس Cloneable را پیاده سازی نکنیم، فراخوانی متد clone سبب صدور خطای CloneNotSupportedException می شود.

متد clone در کلاس پایه ی Object که پدر تمامی کلاس های جاوا می باشد، تعریف شده. دستور استفاده از متد مزبور به شرح زیر می باشد :

protected Object clone() throws CloneNotSupportedException

 

دلیل استفاده از متد clone

متد clone فرایند ساخت نمونه ی عینی از روی یک شی را آسان ساخته و میزان قابل توجهی از عملیات پردازشی غیرضروری برای این منظور را از میان برمی دارد. زمانی که برای ساخت آبجکت جدید در حافظه از کلیدواژه ی new استفاده می کنید، در واقع عملیات پردازشی غیرضروری زیادی انجام می شود که منابع و زمان مورد توجهی را به خود تخصیص می دهد. به همین دلیل از object cloning استفاده می کنیم.

مزیت اصلی استفاده از قابلیت Object cloning به شرح زیر می باشد :

عملیات پردازشی بسیار کمتری صورت می پذیرد.

در زیر یک مثال کاربردی از فراخوانی متد clone (ساخت نمونه ی عینی از آبجکت مورد نظر) را مشاهده می کنید :

class Student18 implements Cloneable{  
int rollno;  
String name;  
Student18(int rollno,String name){  
this.rollno=rollno;  
this.name=name;  
}  
public Object clone()throws CloneNotSupportedException{  
return super.clone();  
}  
public static void main(String args[]){  
try{  
Student18 s1=new Student18(101,"amit");  
Student18 s2=(Student18)s1.clone();  
System.out.println(s1.rollno+" "+s1.name);  
System.out.println(s2.rollno+" "+s2.name);  
}catch(CloneNotSupportedException c){}  
}  
}  

خروجی :
101 amit
101 amit

 

همان طور که در مثال بالا مشاهده می کنید، هر دو متغیر اشاره گر (شی های ساخته شده از روی کلاس Studnet18) مقداری یکسان را دارند. متد clone مقادیر یک شی را در شی دیگر جایگذاری می کند و برای نیل به این هدف لازم نیست کد کپی کردن یک شی در شی دیگر را به صورت صریح بنویسیم.

حال اگر به وسیله ی کلیدواژه ی new، شی دیگری ایجاد کرده و مقادیر آن شی را در این شی قرار دهید، میزان قابل توجهی عملیات پردازشی غیرضروی انجام می شود. ما با استفاده از متد clone بسیاری از پردازش های غیرضروی را فاکتور گرفته و در زمان و منابع مورد نیاز برای کپی کردن شی صرفه جویی کردیم.

 


برچسب ها
نظرات

توجه : لطفاً فقط نظرات خود را از این طریق ارسال نمایید و سوالات و مشکلات خود را در انجمن سایت مطرح نمایید.