Monday, March 10, 2014

হযবরল

যারা প্রোগ্রামিং করতে ভালবাসেন তারা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর নাম শোনেননি এমন কেউ নেই বলেই আমি মনে করি। 
C# একটি High level Object Oriented Programming. কাজেই আপনি যদি C# সম্পর্কে দক্ষতা অর্জন করতে চান (শুধু C# নয়, Java, C++, Python ইত্যাদি যেকোনো ল্যাঙ্গুয়েজ সম্পর্কে) তাহলে অবজেক্ট ওরিয়েন্টেড এর ধারণা থাকা জরুরী।  
 
অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং কি?
টটাইটেল শুনেই বোঝা যায় যে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং মানে হল অবজেক্ট সম্পর্কিত প্রোগ্রাম
 
অবজেক্ট কি?
আমাদের পৃথিবী এবং মহাকাশে যা কিছু আছে সবই হল অবজেক্ট। আমরা নিজেরাও একেকজন অবজেক্ট। সোজা কথায় আমরা যা দেখতে পাই এবং যা পাই না, যা কল্পনা করতে পারি আর যা বাস্তব সবই হল অবজেক্ট। এখন বুঝতে পারছেন তো? In our day to day life, or real life or virtual life we see whatever is called Object. সুতরাং এই অবজেক্ট নিয়ে আমরা যে প্রোগ্রামিং করব তাই হল অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং
 
অবজেক্ট ওরিয়েন্টেড নিয়ে প্রোগ্রামিং করতে চাইলে আপনাকে বাস্তব জীবন নিয়ে ভাবতে হবে। কারন আপনি যদি কল্পনা করতে না শিখেন তাহলে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং আপনার কোন কাজে আসবে না। প্রোগ্রামিং কে একটি নতুন পথে হাঁটতে শিখিয়েছে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং
যা হোক, অবজেক্ট এর পরপরই যেটি জানতে হবে তা হল
 
মেথড কি?
আগের পর্ব গুলোতে আমি মেথড নিয়ে কাজ করেছি। মেথড হল ক্রিয়া, আচরণ। অর্থাঅবজেক্ট এর  ক্রিয়া বা আচরণই হল মেথড। আমরা মানুষ এর কি কি মেথড আছে? আমরা হাঁটতে পারি, খেতে পারি, চিন্তা করতে পারি, দৌড়াতে পারি, গান গাইতে পারি, নাচতে পারি আরও কত কি!! বলে শেষ করা সম্ভব নয়। আমরা যাই কিছু করতে পারি তাই হল আমাদের মেথড। বুঝতে পেরেছেন? A method is basically a behavior.  A class can contain many methods. It is in methods where the logics are written, data is manipulated and all the actions are executed.
আগের পর্ব গুলোতে দেখেছি কোন কন্ট্রোল কে ডাবল ক্লিক করলে মেথড Auto generate হয়। এই কন্ট্রোল হল অবজেক্ট। আর private void…..
হল অবজেক্ট টির মেথড। মানে আমরা একটি অবজেক্ট কে সিলেক্ট করে তার মেথড তৈরি করেছি
যেমন বাটন ডাবল ক্লিক করলে যে মেথড লেখার জায়গা আসে, সেখানে আমি লিখে দিচ্ছি বাটনে ক্লিক করলে কি হবে। যদি যোগ করতে চাই তাহলে তার প্রোগ্রাম আমি বাটন এর ভিতর লিখব। যদি মেসেজ দেখতে চাই তাহলে তার প্রোগ্রাম লিখব। তাই অবজেক্ট কে বলা হয় মেথড তৈরির কারখানা।

 
ক্লাস কি?
ক্লাস হল এমন একটা বিষয় যেখানে C এর শেষ আর অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর শুরু। ক্লাস ছাড়া অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং সম্ভব নয়। কারন প্রতিটা অবজেক্ট একটা ক্লাসের মধ্যে থাকবেই। যেমন, মানুষের ক্লাস কি? হিউম্যান ক্লাস। গরু, ছাগল, বাঘ, ভালুক, সিংহ ইত্যাদি অ্যানিম্যাল ক্লাস এর অন্তর্গত। ঘুঘু, শালিক, ময়না, ছিল,শালিক ইত্যাদি বার্ড ক্লাস এর অন্তর্গত।তার মানে ক্লাস হল একটা জাতি যা নির্ধারণ করবে কোন একই শ্রেণির এক একটা অবজেক্ট এবং তার মেথড কে
A class can be defined as a template/ blue print that describe the behaviors/states that object of its type support.
ক্লাস এর মাধ্যমে নতুন ডাটা টাইপ তৈরির পর সেই ডাটা টাইপের variable declare করা যায় এবং এই variable গুলই হল একেকটা অবজেক্ট। তাই ক্লাস কে বলা হয় অবজেক্ট তৈরির কারখানা আর অবজেক্ট কে বলা হয় ক্লাস এর একেকটা instance.
সাধারন ভাবে প্রোগ্রামিং করার সময় instance তৈরি করা হয় এভাবেঃ
Object.method=instance
আমরা Lesson 1 মেসেজ শো করেছিলাম এভাবেঃ
 

MessageBox.Show();
 
