Monday, October 9, 2017

C# For Beginners , Part-16 ( Method )

           আমরা , আজকে মেথড নিয়ে টুকটাক কিছু বেসিক বিষয় জেনে নিবো ।।
চলো , মেথড বডি'র স্ট্রাকচার  নিয়ে কিছু কথা বলি ,

         [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