logo

חבילות ג'אווה

חבילות ב-Java הן מנגנון המקיף קבוצה של חבילות משנה וממשקים של מחלקות. החבילות משמשות ל:

  • מנע התנגשויות בשמות על ידי מתן אפשרות לשיעורים עם אותו שם להתקיים בחבילות שונות כמו college.staff.cse.Employee ו-college.staff.ee.Employee.
  • הקל על ארגון איתור ושימוש בממשקי מחלקות ורכיבים אחרים.
  • ספק גישה מבוקרת לחברים מוגנים הנגישים באותה חבילה ולפי מחלקות משנה. חברי ברירת מחדל (ללא מפרט גישה) נגישים רק בתוך אותה חבילה.

על ידי קיבוץ מחלקות קשורות לחבילות, Java מקדמת את עטיפות הנתונים והופכת את הקוד לשימוש חוזר וקל יותר לניהול. פשוט ייבא את המחלקה הרצויה מחבילה כדי להשתמש בה בתוכנית שלך.



יצירת חבילות מותאמות אישית

שלב 1: צור ספרייה שבה אנו יוצרים את החבילות וקבצי ה-Java שלנו.

תכנות mkdir

מבנה java

שלב 2: כעת שנה את הספרייה וצור תיקיה נוספת בתוך התיקיה הראשית



תכנות תקליטורים
mkdir JavaProgramming
תקליטורים JavaProgramming
מערכי mkdir

שלב 3: כעת צור קובץ טקסט ריק וכתוב את קוד ה-Java למטה ואל תשכח לשמור אותו באותו שם כמו הכיתה עם סיומת .java (TwoPointers.java)

כיתת TwoPointers.



Java
package JavaProgramming.arrays; // Main class present inside the package  public class TwoPointers {  public static void main(String[] args) {  System.out.println('Inside the package');  } } 


פֶּתֶק: אל תשכח להוסיף את שם החבילה בתוך קובץ התוכנית.

שלב 4: כעת הפעל את התוכנית עם נתיב התיקייה הגדר

javac srcJavaProgrammingarraysTwoPointers.java

java srcJavaProgrammingarraysTwoPointers.java

תְפוּקָה:

OutputJavaPackages' title=הפעלת תוכנית עם נתיב תיקיה

מבנה תיקיות:

זהו הייצוג החזותי של חבילה מותאמת אישית ב-Java בתמונה למטה. ראשית אנו יוצרים תיקיה בשם Progamming ובתוכה אנו יוצרים חבילה Javaprogramming ולאחר מכן יוצרים תת-חבילה נוספת שנקראת מערכים . לאחר מכן אנו יוצרים בתוכו קובץ Java class שמוצג בתמונה למטה:

PackageInJava1' loading='lazy' title=מבנה תיקיות

עבודה של חבילות Java

מבנה ספריות: שמות חבילות ומבני ספריות קשורים קשר הדוק. לדוגמה, אם שם החבילה הוא college.staff.cse אז שלוש ספריות הן צוות המכללה ו-cse כאשר cse נמצא בתוך הצוות והצוות נמצא בתוך המכללה.

מוסכמות שמות : שמות החבילות נכתבים בסדר הפוך של שמות הדומיין, למשל. org.geeksforgeeks.practice. במכללה האמנה עשויה להיות:

  • college.tech.cse
  • college.tech.ee
  • תולדות האמנות. מכללה

דוּגמָה:

ייבוא ​​java.util.*;

כאן util היא חבילת משנה שנוצרה בתוך חבילת java.  

גישה לשיעורים בתוך חבילה

ב-Java אנו יכולים לייבא מחלקות מחבילה באמצעות אחת מהשיטות הבאות:

1. ייבא מחלקה ספציפית :

ייבוא ​​java.util.Vector;

פעולה זו מייבאת רק את המחלקה Vector מחבילת java.util.

2. ייבא את כל השיעורים מחבילה :

ייבוא ​​java.util.*;

זה מייבא את כל המחלקות והממשקים מחבילת java.util אך לא כולל חבילות משנה.

דוּגמָה: ייבא את המחלקה וקטור

