אנקפסולציה בג'אווה - כיצד לשלוט ב- OOP עם אנקפסולציה?



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

תכנות מונחה עצמים או הידוע יותר בשם OOPs הוא אחד מעמודי התווך העיקריים של Java שמינף את כוחו וקלות השימוש בו. כדי להיות מפתח ג'אווה מקצועי, עליך לקבל שליטה ללא רבב על השונים כמו , הַפשָׁטָה אנקפסולציה ופולימורפיזם. באמצע מאמר זה, אתן לך תובנה מלאה לאחד המושגים החשובים ביותר של OOP, כלומר אנקפסולציה בג'אווה ואיך היא מושגת.

להלן הנושאים עליהם אדבר במאמר זה:





אתה יכול גם לעבור את ההקלטה הזו של שם תוכלו להבין את הנושאים בצורה מפורטת עם דוגמאות.



לג'אווה יש מערכת יחסים

מבוא לקפסולציה

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

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



אנקפסולציה - אנקפסולציה בגניתן להשיג אנקפסולציה בג'אווה על ידי:

  • הכרזת המשתנים של הכיתה כפרטית.
  • מתן שיטות ציבור וקבוצות גטרים לשינוי והצגת ערכי המשתנים.

עכשיו, בואו נסתכל על הקוד כדי להבין טוב יותר את הקפסולציה:

מחלקה ציבורית תלמיד {פרטי שם מחרוזת ציבורי מחרוזת getName () {return name} public void setName (שם מחרוזת) {this.name = name}} class מבחן {public static void main (String [] args) {Student s = Student () s.setName ('הארי פוטר') System.out.println (s.getName ())}}

כפי שניתן לראות בקוד לעיל, יצרתי תלמיד בכיתה שיש לו פרטי שֵׁם . לאחר מכן, יצרתי גטר וקובע כדי לקבוע ולקבוע את שם התלמיד. בעזרת שיטות אלה, כל מחלקה המעוניינת לגשת למשתנה השם צריכה לעשות זאת בשיטות גטר וסתר אלה.

עכשיו בואו נראה דוגמה נוספת ונבין את אנקפסולציה לעומק. בדוגמה זו, מחלקת המכוניות כוללת שני שדות - name ו- topSpeed. כאן, שניהם מוכרזים כפרטיים, כלומר לא ניתן לגשת אליהם ישירות מחוץ לכיתה. יש לנו כמה שיטות גטר וסתר כמו getName, setName, setTopSpeed ​​וכו ', והן מוכרזות כציבוריות. שיטות אלה נחשפות ל'גורמים חיצוניים 'וניתן להשתמש בהן לשינוי ואחזור נתונים מאובייקט Car. יש לנו שיטה אחת להגדיר את המהירות העליונה של הרכב ושתי שיטות גטר לאחזור ערך המהירות המרבי ב- MPH או KMHt. אז בעצם, זה מה שהקפסולציה עושה - זה מסתיר את היישום ונותן לנו את הערכים שאנחנו רוצים. עכשיו, בואו נסתכל על הקוד למטה.

חבילה אדוריקה מחלקה ציבורית מכונית {פרטי שם מחרוזת כפול פרטי topSpeed ​​רכב ציבורי () {} ציבור מחרוזת getName () {return name} public void setName (שם מחרוזת) {this.name = שם} public void setTopSpeed ​​(speedMPH כפול) {topSpeed = speedMPH} פעמיים פעמיים getTopSpeedMPH () {return topSpeed} פעמיים פומבי getTopSpeedKMH () {return topSpeed ​​* 1.609344}}

כאן, התוכנית הראשית יוצרת אובייקט רכב עם שם נתון ומשתמשת בשיטת הקובע כדי לאחסן את המהירות הגבוהה ביותר למופע זה. על ידי כך אנו יכולים להשיג את המהירות בקלות ב- MPH או ב- KMH מבלי לדאוג לאופן ההמרה של המהירות בשיעור רכב.

