যারা প্রোগ্রামিং
করতে ভালবাসেন
তারা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর
নাম শোনেননি
এমন কেউ
নেই বলেই
আমি মনে
করি।
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 এর বহুরূপতা।