דילוג לתוכן המרכזי
מודול 2 · שיעור 1 מתוך 23/14 בקורס~12 min
שיעורי מודול (1/2)

כיתות וחפצים

Java היא שפה המתמקדת ב-תכנות מונחה עצמים (OOP). ב-OOP, אנו מדגמים את העולם האמיתי באמצעות אובייקטים. לאובייקט יש מצב (נתונים) והתנהגויות (פעולות).

כיתות וחפצים

  • מחלקה: זוהי תוכנית (או תבנית) המגדירה את המאפיינים וההתנהגות של סוג אובייקט.
  • Object: זהו מופע קונקרטי שנוצר ממחלקה.

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

שדות מופע ובנאים

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

לבנאי יש את שם זהה למחלקה ואין לו סוג החזרה (אפילו לא void).

Java
class Dog {
    // Instance fields
    String name;
    int age;

    // Constructor
    public Dog(String name, int age) {
        this.name = name; // 'this' refers to the current object's field
        this.age = age;
    }
}

יצירת אובייקט עם new

כדי ליצור אובייקט בזיכרון, אנו משתמשים במילת המפתח new ואחריה בבנאי המחלקה:

Java
public class Main {
    public static void main(String[] args) {
        // Creating a Dog object
        Dog myDog = new Dog("Fido", 3);

        // Accessing fields
        System.out.println(myDog.name + " is " + myDog.age + " years old.");
    }
}

הפניה this

מילת המפתח this ב-Java מתייחסת לאובייקט הנוכחי עליו מבוצעים הבנאי או השיטה. הוא משמש בעיקר כדי למנוע אי בהירות כאשר לפרמטרים של בנאי יש שם זהה לשדות המופע של האובייקט (הצללת משתנה):

Java
class User {
    String username;

    public User(String username) {
        this.username = username; // this.username is the instance field, username is the parameter
    }
}

הקצאת זיכרון: Stack vs Heap

חשוב להבין כיצד Java מקצה זיכרון:

  1. מחסנית: זהו אזור זיכרון מהיר ומאורגן שבו מאוחסנים משתנים פרימיטיביים והפניות לאובייקט (כתובות זיכרון) מקומיות לשיטות.
  2. ערימה: זהו אזור זיכרון גדול יותר ודינמי שבו מוקצים אובייקטים בפועל (באמצעות מילת המפתח new).

כאשר אנו מכריזים על Dog myDog = new Dog("Fido", 3);:

  • ההפניה myDog נוצרת ב-Stack.
  • האובייקט Dog בפועל עם הנתונים שלו נוצר ב-Heap.
  • המשתנה myDog מצביע על מיקומו של האובייקט על ה-Heap.

נסה זאת בעצמך

פעילות גופנית#java.m2.l1.e1
ניסיונות: 0טוען...

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

טוען עורך...
הצג רמז

כתוב `String name;` בתוך המחלקה, הכריז על הבנאי `public Person(String name) { this.name = name; }` והפעל אותו באמצעות `new Person('Alice')`.

הפתרון זמין לאחר 3 ניסיונות

פעילות גופנית#java.m2.l1.e2
ניסיונות: 0טוען...

צור מחלקה Book עם השדות title (String) ו-pages (int), בנאי שלם, והצג בשיטה הראשית ספר בשם b עם הכותרת Moby Dick ו-600 עמודים.

טוען עורך...
הצג רמז

זכור להגדיר את שני השדות בספר, למפות אותם בבנאי באמצעות `this.title = title;` ו-`this.pages = pages;`, ולהשתמש ב`new Book('Moby Dick', 600)`.

הפתרון זמין לאחר 3 ניסיונות

פעילות גופנית#java.m2.l1.e3
ניסיונות: 0טוען...

צור מחלקת מוצר עם שם השדות (מחרוזת) ומחיר (כפול), ובנאי המאתחל את שני השדות. בשיטה הראשית, צור אובייקט מוצר בשם p עם השם Laptop ומחיר 999.99.

טוען עורך...
הצג רמז

הכריז על השדות `שם מחרוזת;` ו`מחיר כפול;` במוצר, הקצה אותם בבנאי עם `this.name = name;` ו-`this.price = price;`, ולבסוף צור את האובייקט בשיטה הראשית.

הפתרון זמין לאחר 3 ניסיונות