Java একটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) ভাষা, যার মূল ভিত্তি হলো Classes এবং Objects। Java-তে, Classes ডেটা এবং মেথডগুলির একটি ব্লুপ্রিন্ট (blueprint) হিসেবে কাজ করে, এবং Objects হল সেই ক্লাসের ইনস্ট্যান্স যা প্রকৃত ডেটা ধারণ করে।
এই নিবন্ধে, আমরা Java Classes এবং Objects এর ধারণা, তাদের গঠন এবং ডাটা স্ট্রাকচার ও অ্যালগরিদম তৈরিতে কীভাবে ব্যবহৃত হয় তা আলোচনা করব।
1. Java Class কি?
Class হল একটি ব্লুপ্রিন্ট যা Object তৈরি করতে ব্যবহৃত হয়। ক্লাসে সাধারণত দুটি প্রধান উপাদান থাকে:
- Fields (অথবা ভেরিয়েবল): যে ডেটাগুলি আমরা ক্লাসে স্টোর করতে চাই তা রাখা হয়।
- Methods: যে কার্যক্রম বা আচরণগুলি ক্লাসের অবজেক্টগুলির জন্য উপলব্ধ থাকে তা গঠন করা হয়।
একটি ক্লাস তৈরি করতে, class কিওয়ার্ড ব্যবহার করা হয় এবং তারপরে ক্লাসের নাম দেওয়া হয়।
ক্লাসের সাধারণ গঠন:
public class Car {
// Fields (ভেরিয়েবল)
String color;
String model;
int year;
// Methods (ফাংশন)
public void displayDetails() {
System.out.println("Car Model: " + model);
System.out.println("Car Color: " + color);
System.out.println("Car Year: " + year);
}
}
ব্যাখ্যা:
- Car ক্লাসের মধ্যে তিনটি ফিল্ড রয়েছে:
color,model, এবংyear। - displayDetails() মেথডটি একটি অ্যাকশন বা কার্যক্রমের প্রতিনিধিত্ব করে, যা গাড়ির বিস্তারিত প্রদর্শন করে।
2. Java Object কি?
Object হল একটি ক্লাসের ইনস্ট্যান্স, যা ক্লাসে সংজ্ঞায়িত ডেটা এবং আচরণ ধারণ করে। একটি ক্লাস থেকে একাধিক অবজেক্ট তৈরি করা যায় এবং প্রতিটি অবজেক্টের নিজস্ব ডেটা থাকে। অবজেক্ট তৈরি করতে new কিওয়ার্ড ব্যবহার করা হয়।
উদাহরণ:
public class Main {
public static void main(String[] args) {
// Car ক্লাসের একটি অবজেক্ট তৈরি করা
Car myCar = new Car();
// অবজেক্টের ফিল্ডে মান দেওয়া
myCar.color = "Red";
myCar.model = "Toyota Corolla";
myCar.year = 2020;
// অবজেক্টের মেথড কল করা
myCar.displayDetails();
}
}
ব্যাখ্যা:
- এখানে
myCarএকটি Car অবজেক্ট, যাCarক্লাসের একটি ইনস্ট্যান্স। myCar.color,myCar.model, এবংmyCar.yearফিল্ডগুলিতে মান সেট করা হয়েছে এবং অবশেষেdisplayDetails()মেথডের মাধ্যমে গাড়ির বিস্তারিত প্রদর্শন করা হয়েছে।
3. Class এবং Object এর মধ্যে পার্থক্য
| দিক | Class | Object |
|---|---|---|
| সংজ্ঞা | একটি ব্লুপ্রিন্ট যা অবজেক্ট তৈরির জন্য ব্যবহৃত হয়। | একটি ক্লাসের ইনস্ট্যান্স বা উদাহরণ। |
| ডেটা | ডেটা ধারণ করে না, কেবল গঠন ও আচরণ নির্দেশ করে। | ক্লাসের ডেটা এবং আচরণ ধারণ করে। |
| মেমরি | ক্লাসের জন্য মেমরি এক্সটেনশন তৈরি হয় না। | অবজেক্ট তৈরির সময় মেমরি এক্সটেনশন তৈরি হয়। |
| ব্লুপ্রিন্ট | হ্যাঁ, অবজেক্ট তৈরির জন্য। | না, এটি একটি বাস্তব অবজেক্ট। |
| কোড | ক্লাসে ফিল্ড এবং মেথড থাকে। | এটি ক্লাসের একটি কনক্রিট (নির্দিষ্ট) ইনস্ট্যান্স। |
4. Constructors in Java
Constructor হল একটি বিশেষ মেথড যা একটি ক্লাসের অবজেক্ট তৈরি করার সময় স্বয়ংক্রিয়ভাবে কল করা হয়। কনস্ট্রাক্টরের প্রধান কাজ হল অবজেক্টের ইনিশিয়ালাইজেশন। কনস্ট্রাক্টরের নাম ক্লাসের নামের মতো হয় এবং এটি রিটার্ন টাইপ ছাড়া থাকে।
কনস্ট্রাক্টরের উদাহরণ:
public class Car {
String color;
String model;
int year;
// Constructor
public Car(String color, String model, int year) {
this.color = color;
this.model = model;
this.year = year;
}
// Method
public void displayDetails() {
System.out.println("Car Model: " + model);
System.out.println("Car Color: " + color);
System.out.println("Car Year: " + year);
}
}
public class Main {
public static void main(String[] args) {
// Constructor এর মাধ্যমে অবজেক্ট তৈরি করা
Car myCar = new Car("Red", "Honda Civic", 2021);
myCar.displayDetails();
}
}
ব্যাখ্যা:
- এখানে,
Carক্লাসে একটি কনস্ট্রাক্টর রয়েছে যা অবজেক্ট তৈরি করার সময়color,model, এবংyearএর মান ইনিশিয়ালাইজ করে। new Car("Red", "Honda Civic", 2021)এর মাধ্যমে কনস্ট্রাক্টরটি কল করা হয়েছে এবং অবজেক্ট ইনিশিয়ালাইজ করা হয়েছে।
5. Encapsulation in Java
Encapsulation হল একটি OOP ধারণা যা ডেটা হাইডিংয়ের মাধ্যমে ক্লাসের ভেতরে থাকা ডেটাকে সুরক্ষিত রাখে এবং শুধুমাত্র সেই ডেটাকে অ্যাক্সেস করতে অনুমতি দেয় যা প্রয়োজন।
Java তে encapsulation বাস্তবায়ন করতে আমরা সাধারণত private ফিল্ড এবং getter ও setter মেথড ব্যবহার করি।
উদাহরণ: Encapsulation
public class Car {
// Private Fields
private String color;
private String model;
private int year;
// Getter Methods
public String getColor() {
return color;
}
public String getModel() {
return model;
}
public int getYear() {
return year;
}
// Setter Methods
public void setColor(String color) {
this.color = color;
}
public void setModel(String model) {
this.model = model;
}
public void setYear(int year) {
this.year = year;
}
// Method
public void displayDetails() {
System.out.println("Car Model: " + model);
System.out.println("Car Color: " + color);
System.out.println("Car Year: " + year);
}
}
ব্যাখ্যা:
- এখানে,
color,model, এবংyearফিল্ডগুলিprivateরূপে ডিফাইন করা হয়েছে যাতে সেগুলিতে সরাসরি অ্যাক্সেস করা না যায়। getterএবংsetterমেথডের মাধ্যমে আমরা এই ফিল্ডগুলির মান অ্যাক্সেস এবং পরিবর্তন করতে পারি।
6. Inheritance in Java
Inheritance হল OOP এর আরেকটি গুরুত্বপূর্ণ ধারণা যেখানে একটি ক্লাস অন্য একটি ক্লাসের বৈশিষ্ট্য (ফিল্ড এবং মেথড) উত্তরাধিকার হিসেবে পায়। এর মাধ্যমে কোড পুনঃব্যবহার করা যায় এবং নতুন ক্লাস তৈরি করার জন্য পূর্ববর্তী ক্লাসের বৈশিষ্ট্য ব্যবহার করা হয়।
উদাহরণ: Inheritance
public class Vehicle {
public void start() {
System.out.println("Vehicle is starting...");
}
}
public class Car extends Vehicle {
public void honk() {
System.out.println("Car is honking...");
}
}
public class Main {
public static void main(String[] args) {
Car myCar = new Car();
myCar.start(); // Inherited method
myCar.honk(); // Child class method
}
}
ব্যাখ্যা:
Carক্লাসটিVehicleক্লাস থেকে inherit করেছে, তাইCarক্লাসVehicleক্লাসেরstart()মেথড ব্যবহার করতে সক্ষম।- এটি কোড পুনঃব্যবহার নিশ্চিত করে।
7. Polymorphism in Java
Polymorphism হল OOP-এর একটি গুরুত্বপূর্ণ ধারণা যেখানে একই মেথড নাম বিভিন্ন ধরনের অবজেক্টের জন্য বিভিন্ন কাজ করতে পারে। এটি method overloading এবং method overriding এর মাধ্যমে বাস্তবায়িত হয়।
উদাহরণ: Method Overriding (Runtime Polymorphism)
class Animal {
public void sound() {
System.out.println("Animal makes sound");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("Dog barks");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Animal();
myAnimal.sound(); // Animal sound
Dog myDog = new Dog();
myDog.sound(); // Dog sound
}
}
ব্যাখ্যা:
Dogক্লাসAnimalক্লাস থেকেsound()মেথড override করেছে, যার ফলে এটি নিজস্ব আচরণ প্রয়োগ করে।- এটি runtime polymorphism উদাহরণ হিসেবে কাজ করে।
সারাংশ
Java Classes এবং Objects হল OOP এর মৌলিক ধারণা যা ডেটা এবং কার্যক্রমকে একত্রে সংরক্ষণ করার সুবিধা দেয়। Encapsulation, Inheritance, Polymorphism, এবং Abstraction হল OOP এর অন্যান্য গুরুত্বপূর্ণ বৈশিষ্ট্য যা ডেটা স্ট্রাকচার এবং অ্যালগরিদম তৈরিতে সাহায্য করে। Java-এ Classes এবং Objects ব্যবহার করে আপনি উন্নত এবং পুনঃব্যবহারযোগ্য কোড তৈরি করতে পারেন যা ডেটা স্ট্রাকচার এবং অ্যালগরিদমের কার্যকারিতা আরও সহজ করে তোলে।
Read more