কাদের জন্যঃ Object-oriented programming language সম্পর্কে ধারণা আছে এমন মানুষ।
যা প্রয়োজনঃ class,inheritance,JavaScript সম্পর্কে পূর্ব ধারণা।
Chain Of Responsibilityঃএর বৈশিষ্ট্য হচ্ছে কাজ সম্পন্ন করবার জন্য command object ও receiver objects এর ব্যবহার । যে command object কাজটি করবার অনুরোধ করছে সে আগে থেকে জানবে না কোন receiver object কাজটি করবে।Receiver objects গুলো কে কোন কাজ করবে তা ঠিক করে দেয়া থাকবে। অর্থাৎ receiver objects/processing objects এর দায়িত্বগুলোর মধ্যে একটি ক্রম থাকবে।কোন receiver object কাজের অনুরোধ পাবার পর দেখবে এটি তার দায়িত্বের ভেতর পরে কি না। যদি পরে ,তাহলে সে কাজটি করবে,আর না হলে পরে যে receiver object আছে তার কাছে অনুরোধ টি পাঠিয়ে দিবে। একটি অনুরোধ অনেক receiver objects যাচাই করবার সুযোগ পাচ্ছে যতক্ষণ না পর্যন্ত যোগ্য receiver object কাজটি করছে। উদাহরণে quiz বা game এ পাওয়া score এর উপর কোন মন্তব্য/বার্তা ব্যবহার করা হবে তা দেখানো হয়েছে। এখানে command object player তার score পাঠিয়ে দেয় প্রথম receiver object Message1 এর কাছে। Message1 দেখবে score অনুযায়ি বার্তা ব্যবহার তার কাজ কি না,যদি তার দায়িত্ব হয় তবে সে যে বার্তা/মন্তব্য আছে সেটি দেখাবে,নাহলে Message2 এর কাছে পাঠাবে।এভাবে চলবে যতক্ষণ না ঠিক receiver object প্রযোজ্য বার্তা দেখাচ্ছে।
উদাহরণঃ(script tags এর মাঝে নিচের code বসবে)
class Message{
constructor (){}
show (){}
}
class Default extends Message{
constructor (){ super();}
show (){document. write("Not defined!
");
}
}
class Message3 extends Message {
constructor(a){
super();
this.a=a;}
getScore(){ return this.a;}
show (){
if (this.getScore()<=50){
document.writeln("You're on top of the world! \n");
}
else {
var m=new Default ();
m.show();
}
}
}
class Message2 extends Message {
constructor(a){super();
this.a=a;}
getScore(){ return this.a;}
show (){
if(this.getScore()>20 && this.getScore()<=30){
document.writeln("You are almost there!
");
}
else {
var m=new Message3(this.a);
m.show();
}
}
}
class Message1 extends Message {
constructor(a)
{super ();
this.a=a;}
getScore(){ return this.a;}
show (){
if (this.getScore()<=20) {
document.writeln("Try better! \n");
}else {
var m=new Message2(this.a);
m.show();
}
}
}
class Player {
constructor(a){this.a=a;}
message (){
var m=new Message1(this.a);
m.show();
}
}
var a=new Player (55);
a.message ();
চেষ্টা করা যাকঃ একজন customer একটি পণ্যের সাথে থাকা scratch card এর নম্বর পাঠাবেন সংশ্লিষ্ট company ‘র কাছে। নাম্বার অনুযায়ি screen এ প্রদর্শিত হবে তিনি কোন পুরস্কার জিতেছেন। এখানে abstract class Prize এর subclass হলো car,motorbike, foreignTrip এবং noWin। প্রথম তিনটি subclass এর জন্য Congrats! You've won a …!! বার্তা এবং সবশেষ subclass এর জন্য দেখানো হবে Sorry,you've not won anything. Try again! বার্তাটি।
কৃতজ্ঞতাঃ এই লেখা তৈরি করতে দরকারি তথ্য নেয়া হয়েছে Wikipedia, আকর বই "'Design Patterns:Elements Of Reusable Object-Oriented Software' by Eric Gamma,Richard Helm,Ralph Johnson and John Vlissides(Addisson-Wesley.1994)" ও লেখকের তৈরি করা নানা program থেকে।
মন্তব্য ও যোগাযোগঃ mrh4478@gmail.com
No comments:
Post a Comment