ראשי
פרק 1
פרק 2
פרק 3
פרק 4
פרק 5
פרק 6
פרק 7
פרק 8

פרק 7 - מערכת ג'אווה וחבילות


תוכן הפרק:

מחלקת המערכת - System
packages
הגדרת חבילות ע"י המשתמש
קצת הרגלים



מחלקת המערכת - System

הרבה תכונות של המערכת ניתנות לטיפול ולקבלת מידע עליהם בעזרת מחלקות המערכת של ג'אווה.
למשל: קלט/פלט תיקני (כפי שכבר ראינו), השעה הנוכחית, איסוף "זבל" - Garbage Collector וכו'.
המחלקה Runtime, שהיא אחת ממחלקות המערכת, תחזיר מידע על כמות הזיכרון במערכת, והיא מיועדת גם להרצת תוכניות כתהליכים נפרדים.
מחלקת המערכת העיקרית היא, בכל אופן, מחלקת System.
System משמשת כמתווך בין תוכנית הג'אווה לסביבת הריצה במכונה הוירטואלית. לא ניתן להגדיר עצמים ממנה - ולכן נשתמש בה תמיד כמחלקה.
שימוש במחלקה ע"מ לקבל מידע על המערכת יעשה, למשל, ע"י קריאה לפונקציה ( )getProperty.

להלן התכונות העיקריות הניתנות לקריאה ע"י המערכת:

תכונה התשובה שהפונקציה ( )getProperty תחזיר
os.name שם מערכת ההפעלה
os.version גרסת מערכת ההפעלה
os.arch ארכיטקטורת מערכת ההפעלה
user.dir ספריית המשתמש הנוכחית
user.home ספריית הבית של המשתמש
user.name שם החשבון של משתמש
file.separator התו שמפריד שמות קבצים וספריות. בד"כ: "/" או "\"
line.separator התו שמפריד שורות
path.separator התו שמפריד בהגדרת המסלול של הקובץ. למשל: ";"
java.version מספר הגירסה הנוכחית של java
java.home הספריה בה הותקנה java

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

;("String osname = System.getProperty ("os.name

למעלה

ספריות ג'אווה וחבילות - packages

כפי שכבר הזכרנו בקצרה, כל המחלקות בג'אווה מאורגנות ביחידות נפרדות, הנקראות חבילות - packages. חבילה היא שם שניתן לאוסף משותף של מחלקות. היא מגדירה מרחב שמות (namespace) שאליו ישתייכו כל המחלקות. כל מחלקה שייכת לחבילה כלשהי. ניתן בכל מחלקה ליצור עצמים משאר המחלקות שבחבילה ולהתיחס לשאר המחלקות, מאחר והן באותו מרחב שם, מבלי לבצע יבוא של המחלקה (import).

מבנה היררכי ומבנה הספריות

במערכות הפעלה מבוססות windows קיימת התאמה בין שם החבילה למיקום שלה במערכת. למשל, החבילה java.util תהיה ממוקמת בספריה java\util במערכת ההפעלה, ובהתאם java.applet.Applet תהיה ממוקמת בספריה java\applet\Applet (כמובן שבפועל המיקום האמיתי קצת שונה - בד"כ תחת עוד כמה ספריות - לצורך נוחות).

מרחב השמות (namespace)

התיחסות למחלקה ספציפית תהיה ע"י קריאה לחבילה שבה נמצאת המחלקה, התו "." , וקריאה למחלקה עצמה. לדוגמא, המחלקה URL נמצאת בחבילה java.net, לכן שמה המלא יהיה java.net.URL.

כדי להתייחס למחלקה יש שתי אפשרויות:

  1. שימוש בשם המחלקה המלא, לדוגמא:

  2. יבוא (import) של המחלקה בשמה המלא, או של כלל המחלקות בחבילה, ושימוש בשם המחלקה:
    או בצורה המכלילה:

    כשהסימן * מיבא את כל המחלקות שבחבילה (lang, במקרה הזה) אבל לא את המחלקות שנמצאות בתוך חבילה פנימית, שנמצאת בתוך החבילה שיבאנו.


למעלה

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

כל מחלקה משוייכת לחבילה כלשהי. לכן המשתמש יכול להגדיר את מחלקותיו כשייכות לחבילה כלשהי, או להשאיר למהדר את העבודה ואז מחלקות המשתמש יוגדרו, בברירת מחדל, לחבילה חסרת שם (unnamed package). הגדרת חבילה תעשה ע"י המילה השמורה package בתחילת הקובץ שבו יוגדרו המחלקות.
לדוגמא:

כל המחלקות בקובץ ישויכו לחבילה Package.


למעלה

קצת הרגלים

נהוג להגדיר חבילות פרטיות שיצרנו עפ"י שם האתר של החברה, בסדר הפוך. לדוגמא, אם נרצה ליצור חבילה מתמטית פרטית, של החברה שלנו ששמה MathForStudent, ומתעסקת ביישומים מתמטיים ספציפיים. כדי למנוע התנגשיות עם חבילות מתמטיות של חברות אחרות, נקרא לחבילה ע"ש האתר של החברה בסדר הפוך. כלומר, אם לאתר קוראים MFS.com , לחבילה נקרא בהתאם:

;package com.MFS.Math
ונמקם את הספריה בנתיב:
com\MFS\Math
שימוקם בשדה הנתיבים של הספריות של ג'אווה.


למעלה