PracticU

הרשאות גישה - Modifiers

בלי כתוביותעם כתוביות
PracticU › קורס תכנות מונחה עצמים - OOP - Object Oriented Programming - חומר לימוד של מדעי המחשב › הרשאות גישה - Modifiers
מילון מושגים:
הרשאה - קביעה אילו פעולות ומשאבים מותרים למשתמש או לתהליך לאחר שזהותו אומתה. שולטת במי רשאי לעשות מה.
C# - שפת תכנות מונחית עצמים של מיקרוסופט, המשמשת בעיקר לפיתוח יישומים על פלטפורמת .NET.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
DLL - קובץ ספרייה ב-Windows המכיל קוד ופונקציות שתוכנות שונות יכולות לטעון ולהשתמש בהן במשותף.
ספרייה - אוסף קוד מוכן, כמו פונקציות ומחלקות, שמפתחים משתמשים בו בתוכניותיהם במקום לכתוב הכול מחדש.

הרשאות גישה - Modifiers
השיעור עובר על חמש הרשאות הגישה ב-C# ומראה מי יכול לגשת לכל אחד מהחברים של מחלקה.
חמש הרשאות הגישה
1. private: רק המחלקה עצמה רואה את החבר. זו ברירת המחדל לחברים (data members) של מחלקה.
2. protected: המחלקה עצמה ומחלקות היורשות ממנה. מחוץ למחלקה, למשל ב-Main, החבר לא נראה.
3. internal: כל מקום בפרויקט הנוכחי, כולל מחלקות אחרות שנמצאות באותו פרויקט.
4. protected internal: שילוב של השניים. נגיש למחלקות היורשות, גם כשהן בפרויקט אחר, וגם לכל מי שנמצא בפרויקט הנוכחי.
5. public: נגיש מכל מקום, כשיש לנו גישה לאובייקט.
טיפוסים ו-DLL
1. ברירת המחדל לטיפוסים: מחלקה או struct בלי הרשאה מוגדרים כ-internal. לטיפוס עצמו מותר להגדיר רק internal או public.
2. Class Library: פרויקט מסוג Class Library מוציא DLL שמכיל טיפוסים לשימוש בכמה פרויקטים, כך שלא צריך להעתיק את הקוד לכל אחד מהם.
3. חשיפה לפרויקט אחר: כדי להשתמש בטיפוס מה-DLL בפרויקט אחר, מוסיפים הפניה (Reference) ל-DLL, והטיפוס מוגדר כ-public.
שימו לב
private ו-protected הם הנפוצים ביותר, ואילו protected internal נדיר מאוד. בחירת רמת הגישה הנכונה לכל חבר וטיפוס היא חלק מתכנון נכון של הפרויקט.
השיעור הבא בקורס: הרשאות גישה - Modifiers (הסבר נוסף)

פרקי ההרצאה: הרשאות גישה - Modifiers

  1. 00:00

    הרשאות הגישה ב-Object Oriented

  2. 00:39

    חמש הרשאות הגישה במחלקת הבסיס

  3. 02:36

    הנראות מחוץ למחלקה

  4. 03:13

    הנראות ממחלקה יורשת

  5. 04:07

    משמעות private ו-protected

  6. 04:59

    protected internal ו-public

  7. 05:57

    ספריית DLL ו-Internal

  8. 08:34

    צירוף DLL ושימוש חוזר בקוד

תמלול ההרצאה: הרשאות גישה - Modifiers

