কম্পিউটার টিউটোরিয়াল

জাভা অ্যাবস্ট্রাক্ট ক্লাস: বিস্তারিত গাইড

জাভার "অ্যাবস্ট্রাক্ট" ক্লাস এবং মেথড কীভাবে ব্যবহার করবেন

অবস্ট্রাকশন অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং-এর তিনটি মূল নীতির একটি—এনক্যাপসুলেশন এবং ইনহেরিটেন্সের পাশাপাশি।

অবস্ট্রাকশন আপনার প্রোগ্রামের জটিলতা কমাতে এবং কোডকে আরও পঠনযোগ্য बनाने का একটি উপায়। জাভাতে, অবস্ট্রাকশন আপনাকে অনুমতি দেয়:

  1. একটি ক্লাসের শুধু নির্দিষ্ট বিবরণ দেখান এবং
  2. অন্য সব বিবরণ লুকিয়ে রাখুন।

জাভাতে ক্লাস এবং মেথড উভয় ক্ষেত্রেই অবস্ট্রাকশন প্রযোজ্য।

এই টিউটোরিয়ালে জাভাতে অবস্ট্রাকশনের মূল বিষয়, অ্যাবস্ট্রাক্ট ক্লাস এবং অ্যাবস্ট্রাক্ট মেথড ব্যবহারের পদ্ধতি আলোচনা করা হবে। কিছু উদাহরণের মাধ্যমে এই গুরুত্বপূর্ণ ধারণাটি বোঝাতে সাহায্য করা হবে।

জাভা অবস্ট্রাকশন

অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং একটি প্রোগ্রামিং পদ্ধতি যা ডেটা এবং মেথড উপস্থাপন করতে অবজেক্ট এবং ক্লাস ব্যবহার করে। অবজেক্ট এবং ক্লাস ব্যবহার করলে কোডে পুনরাবৃত্তি কমে এবং প্রোগ্রামগুলো আরও দক্ষ হয়।

জাভা একটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ভাষা। সেজন্যে, অবজেক্ট এবং ক্লাস নিয়ে কাজ করার জন্য এতে অনেক বৈশিষ্ট্য রয়েছে। অবস্ট্রাকশন সেগুলোর মধ্যে একটি। অবস্ট্রাকশন আপনাকে জাভাতে শুধু নির্দিষ্ট তথ্য একটি ক্লাসে দেখাতে দেয়।

জাভাতে দুটি পরিস্থিতিতে অবস্ট্রাকশন ব্যবহৃত হয়: ক্লাসে এবং মেথডে।

জাভা অ্যাবস্ট্রাক্ট ক্লাস

জাভাতে, একটি অ্যাবস্ট্রাক্ট ক্লাস হল এমন একটি ক্লাস जिससे আপনি কোনো অবজেক্ট তৈরি করতে পারবেন না। অন্য কথায়, অ্যাবস্ট্রাক্ট ক্লাস ইনস্ট্যানশিয়েট করা যায় না।

জাভাতে অ্যাবস্ট্রাক্ট ক্লাস তৈরি করতে abstract কীওয়ার্ড ব্যবহার করা হয়। একটি উদাহরণ:

