Let’s introduce with Object Oriented Programming

আমরা কম বেশি সবাই প্রোগ্রামিং শব্দটার সাথে পরিচিত তবে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর ব্যাপারে কতজন জানি? বা জানলেও এটি আসলে কি তা সবাই হয়তো বুঝি না। তাই আজকে এই রহস্যময় জিনিসের সাথে পরিচয় করিয়ে দিতে যাচ্ছি।
প্রোগ্রামিং ২ ভাবে করা যায়। একটা পদ্ধতি হচ্ছে : PoP যার পূর্ণরূপ হচ্ছে Procedural oriented programming এবং অন্য একটি পদ্ধতি হচ্ছে OOP যার পূর্ণরূপ হচ্ছে Object oriented programming । এখন কথা হচ্ছে কেন PoP এবং OOP দুটি ভিন্ন?
Procedural-oriented programming ( PoP )
PoP তে Logic এবং Function কে বেশি গুরুত্ব দেয়া হয়। অর্থাৎ এখানে variable , if , else , elif , function , input ইত্যাদি ব্যবহার করে কোড করা হয়। দুইটি উদাহরণের মাধ্যমে বুঝা যাক বিষয়টা
Ex - 1
x =10
y = 20
if x > y:
print('x is grater than y')
elif x < y:
print('y is grater than x')
Ex - 2
def greet(name):
print(f‘Hello , {name}. Welcome to the CST Club - DPI’)
f‘Hello , {name}. Welcome to the CST Club - DPI’
একে f string line বলে। আমরা কোটেশন এর মধ্যে যা লিখে প্রিন্ট দিবো সেটিই আউটপুট দেখাবে। কিন্তু আমরা যদি চাই যে কোটেশন এর মধ্যে ভ্যারিয়েবল লিখবো তাহলে আমাদেরকে f string ব্যবহার করতে হবে। অর্থাৎ f লিখে দুইটি কোটেশনের মধ্যে লিখতে হবে। যদি ভ্যারিয়েবল থাকে তাহলে Curly braces ( {} ) এর মধ্যে ভ্যারিয়েবল এর নাম লিখতে হবে।
Object oriented programming ( OOP )
অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এ লজিক এবং ফাঙ্কশন এর পরিবর্তে ডাটা বা অবজেক্ট এর উপর ফোকাস দেয়া হয় বেশি। প্রশ্ন জেগেছে মনে যে , ' What is object ?' 🤔 কনফিউশন দূর করার চেষ্টা করি একটু 😃
Object বলতে সেই সব কিছুকে বোঝায় যাদের প্রোপার্টিজ আছে কিছু বৈশিষ্ট্য আছে। মনে হচ্ছে আস্তে আস্তে বেশি কমপ্লেক্স হয়ে যাচ্ছে। একবার বলছি অবজেক্ট আবার প্রোপার্টিজ , বৈশিষ্ট !🫠
অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এ আমি নিজেই একটা অবজেক্ট। আমার কিছু প্রোপার্টিজ আছে । যেমন : আমার নাম নিশান , বয়স ১৮ , উচ্চতা ৫ ফুট ৮ ইত্যাদি এবং বৈশিষ্ট হচ্ছে আমি খাবার খাই , হাঁটি অর্থাৎ কোন কাজ করি।
এছাড়া অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর বৈশিষ্ট হচ্ছে : encapsulation , inheritance , polymorphism , abstraction। আস্তে আস্তে সব ধোঁয়াশা খোলাসা করবো ইন শা আল্লাহ।
কোড করে একটা এক্সাম্পল দেখা যাক:
class People:
def init(self,name , age , height):
self.name = name
self.height = height
self.age = age
def showDetail(self):
return f'Name:{self.name}\nAge:{self.age} years old\nHeight:{self.height} inch'
def changeName(self,name):
self.name = name
def changeAge(self,age):
self.age = age
def changeHeight(self,height):
self.height = height
obj = People(name = 'Nishan',age = 18,height = 5.8)
print(obj)
#Output : <__main__.People object at 0x7c8dc4d21dc0>
print(obj.showDetail())
#Output:
Name: Nishan
Age:18 years old
Height:5.8 inch
obj.changeName('Ata Alahy Nishan')
print(obj.showDetail())
#Output:
Name:Ata Alahy Nishan
Age:18 years old
Height:5.8 inch
এখানে হাবিজাবি অনেক কিছুই লিখেছি। এতো কিছু নিজে থেকে বুঝার দরকার নেই। আমি নিজেই বুঝিয়ে দিবো পাই টু পাই । শুধুমাত্র অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর চেহারাটা হালকা দেখলাম🫣
Let’s explain the code snippet😉
→প্রথমে class
লিখেছি। এখন class কি?
→ class
হচ্ছে একটি কীওয়ার্ড। যার মাধ্যমে আমরা অবজেক্ট তৈরী করতে পারি। class কে অবজেক্ট টেমপ্লেট ও বলা যায়। কারণ class এর মধ্যে আমরা বলে দিই অবজেক্ট এর প্রোপার্টি কি কি থাকবে , কি কি মেথড থাকবে ইত্যাদি। class এর পরে People লিখে বুঝাচ্ছি এই class এর নাম People। অর্থাৎ এটি people object তৈরী করবে।
সুতরাং , ক্লাস এর সিন্টেক্স হচ্ছে :
class class_name:
pass
প্রশ্ন: class
কে কেন আমি টেমপ্লেট বললাম?
→ কারণ একটা class দিয়ে আমরা নির্দিষ্ট একটা অবজেক্ট এর স্পেসিফিকেশন দিয়ে থাকি। কিছু ভ্যালু নিই এবং সেগুলোকে প্রসেস করে বিভিন্ন কাজ করি। অর্থাৎ এই ক্লাসটিতে আমি যে ভ্যালু দিবো তা দিয়ে একটা People অবজেক্ট তৈরী করবে যেহেতু আমি People এর জন্য ক্লাসটি তৈরী করেছি
ক্লাস এর ভিতরে def দিয়ে যা লিখেছি সেগুলো সবগুলো হচ্ছে মেথড। আমরা যারা PoP পারি তারা এটিকে function হিসেবে জানি। কিন্তু OOP তে কোন ক্লাসের অধীনে যদি কোন function ডিফাইন করা হয় তাহলে তাকে method বলে। আশা করি এতটুকু বোঝা গেছে। তবে মেথডের কয়েকটি ধরণ রয়েছে সেগুলো আমরা পরে বিস্তারিত জানবো।
উপরের ক্লাসে আমি ৫টা মেথড লিখেছি। ১) init () ২) showDetail() ৩) changeName() ৪) changeAge() ৫) changeHeight()
১ম মেথড বাদে বাকি মেথডের নাম দেখেই বুঝা যাচ্ছে তাদের কাজ কি? তাই আমি সেগুলো না বলে ১ম মেথডটি এক্সপ্লেইন করছি।
১)__init__() method
এর নাম হচ্ছে init method , init constructor। একে constructor বলার কারণ হচ্ছে এটি অবজেক্ট তৈরী করে। আমরা যদি এটি ডিফাইন নাও করতাম তাহলেও এটি অবজেক্ট তৈরী করতো। class এর মধ্যেই এর বসবাস। কিন্তু সমস্যা হচ্ছে আমরা যদি এটিকে নিজে থেকে ডিফাইন না করতাম তাহলে অবজেক্ট এর স্পেসিফিকেশন ডিফাইন করতে একটু অসুবিধা হতো। অসুবিধাটা এমন :
class People:
pass
obj = People()
obj.name = 'Nishan'
obj.age = 18
obj.height = '5.8 inch'
print(‘Name’,obj.name)
#Output: Name Nishan
print(‘Age’,obj.age)
#Output: Age 18
print(‘Height’,obj.height)
#Output: Height 5.8 inch
বুঝতেই পারছি যে init method নিজে থেকে ডিফাইন করে না দিলে আমাদের এভাবে কাজ করা লাগতো। init method এর প্যারামিটার হিসেবে কি কি প্রোপার্টি থাকবে সেগুলো উল্লেখ করে দিয়েছি। এছাড়া অন্য কোন অতিরিক্ত আর্গুমেন্ট নিবে না বা কম সংখ্যক কোন আর্গুমেন্ট নিবে না। তাই যখন কোন অবজেক্ট তৈরী করতে যাবো তখন আর্গুমেন্ট হিসেবে সেগুলোর ভ্যালু দেয়া লাগবে নইলে কোডে এরর দেখাবে।
Inheritance : ইনহেরিটেন্স বলতে বুঝায় কোন একটা ক্লাস এর প্রোপার্টি অন্য কোন ক্লাসে মধ্যে দেয়া। যেমন : আমাদের মধ্যে অনেকে বাবার কিছু বৈশিষ্ট পায় কিংবা মায়ের থেকে কিছু বৈশিষ্ট পায় আবার বাবা-মা উভয়ের থেকেই তাদের বৈশিষ্ট পেয়ে থাকে। প্রোগ্রামিং এর ভাষায় একে ইনহেরিটেন্স বলে। যে class এর বৈশিষ্ট অন্য কোন class পেয়েছে সেই class কে parent class এবং যাকে দেয়া হয়েছে তাকে child class বলে। ইনহেরিটেন্স নিয়ে বিস্তারিত অন্য কোন ব্লগে জানতে পারবো
Encapsulation: আমরা যদি কোন সফটওয়্যার তৈরি করি তাহলে সেই সফটওয়্যার এর সিকিউরিটি নিশ্চিত করা আমাদের প্রধান কাজ। আমরা চাই না কেও আমাদের কোডে পরিবর্তন নিয়ে আসুক কিংবা কোন ইনফো চেঞ্জ করে ফেলুক। আর যে পদ্ধতিতে এই কাজটি করা হয় তাকে Encapsulation বলে। অর্থাৎ , ক্যাপসুলের মধ্যে সুরক্ষিত করে রাখা। অন্য কোন ব্লগে বিস্তারিত বলবো ইন শা আল্লাহ।
Polymorphism:
Polymorphism শব্দের অর্থ হচ্ছে বহুরূপিতা। অর্থাৎ একই জিনিষ তবে ভিন্ন ভিন্ন রূপ আছে তার।
**আপাদত এইটুকুই রাখি। পরবর্তী ব্লগে আস্তে আস্তে আরো ডিটেলস এ লিখবো সবকিছু
Subscribe to my newsletter
Read articles from Ata Alahy Nishan directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
