fbpx

تعلم لغة الجافا – الدرس السابع الكائنات Objects



كل شيء في Java ضمن الكلاس والكائنات. تحتوي كائنات Java على state ، وهي متغيرات يتم حفظها معًا داخل كائن ، ونطلق عليها الحقول أو متغيرات الأعضاء.

لنبدأ بمثال:

class Point {
    int x;
    int y;
}

حددت هذه الكلاس نقطة بقيم x وy.

لإنشاء مثيل لهذا الفصل الدراسي ، نحتاج إلى استخدام كلمة new .

Point p = new Point();

في هذه الحالة ، استخدمنا مُنشئ افتراضي (مُنشئ لا يحصل على حجج) لإنشاء نقطة. جميع الكلاس التي لا تحدد مُنشئًا صريحًا لها مُنشئ افتراضي لا يفعل شيئًا.

يمكننا تحديد مُنشئنا الخاص:

class Point {
    int x;
    int y;

    Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

هذا يعني أنه لم يعد بإمكاننا استخدام المُنشئ الافتراضي new Point (). يمكننا الآن فقط استخدام نقطة البناء new Point(4, 1) .

يمكننا تحديد أكثر من مُنشئ واحد ، لذلك يمكن إنشاء Point بعدة طرق. دعنا نحدد المنشئ الافتراضي مرة أخرى.

class Point {
    int x;
    int y;

    Point() {
        this(0, 0);
    }

    Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

لاحظ استخدام هذه الكلمة الرئيسية هنا. يمكننا استخدامه داخل مُنشئ لاستدعاء مُنشئ مختلف (لتجنب تكرار الكود). يمكن أن يكون فقط السطر الأول داخل المنشئ.

استخدمنا أيضًا هذه الكلمة الرئيسية كمرجع للكائن الحالي الذي نعمل عليه.

بعد تعريف p يمكننا الوصول إلى x و y

p.x = 3;
p.y = 6;

Methods

يمكننا الآن تحديد Methods على Point.

class Point {
    ... // Our code previously
    void printPoint() {
        System.out.println("(" + x + "," + y + ")");
    }

    Point center(Point other) {
        // Returns the center between this point the other point
        // Notice we are using integer, we wan't get an accurate value
        return new Point((x + other.x) / 2, (y + other.y) / 2);
    }
}

Public و Private

على الرغم من أننا سنتحدث عن المعدلات لاحقًا ، إلا أنه من المهم فهم الاختلاف بين المتغيرات والأساليب الخاصة والعامة.

عند استخدام الكلمة الرئيسية private قبل متغير أو طريقة ، فهذا يعني أن الفصل نفسه فقط يمكنه الوصول إلى المتغير أو الطريقة ، عندما نستخدم public يعني ذلك أنه يمكن للجميع الوصول إليها. عادة ما نرى منشئين محددين على أنهم public ، ومتغيرات محددة على أنها private والطرق منفصلة ، وبعضها public وبعضها private.

تمرين

اكتب طريقة جديدة في النقطة تسمى scale ، والتي ستجعل النقطة أقرب للنصف إلى (0،0). على سبيل المثال ، النقطة (8 ، 4) بعد المقياس ستكون (4 ، 2) .ر

class Point {
    private double x;
    private double y;
    
    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }
    
    public void print() {
        System.out.println("(" + x + "," + y + ")");
    }
    
// رمزك هنا
}

public class Main {
    public static void main(String[] args) {
        Point p = new Point(32, 32);
        for (int i = 0; i < 5; i++) {
            p.scale();
            p.print();
        }
    }
}

الحل

class Point {
    private double x;
    private double y;
    
    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }
    
    public void print() {
        System.out.println("(" + x + "," + y + ")");
    }
    
    public void scale(){
        x = x/2;
        y = y/2;
    }
}

public class Main {
    public static void main(String[] args) {
        Point p = new Point(32, 32);
        for (int i = 0; i < 5; i++) {
            p.scale();
            p.print();
        }
    }
}

سنحصل على النتيجة التالية عند التشغيل

(16.0,16.0)
(8.0,8.0)
(4.0,4.0)
(2.0,2.0)
(1.0,1.0)

الدرس الثامن






Leave a Reply