אג'יאל יום ו' - יצירת מחלקה חדשה בפעם הראשונה (Book)

בכיתה
1. יצירת מחלקת Book (קליק-ימני על שם הפרויקט > Add > בוחרים Class > מתן שם למחלקה > אישור)
2. יצירת תכונות המחלקה:
    class Book
    {
          //Data-Members - תכונות
          public string title;
          public string author;
          public int pages;
    }
3. יצירת שני אובייקטים חדשים ב- Main, שניהם ממחלקת Book, ושמותיהם יהיו b1 ו- b2.
    לאחר יצירתם, יש לעדכן את ערכי תכונותיהם.
    Main()
    {
          //יצירת הספר הראשון וקביעת ערכי תכונותיו
          Book b1 = new Book();
          b1.title = "Kirzon Teacher";
          b1.author = "Ran Kirzon";
          b1.pages = 1500;

          //יצירת הספר השני וקביעת ערכי תכונותיו
          Book b2 = new Book();
          b2.title = "OdedLongLife";
          b2.author = "Oded Hashoded";
          b2.pages = 2500;
    }
4. הדפסת הפרטים של אובייקט הספר הראשון:
    Main()
    {
          Console.WriteLine("Book b1 details: ");
          Console.WriteLine("Title: " + b1.title);
          Console.WriteLine("Author: " + b1.author);
          Console.WriteLine("Pages: " + b1.pages);
    }

5. יצירת הפעולה-הפנימית ToString בתוך מחלקת Book כדי שיהיה קל להדפיס את פרטיו של כל ספר שהוא בהמשך:

    class Book
    {       
          //Methods - פעולות

          //פעולה המחזירה מחרוזת המתארת את הספר
          public override string ToString()
          {
                string str = "";
                str += "Title: " + title + "\n";
                str += "Author: " + author + "\n";
                str += "Pages: " + pages;
                return str;
          }
    }

6. הדפסת פרטי שני הספרים באמצעות הפעולה הפנימית ToString:
    Main()
    {
          Console.WriteLine(b1);
          Console.WriteLine(b2.ToString() );
    }

7. יצירת בנאי המקבל 3 פרמטרים:
    פרמטר I:   מחרוזת המייצגת את כותרת הספר
    פרמטר II:  מחרוזת המייצגת את שם-המחבר
    פרמטר II:  מספר שלם המייצג את כמות העמודים בספר
    class Book
    {
          //Constractors - בנאים
          public Book(string title, string author, int pages)
          {
                this.title = title;
                this.author = author;
                this.pages = pages;
          }
    }
8. בנאי ברירת-מחדל (לא מקבל פרמטרים):
    כאשר במחלקה אין בנאים כלל, קיים "מאחורי הקלעים" בנאי ברירת-מחדל, 
    המאפשר לבנות אובייקט חדש מהמחלקה באמצעות סוגריים ריקים. 
    ערכי התכונות יהיו ככתוב בהגדרתן בראש המחלקה: 
        אם הוגדר טיפוס מחרוזתי ללא השמת ערך בתוכו, ערכו יהיה ריק. 
        אם הוגדר טיפוס מספרי ללא ערך, ערכו יהיה 0. 
        אם הוגדר טיפוס בוליאני ללא השמת ערך בתוכו, ערכו יהיה false.

9. מתכנת שיוצר בנאי חדש בחלקה:
    אם בונה המחלקה יוצר בנאי כלשהו, אפילו רק בנאי אחד, 
    הרי שבנאי ברירת-המחדל (זה שקיים "מאחורי-הקלעים" ושלא מקבל פרמטרים) פשוט נמחק 
    ולא ניתן לשימוש כדי ליצור אובייקטים חדשים מהמחלקה.

10. בנאי ריק:
      בנאי ריק איננו בנאי "ברירת-המחדל".
      את הבנאי הריק יכול המתכנת לבנות בעצמו.
      כמו בכל מקרה בו קיים לפחות בנאי כתוב אחד במחלקה, הרי שגם הבנאי הריק שייבנה, יגרום למחיקת בנאי
      ברירת-המחדל.
      דוגמה לבנאי ריק, המאפשר ליצור ספר 
      שהכותרת שלו תהיה "Example book"
      ששם המחבר שלא הוא: "unknown"
      שמספר העמודים בו הוא 100:
    public Book()
    {
          this.title = "Example book";
          this.author = "unknown";
          this.pages = 100;
    }


11. שימוש בסרטוני Giraffe Academy.

12. הנחיות לפתרון תרגיל הכיתה: ראו דף 'וידאו' סרטון 700 - יצירת מחלקה ראשונה בעצמכם - מחלקת Book.

לבית
1. סיימו את כל הסעיפים 1-10 באזור "לכיתה".
2. צרו 5 אובייקטים נוספים של ספרים. תנו שם כרצונכם לכל אובייקט, תנו ערכים כרצונכם בעת בניית כל אחד מ- 5
    הספרים באמצעות הבנאי שיצרתם (שמקבל 3 פרמטרים).
    אם יש לכם גם בנאי ריק, תוכלו ליצור את אחד מ- 5 הספרים באמצעותו.
3. הדפיסו את התיאור של כל ספר וספר שיצרתם באמצעות ToString.
4. הכינו שאלותיכם למחר.

בהצלחה.

תגובות