📝 التقييم الوحدة 5: البرمجة الشيئية · الدرس 12 من 17
تقييم

تقييم الدرس 12: إنشاء الكائنات والصفوف

إجاباتك تُحفظ تلقائيًّا على هذا الجهاز. أجب ثم اضغط «صحّح ورقتي» في آخر الصفحة.

new Book(2, …) bk2 : Book id = 2title = "Learn Javan"author = "Fahad"price = 11.67 …

← العودة إلى الدرس 12: إنشاء الكائنات والصفوف

أسئلة التقييم

أسئلة تقييم الدرس: إنشاء الكائنات والصفوف. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».

1السؤال الأول: اختر الإجابة الصحيحة

1) أكمل الفراغ، ......................... هي دالة البناء "المشيد" هي دالة خاصة تُستخدم لتهيئة الكائنات، ويتم استدعائها تلقائياً عند إنشاء كائن من فئة class
2) تتبع الكود التالي، ثم حدد ما هي مخرجاته:
snippet
class Test{    int a, b;    public Test(){        a = 10;        b = 20;    }    public void msg(){     System.out.println ("a = " + a + " b = " + b );    }} public class Main {   public static void main(String args[]) {    Test obj1 = new Test();    obj1.a += 1;    obj1.b += 1;    obj1.msg();   }}
3) أكمل الفراغ: اسم دالة البناء constructor يجب أن يكون ........
4) أكمل الفراغ: نوع القيمة المرجعة لدالة البناء constructor هو ........
5) تأمل الكود التالي، ماذا سيكون الناتج عند تنفيذه؟
snippet
class Box{    int size;    Box(int s) { size = s; }} public class Main{    public static void main(String[] args)    {        Box b = new Box(5);        System.out.println(b.size);    }}
6) أكمل الفراغ: إذا لم نعطِ خاصية من نوع double قيمة، فإن قيمتها الافتراضية ........
7) أي من العبارات التالية صحيحة عن encapsulation؟
8) في جافا، كيف يمكن تعريف طريقة method تكون وظيفتها Getter أي تعيد قيمة؟
9) في جافا، ما الفائدة من جعل متغيرات الفئة class خاصة (private) ثم إنشاء لها دوال Setter والـ Getter ؟
10) في جافا، ما هي وظيفة دوال الـ Setter؟
11) أين نضع شرط التحقق من القيمة قبل حفظها في الخاصية؟
12) في NetBeans، لتوليد دوال get و set تلقائيًّا نختار:

2السؤال الثاني: صح أم خطأ

1) إذا لم تكتب دالة constructorالبناء "المشيد"، فإن جميع الفئات classesتحتوي على دالة بناء افتراضيًا ضمنياً، ولكن بدون عمل إضافي. صح أم خطأ؟
الصواب: صح
2) لا يمكن لدالة البناء "المشيد" constructor أن تستقبل معاملات parameters، لتهيئة خصائص الكائن عند إنشائه. صح أم خطأ؟
الصواب: خطأ
3) يمكن أن يحتوي الكلاس class الواحد على أكثر من دالة بناء constructor. صح أم خطأ؟
الصواب: صح
4) في الجملة this.id = id; الكلمة this.id تشير إلى المعامل parameter. صح أم خطأ؟
الصواب: خطأ
5) دوال get و set تُعرّف عادةً كـ private. صح أم خطأ؟
الصواب: خطأ
6) يمكن جعل الخاصية للقراءة فقط بكتابة دالة get بدون دالة set. صح أم خطأ؟
الصواب: صح
7) التغليف يمنع أي وصول إلى البيانات نهائيًّا. صح أم خطأ؟
الصواب: خطأ
8) اسم دالة get للخاصية age هو getAge. صح أم خطأ؟
الصواب: صح

3السؤال الثالث: أكمل الفراغات

1) تُستخدم الكلمة للإشارة إلى الكائن الحالي.

💡 أربعة أحرف إنجليزية، تشير إلى الكائن الحالي.

الإجابة: this

2) دالة البناء بالإنجليزية .

💡 اسم دالة البناء بالإنجليزية.

الإجابة: constructor

3) القيمة الافتراضية لخاصية String هي .

💡 قيمة «لا شيء» للنصوص في جافا.

الإجابة: null

4) دالة البناء بلا معاملات تُسمّى دالة البناء .

💡 الدالة التي لا تستقبل معاملات تُسمّى دالة البناء ___ .

الإجابة: الافتراضية

5) التغليف بالإنجليزية .

💡 اسم المبدأ بالإنجليزية.

الإجابة: Encapsulation

6) دالة الإرجاع تبدأ بـ .

💡 ثلاثة أحرف: الدالة التي تُرجع القيمة.

الإجابة: get

7) دالة التعديل تبدأ بـ .

💡 ثلاثة أحرف: الدالة التي تُسند القيمة.

الإجابة: set

8) خيار NetBeans الذي يحوّل الخصائص إلى private: Encapsulate .

💡 الخيار في نافذة Getter and Setter: Encapsulate ___ .

الإجابة: Fields

4السؤال الرابع: التوصيل

طابِق كل عنصر في العمود (أ) بما يناسبه في العمود (ب):

  1. 1) Book()
  2. 2) Book(int id)
  3. 3) this.id
  4. 4) new
  5. 5) null
  1. أ. تستدعي دالة البناء.
  2. ب. قيمة نصّ لم يُعطَ قيمة.
  3. ج. دالة بناء بمعامل.
  4. د. خاصية الكائن الحالي.
  5. هـ. دالة بناء افتراضية.
المفتاح: (1) هـ (2) ج (3) د (4) أ (5) ب

