1. প্যাকেজ

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

এই লক্ষ লক্ষ বা এমনকি হাজার হাজার শ্রেণীর জন্য অনন্য নাম নিয়ে আসা সবই কিন্তু অসম্ভব।

অবশ্যই, আমরা A123এবং এর মতো নামগুলি কল্পনা করতে পারি B345, কিন্তু যদি আমরা একটি ভাল শ্রেণির নাম বেছে নেওয়ার বিষয়ে কথা বলি, যা ক্লাসটি বোঝা সহজ করে তোলে (যেমন Stringস্ট্রিংগুলির জন্য), তাহলে এমনকি হাজার অনন্য নাম তৈরি করাও অনেক বেশি। কাজ এর.

এই কারণেই জাভাতে প্যাকেজ কীওয়ার্ড ব্যবহার করে ক্লাসগুলিকে প্যাকেজে গোষ্ঠীভুক্ত করার প্রথা রয়েছে।

জাভা ক্লাস এবং তাদের প্যাকেজগুলি কম্পিউটারে ফাইল এবং ফোল্ডারগুলির মতোই।

উদাহরণস্বরূপ, আপনি যদি আপনার কম্পিউটারে 10টি নথি সংরক্ষণ করতে চান তবে আপনি সম্ভবত সেগুলিকে একটি ফোল্ডারে রাখবেন৷ কিন্তু যদি আপনার হাজার হাজার নথি থাকে (উদাহরণস্বরূপ, একটি কোম্পানির সমস্ত নথির সংগ্রহস্থল)?

হাজার হাজার নথি সংরক্ষণ করার জন্য, একটি সমাধান হল ভাল বর্ণনামূলক নাম সহ একাধিক স্তরের ফোল্ডার তৈরি করা। এবং তারপর একেবারে শেষ স্তরে একটি ফোল্ডারে, সেই নির্দিষ্ট ফোল্ডারের সাথে সম্পর্কিত নথিগুলি সংরক্ষণ করুন। নথিগুলির জন্য ভাল বর্ণনামূলক নামগুলিও ক্ষতি করে না।

আসলে, আমরা জাভাতে ক্লাসের জন্য এই সব করি।

ক্লাস ধারণকারী ফাইলগুলি বিভিন্ন ডিরেক্টরিতে (ফোল্ডার) সংরক্ষণ করা হয় এবং ক্লাসের ফোল্ডারের সমস্ত সাবফোল্ডার সহ পুরো নামটি প্যাকেজের নাম। উদাহরণ:

ফাইলের পাথ প্যাকেজের নাম শ্রেণির নাম
\com\codegym\tasks\Solution.java
com.codegym.tasks
Solution
\com\io\FileInputStream.java
com.io
FileInputStream
\java\util\ArrayList.java
java.util
ArrayList

ফোল্ডারের নামের বিপরীতে, প্যাকেজ নামগুলি একটি বিন্দুকে বিভাজক হিসাবে ব্যবহার করে। অন্য কথায়, ফোল্ডারটি প্যাকেজের \com\codegym\tasks\সাথে মিলে যায় com.codegym.tasks


2. srcফোল্ডার

জাভাতে, একটি প্রোগ্রামের জন্য সমস্ত ক্লাস একটি একক ফোল্ডারে (এবং সাবফোল্ডার) সংরক্ষণ করার প্রথা রয়েছে। এই ফোল্ডারটিকে সাধারণত বলা হয় src( উৎসের জন্য সংক্ষিপ্ত )।

এই ফোল্ডারটিকে প্রজেক্ট রুট (বা সোর্স রুট ) বলা হয় এবং সমস্ত প্যাকেজ পাথ এর সাথে আপেক্ষিক। উদাহরণ:

ফোল্ডার প্যাকেজের নাম
c:\projects\data\my\src\com\codegym\tasks\
com.codegym.tasks
d:\files\git\data\project\src\com\codegym\tasks\
com.codegym.tasks

এই পরিস্থিতিতে, প্রোগ্রামাররা এমন কিছু বলে যে "আমাদের নামে একটি প্রকল্প আছে my, যা ফোল্ডারে অবস্থিত c:\projects\data" বা "আমাদের একটি প্রকল্প আছে project, যা ফোল্ডারে অবস্থিত d:\files\git\data"

