فهرس المقرر
تقييم

مراجعات الوحدات التراكمية

بعد كل وحدة: أسئلة تجمع مواضيعها، كأن يأتي التغليف داخل الوراثة، أو الاستثناءات داخل دالة. هذا ما يبني الفهم الحقيقي.

EmployeeProgrammerManagerextends
مراجعة الوحدة الأولى: الدوالالدروس: 1—مراجعة الوحدة الثانية: أساسيات البرمجة الشيئيةالدروس: 2، 3، 4—مراجعة الوحدة الثالثة: حماية البيانات والتحكم بالوصولالدروس: 5، 6، 7—مراجعة الوحدة الرابعة: الوراثة وتعدد الأشكال والتجريدالدروس: 8، 9، 10—مراجعة الوحدة الخامسة: الأخطاء والملفاتالدروس: 11، 12—مراجعة الوحدة السادسة: الواجهات Interface والقوائم ArrayListالدروس: 13، 14—

للمراجعة قبل الحلّ: 1. الدوال المعرّفة من قبل المستخدم

مراجعة الوحدة الأولى: الدوال

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

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

1) ما الناتج؟
snippet
public class Main{    static int twice(int x) { return x * 2; }    static int add(int a, int b) { return a + b; }     public static void main(String[] args)    {        System.out.println(add(twice(3), 3));    }}
2) ما الناتج؟
snippet
public class Main{    static void f(int a) { System.out.println("int"); }    static void f(double a) { System.out.println("double"); }     public static void main(String[] args)    {        f(2.5);    }}
3) ما الناتج؟
snippet
public class Main{    static int sum(int n)    {        if (n == 0) return 0;        return n + sum(n - 1);    }     public static void main(String[] args)    {        System.out.println(sum(5));    }}
4) أي استدعاء خاطئ للدالة static void show(String s, int n)؟

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

1) الدالة void لا تستخدم return مع قيمة.
الصواب: صح
2) يمكن تعريف دالة داخل دالة أخرى في جافا.
الصواب: خطأ
3) الوسيطات هي القيم المرسلة في الاستدعاء.
الصواب: صح
4) الاستدعاء الذاتي بلا شرط توقّف يسبب خطأ StackOverflowError.
الصواب: صح

3السؤال الثالث: أسئلة عملية

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

snippet
public class Main{    static void line(char c, int n)    {        for (int i = 0; i < n; i++) System.out.print(c);        System.out.println();    }     public static void main(String[] args)    {        line('*', 3);        line('-', 5);    }}
الناتج الصحيح:
Output×
***
-----

2) اكتب دالة static اسمها isEven تستقبل عددًا وتعيد true إذا كان زوجيًّا، واطبع isEven(7).

الحل النموذجي:
Main.java
public class Main{    static boolean isEven(int n)    {        return n % 2 == 0;    }     public static void main(String[] args)    {        System.out.println(isEven(7));    }}
Output – JavaApplication (run)×
run:
false
BUILD SUCCESSFUL (total time: 0 seconds)
قارن إجابتك بالحل:
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».

للمراجعة قبل الحلّ: 2. مقدمة إلى البرمجة الشيئية: الكلاس والكائن · 3. دالة البناء Constructor · 4. الحزم Packages

مراجعة الوحدة الثانية: أساسيات البرمجة الشيئية

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

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

1) ما الناتج؟
snippet
class Item{    static int count = 0;    String name;    Item(String n) { name = n; count++; }} public class Main{    public static void main(String[] args)    {        new Item("a"); new Item("b"); new Item("c");        System.out.println(Item.count);    }}
2) ما الناتج؟
snippet
class P{    String name;    int age;    P(String name, int age)    {        this.name = name;        age = age;    }} public class Main{    public static void main(String[] args)    {        P p = new P("Ali", 20);        System.out.println(p.name + " " + p.age);    }}
3) أي سطر يستورد كلاس Course من الحزمة package2؟
4) كلاس فيه دالة بناء بمعاملين فقط، ما حكم new Book()؟

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

1) إذا كتبت دالة بناء بمعاملات فقط، لا يضيف جافا الدالة الافتراضية تلقائيًّا.
الصواب: صح
2) الكائنات من الكلاس نفسه تشترك في قيم الخصائص غير static.
الصواب: خطأ
3) java.util حزمة مدمجة.
الصواب: صح
4) دالة البناء يمكن أن تكون void.
الصواب: خطأ

