শিখুন C# ডট নেট প্রোগ্রামিং [পর্ব-০৪] :: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং

শিখুন C# ডট নেট প্রোগ্রামিং

আজ আমি আপনাদের সাথে খুবই গুরুত্বপূর্ণ একটি বিষয় অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং নিয়ে আলোচনা করব। যারা প্রোগ্রামিং করতে ভালবাসেন তারা এর নাম শোনেননি এমন কেউ নেই বলেই আমি মনে করি। কারন প্রোগ্রামিং বলতে আমাদের সামনে যে চিত্রটি ভেসে ওঠে তা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ছাড়া আর কিছু নয়।

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

আমরা পর্ব ১ এ মেসেজ শো করেছিলাম এভাবেঃ

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.

এবার আমি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর core concept নিয়ে আলোচনা করব।

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 এর বহুরূপতা।

আশা করছি সবাই বুঝতে পেরেছেন। ভাল লাগলে like and comments করুন। আপনাদের বিষয়টি  বোঝাতে পারলেই আমি নিজেকে সার্থক মনে করব।

Level New

আমি Salman Srabon। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 12 বছর 1 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 24 টি টিউন ও 49 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 4 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস

Level 0

vhalo hocche chaliye jan.

Good one……….

Level 2

Chain tune dekhe valo lagse. Kintu problem hosse onno sobar moto hoito apnio maj pothe tune sere chole jaben. vi sune chain tune korte thake, last a jeye ekta real life project o tune kore dekhan. maj khane sere dile apnar kono problem nai, kintu amra sara apnar tune dekhe basai practice kori tader problem hobe. so go ahead. 🙂

    Level New

    @farhadjoy: Thanx vaia. shune khub alo lagse je apni tune gulo practice koren. eta amar jonno ekta utshaho shorup. asha rakhi majh pothe chole jabo na. ar real life project dekhabo but aktu late hobe. karon ami chai apnara age basic concept shikhun tarpor dekhben real project kora kono bepar na. dhonnobad abaro. 🙂

Level 2

Tnaks a lot vai .

3 no tune a

// Double num1 = double.Parse(txtNum1.Text);

// Double num2 = double.Parse(txtNum2.Text);

// Double res = num1 + num2;

// txtResult.Text = res.ToString();

Arokom akta code diacilen. ami ata try koreci kaj kore. But text box gulote koto valu na thakle error show kore. C# a if end if kivabe use korte hobe? Mane hocce textbox gulote kono value thakle sudhu ata result show korbe else msgbox “Please Put Value” waiting for your Reply …….. Thanks in Advance.

    Level New

    @buzz4rd: Thanx for your question. I will answer of your ques in my next tune. tune no:5 . Hope you will get your answer. 🙂

Level 0

sksrabon vai onak nice post I C# and ASP.NET shikta cai C programming halka jani cholba ?
naki valo moto janta hoba?

    Level New

    @cseboss: Halka bolte apni jodi if-else, nested if-else, loop, array, 2 dimentional array and string manipulation khub valovabe janen, tahole obosshoi C# and ASP.NET parbn. tobe sobtheke guruttopurno holo apni jodi kono problem er logic bujhte paren tahole programming or software developing kono matter na. ar ASP.NET shikhte chaile C#, HTML, CSS and jQuery somporke khub valo knowledge thakte hobe. C# jante hobe karon apni apnar website a je logical kaj gulo korben ta obossoi c# die korte hobe. Dhonnobad.

Level 0

C# and ASP.NET shikta ki ki Book or website valo janaban please

    Level New

    @cseboss: msdn.microsoft.com, stackoverflow.com, codeguru.com ittadi website a gie dekhte paren. ar ASP.NET er jonno valo kono website ami akhono pai ni. C# tutorial sesh hole ami ASP.NET start korbo inshallah.

Level 0

thank you sksrabon vai

Level 2

waiting for your Next tutotrial………………

Thanks for nice tune……………..continue………………….