חבילה Edureka public class דוגמא {public static void main (String args []) Car car = new Car () car.setName ('Mustang GT 4.8-liter V8') car.setTopSpeed ​​(201) System.out.println (car. getName () + 'המהירות הגבוהה ביותר ב- MPH היא' + car.getTopSpeedMPH ()) System.out.println (car.getName () + 'המהירות העליונה ב- KMH היא' + car.getTopSpeedKMH ())

סo, כך ניתן להשיג אנקפסולציה בג'אווה. עכשיו, בואו נתקדם הלאה ונראה מדוע אנו צריכים אנקפסולציה.

מדוע אנו צריכים אנקפסולציה בג'אווה?

אנקפסולציה חיונית ב- Java מכיוון ש:

  • הוא שולט בדרך הנגישות לנתונים
  • משנה את הקוד בהתאם לדרישות
  • עוזר לנו להשיג זוג רופף
  • משיג את הפשטות של היישום שלנו
  • זה גם מאפשר לך לשנות את החלק של הקוד מבלי לשבש פונקציות או קוד אחרים הקיימים בתוכנית

כעת, בואו ניקח בחשבון דוגמא קטנה שממחישה את הצורך בקפסולה.

מחלקה תלמיד {int id שם מחרוזת} מחלקה ציבורית הדגמה {public static void main (String [] args) {Student s = new Student () s.id = 0 s.name = '' s.name = null}}

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

אז אלה היו מספר המצביעים המתארים את הצורך של אנקפסולציה. עכשיו, בואו נראה כמה יתרונות של אנקפסולציה.

היתרונות של אנקפסולציה

    • הסתרת נתונים: כאן, למשתמש לא יהיה מושג לגבי היישום הפנימי של הכיתה. אפילו המשתמש לא יהיה מודע לאופן שבו המחלקה שומרת ערכים במשתנים. הוא / היא רק יהיה מודע לכך שאנחנו מעבירים את הערכים לשיטת קביעה ומשתנים מתחילים לערוך אותו.
    • גמישות מוגברת: כאן אנו יכולים להפוך את המשתנים של הכיתה לקריאה בלבד או כתיבה בלבד בהתאם לדרישתנו. אם ברצונך להפוך את המשתנים לקריאה בלבד, עלינו להשמיט את שיטות הקובע כמו setName (),setAge() וכו 'או אם ברצוננו להפוך את המשתנים לכתיבה בלבד, עלינו להשמיט את שיטות ה- get כמו getName (), getAge () וכו' מהתוכנית לעיל.
    • שימוש חוזר: זה גם משפר את השימושיות מחדש וקל לשינוי עם דרישות חדשות.

כעת, לאחר שהבנו את יסודות הקפסולציה, בואו נצלול לנושא האחרון של מאמר זה ונבין את אנקפסולציה בפירוט בעזרת דוגמה בזמן אמת.

דוגמה בזמן אמת לקפסולציה

הבה נבחן דוגמה לטלוויזיה ונבין כיצד פרטי יישום פנימיים מוסתרים בפני המעמד החיצוני.בעיקרון, בדוגמה זו, אנו מסתירים נתוני קוד פנימיים כלומר מעגלים מהעולם החיצוני על ידי הכריכה. עכשיו ב , ניתן להשיג זאת בעזרת משתני גישה. מתכני גישה מגדירים את הגישה או הרמה של מחלקה, משתני בנאים וכו '. כפי שניתן לראות בקוד שלהלן, השתמשתי בשינוי גישה פרטי כדי להגביל את רמת הגישה של הכיתה. משתנים המוצהרים כפרטיים נגישים רק בכיתת הטלוויזיה.

מעמד ציבורי טלוויזיה {רוחב כפול פרטי פרטי כפול פרטי כפול פרטי גודל מסך פרטי מקסימום נפח הדפסה נפח נפח כוח בוליאני פרטי טלוויזיה ציבורית (רוחב כפול, גובה כפול, מסך כפול גודל) {this.width this.height this.screenSize = ScreenSize} ערוץ כפול ציבורי (int channel) {switch (channel) {case1: return 34.56 case2: return 54.89 case3: return 73.89 case1: return 94.98} return 0} public int reduceVolume () {if (0 volume) volume ++ return volume}} test test {public static void main (String args []) {Television t = Television new (11.5,7,9) t.powerSwitch () t.channelTuning (2) t.decreaseVolume () t.increaseVolume () television. // משליך שגיאה כמשתנה הוא פרטי ולא ניתן לגשת אליו מחוץ לכיתה}}

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

ההבדל בין תואר שני לתואר שני

זה מביא אותנו לסוף מאמר זה בנושא 'אנקפסולציה בג'אווה'. מקווה, מצאת את זה אינפורמטיבי וזה עזר בהוספת ערך לידע שלך. אם ברצונך ללמוד עוד על Java, תוכל לעיין ב-

כעת לאחר שהבנתם 'מהי אנקפסולציה בג'אווה', בדקו את מאת אדוריקה, חברת למידה מקוונת מהימנה עם רשת של יותר מ -250,000 לומדים מרוצים הפרוסים ברחבי העולם. קורס ההכשרה וההסמכה של Java J2EE ו- SOA של אדוריקה מיועד לסטודנטים ואנשי מקצוע שרוצים להיות מפתח Java. הקורס נועד לתת לך יתרון לתכנות ג'אווה ולהכשיר אותך למושגי ג'אווה מרכזיים ומתקדמים יחד עם מסגרות ג'אווה שונות כמו Hibernate & Spring.

יש לך שאלה עבורנו? אנא הזכיר זאת בקטע ההערות בבלוג 'אנקפסולציה בג'אווה' ונחזור אליך בהקדם האפשרי.