Menu
Coddy logo textTech

מתודות סטטיות

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

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

הכרז על מתודה סטטית על ידי הוספת מילת המפתח static:

public class MathHelper {
    public static int add(int a, int b) {
        return a + b;
    }
    
    public static int multiply(int a, int b) {
        return a * b;
    }
}

// קריאה ללא יצירת אובייקט
int sum = MathHelper.add(5, 3);      // 8
int product = MathHelper.multiply(4, 2);  // 8

למתודות סטטיות יש מגבלה חשובה אחת: הן אינן יכולות לגשת ישירות למשתני מופע או למתודות מופע. מכיוון שמתודות סטטיות קיימות ללא אובייקט, אין הפניה ל־this שאפשר להשתמש בה.

public class Counter {
    private int count;              // משתנה מופע
    private static int total;       // משתנה סטטי
    
    public static void incrementTotal() {
        total++;      // תקין - גישה למשתנה סטטי
        // count++;   // שגיאה! אי אפשר לגשת למשתנה מופע
    }
}

מתודות סטטיות אידיאליות לפעולות שירות שאינן תלויות במצב האובייקט — חשבו על מתודות כמו Math.sqrt() או Integer.parseInt(). הן מספקות פונקציונליות שמתאימה לרמת המחלקה ולא לאובייקטים בודדים.

challenge icon

אתגר

קל

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

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

  • StringUtils.java: צרו מחלקת שירות עם מתודות סטטיות שמבצעות פעולות נפוצות על מחרוזות:
    • מתודה סטטית countVowels(String text) שמחזירה את מספר התנועות (a, e, i, o, u — באותיות גדולות וקטנות) במחרוזת הנתונה
    • מתודה סטטית reverse(String text) שמחזירה את המחרוזת בסדר הפוך
    • מתודה סטטית isPalindrome(String text) שמחזירה true אם המחרוזת נקראת באותה צורה מההתחלה לסוף ומהסוף להתחלה (ללא תלות ברישיות), ו-false אחרת
  • Main.java: השתמשו במחלקת השירות שלכם כדי לעבד מחרוזת. תקבלו קלט אחד: מחרוזת טקסט. קראו לכל מתודה סטטית ישירות דרך שם המחלקה והדפיסו שלוש שורות:
    • Vowels: [count]
    • Reversed: [reversed string]
    • Palindrome: true או Palindrome: false

תקבלו קלט אחד: מחרוזת טקסט לניתוח.

זכרו שמתודות סטטיות נקראות באמצעות שם המחלקה (כמו StringUtils.countVowels(text)) ולאחר מכן אין צורך ליצור מופע. כך מחלקות שירות נוחות לביצוע פעולות שלא צריכות לשמור על מצב כלשהו בין קריאה לקריאה.

נסו בעצמכם

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String text = scanner.nextLine();
        
        // TODO: השתמשו במתודות הסטטיות של StringUtils כדי לנתח את הטקסט
        // קראו ל־StringUtils.countVowels(text) כדי לקבל את מספר התנועות
        // קראו ל־StringUtils.reverse(text) כדי לקבל את המחרוזת בסדר הפוך
        // קראו ל־StringUtils.isPalindrome(text) כדי לבדוק אם הטקסט הוא פלינדרום
        
        // TODO: הדפיסו את התוצאות בפורמט הבא:
        // תנועות: [מספר]
        // בסדר הפוך: [מחרוזת בסדר הפוך]
        // Palindrome: true/false
        
    }
}
quiz iconבחנו את עצמכם

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

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

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