طابِق كل عنصر في العمود (أ) بما يناسبه في العمود (ب):

  1. 1) private
  2. 2) getX()
  3. 3) setX()
  4. 4) Insert Code
  5. 5) Encapsulation
  1. أ. تعيد القيمة.
  2. ب. تعدّل القيمة بشرط.
  3. ج. تخفي الخاصية.
  4. د. توليد الكود تلقائيًّا.
  5. هـ. التغليف.
المفتاح: (1) ج (2) أ (3) ب (4) د (5) هـ

5السؤال الخامس: أسئلة عملية

1) أكتب الجواب "الرقم" في حقل الإدخال تحت. السؤال: كم عدد الخصائص attributes في الكلاس التالي:
snippet
class Book {    int id;    String title;    String author;    double price;    int pages;    public Book(){    }    public Book(int id, String title, String author, double price, int pages){        this.id = id;        this.title = title;        this.author = author;        this.price = price;        this.pages = pages;    }   public void printBookDetails(){        System.out.println("Book details: ");        System.out.println("Id: " + id);        System.out.println("Title: " + title);        System.out.println("Autor: " + author);        System.out.println("Price: " + price);        System.out.println("Pages: " + pages);    }}
الجواب:
الجواب: 5
2) أكتب الجواب "الرقم" في حقل الإدخال تحت. السؤال: كم عدد دوال البناء "المشيدات" constructor في الكلاس التالي:
snippet
class Book {    int id;    String title;    String author;    double price;    int pages;    public Book(){    }    public Book(int id, String title, String author, double price, int pages){        this.id = id;        this.title = title;        this.author = author;        this.price = price;        this.pages = pages;    }   public void printBookDetails(){        System.out.println("Book details: ");        System.out.println("Id: " + id);        System.out.println("Title: " + title);        System.out.println("Autor: " + author);        System.out.println("Price: " + price);        System.out.println("Pages: " + pages);    }}
الجواب:
الجواب: 2
3) أكتب الجواب "الرقم" في حقل الإدخال تحت. السؤال: كم عدد الدوال methods "الطريقة" في الكلاس التالي، بدون دوال البناء "المشيدات" constructors
snippet
class Book {    int id;    String title;    String author;    double price;    int pages;    public Book(){    }    public Book(int id, String title, String author, double price, int pages){        this.id = id;        this.title = title;        this.author = author;        this.price = price;        this.pages = pages;    }   public void printBookDetails(){        System.out.println("Book details: ");        System.out.println("Id: " + id);        System.out.println("Title: " + title);        System.out.println("Autor: " + author);        System.out.println("Price: " + price);        System.out.println("Pages: " + pages);    }}
الجواب:
الجواب: 1
4) أكتب الجواب "الرقم" في حقل الإدخال تحت. السؤال: كم عدد الكائنات objects التي تم إنشائها من كلاس Book في الكود التالي:
snippet
class Book {    int id;    String title;    String author;    double price;    int pages;    public Book(){    }    public Book(int id, String title){        this.id = id;        this.title = title;     }    public void printBookDetails(){        System.out.println("Book details: ");        System.out.println("Id: " + id);        System.out.println("Title: " + title);        System.out.println("Autor: " + author);        System.out.println("Price: " + price);        System.out.println("Pages: " + pages);    }}public class Library {    public static void main(String[] args) {        Book book1 = new Book();        book1.id = 1;        book1.title = "Effective Java";        Book book2 = new Book(2, "Java in One Day");   book1.printBookDetails();        book2.printBookDetails();    }}
الجواب:
الجواب: 2

5) تتبّع الناتج:

snippet
class Pen{    String color;    Pen() { color = "Blue"; }    Pen(String c) { color = c; }} public class Main{    public static void main(String[] args)    {        Pen a = new Pen();        Pen b = new Pen("Red");        System.out.println(a.color + " " + b.color);    }}
الناتج الصحيح:
Output×
Blue Red

6) صحّح السطر في دالة البناء حتى تُخزَّن القيمة في الخاصية:

snippet
radius = radius;
إجابة نموذجية:
snippet
this.radius = radius;
7)

اكمل الكود التالي من مثال المكتبة library:
أكمل دالة البناء التي تستقبل معاملات، ثم أنشئ الكائن bk2 باستخدامها

public class Book {    int id;    String title;    public (int id, String title) {        .id = id;        this.title = ;    }}Book bk2 =  Book(2, "Learn Javan");
الإجابة: (1) Book · (2) this · (3) title · (4) new

8) تتبّع الناتج:

snippet
class Account{    private double balance;     public void setBalance(double b)    {        if (b >= 0) balance = b;        else System.out.println("Invalid");    }     public double getBalance() { return balance; }} public class Main{    public static void main(String[] args)    {        Account a = new Account();        a.setBalance(-50);        a.setBalance(200);        System.out.println(a.getBalance());    }}
الناتج الصحيح:
Output×
Invalid
200.0

9) اكتب كلاس Person بخاصية private اسمها age ودالتي get و set، بحيث ترفض set العمر السالب.

الحل النموذجي:
Person.java
class Person{    private int age;     public int getAge()    {        return age;    }     public void setAge(int age)    {        if (age >= 0)            this.age = age;        else            System.out.println("Error: age cannot be negative");    }} public class Main{    public static void main(String[] args)    {        Person p = new Person();        p.setAge(-3);        p.setAge(20);        System.out.println(p.getAge());    }}
Output – JavaApplication (run)×
run:
Error: age cannot be negative
20
BUILD SUCCESSFUL (total time: 0 seconds)
قارن إجابتك بالحل:
10)

أكمل الكلاس User من التدريب 10 بتطبيق التغليف:

public class User {     String password;    public String () {         password;    }    public  setPassword(String password) {        if (password.length() >= 6 && password.length() < 30)            this.password = password;    }}
الإجابة: (1) private · (2) getPassword · (3) return · (4) void
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».