রুবিতে ক্লাস কী?
ক্লাসগুলো অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং (OOP)-এর বেসিক বিল্ডিং ব্লক এবং এগুলো অবজেক্ট তৈরি করার জন্য একটি ব্লুপ্রিন্ট ডিফাইন করতে সাহায্য করে।
অবজেক্টগুলো হলো ক্লাসের প্রোডাক্ট।
তাহলে অবজেক্ট কী?
একটি অবজেক্ট হলো একটি স্বতন্ত্র "জিনিস", যার নিজস্ব আইডেন্টিটি এবং নিজস্ব ডেটা থাকে।
উদাহরণস্বরূপ:
একটি Book ক্লাস বই তৈরি করার জন্য ব্লুপ্রিন্ট হতে পারে।
এই ক্লাস ডিফাইন করে সকল বইয়ের কমন অ্যাট্রিবিউটগুলো, যেন:
- একটি টাইটেল
- একটি автор
- পেজ সংখ্যা
- আদি।
প্রতিটি indywidual বই হলো একটি অবজেক্ট এবং Book ক্লাসের الفضলে আপনি এর মতো অনেক অবজেক্ট তৈরি করতে পারেন। ক্লাস তৈরি করার উদ্দেশ্য হচ্ছে, এগুলো আপনার রুবি অ্যাপ্লিকেশনের জন্য রি-ইউজেবল ব্লুপ্রিন্ট।
এখন:
আপনি শিখবেন কীভাবে নিজের ক্লাস লিখবেন যাতে আপনি আজ থেকে OOP কোড লিখতে শুরু করতে পারেন।
রুবি ক্লাস কীভাবে তৈরি করবেন
ক্লাস তৈরির সিনট্যাক্স এভাবে:
class Orange end
লক্ষ্য করুন যে:
- ক্লাসের নাম বড় হাতের অক্ষরে শুরু হয়
- আমরা
classকীওয়ার্ড, তারপরendকীওয়ার্ড ব্যবহার করি - একটি খালি ক্লাস খুব উপকারী নয়, কিন্তু আপনি সেটি থেকেও অবজেক্ট তৈরি করতে পারেন
ক্লাস তৈরির অন্যান্য পদ্ধতিও আছে (যেমন Class.new), কিন্তু এগুলো শুধু スペশাল পরিস্থিতিতে উপকারী।
এক ক্লাস, অনেক অবজেক্ট
এক ক্লাসের প্রধান ব্যবহার হলো মেথড, ইনস্ট্যান্স ভেরিয়েবল এবং কনস্ট্যান্টের কন্টেইনার হয়ে একটি ব্লুপ্রিন্ট তৈরি করা যেখান থেকে আপনি অবজেক্ট তৈরি করতে পারেন।
আপনি new মেথড ব্যবহার করে অবজেক্ট তৈরি করতে পারেন।
এভাবে:
Orange.new
অবজেক্ট তৈরির প্রসেসকে আমরা "ইনস্ট্যানশিয়েশন" বলি, এবং আমরা বলি একটি অবজেক্ট একটি ক্লাসের "ইনস্ট্যান্স"।
কেন অবজেক্ট তৈরি করব?
কারণ আপনি যেকোনো অবজেক্ট তৈরি করবেন সেটি আলাদা এবং অনন্য হবে।
প্রতিটি অবজেক্টের নিজস্ব আইডেন্টিটি থাকে।
উদাহরণস্বরূপ:
Orange ক্লাসের সাথে, আপনি যেকোনো orange অবজেক্ট তৈরি করবেন তার নিজস্ব ওজন, উৎপত্তির দেশ, গুণগত মান ইত্যাদি থাকবে।
রুবি ক্লাসকে আরও উপকারী করা
ক্লাসগুলো আরও উপকারী হয়ে ওঠে যখন আপনি ইনস্ট্যান্স মেথড এবং ইনস্ট্যান্স ভেরিয়েবল যোগ करना শুরু করেন।
একটি মেথড হলো আপনার ক্লাস যা করতে পারে।
উদাহরণস্বরূপ:
আপনি একটি কমলা নিচোড়ে জুস পেতে পারেন।
এখানে একটি কোড উদাহরণ:
class Orange def squeeze puts "Here's your juice!" end end orange = Orange.new orange.squeeze
এই মেথডগুলো আপনার অবজেক্টদের জন্য কমান্ড হয়ে যায়!
আপনি যেকোনো Orange অবজেক্ট তৈরি করবেন সেটির এই squeeze মেথডে অ্যাক্সেস থাকবে এবং ক্লাস ব্যবহার করার সুবিধাগুলোর একটা এটিই।
একটি ইনস্ট্যান্স ভেরিয়েবল হলো আপনার ক্লাস যা জানে।
উদাহরণ:
class Orange def initialize @juice_available = 100 end def squeeze @juice_available -= 50 end end
ইনস্ট্যান্স ভেরিয়েবল লোকাল ভেরিয়েবল থেকে আলাদা কারণ এগুলো @ সিম্বল দিয়ে শুরু হয়। আপনি ক্লাসের বাইরে থেকে সেগুলো অ্যাক্সেস করতে পারবেন না যদি না আপনি attr_accessor ডিফাইন করেন।
এটি কোন ক্লাস?
রুবিতে অবজেক্টের সাথে কাজ করার সময় জানা উপকারী যে একটি অবজেক্ট কোন ক্লাস থেকে তৈরি।
আপনি এভাবে জানতে পারেন:
"".class # String [].class # Array orange.class # Orange (assuming orange = Orange.new)
এটি কেন উপকারী?
মেথডগুলো হলো রুবিতে ক حدوثের ছোট ছোট ইঞ্জিন।
আপনি যদি ক্লাসটি জানেন তবে আপনি জানতে পারবেন কী মেথডগুলো উপলব্ধ (Google, ri, বা pry ব্যবহার করে), অন্য কথায়, আপনি আবিষ্কার করতে পারবেন অবজেক্টটি আপনার জন্য কী করতে পারে!
ক্লাস সম্পর্কে আরও জানুন
ক্লাসের বিষয়ে এটা শুধু "আইসবার্গের টিপ"।
আপনি আরও জানতে চাইলে...
এগুলো পড়ুন:
- রুবি initialize মেথড
- Attr_accessor, attr_reader, attr_writer
- OOP-এ ইনহেরিট্যান্স
- অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং
ব্রাম্ভে ক্লাসগুলো নিজেও অবজেক্ট, কমপক্ষে রুবিতে 🙂
সারসংক্ষেপ
আপনি রুবিতে ক্লাস সম্পর্কে শিখেছেন, কীভাবে সেগুলো তৈরি করতে হয় এবং কেন সেগুলো উপকারী!
এই আর্টিকেলটি শেয়ার করতে ভুলবেন না যাতে আরও মানুষ উপভোগ করতে পারে।
পড়ার জন্য ধন্যবাদ।