OOP

ইন্টারফেস

অাজ একটা ইন্টারেস্টিং টপিক নিয়ে লিখব। ভার্সিটিতে এই নামে একটা কোর্স ছিল 🙂 । সেটা অনেকের গলার কাঁটা হলেও অাশা করি এই টপিক তেমন হবে না 🙂 ।
পিএইচপি তে ইন্টারফেস কাজ করে অনেকটা একটা এ্যাডাপটারের মত। অামাদের ল্যাপটপের অ্যাডাপটারের কাজ কি ? এটা বাসার মেইন ভোল্টেজটাকে একটা লো ভোল্টেজে কনভার্ট করে অামাদের ল্যাপটপে সরবরাহ করে। এই ইন্টারফেসের কাজও অনেকটা এরকম।

ক্ল্যাশ রয়াল নিয়ে একটা উদাহরণ দিলে ব্যাপারটা অারো পরিস্কার হবে। ধরা যাক অাজ অামরা দুটো ট্রুপস নিয়ে খেলতে বসছি(বাস্তবে কিন্তু না)  হগ রাইডার এবং মিনিয়ন। এদের দুজনেরই হেল্থ এবং টার্গেট ক্যালকুলেট করার জন্য অালাদা ফাংশন অাছে। তাহলে একটা ট্রুপসের এই ডিটেইলস্ গুলো দেখার অ্যাপ্রোচ টা কেমন হবে?

অনেকটা এরকম : ফার্স্ট অামরা ক্যারেক্টার গুলোর জন্য ক্লাস এবং ফাংশনগুলো ডিফাইন করবো। তারপর নতুন ইন্সট্যান্স তৈরি করে তাদের অ্যাট্রিবিউট গুলো চেক করবো ।

হ্যা এভাবে চেক করা যায়, কিন্তু এটা কি ভালো অ্যাপ্রোচ ? কি হবে যদি অামাদের ১০ টা নিউ ক্যারেক্টার বিল্ড করতে হয় এবং প্রতিটার জন্য ১০  টা করে ফাংশন কল করতে হয়?
তখন 100+ লাইনের কোড করতে যেয়ে ভুল করাটা সময়ের ব্যাপার।

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

অামরা একটা ইন্টারফেস ডিক্লেয়ার করতে পারি এভাবে

ইন্টারফেসের ভেতরে থাকবে শুধু কমন ফাংশনগুলো। ফাংশনের কোন কোডিং বা লজিক না শুধু ফাংশন নেম টাইপ অার প্যারামিটার (অনেকটা প্রোটোটাইপ ডিক্লেয়ার করার মত)।

তো অামাদের ইন্টারফেস তৈরি হয়ে গেল এখন এটাকে হগ রাইডার অার মিনিয়নের জন্য ইম্প্লিমেন্ট  করতে হবে ।

 

এখন অামরা একটা কাজ করি ট্রুপস নামের একটা ক্লাস বানাই অার এর ডিপেন্ডেন্সি হিসেবে অামাদের ইন্টারফেস টাকে সেট করি।

অামরা বেশ গুরুত্বপূর্ণ একটা অংশ শেষ করলাম কিন্তু। এখন যদি এই ট্রুপস কন্সট্রাক্ট করার সময় অামরা হগরাইডার পাস করি সে এক্সেপ্ট করবে অাবার মিনিয়ন পাস করলেও এক্সেপ্ট করবে। অাচ্ছা অাগে ট্রুপস ক্লাসটা সম্পুর্ণ করি

মানে নিউ ট্রুপস বানিয়ে ডিটেইলস ফাংশনটা কল করলেই অামরা একটা ট্রুপসের হেল্থ এবং টার্গেট জানতে পারবো (এখানে PHP_EOL নিউলাইন এর জন্য )।

এখানে ট্রুপসের কন্সট্রাকটরে অামরা কিন্তু ইন্টারফেস পাঠাচ্ছি না অামরা শুধু হগরাইডার বা মিনিয়নের ইন্সট্যান্স পাঠাচ্ছি। এবং এটা অটোম্যাটিক্যালি সেই ইন্সট্যান্সের হেল্থ এবং টার্গেট বলে দিচ্ছে। ব্যাপারটা কিন্তু অনেকটা এ্যাডাপটার বা কনভার্টারের মতই।

যাই হোক অনেক প্যাচাল পারলাম সবশেষে মনে হতেই পারে ইন্টারফেস ব্যাপারটাই মনে হয় একটু ভ্যাজালে। তবে একটু প্রাকটিস করলে কিন্তু ইন্টারফেসেও A+ পাওয়া যায় 😉 ।

যাই হোক এখানে ইন্টারফেসের কোডটা থাকল। অার  রাতের বেলায় পড়ে থাকলে শুভরাত্রি 🙂

Share this post
2 comments

Leave a Comment

Your email address will not be published. Required fields are marked *