আমরা , আজকে মেথড নিয়ে টুকটাক কিছু বেসিক বিষয় জেনে নিবো ।।
চলো , মেথড বডি'র স্ট্রাকচার নিয়ে কিছু কথা বলি ,
[attributes]
access_modifiers return_type valid_name(parameters)
{
body;
}
আমরা , যেমন - সি তে একটা করে ফাংশন লিখতাম , ঠিক তেমনি - এখানেও , ঐভাবেই মেথডগুলো লিখতে হয় । প্রথমে , attributes নিয়ে এখনই কথা বলবো না , পরে এটা নিয়ে ডিটেইলস আলোচনা করা যাবে । । তারপর , আছে - access_modifiers , মানে , এই মেথড'টা public নাকি private , তারপর
return_type মানে , মেথড'টির রিটার্ন টাইপ int নাকি string নাকি double ।| valid_name ,মানে মেথড'টির অবশ্যই একটা নাম থাকবে । (parameters) , মানে হলো , অন্য কোনো মেথড থেকে কি কি ভ্যালু নিয়ে কাজ করবে , সেটা । । চলো , এবার আগে নরমাল একটা কোড লিখ যাক -----------
using System;
class Program
{
public static void Main()
{
int sum = Program.add(10, 20);
Console.WriteLine(sum);
Console.ReadKey();
}
public static int add(int a, int b)
{
return a + b;
}
}
এখানে , আমরা দুইটা মেথড নিয়ে কাজ করতেছি , একটি হলো , মেইন মেথড আরেকটি হলো add নামে একটা মেথড ।। আমরা , দুই মেথডের ক্ষেত্রেই access_modifiers কে Public হিসেবে সেট করেছি , যেনো একে অপরকে access করতে পারে ।
এখন , ঘটনা হলো - মেথড দুই প্রকার , static - আরেকটা হলো , instance মেথড ।।এখানে , আমরা static ব্যবহার করেছি । তো , তারপর -- return_type হিসেবে , দ্বিতীয়'টার ক্ষেত্রে int ইউজ করেছি ।
আর মেইন মেথড তো বরাবরই ভয়েড ।। যাই হোক , প্যারামিটারস হিসেবে (int a, int b) ইউজ করেছি । ।
এখন আমরা , যখন মেইন মেথড থেকে - add মেথড কে কল করবো , তখন আমাদের - যেহেতু , add মেথড Program নামক ক্লাসে অবস্থিত , তাই সেটা int sum = Program.add(10, 20); এর মাধ্যমে ক্লাস এর নাম'টা (Program ) ইমপ্লিমেন্ট করে দিতে হবে । । তাহলে , মেইন মেথড'টি add মেথড কে অ্যাকসেস করা ,কল করা ও প্যারামিটার পাঠাতে পারবে । । নিজে নিজে , অনুরুপ দুই একটা প্রোগ্রাম লিখে রান করাও , অনেক ক্লিয়ার হয়ে যাবে । তুমি কিন্তু শুধু , int sum = add(10, 20); লিখেও প্রোগ্রামটি রান করাতে পারতে - কিন্তু , যদি মেথড দুইটি একই ক্লাসের না হয় - তখন কিন্তু , তোমায় উপরের নিয়মেই ক্লাস নেম ইনক্লুড করে করতে হবে । । চলো , ভিন্ন ক্লাসের একটা উদাহরণ দেখে আসি ---
using System;
class Program
{
public static void Main()
{
int sum = joy.add(10, 20);
Console.WriteLine(sum);
Console.ReadKey();
}
}
class joy
{
public static int add(int a, int b)
{
return a + b;
}
}
এবার চলো , আমরা --- instance মেথড নিয়ে একটু কাজ করে আসি । । আগে একটা কোড দেখে আসি -------------------
using System;
class Program
{
public static void Main()
{
joy r=new joy();
int sum = r.add(10, 20);
Console.WriteLine(sum);
Console.ReadKey();
}
}
class joy
{
public int add(int a, int b)
{
return a + b;
}
}
এখানে , কি পার্থক্য আছে ??? বলো তো ?? joy ক্লাসের অন্তর্ভুক্ত add মেথড'টা তে static কিওয়ারড নেই কিন্তু ।। অর্থাৎ , এটা একটা instance মেথড ।। এই জন্যই , আমরা joy r=new joy(); এর মাধ্যমে একটা ইন্সট্যান্স/অব্জেক্ট ক্রিয়েট করে কাজ করেছি । । একটা জিনিস ক্লিয়ার হয়ে নাও , joy r এর মাধ্যমে আমরা একটা জাস্ট ( রেফারেন্স ) ভ্যারিয়েবল ক্রিয়েট করলাম ।। তারপর , new joy() এর মাধ্যমে আমরা -
joy ক্লাস এর একটা অবজেক্ট ক্রিয়েট করলাম , হিপ মেমোরিতে [ হিপ মেমোরি নিয়ে আপাতত কিছু না জানলেও চলবে , শুধু এইটুকু জেনে নাও ] তারপর , সেই অব্জেক্ট এর অ্যাড্রেস'টা আমরা r ভ্যারিয়েবলে রাখলাম , ব্যাস , পরে এটা নিয়ে ডিটেইলস-এ আলোচনা হবে ।।
যাই হোক , ভালো করে কোড রান করে দেখো ,এরকম আরো কোড লিখে রান করাও , তাহলে আরো ক্লিয়ার হবে ।। তাহলে , আজকে এইটুকুই ----
চলো , মেথড বডি'র স্ট্রাকচার নিয়ে কিছু কথা বলি ,
[attributes]
access_modifiers return_type valid_name(parameters)
{
body;
}
আমরা , যেমন - সি তে একটা করে ফাংশন লিখতাম , ঠিক তেমনি - এখানেও , ঐভাবেই মেথডগুলো লিখতে হয় । প্রথমে , attributes নিয়ে এখনই কথা বলবো না , পরে এটা নিয়ে ডিটেইলস আলোচনা করা যাবে । । তারপর , আছে - access_modifiers , মানে , এই মেথড'টা public নাকি private , তারপর
return_type মানে , মেথড'টির রিটার্ন টাইপ int নাকি string নাকি double ।| valid_name ,মানে মেথড'টির অবশ্যই একটা নাম থাকবে । (parameters) , মানে হলো , অন্য কোনো মেথড থেকে কি কি ভ্যালু নিয়ে কাজ করবে , সেটা । । চলো , এবার আগে নরমাল একটা কোড লিখ যাক -----------
using System;
class Program
{
public static void Main()
{
int sum = Program.add(10, 20);
Console.WriteLine(sum);
Console.ReadKey();
}
public static int add(int a, int b)
{
return a + b;
}
}
এখানে , আমরা দুইটা মেথড নিয়ে কাজ করতেছি , একটি হলো , মেইন মেথড আরেকটি হলো add নামে একটা মেথড ।। আমরা , দুই মেথডের ক্ষেত্রেই access_modifiers কে Public হিসেবে সেট করেছি , যেনো একে অপরকে access করতে পারে ।
এখন , ঘটনা হলো - মেথড দুই প্রকার , static - আরেকটা হলো , instance মেথড ।।এখানে , আমরা static ব্যবহার করেছি । তো , তারপর -- return_type হিসেবে , দ্বিতীয়'টার ক্ষেত্রে int ইউজ করেছি ।
আর মেইন মেথড তো বরাবরই ভয়েড ।। যাই হোক , প্যারামিটারস হিসেবে (int a, int b) ইউজ করেছি । ।
এখন আমরা , যখন মেইন মেথড থেকে - add মেথড কে কল করবো , তখন আমাদের - যেহেতু , add মেথড Program নামক ক্লাসে অবস্থিত , তাই সেটা int sum = Program.add(10, 20); এর মাধ্যমে ক্লাস এর নাম'টা (Program ) ইমপ্লিমেন্ট করে দিতে হবে । । তাহলে , মেইন মেথড'টি add মেথড কে অ্যাকসেস করা ,কল করা ও প্যারামিটার পাঠাতে পারবে । । নিজে নিজে , অনুরুপ দুই একটা প্রোগ্রাম লিখে রান করাও , অনেক ক্লিয়ার হয়ে যাবে । তুমি কিন্তু শুধু , int sum = add(10, 20); লিখেও প্রোগ্রামটি রান করাতে পারতে - কিন্তু , যদি মেথড দুইটি একই ক্লাসের না হয় - তখন কিন্তু , তোমায় উপরের নিয়মেই ক্লাস নেম ইনক্লুড করে করতে হবে । । চলো , ভিন্ন ক্লাসের একটা উদাহরণ দেখে আসি ---
using System;
class Program
{
public static void Main()
{
int sum = joy.add(10, 20);
Console.WriteLine(sum);
Console.ReadKey();
}
}
class joy
{
public static int add(int a, int b)
{
return a + b;
}
}
এবার চলো , আমরা --- instance মেথড নিয়ে একটু কাজ করে আসি । । আগে একটা কোড দেখে আসি -------------------
using System;
class Program
{
public static void Main()
{
joy r=new joy();
int sum = r.add(10, 20);
Console.WriteLine(sum);
Console.ReadKey();
}
}
class joy
{
public int add(int a, int b)
{
return a + b;
}
}
এখানে , কি পার্থক্য আছে ??? বলো তো ?? joy ক্লাসের অন্তর্ভুক্ত add মেথড'টা তে static কিওয়ারড নেই কিন্তু ।। অর্থাৎ , এটা একটা instance মেথড ।। এই জন্যই , আমরা joy r=new joy(); এর মাধ্যমে একটা ইন্সট্যান্স/অব্জেক্ট ক্রিয়েট করে কাজ করেছি । । একটা জিনিস ক্লিয়ার হয়ে নাও , joy r এর মাধ্যমে আমরা একটা জাস্ট ( রেফারেন্স ) ভ্যারিয়েবল ক্রিয়েট করলাম ।। তারপর , new joy() এর মাধ্যমে আমরা -
joy ক্লাস এর একটা অবজেক্ট ক্রিয়েট করলাম , হিপ মেমোরিতে [ হিপ মেমোরি নিয়ে আপাতত কিছু না জানলেও চলবে , শুধু এইটুকু জেনে নাও ] তারপর , সেই অব্জেক্ট এর অ্যাড্রেস'টা আমরা r ভ্যারিয়েবলে রাখলাম , ব্যাস , পরে এটা নিয়ে ডিটেইলস-এ আলোচনা হবে ।।
যাই হোক , ভালো করে কোড রান করে দেখো ,এরকম আরো কোড লিখে রান করাও , তাহলে আরো ক্লিয়ার হবে ।। তাহলে , আজকে এইটুকুই ----
No comments:
Post a Comment