abstract class BankAccount { // এখানে কোড }

যেহেতু এটি একটি অ্যাবস্ট্রাক্ট ক্লাস, এই ক্লাস দিয়ে অবজেক্ট তৈরি করার চেষ্টা করলে প্রোগ্রাম এরর দেখাবে।

উদাহরণস্বরূপ, যদি আমরা BankAccount ক্লাসের একটি ইনস্ট্যান্স lucyAccount নামে তৈরি করতে চাই, তাহলে:

BankAccount lucyAccount = new BankAccount();

এটি চালালে এরর দেখাবে:

BankAccount is abstract; cannot be instantiated

তবে, অ্যাবস্ট্রাক্ট ক্লাস থেকে সাবক্লাস তৈরি করা সম্ভব। পরবর্তী অংশে তা আলোচনা করা হলো।

অ্যাবস্ট্রাক্ট ক্লাস ইনহেরিটেন্স

যে কারণে অ্যাবস্ট্রাক্ট ক্লাসে অবজেক্ট অ্যাসাইন করা যায় না, তার কন্টেন্ট (অ্যাট্রিবিউট এবং মেথড) অ্যাক্সেস করতে ক্লাসটি inherit করতে হয়।

মান लीজिए একটি ব্যাংকের জন্য প্রোগ্রাম তৈরি করা হচ্ছে যাতে দুটি ক্লাস থাকবে: BankAccount এবং CheckingAccount। BankAccount হবে প্যারেন্ট ক্লাস যা ব্যাংক অ্যাকাউন্টের অ্যাট্রিবিউট এবং মেথড সংরক্ষণ করবে। CheckingAccount হবে চাইল্ড ক্লাস যা সেগুলো ইনহেরিট করবে।

এখানে BankAccount একটি অ্যাবস্ট্রাক্ট ক্লাস। আমরা শুধু চেকিং অ্যাকাউন্ট তৈরি করতে এটি ব্যবহার করব।

কোড উদাহরণ:

abstract class BankAccount { 
    public void viewAccountNumber() { 
        System.out.println("Account number: #1932042"); 
    } 
}
class CheckingAccount extends BankAccount { }
class Main { 
    public static void main(String[] args) { 
        CheckingAccount lucyAccount = new CheckingAccount(); 
        lucyAccount.viewAccountNumber(); 
    } 
}

আউটপুট:

Account number: #1932042

এই উদাহরণে তিনটি ক্লাস তৈরি করা হয়েছে:

  1. BankAccount। এটি একটি অ্যাবস্ট্রাক্ট ক্লাস। এতে viewAccountNumber() মেথড রয়েছে। অ্যাবস্ট্রাক্ট হওয়ায় এর অবজেক্ট তৈরি করা যায় না।
  2. CheckingAccount। এটি একটি চাইল্ড ক্লাস। প্যারেন্ট ক্লাসের অ্যাট্রিবিউট এবং মেথড ইনহেরিট করে।
  3. Main। এতে মূল প্রোগ্রামের কোড রয়েছে।

মূল প্রোগ্রামে CheckingAccount ক্লাসের একটি ইনস্ট্যান্স lucyAccount নামে তৈরি করা হয়েছে এবং viewAccountNumber() মেথড কল করা হয়েছে।

জাভা অ্যাবস্ট্রাক্ট মেথড

ক্লাসের পাশাপাশি মেথডও অ্যাবস্ট্রাক্ট হতে পারে।

অ্যাবস্ট্রাক্ট মেথড ঘোষণা করার সময় abstract কীওয়ার্ড ব্যবহার করা হয়। এর কোনো বডি (কোড) থাকে না এবং শুধুমাত্র অ্যাবস্ট্রাক্ট ক্লাসের ভিতরে ঘোষণা করা যায়।

উদাহরণ:

abstract void checkBalance();

এখানে checkBalance() একটি অ্যাবস্ট্রাক্ট মেথড যার কোনো বডি নেই।

পূর্বের ব্যাংক উদাহরণে ফিরলে, lucyAccount.viewAccountNumber(); একটি অ্যাবস্ট্রাক্ট মেথড। এটি প্যারেন্ট ক্লাস BankAccount-কে চাইল্ড ক্লাসের জন্য টেমপ্লেট হিসেবে কাজ করতে দেয়।

গ্রাহকের বিভিন্ন ধরনের অ্যাকাউন্ট (চেকিং, সেভিংস, ব্রোকারেজ) থাকতে পারে। একই ফাংশনালিটি সব টাইপের অ্যাকাউন্টে প্রয়োগ করার জন্য চাইল্ড ক্লাসগুলো (CheckingAccount, SavingsAccount, BrokerageAccount) তৈরি করা হয়।

নিচের কোডে abstract কীওয়ার্ড দুবার ব্যবহৃত: প্রথমে অ্যাবস্ট্রাক্ট ক্লাস ঘোষণায়, তারপর অ্যাবস্ট্রাক্ট মেথড ঘোষণায়।

abstract class BankAccount { 
    abstract void viewAccountNumber(); 
}
class CheckingAccount extends BankAccount { 
    public void viewAccountNumber() { 
        System.out.println("Checking account number: #1932042"); 
    } 
}
class Main { 
    public static void main(String[] args) { 
        CheckingAccount lucyAccount = new CheckingAccount(); 
        lucyAccount.viewAccountNumber(); 
    } 
}

আউটপুট:

Checking account number: #1932042

এই উদাহরণটি আগের মতোই আউটপুট দেয়, কিন্তু কোডে কিছু পার্থক্য:

