জাভাঃ IS-A রিলেশন এবং HAS-A রিলেশন

ভূমিকাঃ
চাকরির ভাইভাতে গেলেন, আপনাকে বলা হল IS-A এবং HAS-A রিলেশন কি তা বলে আপনার সামনে বসা বসদের বাধিত করতে। আপনি তো শুনেই তব্দা। এইটা খায় না মাথায় দেয়। হয়ত চাকরির ভাইভাতে এই প্রশ্ন নাও পেতে পারেন, তবে আপনি যদি OCA বা OCP পরীক্ষা দিতে চান, সেখানে অবশ্যই আসবে।
আরেহ ব্যাপার না। আপনি IS-A এবং HAS-A রিলিশনের অনেক কাজ করেছেন শুধু বই এর ভাষায় জানের না, এই যা। ওকে এক মিনিটে সমাধান।
IS-A রিলেশনঃ
IS-A রিলেশনের কনসেপ্ট হচ্ছে Inheritance এর কনসেপ্ট। IS-A দিয়ে বুঝায়, This thing is a type of that thing। যেমনঃ “সব ক্ষারকই ক্ষার”।ওকে ওয়েট, স্যরি।
যেমনঃ
  1. Potato IS-A Vegetable (আহামরি উদাহরণ না, তবে কাজ চলে)
  2. Apple IS-A Food
  3. MBW IS-A Car 
কোডে দেখি - 
public class Car{
}
public class BMW extends Car{
}
IS-A রিলেশন প্রকাশ করার জন্য দুটো কিওয়ার্ড ব্যাবহার করা হয়। Class Inheritance এর ক্ষেত্রে extends এবং Interface Implementation এর ক্ষেত্রে implements

HAS-A রিলেশনঃ
HAS-A রিলেশনশিপ কোনো ক্লাসের রেফারেন্সকে অন্য ক্লাসে ব্যাবহারের উপর ভিত্তি করে করা হয়। অন্য কথা বলা যায়, ক্লাস X HAS-A Y । যদি ক্লাস X তে Y ক্লাসের কোনো রেফারেন্স ভেরিয়েবল থাকে।


যেমনঃ
  1.   A Horse HAS-A Owner
  2.   Human HAS-A Kidney 
তাহলে- 
public class Human{
   private Kidney kidneyRefVar;
}
public class Kidney{
}
তাহলে এই লাইনটি কোডে অনুবাদ করুন।
A Horse IS-A Animal. A Horse HAS-A Owner

সারাংশঃ
IS-A রিলেশনশিপ হয় Base ক্লাস এবং Derived ক্লাসের মধ্যে। যেমনঃ
  • Programmer IS-A Person
  • Manager IS-A Person
HAS-A রিলেশনশিপ হয় দুটি ক্লাসের মধ্যে যেখানে একটি ক্লাসের রেফারেন্স অন্য ক্লাসের মেম্বার হিসেবে থাকবে। যেমনঃ
  • Mobile HAS-A Battery
  • University HAS-A Library
এই পোস্টের পি.ডি.এফ ডাউনলোড করতে চাইলেঃ ডাউনলোড

এ্যালগরিদমঃ বিগ মড (Big Mod)

যেটার জ্ঞান আবশ্যকঃ রিকার্শন।
ছোট মরিচের ঝাল দেখা যাক আজকে-
আপনাকে যদি জিজ্ঞেস করি 1754 % 81 = কি? কি বলবেন? থামেন, ক্যালকুলেটর কই!! ওকে, ক্যালকুলেটরে চেষ্টা করে দেখুন। কি!  ক্যালকুলেটর ফেইল মারছে?? ভেরী গুড।
এই কাজটা Big Mod এর মাধ্যমে খুব সহজে করতে পারি। যেখানে আমরা ছোট্ট একটি Mathematical নোটেশন ব্যাবহার করব। দেখি তাহলে –
(A * B ) % C = ( A % C * B % C ) % C
যেমনঃ-
35 % 3 = (5 * 7) % 3
            = (5 % 3 * 7 % 3 ) % 3
            = (2 * 1) % 3
            = 2