Java
import java.util.Vector; public class Geeks {    public Geeks() {    // java.util.Vector is imported We are able to access it directly in our code.  Vector v = new Vector();    java.util.ArrayList l = new java.util.ArrayList();  l.add(3);  l.add(5);  l.add(7);    System.out.println(l);  }  public static void main(String[] args) {      new Geeks();  } } 

תְפוּקָה
[3 5 7] 

פֶּתֶק:

  • שימוש בחבילת ייבוא.*; מייבא את כל המחלקות בחבילה אך לא מחלקות מחבילות המשנה שלה.
  • כאשר לשתי חבילות יש מחלקות עם אותו שם (למשל java.util.Date ו-my.package.Date) השתמשו בשם המלא כדי למנוע התנגשויות:

ייבוא ​​java.util.Date;

arraylist.sort

ייבוא ​​שלי.חבילה.תאריך;

סוגי חבילות Java

  • חבילות מובנות
  • חבילות מוגדרות על ידי משתמש

1. חבילות מובנות

חבילות אלו מורכבות ממספר רב של מחלקות שהן חלק מג'אווה ממשק API .כמה מהחבילות המובנות הנפוצות בשימוש הן:

  • java.lang : מכיל מחלקות תמיכה בשפה (למשל מחלקות שמגדירות סוגי נתונים פרימיטיביים פעולות מתמטיות). חבילה זו מיובאת אוטומטית.
  • java.io: מכיל מחלקות לתמיכה בפעולות קלט/פלט.
  • java.util : מכיל מחלקות שירות המיישמות מבני נתונים כמו מילון רשימות מקושרות ותמיכה; עבור פעולות תאריך/שעה.
  • java.applet: מכיל שיעורים ליצירת יישומונים.
  • java.aut: מכיל מחלקות להטמעת הרכיבים עבור ממשקי משתמש גרפיים (כמו כפתור ;תפריטים וכו'). 6)
  • java.net: מכיל שיעורים לתמיכה בפעולות רשת.

2. חבילות מוגדרות על ידי משתמש

אלו החבילות המוגדרות על ידי המשתמש.

1. צור את החבילה:

ראשית אנו יוצרים ספרייה myPackage (השם צריך להיות זהה לשם החבילה). לאחר מכן צור את MyClass בתוך הספרייה כשהמשפט הראשון הוא שמות החבילות.

דוּגמָה:

Java
package myPackage; public class MyClass {  public void getNames(String s)  {   System.out.println(s);   } } 


2. השתמש בתוכנית Class in:

כעת נשתמש ב- MyClass שיעור בתוכנית שלנו.

Java
 import myPackage.MyClass; public class Geeks {  public static void main(String args[]) {     // Initializing the String variable with a value   String s = 'GeeksforGeeks';    // Creating an instance of class MyClass in the package.  MyClass o = new MyClass();    o.getNames(s);  } } 


פֶּתֶק: MyClass.java חייב להישמר בתוך ספריית myPackage מכיוון שהוא חלק מהחבילה.  

ייבוא ​​סטטי ב-Java

ייבוא ​​סטטי ב-Java עוסק בפישוט הגישה לחברים סטטיים ומפריד בינה לבין הדיון הרחב יותר על חבילות מוגדרות על ידי משתמש.

יבוא סטטי היא תכונה שהוצגה בשפת התכנות ג'אווה (גרסאות 5 ומעלה) המאפשרת לחברים (שדות ושיטות) המוגדרים במחלקה כציבוריים סטָטִי לשימוש בקוד Java מבלי לציין את המחלקה שבה השדה מוגדר.

דוּגמָה:

Java
import static java.lang.System.*; class Geeks {  public static void main(String args[]) {    // We don't need to use 'System.out' as imported using static.  out.println('GeeksforGeeks');  } } 

תְפוּקָה
GeeksforGeeks 

טיפול בהתנגשויות שמות

כאשר שתי חבילות מכילות מחלקה בעלת אותו שם (למשל java.util.Date ו-java.sql.Date) ציין את שם החבילה המלא כדי למנוע התנגשויות.

ייבוא ​​java.util.*;
ייבוא ​​java.sql.*;
//ואז השתמש במחלקה Date ואז נקבל שגיאת זמן קומפילציה:
תאריך היום; //ERROR-- java.util.Date או java.sql.Date?

המהדר לא יוכל להבין איזו מחלקה Date אנחנו רוצים. ניתן לפתור בעיה זו באמצעות הצהרת ייבוא ​​ספציפית:

כמה מקשים יש למקלדות

ייבוא ​​java.util.Date;
ייבוא ​​java.sql.*;

אם אנחנו צריכים את שתי מחלקות ה-Date אז אנחנו צריכים להשתמש בשם חבילה מלא בכל פעם שאנחנו מכריזים על אובייקט חדש של המחלקה הזו. לְדוּגמָה:

java.util.Date deadLine = new java.util.Date();
java.sql.Date today = new java.sql.Date();

תקשורת אנלוגית

מבנה ספריות ו-CLASSPATH

שמות החבילות תואמים למבנה ספריות. לדוגמה, מעגל מחלקה בחבילה com.zzz.project1.subproject2 מאוחסן כ:

$BASE_DIR/com/zzz/project1/subproject2/Circle.class

  • כָּאן $BASE_DIR מייצג את ספריית הבסיס של החבילה.
  • ה'נקודה' בשם החבילה מתאימה לתת-ספריית מערכת הקבצים.
  • ספריית הבסיס ( $BASE_DIR ) יכול להיות ממוקם בכל מקום במערכת הקבצים.
  • לפיכך יש ליידע את מהדר Java ואת זמן הריצה לגבי המיקום של $BASE_DIR כדי לאתר את המחלקות.
  • זה מושג על ידי משתנה סביבה הנקרא CLASSPATH .
  • CLASSPATH דומה למשתנה סביבה אחר PATH המשמש את מעטפת הפקודה כדי לחפש את תוכניות ההפעלה.

הגדרת CLASSPATH

ניתן להגדיר את CLASSPATH בכל אחת מהדרכים הבאות:

  • CLASSPATH ניתן להגדיר באופן קבוע בסביבה השלבים ב-Windows הוא

עבור אל לוח הבקרה -> מערכת -> מתקדם -> משתני סביבה.

  • בחר 'משתני מערכת' כדי להחיל את ה-CLASSPATH עבור כל המשתמשים במערכת.
  • בחר 'משתני משתמש' כדי להחיל אותו רק על המשתמש המחובר כעת.
  • ערוך או צור CLASSPATH: אם CLASSPATH כבר קיים בחר אותו ולחץ על 'ערוך' או אם הוא לא קיים לחץ על 'חדש'
  • הזן פרטי CLASSPATH: בשדה 'שם משתנה' הזן: 'CLASSPATH' בשדה 'ערך משתנה' הזן את הספריות ואת קבצי ה-JAR מופרדים באמצעות נקודה-פסיק.
  • בשדה 'ערך משתנה' הזינו את הספריות וקובצי ה-JAR מופרדים על ידי נקודה-פסיק. דוּגמָה:

.c:javaprojectclasses;d:tomcatlibservlet-api.jar

  • הנקודה (.) מייצג את ספריית העבודה הנוכחית.
  • כדי לבדוק את ההגדרה הנוכחית של CLASSPATH הפק את הפקודה הבאה:

> הגדר מסלול

ניתן להגדיר את CLASSPATH באופן זמני עבור הפעלת מעטפת CMD המסוימת על ידי הוצאת הפקודה הבאה:

> SET CLASSPATH=.;c:javaprojectclasses;d:tomcatlibservlet-api.jar

במקום להשתמש במשתנה הסביבה CLASSPATH אתה יכול גם להשתמש באפשרות שורת הפקודה -classpath או -cp של הפקודות javac ו-java למשל

> java –classpath c:javaprojectclasses com.abc.project1.subproject2.MyClass3

איור של חבילות מוגדרות על ידי משתמש:  יצירת החבילה הראשונה שלנו: שם הקובץ – ClassOne.java

Java
package package_name; public class ClassOne {  public void methodClassOne()  {  System.out.println('Hello there its ClassOne');  } } 

יצירת החבילה השנייה שלנו: שם הקובץ – ClassTwo.java

Java
package package_one; public class ClassTwo {  public void methodClassTwo()  {  System.out.println('Hello there i am ClassTwo');  } } 

שימוש בשתי החבילות שנוצרו: שם הקובץ – Testing.java

Java
import package_name.ClassOne; import package_one.ClassTwo; public class Testing {  public static void main(String[] args)  {  ClassTwo a = new ClassTwo();  ClassOne b = new ClassOne();  a.methodClassTwo();  b.methodClassOne();  } } 

עכשיו תסתכל על מבנה הספריות של החבילות וגם של קובץ מחלקת הבדיקה:

מבנה ספריות' loading='lazy' title=

גישה לשינויים בהקשר של חבילות

  • פּוּמְבֵּי: חברים עםpublicmodifier נגישים מכל מקום ללא קשר לשאלה אם המחלקה הנגישה נמצאת באותה חבילה או לא .
  • מוּגָן: חברים עם השינוי המוגן נגישים בתוך אותה חבילה במחלקות משנה
  • בְּרִירַת מֶחדָל: חברים ללא שינוי נגישים רק בתוך אותה חבילה
  • פְּרָטִי: חברים עםprivateהשינויים נגישים רק בתוך אותה מחלקה. לא ניתן לגשת אליהם על ידי מחלקות באותן תת מחלקות חבילה או חבילות שונות.