Advertisement

Let’s introduce with Object Oriented Programming

5 min read
View on Hashnode

Share this article

আমরা কম বেশি সবাই প্রোগ্রামিং শব্দটার সাথে পরিচিত তবে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর ব্যাপারে কতজন জানি? বা জানলেও এটি আসলে কি তা সবাই হয়তো বুঝি না। তাই আজকে এই রহস্যময় জিনিসের সাথে পরিচয় করিয়ে দিতে যাচ্ছি।

প্রোগ্রামিং ২ ভাবে করা যায়। একটা পদ্ধতি হচ্ছে : 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 শব্দের অর্থ হচ্ছে বহুরূপিতা। অর্থাৎ একই জিনিষ তবে ভিন্ন ভিন্ন রূপ আছে তার।

**আপাদত এইটুকুই রাখি। পরবর্তী ব্লগে আস্তে আস্তে আরো ডিটেলস এ লিখবো সবকিছু

Advertisement
Advertisement
0

reactions

Login to Hashnode to react

Advertisement
Advertisement

Comments

Comments are managed on Hashnode. Join the discussion there!

You'll need a Hashnode account to comment. It's free and takes seconds to sign up!

Advertisement
Recommended Content

Related Posts

Python Inheritance Part - 02 ( MRO and super() )

Python Inheritance Part - 02 ( MRO and super() )

গত আর্টিকেলে আমরা পাইথন এর ইনহেরিট্যান্স এবং তার প্রকারভেদ নিয়ে আলোচনা করেছিলাম। সেখানে Multiple Inheritance সম্পর্কে জেনেছি আমরা। Multiple Inheritance এ একটি চাইল্ড ক্লাসের একাধিক প্যারেন্ট ক্লাস থাকে। আমরা জানি কো্ন চাইল্ড ক্লাসের মধ্যে যে প্রোপার্...

Ata Alahy NishanAta Alahy Nishan
2 min
super()_method_pythonMRO
Python Inheritance Part - 01

Python Inheritance Part - 01

Inheritance কি? Inhertitance হচ্ছে এমন এক পদ্ধতি যার মাধ্যমে একটি ক্লাসের প্রোপার্টি , মেথড অন্য কোন ক্লাসকে দেয়া যায়। এক্ষেত্রে যার থেকে ইনহেরিট করা হয়েছে তাকে বলে প্যারেন্ট ক্লাস এবং যার কাছে ইনহেরিট করা হয়েছে তাকে বলে চাইল্ড ক্লাস। Syntax of inher...

Ata Alahy NishanAta Alahy Nishan
4 min
hybrid-inherithierarchical-inheritance
Classification of Methods

Classification of Methods

এই টিউটোরিয়ালে আমরা OOP Method নিয়ে বিস্তারিত জানবো। আগের টিউটোরিয়ালে আমরা ক্লাস নিয়ে বিস্তারিত আলোচনা করেছি। তবে Method নিয়ে জানার আগে Class এর আরেকটি উদাহরণ দেখে নিই Example - 1 class Dog: def init(self,name,color,age): self.name = n...

Ata Alahy NishanAta Alahy Nishan
5 min
python-instance-methodPython
Advertisement
Recommended Content