তাহলে দেখিঃ –
1755 % 81 = (17 * 1754) % 81
                            = (17 % 81 * 1754 % 81) % 81
এখন 1754 % 81 = কি?
1754 % 81 = (1727 * 1727) % 81
                           = (1727 % 81 * 1727 % 81) % 81
আবার 1727 % 81 = কি?
1727 % 81 = (17 * 1726) % 81
                           = (17 % 81 * 1726 % 81) % 81


একইভাবে আমরা পাইঃ-
1726 % 81 = (1713 % 81 * 1713 % 81) % 81
1713 % 81 = (17% 81 * 1712 % 81) % 81
1712 % 81 = (176 % 81 * 176 % 81) % 81
176 % 81 = (173 % 81 * 173 % 81) % 81
173 % 81 = (17 % 81 * 172 % 81) % 81
172 % 81 = (17 % 81 * 17 % 81) % 81
17 % 81 = 17

এখন নিচ থেকে ভ্যালূগুলো উপরের Equation গুলোতে বসিয়ে একটু ক্যালকুলেট করলে উত্তর পাওয়া যাবে।

নিচের ছবিটি দেখি এখন –



 * যদি উপরের Equation গুলোর একটিও বুঝতে না পারেন তাহলে আবার দেখুন নিচে যাওয়ার দরকার নেই।

দেখুন আমরা পাওয়ারকে সর্বনিন্ম 1 এ নিয়ে এসেছি (চিত্রে শেষ লাইন দেখুন) এভাবে শেষ লাইন থেকে হিসেব করা মান তার আগের লাইনে বসিয়েছি এবং শেষ পর্যন্ত প্রথম লাইনে ফিরে গিয়েছি।
২ টা ব্যাপার লক্ষ্য করুন, পাওয়ার যখন জোড় ছিল তখন কি করেছি এবং যখন বিজোড় ছিল তখন কি করেছি।

মনেকরি,
base হচ্ছে  = b
power হচ্ছে = p
Divisor হচ্ছে = d;

যখন পাওয়ার বিজোড়, আমরা করেছি,
(b % d * b (p-1) % d ) % d

যখন পাওয়ার জোড়, আমরা করেছি,
(b (p/2) % d * b (p/2) % d ) % d
বা, square( b (p/2) % d ) % d

এই কাজটা আমরা পাওয়ার জিরো হওয়ার আগ পর্যন্ত করেছি। মানে p থেকে 1 পর্যন্ত। তাহলে আমাদের কাজ শেষ হয়ে গিয়েছে কখন? যখন p এর মান জিরো হয়ে গিয়েছে। মানে রিকার্শন ব্রেক হওয়ার কন্ডিশন হচ্ছে এটি, যখন p = 0

আর একটা ব্যাপার দেখুন আমরা লাস্ট স্টেপ থেকে মান তার আগের স্টেপে পাঠিয়ে দিয়েছি।

এখন তাহলে কোড করি –
মনেকরি আমাদের ফাংশনের নামে bigMod যার ৩ টি parameter (b,p,d) আছে –

int bigMod(int b, int p, int d)
{
   if(p == 0 )
      return 1;   
   if( p % 2 != 0 )
   {
      return ( b % d * bigMod( b, p-1, d ) ) % d ;
   }
   else
   {
      return ( square( bigMod( b, p/2, d ) ) ) % d;   
   }
}
int square(int n)
{
   return n*n;
}
তাহলে আমরা এ্যালগরিদম ও কোড দুটোই বুঝতে পেরেছি। ঝটপট তাহলে ১ টি ACM সলভ করে ফেলি।
ACM প্রবলেমঃ 374 - Big Mod
পিডিএফ হিসেবে ডাউনলোড করুনঃ ডাউনলোড