সর্বদা প্যাকেজগুলিতে ক্লাস করা ভাল এবং সরাসরি রুট ফোল্ডারে না ( src. যদি আপনার কয়েকটি ক্লাস থাকে তবে এটি কোনও সমস্যা উপস্থাপন করে না। কিন্তু যখন অনেকগুলি ক্লাস থাকে, তখন বিভ্রান্ত হওয়া খুব সহজ। তাই , সবসময় শুধুমাত্র প্যাকেজে আপনার ক্লাস তৈরি করুন।

জাভাতে, ক্লাস এবং প্যাকেজগুলির অর্থপূর্ণ নাম দেওয়ার প্রথা রয়েছে। অনেক কোম্পানি তাদের নিজস্ব লাইব্রেরি প্রকাশ করে (ক্লাসের একটি সেট) এবং, বিভ্রান্তি এড়াতে, তারা প্যাকেজের নামের সাথে কোম্পানি/ওয়েবসাইট/প্রকল্পের নাম অন্তর্ভুক্ত করে:

প্যাকেজের নাম কোম্পানি/প্রকল্পের নাম
org.apache.common
org.apache.tomcat
org.apache.util
অ্যাপাচি প্রকল্প
com.oracle.jdbc
ওরাকল কোম্পানি
java.io
javax.servlet
ওরাকল কোম্পানি, জাভা প্রকল্প
com.ibm.websphere
IBM কোম্পানি, WebSphere প্রকল্প
com.jboss
JBoss প্রকল্প

3. ফাইলের বিষয়বস্তু

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

package package-name;

public class ClassName
{

}

প্যাকেজের নাম অবশ্যই ফোল্ডারের নামের সাথে মিলবে এবং ফাইলের নাম অবশ্যই পাবলিক ক্লাস নামের সাথে মিলবে।

আপনার যদি একটি ফাইল থাকে তবে এতে এটি থাকা উচিত:...\src\com\project\Service.java

package com.project;

public class Service
{

}

4. ক্লাস আমদানি করা

ক্লাসের নাম এবং প্যাকেজের নাম যাকে ক্লাসের সম্পূর্ণ যোগ্য নাম বলা হয় ।

উদাহরণ:

সম্পূর্ণ যোগ্য নাম প্যাকেজের নাম শ্রেণির নাম
java.io.FileInputStream
java.io
FileInputStream
java.lang.String
java.lang
String
java.util.ArrayList
java.util
ArrayList
org.apache.tomcat.Servlet
org.apache.tomcat
Servlet
Cat
কোনটি
Cat

ভাল খবর:

সম্পূর্ণরূপে যোগ্য শ্রেণীর নাম একটি প্রকল্পের মধ্যে সর্বদা অনন্য। সর্বোপরি, আপনি একটি একক ফোল্ডারে একই নামের দুটি ফাইল তৈরি করতে পারবেন না।

খারাপ খবর:

সম্পূর্ণরূপে যোগ্য শ্রেণীর নাম সাধারণত হয় দীর্ঘ বা খুব দীর্ঘ হয়। এবং প্রতিবার কোডে একটি দীর্ঘ নাম (উদাহরণস্বরূপ java.util.ArrayList) লেখা খুবই অসুবিধাজনক।

এজন্য জাভা ক্লাস আমদানি করার ক্ষমতা যুক্ত করেছে ।

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

আপনার কোডে একটি ছোট শ্রেণীর নাম ব্যবহার করতে, আপনাকে নিম্নলিখিত গঠন যোগ করতে হবে:

import fully-qualified-class-name;

এই ঘোষণাটি অবশ্যই ঘোষণার ঠিক পরে, ক্লাসের একেবারে শুরুতে যোগ করতে হবে package

উদাহরণ:

package com.codegym.tasks.task01;

import java.util.Scanner;
import com.test.helper.special.ArrayList;

public class Solution
{
   public static void main(String[] args)
   {
     Scanner console = new Scanner(System.in);
     ArrayList list = new ArrayList();
   }
}

আমরা দুটি শ্রেণী ( এবং ) আমদানি করেছি , তাই আমরা আমাদের কোডে তাদের ছোট নাম ব্যবহার করতে পারি। আর কম্পাইলার জানবে কোন ক্লাসে ব্যবহার করতে হবে।java.util.Scannercom.test.helper.special.ArrayList

এবং এখানে একই কোড দেখতে কেমন হবে যদি আমরা ব্যবহার না করতাম import:

package com.codegym.tasks.task01;

public class Solution
{
   public static void main(String[] args)
   {
     java.util.Scanner console = new java.util.Scanner(System.in);
     com.test.helper.special.ArrayList list = new com.test.helper.special.ArrayList();
   }
}

যাইহোক, যদি আপনার প্রকল্পের নাম দুটি ক্লাস থাকে Scanner, আপনি একই ফাইলে উভয়ই আমদানি করতে সক্ষম হবেন না: আপনাকে তাদের একটির জন্য দীর্ঘ নাম ব্যবহার করতে হবে ।

ধরা যাক আপনার দলে একজন জেন আছে। কোন যোগাযোগ সমস্যা নেই, যেহেতু সবাই জানে সে কে। কিন্তু যদি তিনটি জেন ​​থাকে, তাহলে তাদের আলাদা করার জন্য সম্পূর্ণ যোগ্য নাম ব্যবহার করতে হবে।

নোট 1

যাইহোক, আপনি যদি আপনার ক্লাসে প্রচুর আমদানি বিবৃতি যোগ করতে অলস হন তবে আপনি এর অলস সংস্করণ ব্যবহার করতে পারেন: একটি নির্দিষ্ট শ্রেণীর নামের পরিবর্তে, একটি তারকাচিহ্ন রাখুন:

import package-name.*;

এটি আপনাকে প্যাকেজের সমস্ত ক্লাসের সংক্ষিপ্ত নাম ব্যবহার করার অনুমতি দেবে ।

নোট 2

প্যাকেজের সমস্ত ক্লাস স্বয়ংক্রিয়ভাবে আমদানি করা হয়, তাই আপনাকে তাদের জন্য java.langএকটি বিবৃতি লিখতে হবে না । importআপনি ইতিমধ্যে এই ক্লাসগুলির মধ্যে একটি সম্পর্কে নিশ্চিত: java.lang.String. হ্যা, তা ঠিক. এটি এমন একটি Stringক্লাস যা আমরা স্ট্রিং নিয়ে কাজ করার জন্য ব্যবহার করেছি।