মডিউল পাঠ (1/2)
ক্লাস এবং অবজেক্ট
জাভা হল একটি ভাষা যা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর উপর দৃষ্টি নিবদ্ধ করে। OOP-এ, আমরা বস্তু ব্যবহার করে বাস্তব জগতের মডেল করি। একটি বস্তুর রাষ্ট্র (ডেটা) এবং আচরণ (ক্রিয়া) আছে।
ক্লাস এবং অবজেক্ট
- ক্লাস: এটি একটি ব্লুপ্রিন্ট (বা টেমপ্লেট) যা একটি ধরনের বস্তুর বৈশিষ্ট্য এবং আচরণকে সংজ্ঞায়িত করে।
- অবজেক্ট: এটি একটি ক্লাস থেকে তৈরি একটি কংক্রিট উদাহরণ।
উদাহরণস্বরূপ, যদি Car ক্লাস হয়, গ্যারেজে আপনার গাড়িটি আসল বস্তু।
ইনস্ট্যান্স ফিল্ড এবং কনস্ট্রাক্টর
একটি ক্লাসের ভিতরের ডেটাকে ইনস্ট্যান্স ক্ষেত্র (বা গুণাবলী) বলা হয়। একটি বস্তুর সৃষ্টির মুহুর্তে তার অবস্থা শুরু করার জন্য, আমরা একটি বিশেষ পদ্ধতি ব্যবহার করি যাকে বলা হয় কন্সট্রাক্টর।
একজন কনস্ট্রাক্টরের ক্লাসের মতোই নাম থাকে এবং এর কোনো রিটার্ন টাইপ নেই (এমনকি voidও নয়)।
class Dog {
// Instance fields
String name;
int age;
// Constructor
public Dog(String name, int age) {
this.name = name; // 'this' refers to the current object's field
this.age = age;
}
}new দিয়ে একটি বস্তু তৈরি করা হচ্ছে
মেমরিতে একটি অবজেক্ট তৈরি করতে, আমরা ক্লাস কনস্ট্রাক্টর অনুসরণ করে new কীওয়ার্ড ব্যবহার করি:
public class Main {
public static void main(String[] args) {
// Creating a Dog object
Dog myDog = new Dog("Fido", 3);
// Accessing fields
System.out.println(myDog.name + " is " + myDog.age + " years old.");
}
}this রেফারেন্স
জাভাতে this কীওয়ার্ডটি বর্তমান অবজেক্টকে বোঝায় যেখানে কনস্ট্রাক্টর বা একটি পদ্ধতি চালানো হচ্ছে। এটি প্রাথমিকভাবে অস্পষ্টতা এড়াতে ব্যবহৃত হয় যখন কনস্ট্রাক্টর প্যারামিটারের নাম অবজেক্টের ইনস্ট্যান্স ক্ষেত্র (ভেরিয়েবল শ্যাডোয়িং):
class User {
String username;
public User(String username) {
this.username = username; // this.username is the instance field, username is the parameter
}
}মেমরি বরাদ্দ: স্ট্যাক বনাম হিপ
জাভা কীভাবে মেমরি বরাদ্দ করে তা বোঝা অপরিহার্য:
- স্ট্যাক: এটি একটি দ্রুত এবং সংগঠিত মেমরি এলাকা যেখানে আদিম ভেরিয়েবল এবং অবজেক্ট রেফারেন্স (মেমরি অ্যাড্রেস) স্থানীয় পদ্ধতিতে সংরক্ষণ করা হয়।
- হিপ: এটি একটি বৃহত্তর এবং গতিশীল মেমরির এলাকা যেখানে প্রকৃত বস্তু বরাদ্দ করা হয় (
newকীওয়ার্ড ব্যবহার করে)।
যখন আমরা Dog myDog = new Dog("Fido", 3); ঘোষণা করি:
- রেফারেন্স
myDogস্ট্যাক-এ তৈরি করা হয়েছে। - প্রকৃত
Dogবস্তুটি এর ডেটা সহ Heap-এ তৈরি করা হয়েছে। myDogভেরিয়েবলটি Heap-এ বস্তুর অবস্থান নির্দেশ করে।
নিজে চেষ্টা করে দেখুন
ক্ষেত্রের নাম এবং একটি উপযুক্ত কনস্ট্রাক্টর যোগ করে ব্যক্তি শ্রেণীটি সম্পূর্ণ করুন। তারপর, মূল পদ্ধতিতে, এলিস নামের p নামে একটি ব্যক্তি বস্তু তৈরি করুন।
ইঙ্গিত দেখান
ক্লাসের ভিতরে `স্ট্রিং নাম;` লিখুন, কনস্ট্রাক্টর ঘোষণা করুন `পাবলিক পারসন(স্ট্রিং নাম) { this.name = name; }` এবং `নতুন ব্যক্তি('আলিস')` দিয়ে এটিকে ইনস্ট্যান্টিয়েট করুন।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
ক্ষেত্রগুলির শিরোনাম (স্ট্রিং) এবং পৃষ্ঠাগুলি (int), একটি সম্পূর্ণ কনস্ট্রাক্টর সহ একটি বইয়ের ক্লাস তৈরি করুন এবং মূল পদ্ধতিতে মবি ডিক এবং 600 পৃষ্ঠাগুলির শিরোনাম সহ b নামে একটি বই তৈরি করুন৷
ইঙ্গিত দেখান
বুকের উভয় ক্ষেত্র সংজ্ঞায়িত করতে মনে রাখবেন, `this.title = title;` এবং `this.pages = pages;` ব্যবহার করে কন্সট্রাক্টরে ম্যাপ করুন এবং `new Book('Moby Dick', 600)` ব্যবহার করুন।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
ক্ষেত্রগুলির নাম (স্ট্রিং) এবং মূল্য (দ্বৈত) সহ একটি পণ্য শ্রেণি তৈরি করুন এবং একটি কনস্ট্রাক্টর যা উভয় ক্ষেত্রেই শুরু করে। মূল পদ্ধতিতে, ল্যাপটপ নাম এবং দাম 999.99 সহ p নামে একটি পণ্য বস্তু তৈরি করুন।
ইঙ্গিত দেখান
পণ্যের মধ্যে `স্ট্রিং নাম;` এবং `দ্বৈত মূল্য;` ক্ষেত্র ঘোষণা করুন, সেগুলিকে কনস্ট্রাক্টরে `this.name = name;` এবং `this.price = price;` দিয়ে বরাদ্দ করুন এবং অবশেষে মূল পদ্ধতিতে বস্তুটি তৈরি করুন।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