Interfaces এবং Abstract Classes এর ব্যবহার
Interfaces এবং Abstract Classes হল VB.Net-এ অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর দুটি গুরুত্বপূর্ণ বৈশিষ্ট্য। এগুলি সাধারণত ক্লাস ডিজাইন করার জন্য ব্যবহৃত হয়, কিন্তু তাদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে। এগুলির মাধ্যমে কোডের পুনঃব্যবহারযোগ্যতা, এক্সটেনসিবিলিটি এবং মডুলারিটি বৃদ্ধি করা যায়।
১. Interfaces (ইন্টারফেস)
Interface একটি চুক্তি (contract) বা শর্তাবলী যা একটি ক্লাস বা স্ট্রাকচারকে নির্দিষ্ট পদ্ধতিতে আচরণ করতে বাধ্য করে। এটি শুধুমাত্র মেথড, প্রপার্টি, ইভেন্ট বা ইন্ডেক্সারের সিগনেচার ঘোষণা করে, তাদের বাস্তবায়ন (implementation) কোন ক্লাস বা স্ট্রাকচার দ্বারা প্রদান করা হয়।
Interfaces এর বৈশিষ্ট্য:
- Interface শুধুমাত্র সিগনেচার ঘোষণা করে, এর মধ্যে বাস্তবায়ন থাকে না। এটি কোনো মেথডের কনটেন্ট বা কোড প্রদান করে না, কেবল পদ্ধতি বা প্রোপার্টির কাঠামো প্রদান করে।
- একাধিক interface একটি ক্লাসে ইমপ্লিমেন্ট করা যেতে পারে। VB.Net একাধিক ইন্টারফেস সমর্থন করে, যা মুনাফা দেয়।
- Inheritance এর মাধ্যমে ইন্টারফেসের পদ্ধতিগুলি বাস্তবায়ন করা হয়।
উদাহরণ:
' Interface declaration
Public Interface IDriveable
Sub Start()
Sub Stop()
End Interface
' Class implementing the Interface
Public Class Car
Implements IDriveable
' Providing the implementation of Start method
Public Sub Start() Implements IDriveable.Start
Console.WriteLine("Car is starting.")
End Sub
' Providing the implementation of Stop method
Public Sub Stop() Implements IDriveable.Stop
Console.WriteLine("Car is stopping.")
End Sub
End Classএখানে, IDriveable একটি ইন্টারফেস, যার মধ্যে দুটি মেথড Start() এবং Stop() এর সিগনেচার ঘোষণা করা হয়েছে। Car ক্লাস এই ইন্টারফেসটি implements করে এবং ইন্টারফেসের মেথডগুলোকে বাস্তবায়ন করেছে।
ইন্টারফেস ব্যবহার:
- ইন্টারফেস ক্লাসের জন্য একটি কমন চুক্তি বা কনট্রাক্ট তৈরি করে, যার মাধ্যমে বিভিন্ন ক্লাসে একই পদ্ধতি বা আচরণ পাওয়া যায়।
- একাধিক ক্লাসে একাধিক ইন্টারফেস ব্যবহার করা সম্ভব, যা কোডের নমনীয়তা এবং পুনঃব্যবহারযোগ্যতা বাড়ায়।
২. Abstract Classes (এবস্ট্র্যাক্ট ক্লাস)
Abstract Class একটি ক্লাস যা পূর্ণাঙ্গ (complete) হতে পারে না এবং তার মধ্যে কমপ্লিট এবং ইনক্লিপ্লিট মেথড (abstract methods) উভয় থাকতে পারে। এটি এক বা একাধিক ক্লাসের জন্য বেস ক্লাস হিসাবে কাজ করে এবং একাধিক ক্লাস দ্বারা উত্তরাধিকারসূত্রে অর্জিত হতে পারে।
Abstract Class এর বৈশিষ্ট্য:
- একটি abstract class তে সাধারণ মেথড (complete methods) এবং abstract methods থাকতে পারে, যেখানে abstract methods-এর কোনো বাস্তবায়ন থাকে না এবং তা সন্তান (derived) ক্লাসে বাস্তবায়ন করতে হয়।
- Abstract methods ক্লাসের ভিতরে শুধু সিগনেচার থাকতে পারে, কিন্তু এর মধ্যে কোন কোড বা বাস্তবায়ন থাকে না। সেগুলির বাস্তবায়ন subclasses দ্বারা সরবরাহ করা হয়।
- একটি abstract class শুধু একক উত্তরাধিকারের (single inheritance) মাধ্যমে অন্য ক্লাসের সাথে যুক্ত হতে পারে।
উদাহরণ:
' Abstract class declaration
Public MustInherit Class Vehicle
Public MustOverride Sub Start() ' Abstract method (no implementation)
Public Sub Stop() ' Complete method (with implementation)
Console.WriteLine("Vehicle is stopping.")
End Sub
End Class
' Derived class implementing the abstract method
Public Class Car
Inherits Vehicle
' Providing the implementation of the Start method
Public Overrides Sub Start()
Console.WriteLine("Car is starting.")
End Sub
End Classএখানে, Vehicle একটি abstract class, যেখানে Start() একটি abstract method হিসেবে ডিফাইন করা হয়েছে এবং Stop() একটি সাধারণ পদ্ধতি যা এর ভিতরে বাস্তবায়ন করা হয়েছে। Car ক্লাসটি Vehicle ক্লাস থেকে উত্তরাধিকারী (inherits) এবং Start() মেথডের বাস্তবায়ন প্রদান করেছে।
Abstract Class ব্যবহার:
- Abstract class সাধারণত এমন একটি বেস ক্লাস হিসেবে ব্যবহৃত হয় যার কিছু সাধারণ আচরণ (methods) বিভিন্ন কন্য (derived) ক্লাসে ব্যবহৃত হতে পারে, এবং কিছু পদ্ধতি (abstract methods) শিশু ক্লাসে পুনঃনির্ধারিত হতে পারে।
- একাধিক ক্লাস একই বেস ক্লাসের জন্য সাধারণ পদ্ধতি ব্যবহার করতে পারে, কিন্তু কিছু অংশ বাস্তবায়ন করার জন্য অবশ্যই ডেরাইভড ক্লাসের প্রয়োজন হবে।
৩. Interfaces এবং Abstract Classes এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Interface | Abstract Class |
|---|---|---|
| বিন্যাস | শুধুমাত্র মেথড সিগনেচার প্রদান করে, বাস্তবায়ন থাকে না | কিছু মেথড সিগনেচার এবং কিছু বাস্তবায়ন থাকতে পারে |
| Multiple Inheritance | একটি ক্লাস একাধিক ইন্টারফেস ইমপ্লিমেন্ট করতে পারে | একাধিক বেস ক্লাস ইন্সট্যানশিয়েশন সমর্থন করে না |
| Constructor | ইন্টারফেসে কনস্ট্রাক্টর থাকতে পারে না | কনস্ট্রাক্টর থাকতে পারে |
| Members | শুধুমাত্র মেথড, প্রোপার্টি, ইভেন্ট | মেথড, প্রোপার্টি, ইভেন্ট, ফিল্ড |
| Access Modifiers | শুধুমাত্র Public মেম্বার থাকে | Public, Private, Protected সব ধরনের অ্যাক্সেস মডিফায়ার থাকতে পারে |
সারাংশ:
- Interfaces হল একটি চুক্তি বা নির্দিষ্ট পদ্ধতি বা আচরণ প্রতিষ্ঠা করার জন্য ব্যবহৃত হয় যা একাধিক ক্লাসের মধ্যে শেয়ার করা যেতে পারে। এর মাধ্যমে একটি ক্লাস অনেকগুলি ইন্টারফেস ইমপ্লিমেন্ট করতে পারে।
- Abstract Classes এক বা একাধিক ক্লাসের জন্য একটি বেস ক্লাস হিসাবে কাজ করে এবং এর মধ্যে কিছু abstract মেথড থাকতে পারে যেগুলি ডেরাইভড ক্লাসে বাস্তবায়ন করতে হয়।
- ইন্টারফেসগুলি সাধারণত একটি কমন API প্রদান করতে ব্যবহৃত হয়, এবং এবস্ট্র্যাক্ট ক্লাসগুলি সাধারণত বেস ক্লাস হিসাবে ব্যবহৃত হয় যেখানে কিছু সাধারণ আচরণ (complete methods) সরবরাহ করা হয়।
Read more