  1. অ্যাবস্ট্রাক্ট মেথড ঘোষণা। এখানে BankAccount অ্যাবস্ট্রাক্ট ক্লাসে viewAccountNumber() অ্যাবস্ট্রাক্ট মেথড ঘোষণা করা হয়েছে।
  2. অ্যাবস্ট্রাক্ট মেথড এক্সটেনশন। CheckingAccount ক্লাস BankAccount এক্সটেন্ড করে এবং মেথডটি ইমপ্লিমেন্ট করে।

জাভা অবস্ট্রাকশন উদাহরণ

এখন একটি সম্পূর্ণ উদাহরণ দেখা যাক যেখানে চেকিং এবং সেভিংস অ্যাকাউন্ট দুটোই রয়েছে। চেকিং অ্যাকাউন্ট নম্বর গ্রাহকের আইডি দিয়ে শুরু হয়ে 555-এ শেষ হয়, সেভিংস অ্যাকাউন্ট 777-এ।

abstract class BankAccount { 
    abstract void viewAccountNumber(); 
}
class CheckingAccount extends BankAccount { 
    public void viewAccountNumber() { 
        System.out.println("Checking account number: #1932042555"); 
    } 
}
class SavingsAccount extends BankAccount { 
    public void viewAccountNumber() { 
        System.out.println("Savings account number: #1932042777"); 
    } 
}
class Main { 
    public static void main(String[] args) { 
        CheckingAccount ellieCheckingAccount = new CheckingAccount(); 
        ellieCheckingAccount.viewAccountNumber(); 
        SavingsAccount ellieSavingsAccount = new SavingsAccount(); 
        ellieSavingsAccount.viewAccountNumber(); 
    } 
}

আউটপুট:

Checking account number: #1932042555 Savings account number: #1932042777

এখানে BankAccount ক্লাসে একটি অ্যাবস্ট্রাক্ট মেথড viewAccountNumber() রয়েছে। প্রতিটি অ্যাকাউন্ট টাইপ আলাদা নিয়মে নম্বর অ্যাসাইন করে, তাই প্রতিটি সাবক্লাস আলাদাভাবে মেথডটি ইমপ্লিমেন্ট করেছে।

উপসংহার

অবস্ট্রাকশন অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং-এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য। এটি ক্লাস বা মেথডের কিছু বিবরণ লুকিয়ে শুধু অপরিহার্য তথ্য প্রদর্শন করতে দেয়। জাভাতে অ্যাবস্ট্রাক্ট ক্লাস এবং মেথড তৈরি করতে abstract কীওয়ার্ড ব্যবহার করা হয়।

এই টিউটোরিয়ালে উদাহরণসহ আলোচনা করা হয়েছে অবস্ট্রাকশন কীভাবে কাজ করে, কেন এটি উপযোগী, এবং জাভাতে অ্যাবস্ট্রাক্ট মেথড ও ক্লাস কীভাবে তৈরি করবেন। এখন আপনি পেশাদার প্রোগ্রামারের মতো জাভাতে অ্যাবস্ট্রাক্ট ক্লাস এবং মেথড নিয়ে কাজ করতে পারবেন!

  1. জাভাতে ফাইনাল ক্লাস

  2. জাভাতে final কীওয়ার্ড

  3. জাভাতে super কীওয়ার্ড

  4. জাভাতে এগ리게েশন