ধাপ ১: ক্লাস তৈরি করা
প্রথমে আমরা একটি ক্লাস তৈরি করি, যার নাম Student। ক্লাস হচ্ছে একটি ব্লুপ্রিন্ট, যার মাধ্যমে আমরা কোনো অবজেক্ট তৈরি করতে পারি। এখানে আমরা শিক্ষার্থীর তথ্য সংরক্ষণ করব।
class Student:
pass
এই ধাপে শুধু ক্লাস ডিক্লেয়ার করা হলো। pass ব্যবহার করা হয়েছে, কারণ আপাতত কোনো কোড নেই। এরপর আমরা ক্লাসের মধ্যে ফাংশন (মেথড) তৈরি করব।
ধাপ ২: __init__ মেথড (Constructor) তৈরি করা
__init__ মেথড হচ্ছে কন্সট্রাক্টর, যা তখনই কল হয় যখন আমরা নতুন অবজেক্ট তৈরি করি। এটি মূলত ক্লাসের ভেরিয়েবলগুলোকে ইন্সট্যান্সের মধ্যে সংরক্ষণ করে।
class Student:
def __init__(self, name, age):
self.name = name # শিক্ষার্থীর নাম সরাসরি সেট করছি
self.age = age # বয়স সরাসরি না সেট করে আমরা property ব্যবহার করব
__init__মেথড: যখন আমরাStudentক্লাসের নতুন অবজেক্ট তৈরি করব, তখন এটি কল হবে।self.name = name: এখানেselfহচ্ছে সেই অবজেক্ট নিজেই। এতে আমরাnameসেট করছি।self.age = age: সরাসরি বয়স না সেট করে আমরা পরেpropertyব্যবহার করব, তাই এখানে সেট করছি না।
ধাপ ৩: Getter মেথড তৈরি করা
Getter মেথড হলো এমন একটি মেথড যা কোনো প্রাইভেট ভেরিয়েবল (যেমন _age) এর মান ফেরত দেয়। আমরা সরাসরি ভেরিয়েবলকে public না করে এই মেথড দিয়ে মান রিটার্ন করব।
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
# Getter method: বয়স ফেরত দেওয়ার জন্য।
def get_age(self):
return self._age # প্রাইভেট ভেরিয়েবল `_age` থেকে বয়স ফেরত দিচ্ছে
get_age: এই মেথড দিয়ে আমরাself._ageভেরিয়েবলটি পাবো।_ageহচ্ছে প্রাইভেট ভেরিয়েবল, যা সরাসরি বাইরের কোনো কোড থেকে অ্যাক্সেস করা যাবে না।
ধাপ ৪: Setter মেথড তৈরি করা
Setter মেথডের কাজ হলো, কোনো মান সেট করার আগে সেটি যাচাই করে দেখা এবং সঠিক হলে সেট করা। এখানে আমরা বয়স যাচাই করছি যে তা ১ এর বেশি কিনা।
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
def get_age(self):
return self._age
# Setter method: বয়স সেট করার সময় যাচাই করছি।
def set_age(self, age):
if age <= 0:
raise ValueError("বয়স অবশ্যই ১ এর বেশি হতে হবে।")
self._age = age # `_age` হলো প্রাইভেট ভেরিয়েবল
set_age: আমরা আগেageসেট করার আগে যাচাই করছি যে এটি ০ এর বেশি কিনা। যদি বয়স ০ বা তার চেয়ে কম হয়, তবে আমরা একটি ত্রুটি (error) দিবো।self._age: যদি বয়স সঠিক হয়, তাহলে আমরা_ageনামের প্রাইভেট ভেরিয়েবলে সেট করছি।
ধাপ ৫: property তৈরি করা
Python এ property() ফাংশনের মাধ্যমে আমরা getter এবং setter কে একটি proper মেথডের মধ্যে কম্বাইন করতে পারি। এর ফলে আমরা সরাসরি age কে ভেরিয়েবল হিসেবে ব্যবহার করতে পারব, কিন্তু এর পেছনে setter এবং getter মেথড কাজ করবে।
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
def get_age(self):
return self._age
def set_age(self, age):
if age <= 0:
raise ValueError("বয়স অবশ্যই ১ এর বেশি হতে হবে।")
self._age = age
# Python property: getter এবং setter কে property তে রূপান্তর।
age = property(get_age, set_age)
property(get_age, set_age): এখানে আমরাget_ageএবংset_ageমেথডকে property হিসেবে সেট করেছি। এখন যখনই তুমিstudent.ageঅ্যাক্সেস করবে, তখনget_ageমেথড কল হবে, আর যখনইstudent.age = 25এর মতো কিছু সেট করবে, তখনset_ageমেথড কল হবে।
শেষ কোড:
class Student:
def __init__(self, name, age):
self.name = name # শিক্ষার্থীর নাম সরাসরি সেট করছি
self.age = age # বয়স সরাসরি না সেট করে আমরা property ব্যবহার করব
# Getter method: বয়স ফেরত দেওয়ার জন্য।
def get_age(self):
return self._age
# Setter method: বয়স সেট করার সময় যাচাই করছি।
def set_age(self, age):
if age <= 0:
raise ValueError("বয়স অবশ্যই ১ এর বেশি হতে হবে।")
self._age = age
# Python property: getter এবং setter কে property তে রূপান্তর।
age = property(get_age, set_age)
উপসংহার:
- ক্লাস:
Studentনামে একটি ক্লাস তৈরি করেছি। __init__: এর মধ্যেnameএবংageপ্রাথমিকভাবে সেট করছি।- Getter:
get_age()দিয়ে_ageফেরত দিচ্ছি। - Setter:
set_age()দিয়ে যাচাই করে_ageসেট করছি। - Property:
property()দিয়ে getter এবং setter কে একত্রিত করছি যাতে সরাসরিageভেরিয়েবল হিসেবে ব্যবহার করা যায়।
এই কোডের মাধ্যমে আমরা age কে নিরাপদভাবে সেট ও অ্যাক্সেস করতে পারছি, এবং প্রয়োজন অনুযায়ী যাচাই করতে পারছি।
তুমি যদি কোনো নির্দিষ্ট টপিকের কোড বিশ্লেষণ করে ধাপে ধাপে টিউটোরিয়াল চাও, তাহলে নিচের মতো করে প্রম্পট দিতে পারো:
উদাহরণ:
প্রম্পট:
“আমি OOP তে Getter এবং Setter সম্পর্কে বিশ্লেষণ করতে চাই। তুমি আমাকে ধাপে ধাপে বুঝিয়ে দাও কিভাবে Getter এবং Setter মেথড কাজ করে এবং কেন আমরা এগুলো ব্যবহার করি।
প্রথমে একটি ক্লাস তৈরি করো, তারপর ধাপে ধাপে Getter এবং Setter মেথড যোগ করো এবং প্রতিটি ধাপ ব্যাখ্যা করো। শেষে property() ব্যবহার করে কমপ্লিট কোড দেখাও। সবকিছু সহজ ভাষায় এবং কোডের প্রতিটি অংশের জন্য ব্যাখ্যা দাও যেন আমি ভালোভাবে বুঝতে পারি।”
অন্য উদাহরণ:
“আমি চাই তুমি আমাকে Django Model তৈরি করা এবং সেটার জন্য CRUD অপারেশন বুঝিয়ে দাও।
প্রথমে একটি মডেল তৈরি করো, তারপর প্রতিটি CRUD ফাংশনের জন্য আলাদা আলাদা ধাপে কোড দেখাও।
প্রতিটি ধাপের শেষে ব্যাখ্যা করো কেন এবং কীভাবে এটি কাজ করে। সহজ উদাহরণ সহ ব্যাখ্যা করলে ভালো হবে।”
এই ধরনের প্রম্পটের মাধ্যমে তুমি যে বিষয়টি সম্পর্কে বিস্তারিত জানতে চাও, সেটা স্পষ্টভাবে জানিয়ে দিতে পারবে এবং আমি তোমাকে ধাপে ধাপে সহজ ভাষায় বিশ্লেষণ করে বুঝিয়ে দেব।