המשמעות של this ב – C# ו – Java

להלן שאל, קוד (C# או Java)  מתוך בחינת בגרות במדעי המחשב לכיתה יא (מדעי המחשב א'):

במחלקה "תכשיט" (Jewel) יש שתי תכונות: מחיר התכשיט – price מטיפוס שלם,
ו – האם התכשיט מזהב, isGold, מטיפוס בוליאני.
בעבור תכשיט מזהב ערך isGold הוא true, אחרת isGold הוא false.
במחלקה Jewel שתי מחלקות בונות.
להלן המחלקה Jewel:

 

C#:

class Jewel
    {
        private int price;
        private bool isGold;

        public Jewel(int price, bool isGold)
        {...}//*
       public Jewel(int price)
        {...}//**

    }

 

Java:

class Jewel
    {
        private int price;
        private boolean isGold;

        public Jewel(int price, boolean isGold)
        {...}//*
       public Jewel(int price)
        {...}//**

    }

א. כתוב ב – Java  או ב – C# את גוף הפעולה המסומנת ב – *.
ב. כתוב ב – Java  או ב – C# את גוף הפעולה המסומנת ב – **.

הפתרון ב C#

נציג את הפתרון ב C# (הקוד כמעט זהה ב Java).

class Jewel
    {
        private int price;
        private bool isGold;

        public Jewel(int price, bool isGold)
        {
            this.isGold = isGold;
            this.price = price;
        }
        public Jewel(int price)
        {
            this.price = price;
            this.isGold = true;
        }
    }

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

מהי המשמעות של המילה this בתוכנית  ?

המילה השמורה this

המילה this בשפות מבוססות עצמים (object oriented) היא מילה שמורה בשפה (בדומה למילה if או למילה for).
תפקידה הוא לבחור את העצם המסויים מתוך קבוצת העצמים השייכים למחלקה.

דוגמא:
נביט בקוד הבא:

Jewel jewel1 = new Jewel(500, true);
Jewel jewel2 = new Jewel(600, false);
Jewel jewel3 = new Jewel(700);

הקוד יוצר שלושה עצמים מסוג המחלקה Jewel.
הפעולה הבונה הראשונה מופעלת בשתי השורות הראשונות, והפעולה הבונה השנייה מופעלת בשורה השלישית.
כאשר נוצר העצם המוצבע ע"י jewel1, ומופעלת פעולת הבנאי הראשונה, צריך לאתחל את תכונת price של אותו האובייקט, זה שבאמצעותו הופעלה פעולת הבנאי, ולא אחד משני האחרים. המילה this עושה זאת (האובייקט הזה, זה שבאמצעותו מופעלת הפעולה.

 


כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *