« تفاوت هاي جاوا و ++C | ص?حه اصلی | Inheritance »
PIE
May 27, 2007 11:28 AM
PIE معر? سه وي?ژگي اصلي Object Oriented است كه جاوا بر آن استوار است: Polymorphism، Inheritance و Encapsulation
Polymorphism يعني است?اده از يك متغير براي ارجاع به Object هايي با type هاي مت?اوت. ?ايده اصلي Polymorphism امكان ا?زودن class هاي جديد است، بدون اينكه نياز به اصلاح كدهاي قبلي باشد. مثال:
Polymorphism يعني است?اده از يك متغير براي ارجاع به Object هايي با type هاي مت?اوت. ?ايده اصلي Polymorphism امكان ا?زودن class هاي جديد است، بدون اينكه نياز به اصلاح كدهاي قبلي باشد. مثال:
List listShapes = new ArrayList(20);
Shape s = new Circle(); // دايره
listShapes.add(s);
s = new Square(); // مربع
listShapes.add(s);
s = new HalfCircle(); //نيم دايره
listShapes.add(s);
getTotArea(listShapes); // اين متد مجموع مساحت دايره،مربع و نيم دايره را برميگرداند
public double getTotArea(List listShapes){
Iterator it = listShapes.iterator();
double totalArea = 0.0;
while (it.hasNext()){
Shape s = (Shape) it.next();
totalArea += s.area(); // Polymorphic method call
}
Return totalArea;
}
Shape s = new Circle(); // دايره
listShapes.add(s);
s = new Square(); // مربع
listShapes.add(s);
s = new HalfCircle(); //نيم دايره
listShapes.add(s);
getTotArea(listShapes); // اين متد مجموع مساحت دايره،مربع و نيم دايره را برميگرداند
public double getTotArea(List listShapes){
Iterator it = listShapes.iterator();
double totalArea = 0.0;
while (it.hasNext()){
Shape s = (Shape) it.next();
totalArea += s.area(); // Polymorphic method call
}
Return totalArea;
}
در صورتي كه شكل هندسي ديگري، مثلا مثلث به عنوان subclass اي از Shape تعري? شود، نيازي به تغيير متد getTotArea نيست. بلكه تنها بايد تابع area بطور مناسب در class جديد پياده شود.
دو جزء ديگر PIE يعني Inheritance و Encapsulation در مطالب بعدي ارائه خواهند شد.
دو جزء ديگر PIE يعني Inheritance و Encapsulation در مطالب بعدي ارائه خواهند شد.
نظرخواهی
ارسال شده توسط: ali در ساعت May 27, 2007 01:07 PM
دقيقا همين طور است. آنچه ذكر كرده ايد مزاياي اصلي PIE است كه من از توضيح آن گذشته ام. قطعا بسط اين موضوع از ديدگاه مهندسي نرم ا?زار م?يد خواهد بود.
ارسال شده توسط: mahyar در ساعت May 28, 2007 01:22 PM