هڪ خلاصو طريقو ڇا آهي؟
هڪ خلاصو طريقو هڪ طريقو آهي جنهن تي عمل درآمد ناهي. اھو آھي، اھو صرف ھڪڙو اعلان آھي، تنھنڪري توھان ڄاڻو ٿا نالو، واپسي جو قسم، ۽ متغير اھو قبول ڪندو. هتي هڪ بنيادي خلاصو طريقو جو هڪ مثال آهي:
public abstract int example(int a1, int a2);
جڏهن توهان هن طريقي کي ڏسندا آهيو، توهان ٻڌائي سگهو ٿا ته اهو هڪ عدد انٽيجر ڏئي ٿو ۽ اهو ٻه عدد ان جي دليل طور قبول ڪري ٿو. ڇا توهان نٿا ٻڌائي سگهو ته اهو طريقو ڪيئن لاڳو ٿئي ٿو. اھو آھي ڇو ته ان کي لاڳو ڪرڻ لاء، توھان کي ان کي ختم ڪرڻو پوندو. جڏهن جاوا ۾ هڪ خلاصو طريقو ٺاهيو، توهان کي ڪجهه هدايتن تي عمل ڪرڻو پوندو يا توهان جو پروگرام صحيح طور تي مرتب نه ٿيندو. ياد رکو:
-
جاوا خلاصي طريقن تي عمل درآمد نه آهي. اھو آھي، انھن کي ڪڏھن به گھميل ڪنگڻ جي پٺيان نه ھجڻ گھرجي ۽ ھڪڙو جسم جيڪو ٻڌائي ٿو ته طريقو ڪيئن استعمال ڪيو وڃي. اهو صرف هڪ سيميڪولن سان ختم ڪيو ويو آهي.
-
جيڪڏھن توھان ٺاھيو ھڪڙو خلاصو طريقو، اھو صرف ھڪڙي خلاصي طبقي ۾ رکي سگھجي ٿو. اهو آهي، توهان وٽ هڪ ڪنڪريٽ ڪلاس نه آهي جنهن جي اندر هڪ تجريدي طريقو آهي.
i. هڪ طرفي نوٽ جي طور تي، جيڪڏهن توهان وٽ هڪ خلاصو طبقو آهي، اهو ٿي سگهي ٿو تعمير ڪندڙ. اهو ضروري ناهي ته هڪ خلاصو طريقو هجي. -
جڏهن هڪ ڪنڪريٽ ڪلاس هڪ تجريدي طبقي کي وڌايو، ان کي لازمي طور تي والدين طبقي جي سڀني تجريدي طريقن کي لاڳو ڪرڻ گهرجي يا اهو ڪنڪريٽ نه ٿو ٿي سگهي ۽ خلاصو قرار ڏنو وڃي.
خلاصو جاوا ڪلاس کي وڌائڻ
اچو ته چئو ته اسان بنيادي شڪلن بابت هڪ پروگرام لکڻ چاهيون ٿا جيڪو واپسي ۽ ايراضيء کي ڏينداسين. تنهنڪري اسان هڪ والدين خلاصو ڪلاس ٺاهيندا آهيون. پر ڇاڪاڻ ته هر شڪل جا پنهنجا قاعدا آهن، هر هڪ کي الڳ الڳ ڳڻڻ گهرجي، تنهنڪري اسان خلاصي شڪل ڪلاس کي هن طرح لکون ٿا:
abstract class Shape {
String shapeName = " ";
Shape(String name) {
this.shapeName = name;
}
abstract double area();
abstract double perimeter();
}
هاڻي، جيڪڏهن اسان اصل ۾ انهن تجريدي طريقن کي استعمال ڪرڻ چاهيون ٿا، اسان کي خلاصو جاوا جي والدين طبقي جي شڪل کي وڌائڻو پوندو ۽ پوء طريقن کي فوري طور تي. تنهن ڪري هر ڪنڪريٽ طبقي کي لازمي طور تي لاڳو ڪرڻ گهرجي ايراضي ۽ پردي جي خلاصي طريقن.
class Quadrilateral extends Shape
{
double length, width;
Quadrilateral(double l, double w, String name)
{
super(name);
this.length = l;
this.width = w;
}
@Override
public double perimeter()
{
return ((2*length)+(2*width));
}
@Override
public double area()
{
return (length*width);
}
}
Implementing the Quadrilateral class would then look like this
class Main
{
public static void main (String[] args)
{
// creating a Quadrilateral object using Shape as reference
Shape rectangle = new Quadrilateral(3,4, "Rectangle");
System.out.println("Area of rectangle is " + rectangle.area());
System.out.println("Perimeter of rectangle is " + rectangle.perimeter());
}
}
ڪنسول مان ٻاھر نڪرندو آھي پوء ھن وانگر آھي:
Area of rectangle is 12.0
Perimeter of rectangle is 14.0
نوٽ ڪريو ته ڪلاس Quadrilateral کي پيرن ڪلاس Shape مان Shape(String name) constructor کي انسٽنٽ ڪرڻ نه گهرجي . اهو ڇو ته اهو هڪ خلاصو طريقو ناهي. تنهن هوندي، جيڪڏهن توهان صرف هڪ ڪلاس ۾ هڪ علائقو يا دائري تي عمل ڪيو، نئين ڪلاس کي خلاصو هجڻ گهرجي ڇو ته ان ۾ ٻئي شامل نه آهن. توھان پڻ استعمال ڪري سگھو ٿا خلاصي طريقا Interfaces ۾.
خلاصو جاوا طريقا انٽرفيس سان
اچو ته جلدي جائزو وٺون ته هڪ انٽرفيس ڇا آهي ۽ اهو ڪيئن مختلف آهي خلاصي طبقي کان. هڪ انٽرفيس ۾، انٽرفيس ۾ اعلان ڪيل ڪي به متغير عوامي، جامد ۽ حتمي آهن. ٻئي طرف خلاصي طبقن ۾، صرف غير حتمي متغير آهن. انٽرفيس ۾ هر شي ڊفالٽ طور عوامي آهي. هڪ خلاصو ڪلاس خانگي، محفوظ، عوامي وغيره ٿي سگهي ٿو. آخر ۾، هڪ طبقو انٽرفيس کي نه وڌائيندو آهي، اهو ان کي لاڳو ڪندو آهي. JDK 8 کان اڳ، هڪ انٽرفيس ان ۾ ڪجھ به نه ٿي سگھي پر تجريدي طريقا. هاڻي، هڪ انٽرفيس ۾ ڊفالٽ ۽ جامد طريقا هوندا. انهي جي ڪري، بهترين طريقا تجريدي طريقن کي وڌائڻ واري ٽيمپليٽ جي طور تي استعمال ڪرڻ کان پري ٿي ويا آهن ۽ انٽرفيس تي ڌيان ڏيڻ ۽ انهن کي لاڳو ڪرڻ. پوء جيڪڏھن توھان ٺاھيو ھو شڪل ھڪڙي انٽرفيس جي طور تي ۽ پوء ان کي لاڳو ڪريو Quadrilateral طور ، اھو ڇا ٿيندو؟ پهرين، توهان کي شڪل (اسٽرنگ جو نالو) تعمير ڪندڙ سان ختم ڪرڻو پوندو . اهو صرف ٻن تجريدي طريقن سان هن طرح نظر ايندو:
interface Shape {
abstract double area();
abstract double perimeter();
}
So the Quadrilateral class would then look like this:
class Quadrilateral implements Shape {
double length, width;
Quadrilateral(double l, double w) {
this.length = l;
this.width = w;
}
@Override
public double perimeter() {
return ((2*length)+(2*width));
}
@Override
public double area() {
return (length*width);
}
}
آخرڪار، نئين چوٿين کي استعمال ڪندي جيئن ان کي لاڳو ڪري ٿو شڪل انٽرفيس گهڻو ئي ساڳيو هوندو:
class Main
{
public static void main (String[] args)
{
// creating a Quadrilateral object using Shape as reference
Shape rectangle = new Quadrilateral(3,4);
System.out.println("Area of rectangle is " + rectangle.area());
System.out.println("Perimeter of rectangle is " + rectangle.perimeter());
}
}
۽ ڪنسول پرنٽ آئوٽ هن طرح نظر ايندو:
Area of rectangle is 12.0
Perimeter of rectangle is 14.0
جيڪڏهن توهان انٽرفيس ۽ تجريدي طبقن جي وچ ۾ فرق بابت وڌيڪ ڳولڻ چاهيو ٿا، توهان هتي وڌيڪ معلومات حاصل ڪري سگهو ٿا.
پر ڇو استعمال ڪيو خلاصو جاوا طريقا؟
اهڙا ڪيترائي سبب آهن ڇو جاوا ۾ تجريدي طريقا استعمال ڪيا وڃن ٿا ۽ توهان کي انهن کي استعمال ڪرڻ سان آرام ڇو حاصل ڪرڻ گهرجي. هتي ٽي تڪڙو سبب آهن جڏهن توهان انهن کي استعمال ڪرڻ گهرجي جڏهن اهو مناسب هجي.-
ڪوششن جي نقل کان پاسو ڪريو - اسان جي مثال جي ڪوڊنگ تي واپس ڏسو؛ تصور ڪريو ته توهان ۽ توهان جي ٽيم کي مستطيل کان سواءِ شڪلين لاءِ ڪلاس ٺاهڻ جي ضرورت آهي. اتي ڪيترا مختلف طريقا آھن جيڪي توھان وٺي سگھوٿا ان طبقي کي ڊزائين ڪرڻ لاءِ؟ ڏهه؟ پندرهن؟ ۽ اھو ھڪڙو سادو مسئلو آھي. تصور ڪريو ڪجھ وڌيڪ پيچيده. توهان ۽ توهان جي ٽيم هڪ سئو طريقن سان اچي سگهي ٿي. پوءِ توهان کي انهن کي هڪ مربوط پروگرام ۾ گڏ ڪرڻ جي مشڪل ڪم سان منهن ڏيڻو پوندو. هي اسان کي اسان جي ايندڙ نقطي ڏانهن آڻيندو آهي: تعين تي عملدرآمد.
-
جاوا ۾ تجريدي طريقا استعمال ۽ عمل درآمد جي تعريف جي اجازت ڏين ٿا - جڏهن توهان هڪ خلاصو ڪلاس يا انٽرفيس استعمال ڪندا آهيو، ۽ ڊزائين ذريعي، تجريدي طريقا، توهان وضاحت ڪري رهيا آهيو ته ٻيا ماڻهو توهان جي انٽرفيس سان ڪيئن لهه وچڙ ڪندا. اھو انھن کي ٻڌائي ٿو ته ڪھڙا متغير انھن کي استعمال ڪرڻ گھرجي ۽ ڪھڙي قسم جي موٽڻ جي اميد ڪري سگھن ٿا.
جڏهن ته اهي انهن کي ختم ڪري سگهن ٿا ۽ ڪنڪريٽ ڪلاس ٺاهي سگهن ٿا جيڪي توهان جي انٽرفيس کي منفرد طريقن سان لاڳو ڪن ٿا، توهان اڃا تائين پٿر ۾ سيٽ ڪيو توهان جي ڪوڊ لاءِ بنيادي استعمال. جيڪڏهن ڪو ماڻهو شڪل کي لاڳو ڪرڻ چاهي ٿو، ته پوءِ انهن کي ٻنهي پاسن ۽ ايراضيءَ کي اوور رائڊ ڪرڻ يا لاڳو ڪرڻو پوندو. - پڙهڻ جي صلاحيت ۽ ڊيبگنگ - تجريدي طريقا حاصل ڪرڻ توهان جي ڪوڊ جي پڙهڻ جي صلاحيت کي وڌائيندو. جڏهن توهان هڪ ڪلاس لکندا آهيو جيڪو هڪ انٽرفيس لاڳو ڪري ٿو، توهان کي خبر آهي ته ڇا ڳولڻ گهرجي. توهان کي خبر آهي ته انٽرفيس ۾ هر تجريدي طريقو عمل ۾ هوندو، ۽ اهو آسان بڻائي ٿو پڙهڻ ۽ ٽريڪ ڪرڻ لاءِ ڪنهن به بگ کي. تجريدي طريقا صرف سکڻ جي شروعات آهن ته ڪيئن صحيح طريقي سان پوليمورفيزم کي استعمال ڪجي جاوا ۽ ٻين اعتراضن تي مبني ٻولين ۾. جڏهن توهان انهن کي سمجهڻ ۽ استعمال ڪرڻ شروع ڪيو، توهان جي ڪوڊنگ جي سفر جو هڪ مڪمل طور تي نئون باب شروع ٿيندو.
GO TO FULL VERSION