এই instance ব্রাকেট দিয়ে create করা হয়। এখানে MessageBox হল অবজেক্ট এবং Show হল তার মেথড এবং এই code লেখার ফলে আমাদের একটা মেসেজ শো করছে। অর্থা মেসেজ হল instance.
আমরা তাহলে কি কি বিষয় নিয়ে আলোচনা করলাম? অবজেক্ট, মেথড এবং ক্লাস সম্পর্কে
এখন আসি ক্লাস কত প্রকার? ক্লাস প্রধানত প্রকার। public class and private class. আরেকটা বিশেষ ক্লাস আছে। এটাকে বলা হয় protected class/friend class.
আমরা এখন public class এবং private নিয়ে আলোচনা করব
 
Public class কি?
সাধারন কথায় যে ক্লাস কে সব অবজেক্ট access করতে পারবে তাই হল public class. আমরা যে বাসে চড়ি তা হল পাবলিক বাস। এটাতে যে কেউ চড়তে পারে। কিন্তু যে গাড়ি চলতে দেখা যায় তা হল প্রাইভেট কার। এটাতে শুধু যার গাড়ি সে আর সে যাদের access দেবে তারা চড়তে পারবে। এটা হল private class. এখন গত পর্বের প্রোগ্রাম গুলো দেখুন। namespace এর পরে public partial class Form1:Form এই লাইনটি আছে। মানে আপনি যে উইন্ডোজ ফর্ম টি নিলেন সেই ফর্ম টি হল public class এর under এবং আপনি যে যে control গুলো নিলেন তারা সবাই windows form কে access করতে পারবে কিন্তু একটা control অন্য control কে access করতে পারবে না। তাই control গুলোর উপর ডাবল ক্লিক করলে script editor মেথড এর আগে private void কথাটি আসে
 
এখন প্রশ্ন হল partial class অর্থ কি?
এটা মানে হল আপনি যে windows form টি use করছেন সেটা আসলে একটা child class যার নাম form1 আর child class inherit হয় parent class থেকে। একটা জিনিস মনে রাখবেন যে toolbox থেকে আপনি যে control গুলো দেখেন সেগুলো আসলে visual studio এর তৈরি একেকটা ক্লাস আর আপনি ক্লাস গুলো drug and drop করে অবজেক্ট create করছেন। তাই আপনি New>project থেকে যে ফর্ম টি select করলেন তা আসলে একটি child class এবং Form1:Form নির্দেশ করে আপনি Form নামের ক্লাস থেকে Form1 নামের একটি object create করেছেন। এখানে Form1 হল Child class আর Form হল Parent class.
 
Object Oriented এর core concept টি
  • Inheritance
  • Encapsulation
  • Polymorphism
Inheritance:
Inheritance মানে হল বংশ পরিক্রমা। আপনি আপনার বাবার থেকে এসেছেন। আপনার বাবা আপনার দাদার থেকে এসেছেন। এটাই হল inheritance. যেমনঃ Form1:Form নির্দেশ করে Form নামের ক্লাস থেকে Form1 নামের একটি object হয়ে এসেছে। এখানে “:” inheritance নির্দেশ করে
 
Encapsulation:
Encapsulation হল অবজেক্ট এবং মেথড কে একটা capsul এর মধ্যে আবদ্ধ রাখা। অর্থাঅবজেক্ট এবং ক্লাস কখনো আলাদা থাকতে পারে না। যেমন ধরুনঃ আপনি বাজারে গিয়ে কেজি চাল কিনলেন। দোকানদার আপনাকে কিভাবে চাল দিবে? অবশ্যই একটা ব্যাগ তাই না? ধরুন ব্যাগ টা হল অবজেক্ট আর চাল হল মেথড। এখন আপনি যেখানে যাবেন ব্যাগ করেই আপনাকে চাল নিয়ে যেতে হবে। আবার ধরুন আপনি ভাল গান গাইতে পারেন। আপনি যেখানেই যান, আপনি গান গাইতে পারবেন। তাই না? মানে গান আপনার থেকে কোনোভাবে আলাদা করা সম্ভব নয়। সহজ ভাষায় এটাই হল Encapsulation. তাছাড়া আমরা আগেও দেখেছি যে object.method=instance. মানে instance create করার শর্তই হল object এবং method কে capsul এর মধ্যে রাখা এবং এদের একটি ডট দিয়ে encapsulate করে রাখা হয়
Encapsulation করার আরেকটি গুণ হল ডাটা হাইড করে রাখা যায়। অর্থা টা সেমিকোলনের ভিতরে মেথড create করলে একটা মেথড অন্য মেথড এর variable কে access করতে পারবে না। ফলে এক মেথডের ডাটা অন্য মেথডের কাছে সুরক্ষিত থাকে। Data Hiding Encapsulation এর একটি বড়ো বৈশিষ্ট্য
 
Polymorphism:
Poly অর্থ বহু। Morph অর্থ ফর্ম। তার মানে Polymorphism মানে হল ফর্মের বহুরূপতা
এটা কেমন ফর্ম? এটা অবশ্যই windows form না। এটা হল আপনার অবস্থা বা state
আপনি ভাল গান গাইতে পারেন। আপনার বাবার থেকে inherit হয়ে এই বৈশিষ্ট্য আপনার মাঝে এসেছে। কিন্তু আপনি আপনার বাবার থেকে ভাল গান করতে পারেন। এটাই হল polymorphism. আবার আপনার বাবার অনেক রাগ। কিন্তু আপনি সহজে রাগেন না। এটাও polymorphism. polymorphism positive এবং negative হতে পারে। আপনি একটা windows form নিয়ে নানাভাবে ডিজাইন করতে পারেন। এটা হল আপনার windows এর বহুরূপতা
 
;