Menu
Coddy logo textTech

מתודת toString()

חלק מהיחידה תכנות מונחה עצמים במסלול ה-Java של Coddy. שיעור 41 מתוך 87.

כל מחלקה ב-Java יורשת מהמחלקה Object, שמספקת כמה מתודות שימושיות. אחת המתודות הנפוצות ביותר לדריסה היא toString(), שמחזירה ייצוג מחרוזת של אובייקט.

כברירת מחדל, toString() מחזירה את שם המחלקה ואחריו קוד הגיבוב של האובייקט, דבר שאינו מועיל במיוחד:

public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

Person p = new Person("Alice", 25);
System.out.println(p);  // Person@15db9742

באמצעות דריסה של toString(), אפשר לספק פלט בעל משמעות שמתאר את מצב האובייקט:

public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    @Override
    public String toString() {
        return "Person[name=" + name + ", age=" + age + "]";
    }
}

Person p = new Person("Alice", 25);
System.out.println(p);  // Person[name=Alice, age=25]

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

challenge icon

אתגר

קל

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

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

  • Product.java: צרו מחלקה שמייצגת פריט במלאי. לכל Product יש שלושה שדות פרטיים: name (String), price (double) ו-quantity (int). כללו בנאי שמאתחל את כל שלושת השדות. דרסו את המתודה toString() כדי שתחזיר מחרוזת מעוצבת בפורמט המדויק הזה: Product[name=X, price=Y, quantity=Z], כאשר X, Y ו-Z הם הערכים בפועל של השדות. המחיר יוצג כמספר פשוט (אין צורך בעיצוב מיוחד).
  • Main.java: הפיחו חיים במחלקה Product שלכם באמצעות יצירה והצגה של מוצרים. תקבלו שלוש קלטים: שם מוצר (String), מחיר (double) וכמות (int). צרו Product עם הערכים האלה, ואז פשוט הדפיסו את אובייקט המוצר ישירות באמצעות System.out.println(). הודות למתודה toString() שדרסתם, המידע על המוצר יוצג אוטומטית בפורמט הרצוי במקום הפלט הסתום שמתקבל כברירת מחדל!

תקבלו שלושה קלטים: שם המוצר (String), המחיר (double) והכמות (int).

שימו לב שהדפסה ישירה של האובייקט מפעילה אוטומטית את המתודה toString() שלכם. כך קל הרבה יותר לנפות שגיאות ולתעד מידע ביומן ביישומים אמיתיים!

נסו בעצמכם

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // קרא את הקלטים
        String name = scanner.nextLine();
        double price = scanner.nextDouble();
        int quantity = scanner.nextInt();
        
        // TODO: צור אובייקט Product עם ערכי הקלט
        
        // TODO: הדפס את אובייקט Product ישירות
        // (פעולה זו תקרא אוטומטית למתודה toString() שלך!)
    }
}
quiz iconבחנו את עצמכם

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

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

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