3السؤال الثالث: أسئلة عملية

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

snippet
class Rect{    int w, h;    Rect(int w, int h) { this.w = w; this.h = h; }    int area() { return w * h; }} public class Main{    public static void main(String[] args)    {        Rect a = new Rect(2, 3);        Rect b = new Rect(4, 5);        System.out.println(a.area() + b.area());    }}
الناتج الصحيح:
Output×
26

2) اكتب كلاس Course بخاصيتين code و hours ودالة بناء بمعاملين، ثم اطبع code و hours لكائن ('CS101', 3).

الحل النموذجي:
Course.java
class Course{    String code;    int hours;     Course(String code, int hours)    {        this.code = code;        this.hours = hours;    }} public class Main{    public static void main(String[] args)    {        Course c = new Course("CS101", 3);        System.out.println(c.code + " " + c.hours);    }}
Output – JavaApplication (run)×
run:
CS101 3
BUILD SUCCESSFUL (total time: 0 seconds)
قارن إجابتك بالحل:
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».

للمراجعة قبل الحلّ: 5. محددات الوصول Access Modifiers · 6. محددات عدم الوصول: static و final · 7. التغليف Encapsulation

مراجعة الوحدة الثالثة: حماية البيانات والتحكم بالوصول

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

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

1) ما الناتج؟
snippet
class Temp{    private int c;    void setC(int v)    {        if (v < -50) System.out.println("Invalid");        else c = v;    }} public class Main{    public static void main(String[] args)    {        new Temp().setC(-80);    }}
2) أي تعريف صحيح لثابت عام؟
3) خاصية protected في كلاس داخل package1، من يصل إليها؟
4) ما الناتج؟
snippet
class C{    static int s = 5;} public class Main{    public static void main(String[] args)    {        C a = new C();        C b = new C();        a.s++;        System.out.println(a.s + " " + b.s);    }}

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

1) الخصائص يُفضّل أن تكون private والدوال public.
الصواب: صح
2) دالة static تستطيع استخدام this.
الصواب: خطأ
3) دالة get بلا set تجعل الخاصية للقراءة فقط من الخارج.
الصواب: صح
4) المحدد default يتيح الوصول من حزمة أخرى.
الصواب: خطأ

3السؤال الثالث: أسئلة عملية

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

snippet
class Wallet{    private double money = 100;    public void spend(double x)    {        if (x <= money) money -= x;        else System.out.println("Not enough");    }    public double getMoney() { return money; }} public class Main{    public static void main(String[] args)    {        Wallet w = new Wallet();        w.spend(30);        w.spend(90);        System.out.println(w.getMoney());    }}
الناتج الصحيح:
Output×
Not enough
70.0
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».

للمراجعة قبل الحلّ: 8. الوراثة Inheritance · 9. تعدد الأشكال Polymorphism · 10. التجريد Abstraction

مراجعة الوحدة الرابعة: الوراثة وتعدد الأشكال والتجريد

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

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

1) ما الناتج؟
snippet
class A{    A() { System.out.print("A1 "); }} class B extends A{    B() { System.out.print("B1 "); }    B(int x) { this(); System.out.print("B2"); }} public class Main{    public static void main(String[] args)    {        new B(5);    }}
2) ما الناتج؟
snippet
abstract class Shape{    abstract double area();} class Sq extends Shape{    double s = 2;    double area() { return s * s; }} class Tri extends Shape{    double area() { return 8; }} public class Main{    public static void main(String[] args)    {        Shape[] all = { new Sq(), new Tri() };        double t = 0;        for (Shape s : all) t = t + s.area();        System.out.println(t);    }}
3) أي عبارة صحيحة؟
4) ما الناتج؟
snippet
class Base{    String who() { return "Base"; }    void show() { System.out.println(who()); }} class Derived extends Base{    @Override    String who() { return "Derived"; }} public class Main{    public static void main(String[] args)    {        Base b = new Derived();        b.show();    }}

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

1) متغير من نوع الأب يمكن أن يحمل كائنًا من الابن.
الصواب: صح
2) Overriding يتطلب اختلاف المعاملات.
الصواب: خطأ
3) الكلاس المجرد قد يحتوي دالة بناء.
الصواب: صح
4) super.method() تستدعي نسخة الابن.
الصواب: خطأ