הטקסט המלא של הדקות הראשונות בהרצאה «הרשאות גישה - Modifiers» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:01

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

  2. 00:22

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

  3. 00:43

    אז בואו נגדיר איזשהו משתנה אינטג'רי ונקרא לו private data member בכדי שנדע שזה הפרייבט. הרשעת גישה נוספת שקיימת נקראת protected. ניקח עוד משתנה ונקרא לו protected data member.

  4. 01:03

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

  5. 01:43

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

  6. 02:09

    ואנחנו רואים את כל הרשאות הגישה, כל חמש הרשאות הגישה ניתנות לצפייה פה. אנחנו רואים פה את ה-Private Data Member, זאת אומרת שיש לנו גישה אליו, יש לנו את ה-Protected, יש לנו את ה-Internal, יש לנו את ה-Protected-Internal ואת ה-Public.

  7. 02:28

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

  8. 02:39

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

  9. 02:56

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

  10. 03:11

    אבל בוא נניח שאני נמצא באיזשהי קלאס שנקראת derived קלאס והיא יורשת את הבייס קלאס. עכשיו בואו נניח שיש לי פה public void print ואני רושם בייס או דיס לא משנה נקודה עכשיו אני רואה שאת הפרייבט אני לא מצליח לראות את האינטרנל אני כן רואה את הפרוטקטד אני כן רואה את הפרוטקטד אינטרנל אני כן רואה ואת הפאבליק אני כן רואה אוקיי מקודם לא ראיתי

  11. 03:52

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

  12. 04:14

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

  13. 04:41

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

  14. 04:54

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

  15. 05:21

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

  16. 05:37

    public מציין שהdata member הזה או הפונקציה נגישים מכל מקום. זאת הסיבה שהצלחנו לראות אותם גם מהמיין. אלה חמשת הרשאות הגישה ובואו נבין מה זה אומר בדיוק ה-internal.

  17. 05:53

    אינטרנל מדבר על מצב שבו אנחנו רוצים לכתוב רויקט שיש בו טיפוסי נתונים והוא מיועד לשרת פרויקטים אחרים. במילים אחרות אנחנו בונים משהו שנקרא dynamic link library.

  18. 06:10

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

  19. 06:31

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

  20. 06:47

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

  21. 06:58

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

  22. 07:11

    זה אומר שאנחנו יכולים ללחוץ מקש ימני על הסולושן, לא על הפרויקט, לסלושן, לבצע add new project ואנחנו רוצים לבחור משהו שנקרא class library. Class library זה בעצם dll.

  23. 07:25

    בואו נקרא ל-dll הזה mytypes/library אנחנו רואים שיש לנו עכשיו שני פרויקטים תחת הסלושן. הפרויקט שאנחנו רואים מושחר זה הפרויקט שהולך לרוץ כאשר אנחנו הולכים לעשות ctrl f5 או להריץ את הפרויקט וזה בעצם הפרויקט הקודם שהתחלנו לבנות.

  24. 07:51

    כאן אנחנו רואים איזשהו dll ומחלקה אחת בתוכו. זאת אומרת אם אנחנו נלך וניקח את המחלקה הזאת, את ה-base class הזאת ונעתיק אותה ונדביק אותה כאן, זאת אומרת היא תהיה חלק מתוך ה-dll השני, אפילו נשנה את השם של הקובץ כך שהשם של הקובץ יהיה באותו השם של המחלקה ה-base class,

  25. 08:27

    אנחנו נוכל להשתמש עם המחלקה הזאת בפרויקט אחר עם כמה דברים יתקיימו. דבר ראשון, אנחנו צריכים לצרף את ה-DLL לפרויקט שלנו למקום הזה שנקרא References.

  26. 08:44

    מכה שימני, Add Reference, אנחנו יכולים לאתר אותו פה בפרויקט. הנה הוא פה, My Types Library, אוקיי. אנחנו רואים שיש לנו עכשיו גישה לכל ה-DLL הזה.

  27. 08:58

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

  28. 09:10

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

  29. 09:33

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

  30. 09:43

    כלי מאוד חזק בפיתוח תוכנה. עכשיו בואו נראה מי יכול לראות את ה-Base Class. אז אם יש לי עכשיו אובייקט מה-Base Class, אני רואה רק את ה-Public, זאת אומרת אני לא מצליח לראות את ה-Internal כמו שראינו מקודם, מפני שאני לא נמצא באותו פרויקט.

  31. 10:05

    גם אני לא רואה את ה-Protected Internal כי אני לא נמצא באותו פרויקט. זאת אומרת, Base Class נמצאת בפרויקט אחר מהפרויקט שלנו, אנחנו לא מצליחים לראות את כל מה שהוגדר כ-Internal.

  32. 10:17

    כמובן לא מה שהוגדר כPrivate כי רק המחלקה יכולה לראות אותו וגם

לקורס המלא: קורס תכנות מונחה עצמים OOP

ההרצאה הקודמת: טווח הכרה - Scope

ההרצאה הבאה: הרשאות גישה - Modifiers (הסבר נוסף)

הרצאות קשורות מקורסים אחרים

  • גישה ישירה ל-DOM ב-React
  • קבלת גישה למחשב הקורבן
  • הרשאות על קבצים - חלק 1
  • הרשאות NTFS

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת C# .NET - קורס תכנות למתחילים - דוט-נט / סי-שארפ - חומר לימוד של מדעי המחשב