→ חזרה לעמוד הקודם
// תרגול

תרגול מחלקות ופעולות פנימיות

יסודות · 899371תכנות מונחה עצמים

מחלקות ופעולות פנימיות ב־C#

דף תרגול מדורג | תכונות, בנאים, עצמים ופעולות

דוגמה: מחלקה המייצגת מונה

class Counter
{
    int value;
    public Counter(int startValue)
    {
        value = startValue;
    }
    public void AddOne()
    {
        value = value + 1;
    }
    public int GetValue()
    {
        return value;
    }
}

בתוך Main, לאחר הוספת using System בראש הקובץ:

Counter c1 = new Counter(4);
c1.AddOne();
Console.WriteLine(c1.GetValue());

הבנאי מקבל 4 ומאתחל את התכונה. AddOne מעדכנת אותה ל־5.

GetValue מחזירה את הערך, ולכן יודפס 5.

הבנאי נקרא בשם המחלקה ואין לו טיפוס החזרה.

תרגול מחלקות | C# | למתחילים 1

1 | קוראים ועוקבים

מעקב אחר שני עצמים של המחלקה Counter מהדוגמה

הקוד הבא כתוב בתוך Main:

Counter a = new Counter(2);
Counter b = new Counter(10);
a.AddOne();
a.AddOne();
b.AddOne();
Console.WriteLine(a.GetValue());
Console.WriteLine(b.GetValue());
a.AddOne();
Console.WriteLine(a.GetValue());

א. מעקב אחר מצב העצמים

השלימו את הערכים של a ושל b בכל שלב:

אחרי שתי שורות יצירת העצמים: ______ :a: ______ b

אחרי שתי הקריאות הראשונות ל־______ :AddOne: a: ______ b

אחרי הקריאה ______ :b.AddOne: a: ______ b

בסיום כל הקוד: ______ :a: ______ b

ב. פלט והבנה

1. כתבו את שלוש שורות הפלט לפי הסדר.

2. מדוע הקריאה a.AddOne אינה משנה את הערך של b?

3. מה ההבדל בין פעולה שמחזירה int לפעולה מסוג void?

תרגול מחלקות | C# | למתחילים 2

2 | משלימים מחלקה

מחלקה המייצגת ספר ומספר עמודים

השלימו את המקומות המסומנים. מספר העמודים ההתחלתי חיובי.

AddPages מקבלת מספר חיובי של עמודים ומוסיפה אותו לכמות הקיימת.

class Book
{
    string title;
    int pages;
    public ________(string bookTitle, int pageCount)
    {
        title = ______________;
        pages = ______________;
    }
    public void AddPages(int amount)
    {
        pages = ____________________;
    }
    public int GetPages()
    {
        return ______________;
    }
    public string GetTitle()
    {
        return ______________;
    }
}

בתוכנית הראשית

1. צרו ספר בשם "CSharp Basics" שמספר עמודיו 120.

2. הוסיפו לו 15 עמודים באמצעות הפעולה AddPages.

3. הדפיסו את שם הספר ואת מספר עמודיו באמצעות הפעולות המתאימות.

4. צרו ספר נוסף בעל 80 עמודים והדפיסו את מספר עמודיו.

5. מהו מספר העמודים של כל ספר בסיום?

תרגול מחלקות | C# | למתחילים 3

3 | כותבים מחלקה: מנורה

תכונות, שתי פעולות בונות ופעולות לשינוי מצב

כתבו מחלקה בשם Lamp המייצגת מנורת שולחן.

תכונותיה: color מסוג string ו־isOn מסוג bool.

הערך true מציין שהמנורה דולקת; false מציין שהיא כבויה.

א. פעולות בונות

1. בנאי המקבל צבע ומצב התחלתי ומאתחל את שתי התכונות.

2. בנאי המקבל צבע בלבד ומאתחל את המנורה למצב כבוי.

כתבו בכל בנאי את ההשמות במפורש.

ב. פעולות פנימיות

()GetColor - מחזירה את צבע המנורה מסוג string.

()IsOn - מחזירה את מצב המנורה מסוג bool.

()TurnOn - מדליקה את המנורה.

()TurnOff - מכבה את המנורה.

ChangeColor(string newColor) - מעדכנת את צבע המנורה.

ג. יצירת עצמים בתוך Main

1. צרו מנורה lamp1 בצבע "Blue" ובמצב דולק בעזרת הבנאי הראשון.