3السؤال الثالث: أسئلة عملية

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

snippet
class Emp{    double pay() { return 1000; }} class Manager extends Emp{    @Override    double pay() { return super.pay() * 2; }} public class Main{    public static void main(String[] args)    {        Emp[] list = { new Emp(), new Manager() };        for (Emp e : list) System.out.println(e.pay());    }}
الناتج الصحيح:
Output×
1000.0
2000.0

2) اكتب واجهة Printable فيها دالة print()، وكلاس Report ينفّذها ويطبع «Report printed»، ثم استدعها عبر متغير من نوع Printable.

الحل النموذجي:
Report.java
interface Printable{    void print();} class Report implements Printable{    public void print()    {        System.out.println("Report printed");    }} public class Main{    public static void main(String[] args)    {        Printable p = new Report();        p.print();    }}
Output – JavaApplication (run)×
run:
Report printed
BUILD SUCCESSFUL (total time: 0 seconds)
قارن إجابتك بالحل:
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».

للمراجعة قبل الحلّ: 11. الاستثناءات Exceptions · 12. التعامل مع الملفات File Handling

مراجعة الوحدة الخامسة: الأخطاء والملفات

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

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

1) ما الناتج؟
snippet
public class Main{    public static void main(String[] args)    {        try        {            System.out.print("1 ");            Integer.parseInt("abc");            System.out.print("2 ");        }        catch (NumberFormatException e)        {            System.out.print("3 ");        }        finally        {            System.out.print("4");        }    }}
2) لماذا يُلزمك المترجِم بـ try حول new FileReader("x.txt")؟
3) ترتيب catch الصحيح:
4) لقراءة ملف سطرًا سطرًا:

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

1) finally تُنفَّذ حتى لو لم يحدث خطأ.
الصواب: صح
2) FileWriter بالمعامل الثاني true يضيف في آخر الملف.
الصواب: صح
3) throw و throws بالمعنى نفسه.
الصواب: خطأ
4) القسمة 10.0 / 0 تطلق ArithmeticException.
الصواب: خطأ

3السؤال الثالث: أسئلة عملية

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

snippet
public class Main{    static int safeDiv(int a, int b)    {        try        {            return a / b;        }        catch (ArithmeticException e)        {            return -1;        }    }     public static void main(String[] args)    {        System.out.println(safeDiv(10, 2));        System.out.println(safeDiv(10, 0));    }}
الناتج الصحيح:
Output×
5
-1
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».

للمراجعة قبل الحلّ: 13. الواجهات Interface · 14. القوائم الديناميكية ArrayList

مراجعة الوحدة السادسة: الواجهات Interface والقوائم ArrayList

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

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

1) تأمل الكود التالي، ماذا سيكون الناتج عند تنفيذه؟
snippet
import java.util.ArrayList;interface Printable { void printInfo(); }class Book implements Printable {    public void printInfo() { System.out.println("Book"); }}class Student implements Printable {    public void printInfo() { System.out.println("Student"); }}public class Main {    public static void main(String[] args) {        ArrayList<Printable> items = new ArrayList<>();        items.add(new Book());        items.add(new Student());        for (Printable p : items) p.printInfo();    }}
2) أي عبارة صحيحة؟
3) تأمل الكود التالي، ماذا سيكون الناتج عند تنفيذه؟
snippet
import java.util.ArrayList;public class Main {    public static void main(String[] args) {        ArrayList<String> a = new ArrayList<>();        a.add("x"); a.add("y"); a.add("z");        a.remove("y");        System.out.println(a.size());    }}

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

1) دوال الواجهة مجردة بلا أجسام. صح أم خطأ؟
الصواب: صح
2) ArrayList صحيحة في جافا. صح أم خطأ؟
الصواب: خطأ
3) يمكن تخزين كائنات كلاسات مختلفة في قائمة من نوع واجهة تنفّذها جميعًا. صح أم خطأ؟
الصواب: صح

3السؤال الثالث: أسئلة عملية

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

snippet
import java.util.ArrayList;public class Main {    public static void main(String[] args) {        ArrayList<Integer> m = new ArrayList<>();        m.add(80); m.add(50); m.add(92);        int max = m.get(0);        for (int x : m) if (x > max) max = x;        System.out.println(max);    }}
الناتج الصحيح:
Output×
92
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».