Object Oriented বলতে বোঝায়টা কী?

অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং(OOP)-এর সংজ্ঞা অনেকভাবে করা যেতে পারে। আমরা দেখবো এটা কিভাবে কাজ করে, আর কাজে লাগানো যায়। তাহলে জিনিসটা কী তা আমাদের বোঝা হয়ে যাবে।

Object বলতে কোনো বস্তু বোঝায় আর Oriented বলতে কোনো কিছু থেকে উৎপত্তি বোঝায়। একটুকুই বোঝা প্রথমে সব থেকে জরুরী। আমরা একই ধরনের অবজেক্ট যখন তৈরি করবো তখন আলাদা আলাদা ভাবে বানানোর দরকার নেই। যেহেতু অবজেক্টগুলো একই ধরনের তাই একটা মডেল আগে থেকে বানিয়ে রেখে সেই অনুযায়ী অবজেক্টগুলো বানাতে পারি। OOP -তে এই মডেলটাকে class বলে।

একটি সমস্যা এবং সমাধানের অসাধারণ উপায়

ধরুন আমরা কিছু মানুষ তৈরি করবো প্রোগ্রাম লিখে। এখন একটা মানুষের কি কি থাকে? সবার প্রথমে নাম, বয়স, উচ্চতা। এখন প্রোগ্রামটা আমরা এভাবে লিখতে পারি।

#human 1
name1 = "Asif"
age1 = 25
height1 = 6

এখানে name1,age1 আর height1 চলকগুলো প্রথম মানুষের জন্য। দ্বিতীয় আরেকটা মানুষের জন্য এগুলো হবে: name2, age2, height2. আপনি কি ঝামেলাটা ধরতে পারলেন এখানে? ধরেন এভাবে ১০০ জন মানুষ তৈরি করা হলো, তাহলে প্রতিটা মানুষের জন্য এরকম তিনটা চলক থাকলে মোট ৩০০টা চলক নেয়া লাগবে! বুঝুন অবস্থা! তারপর আবার এগুলো আলাদা আলাদাভাবে প্রিন্ট করাও ঝামেলা। প্রতিটার জন্য print(name1,age1,height1) দিয়ে ডাটাগুলো দেখতে হবে।

এখন এই কাজটাই আমরা আরও সহজে আরও স্মার্টভাবে করতে পারি। আর সেটা করবো অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং-এর ধারণা দিয়ে।

এরজন্য আমরা Human নামে ক্লাস তৈরি করবো।

class Human:
    def properties(self,name,age,height):
        self.name = name
        self.age = age
        self.height = height

এই যে আমরা একটা Human নামের একটা মডেল বানিয়ে নিলাম, এখন এটা ব্যবহার করেই আমরা হাজার হাজার মানুষ তৈরি করতে পারবো আগের মত ঝামেলা ছাড়াই। কিভাবে?

প্রথম মানুষটাকে আমরা এভাবে বানাতে পারি...

h1 = Human()

এখানে h1 ভেরিয়েবলটা মূলত Human() ক্লাসটার অবজেক্ট।

def properties(self,name,age,height) এটা দেখে তো বুঝতেই পারছেন ক্লাসের মধ্যে একটা ফাংশন তৈরি করা হয়েছে। OOP এর ক্ষেত্রে এটাকে method বলে। এর মধ্যমে আমরা data জমা করবো। এভাবে...
h1.properties("anil",23,6)

এখন আমরা খুব সহজেই ডাটাগুলো দেখতে পাবো। age দেখার জন্য h1.age লিখে প্রিন্ট করলেই হবে। এভাবে অন্য ডাটাগুলোও দেখতে পারবেন।

এখন দ্বিতীয় আরেকটা মানুষের জন্য h2 = Human() লিখে আরেকটা অবজেক্ট তৈরি করুণ। বুঝতে পারছেন কাজটা কত সহজ আর মজার হয়ে গেছে?

এখন নিচের মত করে আমরা ডাটাগুলো দেখতে পারবো।

এখন আমরা যদি চাই তাহলে সবগুলো প্রতিটা মানুষের জন্য সম্পুর্ন তথ্য একবারে পেতে পারি। কিভাবে? এর জন্য আমরা আলাদা আরেকটা মেথড বানিয়ে নিতে পারি। এই মেথডের নাম দেয়া যেতে পারে display।

def display(self):
        print(self.name,self.age,self.height)

এখন প্রথম মানুষের সব ডাটা একবারে দেখতে h1.display() দিলেই চলবে।
পুরো কোডটা এরকম হবে...

class Human:
    def properties(self,name,age,height):
        self.name = name
        self.age = age
        self.height = height
    def display(self):
        print(self.name,self.age,self.height)
h1 = Human()
h1.properties("anil",23,6)
h1.display()

একইভাবে আমরা h2, h3, h4 ইত্যাদি নামে অবজেক্ট তৈরি করতে পারবো। এভাবে সহজেই ১০০টা মানুষ তৈরি করা হয়ে যাবে। এভাবে ১০০টা মানুষের জন্য ৩০০ টা ভেরিয়েবল তৈরি করা থেকে আমরা সহজেই মুক্তি পেলাম। আর সহজেই আমাদের ডাটা পড়ার উপায় পেয়ে গেলাম।

এতক্ষণ যা বোঝানোর চেষ্টা করলাম ধরতে পারলেন কি? আপনার মনে এখন অনেক প্রশ্ন থাকতে পারে। যেমন self ব্যবহার করছি কেন আমরা? পরের অধ্যায়ে সেই বিষয়ে বলা হবে।

আমরা প্রয়োগ করে করে শিখবো যাতে পরিষ্কার বুঝতে পারি। যেমন এখানে যে ধারণা ব্যবহার করা হয়েছে সেইটা কাজে লাগিয়ে আপনি একটা প্রোগ্রাম লিখুন তো student নামের class দিয়ে। student -এর এইসব বৈশিষ্ট্য থাকতে হবে : name, age, department, roll.

results matching ""

    No results matching ""