ورود

View Full Version : سوال: سوال در مورد شی گرایی



Ehsan rashydy
یک شنبه 01 خرداد 1390, 23:54 عصر
سلام یه سوال فنی دارم!
به قطعه کدهای زیر یه نگاه بندازین!



public interface I1{
public void methodA();
public void methodB();
}
///////////////////////////////////////
public class C2 implements I1{
private int x,y;
public void methodA(){
//do something
}
public void methodB(){
//do something
}
public void methodC(){
//do something
}
public C2(int x, int y){
this.x = x;
this.y = y;
}
public static void main(String[] args){
I1 obj1 = new C2(1,2);
C2 obj2 = new C2(1,2);
}
}



میشه یکی از اساتید لطف کنن بگن که چه فرقی بین آبجکت obj1 و obj2 وجود داره؟
احیانا obj1 مزیتهایی نسبت به obj2 داره؟
با تشکر

Ehsan rashydy
دوشنبه 02 خرداد 1390, 22:23 عصر
آقا کسی نبود سوال منو جواب بده!

ermia2008
سه شنبه 03 خرداد 1390, 07:43 صبح
سلام دوست عزیز
خوب بله obj1 نسبت به obj2 مزیت هایی داره. وقتی شما از اینترفیس ها استفاده میکنید براحتی میتونید نمونه سازیتون رو عوض کنید و یک کلاس دیگه بذارید بدون اینکه بخواید بقیه جاها رو عوض کنید
چون همه یک قانون رو پیاده سازی میکنند. مثلا کلاس List رو نگاه کنید شونصد تا پیاده سازی داره. فرضا اگه یکجا بجای ArrayList بخواید از LinkedList استفاده کنید فقط کافیه که یه تغییر داده بشه بدون اینکه
بخواید بقیه قسمت ها رو عوض کنید. حالا حالتی رو در نظر بگیرید که بجای اینترفیس از کلاس استفاده بشه. اونوقت ممکنه که هر کدوم متدهای مربوط به خودشون رو هم داشته باشند که تو یکی باشه و در
دیگری نباشه. بنابراین اگه بخواید پیاده سازی رو عوض کنید و از یه کلاس دیگه استفاده کنید باید تک تک جاهایی که از این آبجکت استفاده شده رو هم تغییر بدید.

javaphantom
سه شنبه 03 خرداد 1390, 08:34 صبح
آقا کسی نبود سوال منو جواب بده!

http://www.cs.uakron.edu/~collard/cs421/notes/CouplingCohesion.html

فرقش اینکه کتاب نمی خونی. تو هر کتابی از جاوا که بری بخونی در مورد abstraction و instantiate کلی توضیح داده. لینک بالا رو هم ببین یک داستانی جدید یاد بگیر.