Java

প্যাকেজ পরিচিতি

প্যাকেজঃ

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

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

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

Creating a package:

প্যাকেজ জাভার সোর্চ ফাইলের সর্বোপরে ডিফাইন করা হয়। package  কিওয়ার্ড দ্বারা এটি ডিফাইন করা হয়। package  কিওয়ার্ড এর পর প্যাকেজের নাম দিতে হয়।

package p1;

যদি সোর্চ ফাইলে প্যাকেজ ডিফাইন করা না হয়, তাহলে সেটি একটি ডিফল্ট প্যাকেজ ধরে কাজ করে।

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

এক্সেসঃ

সি++ এর মত জাভাও তিন ধরণের এক্সেস প্রোভাইড করে, যা প্যাকেজের মাধ্যমে আরো শক্তিশালী হয়েছে। পাবলিক, প্রাইভেট, প্রোটেক্টেড।

একই প্যাকেজের মাঝে ক্লাস ৩ ধরণের থাকতে পারে।

সুপারক্লাস, সাবক্লাস(সুপারক্লাসকে ইনহেরিটেড করে) ও ননসাবক্লাস( সুপারক্লাসের মত কিন্তু এটি ইনহেরিটেড নয়)।

একই প্যাকেজের ক্ষেত্রে এক্সেসিকরণঃ

একই প্যাকেজের ৩ ধরণের ক্লাসের ক্ষেত্রে

পাবলিকঃ যে কেউ এক্সেস করতে পারবে।

প্রাইভেটঃ যে ক্লাসে ডিক্লেয়ার করা হয় সেই ক্লাসের মেমবার এক্সেস করতে পারবে।

প্রোটেক্টেডঃ যে কেউ পারবে।

//যদি ৩ টির কোনটিই লিখা না থাকে তাহলে সেটি ডিফল্ট হিসেবে পাবলিক হয়ে থাকে। তবে এটি যে কেই এক্সেস করতে পারবে।

উদাহরণঃ

package1

প্রোটেকশন ক্লাস ৪ টি ভেরিয়েবল ডিক্লেয়ার করে যেখানে পাবলিক, প্রাইভেট , নো মডিফায়ার এবং প্রোটেক্টেড ভেরিয়েবল দেখানো হয়েছে।

এই ক্লাসের সকল মেথোড ভেরিয়েবলগুলোকে কোন বাধা ছাড়াই এক্সেস করতে পারবে।

package2

এটি ডিরাইভ ক্লাস যা প্রোটেকশন ক্লাসকে ইনহেরিট করেছে। এটি প্রোটেকশনের প্রাইভেট ভেলু এক্সেস করতে পারবেনা।

package3

এই ননসাবক্লাস ঠিক উপরের টির মত প্রাইভেট বাদে বাকি গুলো এক্সেস করতে পারবে।

package_main

সুপারক্লাসের জন্যে দুইবার অবজেক্ট ক্রিয়েট হয়েছে তাই তার কন্সট্রাক্টর দুইবার কল হয়েছে

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

বিদ্রঃ অতিরিক্ত জানার জন্যে গুগল এবং বই পড়ার ব্যাপারে উৎসাহী হতে হবে।

শাওন

সি এস ই

৪র্থ সেমিস্টার

IIUC

Leave a Reply

Your email address will not be published.

5 × 4 =