2. צרו מנורה lamp2 בצבע "White" בעזרת הבנאי השני.

3. הדפיסו את המצב של כל מנורה באמצעות IsOn.

4. כבו את lamp1 והדליקו את lamp2 באמצעות הפעולות המתאימות.

5. שנו את הצבע של lamp1 ל־"Green" באמצעות ChangeColor.

6. הדפיסו את הצבע ואת המצב של כל מנורה באמצעות הפעולות.

לפני הרצה: חזו את התוצאות

המצבים הראשוניים של שתי המנורות: _________________________

הצבע והמצב של lamp1 בסיום: _______________________________

הצבע והמצב של lamp2 בסיום: _______________________________

תכנון קצר לפני כתיבת הקוד

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

תרגול מחלקות | C# | למתחילים 4

4 | פעולה עם תנאי

מחלקה המייצגת כרטיס נסיעות

כתבו מחלקה בשם TravelCard עם תכונה אחת: ridesLeft מסוג int.

בנאי מקבל מספר התחלתי של נסיעות שאינו שלילי.

א. ממשו את הפעולות

()GetRidesLeft - מחזירה את מספר הנסיעות שנותרו.

AddRides(int amount) - מוסיפה נסיעות רק כאשר amount גדול מ־0.

אם amount אינו חיובי, מספר הנסיעות נשאר ללא שינוי.

()UseRide - אם נותרה נסיעה, מפחיתה 1 ומחזירה true.

אם לא נותרו נסיעות, אינה משנה את התכונה ומחזירה false.

ב. הפעילו מתוך Main

1. צרו כרטיס בשם card עם 2 נסיעות.

2. קראו ל־UseRide שלוש פעמים והדפיסו כל ערך מוחזר.

3. הדפיסו את מספר הנסיעות שנותרו.

4. הוסיפו 3 נסיעות. נסו אחר כך להוסיף 0 נסיעות.

5. הדפיסו שוב את מספר הנסיעות שנותרו.

ג. בדקו את התוכנית

כתבו מראש את חמש שורות הפלט הצפויות. אחר כך הריצו והשוו.

מדוע חשוב לבדוק אם נותרו נסיעות לפני שמפחיתים 1?

תרגול מחלקות | C# | למתחילים 5

5 | תרגיל מסכם: מוצר

מחלקה שלמה, שני עצמים ותוכנית ראשית

כתבו מחלקה בשם Product עם שלוש תכונות:

name מסוג string, price מסוג double, quantity מסוג int.

אפשר להניח שהמחיר וכמות המלאי אינם שליליים.

א. בנאים ופעולות

בנאי ראשון: מקבל שם, מחיר וכמות ומאתחל את שלוש התכונות.

בנאי שני: מקבל שם ומחיר ומאתחל את הכמות ל־0.

()GetName - מחזירה את שם המוצר.

()GetQuantity - מחזירה את הכמות במלאי.

()GetStockValue - מחזירה מחיר כפול כמות מסוג double.

AddStock(int amount) - מוסיפה מלאי רק אם amount חיובי.

()SellOne - מפחיתה 1 ומחזירה true אם יש מלאי; אחרת מחזירה false.

ב. תרחיש בתוכנית הראשית

1. צרו מוצר p1 בשם "Notebook", במחיר 12.5 ובכמות 2.

2. צרו מוצר p2 בשם "Pen", במחיר 4, בעזרת הבנאי השני.

3. הוסיפו 3 יחידות למלאי של p2.

4. נסו למכור יחידה אחת של p1 והדפיסו אם המכירה הצליחה.

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

6. נסו למכור עוד שתי יחידות של p1. הדפיסו כל תוצאה.

ג. בדיקה עצמית

ערך המלאי של p1 לאחר המכירה הראשונה: _____________________

ערך המלאי של p2 לאחר הוספת המלאי: ________________________

תוצאות שתי המכירות האחרונות של _______________________ :p1

לפני שמגישים

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

ודאו שכל פעולה שמחזירה ערך כוללת return מתאים בכל מסלול.

ודאו שיצרתם עצמים באמצעות new ושהפעלתם את הפעולות דרך העצמים.

בדקו ששינוי במוצר אחד אינו משנה את תכונות המוצר האחר.

תרגול מחלקות | C# | למתחילים 6

הורדת הקובץ המקוריPDF · תרגול מחלקות ופעולות פנימיות