אחת הדרכים בהן אנו יכולים לאכוף אנקפסולציה של נתונים הוא באמצעות נגישים ומוטטורים. תפקידם של הגורמים והמוטציות הוא להחזיר ולקבוע את הערכים של מצב האובייקט. בואו ללמוד כיצד לתכנת נגישים ומוטטורים ב ג'אווה. כדוגמה, נשתמש ב- כיתת אדם כאשר המדינה והבנאי כבר הוגדרו:
שיטות אביזר
א אביזר שיטה משמשת להחזרת הערך של שדה פרטי. זה עוקב אחר ערכת שמות המקדימה את המילה "קבל" לתחילת שם השיטה. לדוגמא, בואו נוסיף שיטות גישה לשם פרטי, שמות ביניים ושם משפחה:
שיטות אלה מחזירות תמיד את אותו סוג נתונים כמו השדה הפרטי המתאים שלהן (למשל מחרוזת) ואז פשוט מחזירות את הערך של אותו שדה פרטי.
כעת אנו יכולים לגשת לערכים שלהם באמצעות השיטות של אובייקט אדם:
שיטות מוטציה
שיטת מוטציה משמשת להגדרת ערך של שדה פרטי. זה עוקב אחר ערכת שמות המקדימה את המילה "סט" לתחילת שם השיטה. לדוגמה, נוסיף שדות מוטטור עבור כתובת ושם משתמש:
לשיטות אלה אין סוג החזרה ומקבלים פרמטר שהוא אותו סוג נתונים כמו השדה הפרטי המקביל שלהם. לאחר מכן משתמשים בפרמטר להגדרת הערך של אותו שדה פרטי.
כעת ניתן לשנות את הערכים עבור הכתובת ושם המשתמש בתוך אובייקט האדם:
מדוע להשתמש במנגשים ומוטנטים?
קל להגיע למסקנה שנוכל לשנות את התחומים הפרטיים בהגדרת המעמדות כך שיהיו פומביים ולהשיג אותן תוצאות. חשוב לזכור שאנחנו רוצים להסתיר את נתוני האובייקט ככל האפשר. התוספת חיץ המסופק בשיטות אלה מאפשר לנו:
- שנה את אופן הטיפול בנתונים מאחורי הקלעים.
- הטילו אימות על הערכים שאליהם מוגדרים השדות.
נניח שאנו מחליטים לשנות את אופן אחסון שמות האמצע. במקום מחרוזת אחת בלבד אנו יכולים כעת להשתמש במערך של מיתרים:
היישום בתוך האובייקט השתנה אך העולם החיצון לא מושפע. אופן השימוש בשיטות נשאר זהה:
לחלופין, נניח שהיישום המשתמש באובייקט ה- Person יכול לקבל רק שמות משתמשים עם עשרה תווים לכל היותר. אנו יכולים להוסיף אימות במוטטור של שם המשתמש כדי לוודא ששם המשתמש תואם לדרישה זו:
עכשיו אם שם המשתמש שהועבר למוטטור של שם המשתמש הוא ארוך מעשרה תווים, הוא מקוצץ אוטומטית.