
private, ניגשים אליהם דרך getter ו-setter, ומוסיפים ולידציה בתוך ה-setter. כך המבנה של האובייקט נשמר, והנתונים נכנסים רק בדרך מבוקרת.private, כך שקלאס חיצוני לא יכול לגשת אליהם ישירות. זה נקרא encapsulation.myCar.setLicenseNumber(...). כך הקוד מכריח מעבר דרך מתודה, והמתודה יכולה לבדוק את הערך.invalid here.this מתייחס לשדה של המופע הנוכחי. הצד השמאלי של ההשמה הוא השדה, והצד הימני הוא הערך שנשלח מבחוץ.private - מגביל את הגישה לשדה לתוך הקלאס בלבד.this.year - השדה של המופע הנוכחי.הטקסט המלא של הדקות הראשונות בהרצאה «classes - חלק 2» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום, בסרטון הקודם דיברנו על קלאסים בג'אווה, קלאס בג'אווה, ובשיעור הקרוב אנחנו נמשיך ונעמיק בנושא הזה.
דיברנו מה הם קלאס, מהו קלאס בג'אווה, בשפת ג'אווה יש לנו שני סוגים של קלאסים, קלאסים שמכילים מתודות סטטיות, שזה דומה לשפות סקריפט פשוטות, ויש לנו את הקלאס שלקוח מהעולם של אובג'קט אוריינטד, מונחי העצמים, שבעצם קלאס מדמה לנו סוג של טמפלייט, סוג של איזשהו מודל שממנו
אנחנו ניצור הרבה מופעים, הרבה אינסטנט של אותו מופע. נתנו דוגמא את המכונית, במקום ליצור כל פעם מחדש מכונית ולהגדיר לה שיש לה ארבע גלגלים ומנוע ודלתות ושנת ייצור ומספר רישוי וכדומה, אמרנו בעצם פעם אחת ניצור אותה ושאר הפעמים פשוט נשתמש במודל הזה בטמפלייט על מנת ליצור שוב ושוב מכוניות שונות ואחרות
לכל אחד ואחד לי לשכנים שלי לחברים שלי לכל אחד תהיה אוטו אבל הבסיס יהיה אותה טמפלייט של מכונית שאנחנו יוצרים ממנו אותו דבר אפשר להגיד על הרבה דברים בעולם האמיתי בכל בית יש לפחות דלת אחת חלונות חשמל ועוד דברים ובעצם מה שמשתנה בין כל בית לבית זה הגודל שלו המיקום שלו מספר החדרים ועוד כאלה וכאלה דברים אבל אפשר להשתמש בדוגמת
הבית גם כדוגמת טובה למה זה קלאס שהוא קלאס דינמי בג'אווה שהוא סוג של טמפלייט אמרנו למה אנחנו צריכים דינמיק מתודס אנחנו רוצים להפעיל מתודות על אותו מופע על אותו על אותו אינסטנט שאנחנו יוצרים והיום אנחנו נמשיך בנושא הקלאסים private variables למה אנחנו משתמשים בפרייבט במילת מפתח פרייבט שאומרת פרטי מבחינת המשתנים ונמשיך הלאה לדיס גטר
סטר קלאסס אז בואו נראה בואו נתחיל נחזור אל הדוגמה שעשינו פעם קודמת בשיעור הקודם יצאנו בעצם מתחת לפקדג' פרקטיס שלוש יצרנו שני קלאסים קלאס אחד הוא קלאס הרצה הוא כולל בתוכו את הפאבליק סטטיק וויידמן ממנו אני יכול לבצע הרצה להריץ את הקלאס ובעצם הוא משתמש בעצם באובייקט שיצרתי שהוא car object וממנו יצרתי שני אינסטנטים my car וyosi car אבל
שניהם לקוחים מאותו דבר מה שמבדיל ביניהם זה אותו license license number שאיזנתי ב-1, 1, 2, 3 ובשני 4, 5, 6 וזה בעצם יצר שני מופעים והפגתי על שניהם את המתודה הדינמית דרייבינג וכל אחת מהם עשתה פעולה על האינסטנט שלה, אחת עשתה על מייקאר והשני עשתה על יוסיקאר אבל היא הפעילה נתונים אחרים בגלל שבעצם ב-run time, בזיכרון של הריצה היו שני מופעים של
מייקאר שנוצרו מהטמפלייט car object. בוא נשים לב שאנחנו פה עשינו הזנה ל-license number, License Number אם אני הולך ל-Car Object אני רואה פה על ידי לחיצת קונטרול ולחיצה על האובייקט אני מגיע ישירות לשם על ידי ה-Car Object אני רואה שיש לי פה את ה-String Model, String Ear,
String License Number זה בדוגמה שלנו השדות שהחלטנו שיאפיינו את המודל את הטמפלייט של מכונית שיצרנו. אבל שימו לב שקבענו אותם כפרייבט חלק מהגדרות שג'אווה זה encapsulation זאת אומרת היכולת שלנו לפנות לאיברים של אובייקט רק דרך מתודות ולא ישירות לשם כך אנחנו
נשתמש במילה private ואז אנחנו הופכים את ה-private string license number אנחנו בעצם פי קטנה אנחנו אומרים שהיא license number הוא פרטי הוא לא ניתן לגישה מקלאסים חיצוניים כגון קלאס הערצה שיצרנו קודם אז אם אני הולך למעין אחר שעשיתי סייל אני רואה שיש לי פה הודעת שגיאה אין לי דרך להגיע ללייסנס נאמבר מה שהג'אווה אומר לי
בעצם הוא אומר לי תיצור איזושהי מתודה באובייקט שלך לקאר אובייקט שבה אתה מאפשר הזנה של נתון לאותו אינסטנט לאותו לייסנס נאמבר שאתה יצרת אז בעצם מה אנחנו יכולים לעשות האקליפס נותן לנו את האופציה לעשות מקש ימני source ואני יכול לעשות generate getter and setter מה זה אומר זה אומר שאני יכול להגדיר מתודות
האקליפס עוזר לי שמאפשרות לי גם למשוך את הנתון וגם לעשות הזנה לנתון של אותו אינסטנט אז אם אני מסמן את הכל ולוחץ אוקיי בעצם התווספו לי כל המתודות של הגטר וסטר שהגט זה לקבל את המספר והסט זה להזין מספר, תכף נראה איך אנחנו משתמשים בזה, בואו נחזור רק איך עשינו את זה, יש לי פה את המתודה שלנו שיצרנו,
זה הפעולה שיצרנו ואז הוספנו את הגטר וסטר איך עשינו את זה, קודם כל אנחנו צריכים לקבוע את השדות של אותו טמפלייט שלנו, אותו אובייקט שלנו ואז עשינו מקש ימני או ללכת source ואנחנו יכולים ללכת פה ולהגיד לו generate getter and setter והוא כותב לנו שכבר עשינו את זה הוא לא מאפשר לנו אבל עוד פעם דרך הדרך הראשונה מכ"ש ימני source ו-generate
getter and setter אוקיי אז יש לנו את זה ואנחנו יכולים עכשיו לגשת מקלאס חיצוני לנתונים האלה ואיך בואו נראה איך אנחנו עושים את זה אם עשיתי קודם mycar license license number 123 אז הפעם אני לא יכול לעשות את זה אני צריך לעשות להשתמש בסטר שלי אני לוחץ נקודה ואז נפתח לי כל המתודות של האינסטנט
שלוקחות מהטמפלייט ואנחנו יכולים להגיד set license number אוקיי עכשיו למה אתם שואלים את עצמכם למה הג'אווה מכריח אותנו לעשות את זה בעצם למה הוא לא מאפשר לנו בעצם להמשיך לעשות כמו בדרך הראשונה זאת אומרת הג'אווה מבקש שאנחנו נעשה ולידציה ולא נפנה ישירות לשדות של קלאס מסוים זה חלק מהיסודות של הכתיבה הנכונה ולכן מבחינתו אי
אפשר לעשות גישה ישירה כמובן שזה מה שנקרא design pattern ולא מחייב מבחינת הקוד היינו יכולים להמשיך לפנות אליהם כפאבליק, לשנות אותה פרייבט לפאבליק או פרוטקטד, אנחנו נדבר על המילים האלה מה הן מייצגות ולהמשיך להזין נתונים בצורה כמו שעשינו בהתחלה אבל הדרך הנכונה זה לעשות
גטר אנד סטר אייטם בעזרת תפריט סורס של האקליפס ואז להזין את הנתונים, אם אני אריץ את זה עכשיו אז אנחנו רואים פה מייקאר, סליחה, טיירסיקאר, אנחנו רואים שבעצם השגנו את אותה תוצאה, אבל עברנו דרך המתודה שלה, דרך המתודה שלה, דרך המתודה הנכונה,
ובעצם קיבלנו את אותה תוצאה, עשינו שני אינסטנטים של קארס, אחד קראנו לאינסטנט מייקאר, השני קראנו יוסי קאר, ואחד קיבל license ID 123, והשני 456, בואו ניתן עוד דברים לדוגמה נעשה סטר למה היה לנו שם בוא נראה קונטרול v נקודה סט ואני יכול לעשות סט מודל
ואני אקרא לזה אונדה ואני אעשה אותו דבר פה נוסיקה נקודה סט מודל נקרא לזה פיאט ואני יכול לעשות את year ואני יכול לכתוב 2018 אוקיי הוא מקבל סטרינג ולכן אני צריך לכתוב סטרינג פה וגם פה אני אעשה אותו דבר הסדר לא משנה מבחינת הפעולה את year ואני אתן לו year שזה אני אתן לו 2017 דבר שאני יכול לעשות בעזרת השיטה הזאת של הגטר
וסטר על ידי זה שעיצבתי את הפילדים האלה בפרייבט ואני מחייב מעבר דרך המתודות, אני יכול לוודא שהמספר שניתן לי הוא חוקי, זאת אומרת אני יכול להגיד שאם השנה היא לא