Menu
Coddy logo textTech

ארגומנטים בעלי שם

חלק מהיחידה תכנות מונחה עצמים במסלול ה-C# של Coddy. שיעור 49 מתוך 70.

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

השתמש בשם הפרמטר ואחריו נקודתיים לפני הערך:

public static void CreateUser(string name, int age, bool isActive)
{
    Console.WriteLine($"{name}, Age: {age}, Active: {isActive}");
}

// שימוש בארגומנטים בעלי שם
CreateUser(name: "Alice", age: 25, isActive: true);
CreateUser(age: 30, isActive: false, name: "Bob");  // כל סדר אפשרי

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

public static void Configure(string host, int port = 8080, bool useSSL = false, int timeout = 30)
{
    Console.WriteLine($"{host}:{port}, SSL: {useSSL}, Timeout: {timeout}");
}

// דלג על port ועל useSSL, וציין רק את timeout
Configure("localhost", timeout: 60);
Configure("server.com", useSSL: true);

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

challenge icon

אתגר

קל

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

תארגנו את הקוד שלכם בשני קבצים:

  • ReportGenerator.cs: צרו מחלקה בשם ReportGenerator במרחב השמות Reports, ובה מתודה עם כמה פרמטרים אופציונליים:
    • GenerateReport(string title, string author = "Anonymous", bool includeHeader = true, bool includeSummary = false, int maxPages = 10)
    • המתודה הזאת צריכה להחזיר מחרוזת מעוצבת שמתארת את תצורת הדוח
    • פורמט: Report: {title} by {author} | Header: {Yes/No}, Summary: {Yes/No}, Max Pages: {maxPages}
  • Program.cs: בקובץ הראשי שלכם, הדגימו את העוצמה של ארגומנטים בעלי שם על ידי קריאה ל־GenerateReport בדרכים שונות — דלגו על פרמטרים אופציונליים שאינכם צריכים וציינו רק את הפרמטרים החשובים לכל דוח.

תקבלו שלוש קלטים:

  • כותרת הדוח הראשון
  • כותרת הדוח השני
  • כותרת הדוח השלישי

צרו שלושה דוחות עם תצורות שונות:

  1. הדוח הראשון: השתמשו בכותרת בלבד (כל ערכי ברירת המחדל חלים)
  2. הדוח השני: השתמשו בכותרת יחד עם includeSummary: true ו־maxPages: 25 (דלגו על author ועל includeHeader והשאירו את ערכי ברירת המחדל שלהם)
  3. הדוח השלישי: השתמשו בכותרת יחד עם author: "Admin", includeHeader: false ו־includeSummary: true (השאירו את ערך ברירת המחדל של maxPages)

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

לדוגמה, אם הקלטים הם Sales Q1, Annual Review ו־Inventory Check, הפלט צריך להיות:

Report: Sales Q1 by Anonymous | Header: Yes, Summary: No, Max Pages: 10
Report: Annual Review by Anonymous | Header: Yes, Summary: Yes, Max Pages: 25
Report: Inventory Check by Admin | Header: No, Summary: Yes, Max Pages: 10

שימו לב כיצד ארגומנטים בעלי שם מאפשרים לכם לדלג ישירות לפרמטרים החשובים לכם — אין צורך לציין את author או את includeHeader רק כדי לשנות את includeSummary. כך קריאות המתודות שלכם נעשות קריאות הרבה יותר ומבהירות את הכוונה!

נסו בעצמכם

using System;
using Reports;

class Program
{
    public static void Main(string[] args)
    {
        // קראו את שלוש כותרות הדוחות
        string title1 = Console.ReadLine();
        string title2 = Console.ReadLine();
        string title3 = Console.ReadLine();

        // צרו מופע של ReportGenerator
        ReportGenerator generator = new ReportGenerator();

        // TODO: צרו את הדוח הראשון - השתמשו בכותרת בלבד (כל ערכי ברירת המחדל יחולו)
        

        // TODO: צרו את הדוח השני - השתמשו בכותרת עם includeSummary: true ו-maxPages: 25
        // (דלגו על author ועל includeHeader, והשאירו את ערכי ברירת המחדל שלהם)
        

        // TODO: צרו את הדוח השלישי - השתמשו בכותרת עם author: "Admin", includeHeader: false ו-includeSummary: true
        // (השאירו את ערך ברירת המחדל של maxPages)
        

        // הדפיסו את התוצאה של כל דוח
    }
}
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר C# אונליין