1. पॅकेजेस

सामान्य Java प्रोग्राम्समध्ये मोठ्या संख्येने वर्ग समाविष्ट असतात. किती? हजारो, हजारो. आणि जर आपण हे देखील लक्षात घेतले की प्रोग्राम इतर प्रोग्रामरद्वारे लिहिलेले वर्ग असलेल्या विविध लायब्ररी वापरतात, तर वर्गांची संख्या लाखोंमध्ये सहजपणे मोजली जाऊ शकते!

या सर्व लाखो, किंवा अगदी हजारो वर्गांसाठी अनन्य नावांसह येणे अशक्य आहे.

अर्थात, आम्ही A123आणि सारख्या नावांची कल्पना करू शकतो B345, परंतु जर आपण वर्गाचे चांगले नाव निवडण्याबद्दल बोलत आहोत, जे वर्ग समजणे सोपे करते (उदाहरणार्थ String, स्ट्रिंगसाठी), तर हजारो अद्वितीय नावे तयार करणे देखील खूप आहे. कामाचे.

म्हणूनच Java मध्ये पॅकेज कीवर्ड वापरून वर्गांचे वर्गीकरण करण्याची प्रथा आहे.

Java क्लासेस आणि त्यांची पॅकेजेस संगणकावरील फाईल्स आणि फोल्डर्स सारखीच असतात.

उदाहरणार्थ, जर तुम्हाला तुमच्या काँप्युटरवर 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फोल्डर

Java मध्ये, प्रोग्रामसाठी सर्व वर्ग एकाच फोल्डरमध्ये (आणि सबफोल्डर्स) संग्रहित करण्याची प्रथा आहे. या फोल्डरला सहसा म्हणतात 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
जेबॉस प्रकल्प

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) लिहिणे खूप गैरसोयीचे असते.

म्हणूनच Java ने वर्ग आयात करण्याची क्षमता जोडली आहे .

तुम्ही तुमच्या कोडमध्ये वर्गाचे लहान नाव वापरू शकता , परंतु तुम्ही प्रथम कंपायलरला कळवले पाहिजे की कोणते पूर्ण पात्र वर्गाचे नाव लहान नावाशी संबंधित आहे . तुम्ही आता तुमच्या प्रोजेक्टमध्ये एकाच नावाचे अनेक क्लास लावले तर? किंवा तुमच्याकडे मूळतः एक आहे, परंतु नंतर आणखी 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, तर तुम्ही ते दोन्ही एकाच फाईलमध्ये इंपोर्ट करू शकणार नाही: तुम्हाला त्यापैकी एकासाठी मोठे नाव वापरावे लागेल .

समजा तुमच्या टीममध्ये एक जेन आहे. संप्रेषणाची कोणतीही समस्या नाही, कारण ती कोण आहे हे प्रत्येकाला माहित आहे. परंतु जर तीन जेन्स असतील तर त्यांना वेगळे करण्यासाठी पूर्ण पात्र नावे वापरावी लागतील.

टीप १

तसे, तुम्ही तुमच्या वर्गात बरीच आयात विधाने जोडण्यास खूप आळशी असाल, तर तुम्ही त्याची आळशी आवृत्ती वापरू शकता: विशिष्ट वर्गाच्या नावाऐवजी, तारांकन ठेवा:

import package-name.*;

ते तुम्हाला पॅकेजमधील सर्व वर्गांची लहान नावे वापरण्यास अनुमती देईल .

टीप 2

पॅकेजमधील सर्व वर्ग आपोआप आयात केले जातात, त्यामुळे तुम्हाला त्यांच्यासाठी विधान java.langलिहिण्याची आवश्यकता नाही . importतुम्हाला यापैकी एक वर्ग आधीच माहित असल्याची खात्री आहे: java.lang.String. होय ते खरंय. हा Stringवर्ग आहे जो आपण स्ट्रिंगसह काम करण्यासाठी वापरला आहे.