فهرس المقرر
تدريب عملي

التدريب العملي 6: كلاس الطالب Student

أنشئ مشروع Student وكلاسًا حسب المخطط، ثم أنشئ طالبين بطريقتين.

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

من الدرس 3. دالة البناء Constructor · كل التدريبات

١نص المسألة

أنشئ كلاس Student بالخصائص id و name و mark، ودالتي بناء، ودالة printData تطبع بيانات الطالب، ودالة getResult تعيد Pass إذا كانت الدرجة 60 فأكثر وإلا Fail. أنشئ طالبين واطبع بيانات ونتيجة كل منهما.

٢الخوارزمية المقترحة

  1. عرّف الخصائص الثلاث في كلاس Student.
  2. اكتب دالة البناء الافتراضية، ودالة البناء ذات المعاملات الثلاثة باستخدام this.
  3. printData تطبع العنوان Student data ثم الخصائص الثلاث.
  4. getResult: if (mark >= 60) أعد "Pass" وإلا أعد "Fail".
  5. في Main أنشئ s1 بالدالة الافتراضية وأسند القيم 4321 و Mohammed و 80، ثم اطبع بياناته ونتيجته.
  6. أنشئ s2 بالقيم 4344 و Turki و 50 مباشرة، واطبع بياناته ونتيجته.

٣خطوات التطبيق

في NetBeans

  1. أنشئ مشروعًا باسم Student والكلاس الرئيسي Main.
  2. أنشئ كلاس Student بالمكوّنات الموضّحة في المخطط.
  3. getResult تعيد Pass إذا كانت الدرجة 60 فأكثر، وإلا Fail.

في OneCompiler

  1. افتح OneCompiler من زر «▶ شغّل المشروع» أسفل الحل، أو من موقع onecompiler.com/java.
  2. في OneCompiler تُكتب كل الكلاسات في ملف واحد Main.java؛ زر التشغيل يجمعها لك تلقائيًّا.
  3. إذا كان البرنامج يقرأ من لوحة المفاتيح، فاكتب المدخلات في خانة STDIN التي تظهر تحت الكود في محرّر OneCompiler، ثم اضغط Run.

٤المخرجات المطلوبة

نفّذ برنامجك، ويجب أن تظهر المخرجات التالية:

Output – (run)×
run:
Student data:
Id: 4321
name: Mohammed
mark: 80.0
Result: Pass
 
Student data:
Id: 4344
name: Turki
mark: 50.0
Result: Fail
BUILD SUCCESSFUL (total time: 0 seconds)

٥الحل المقترح

حاول بنفسك أولًا، ثم قارن حلّك بالحل المقترح (كود التدريب من مذكرة العملي):

👁 اعرض الحل المقترح
Student~ id : int~ name : String~ mark : double+ Student()+ Student(id, name, mark)~ printData() : void~ getResult() : String
🧩 مخطط الكلاس Student المطلوب في التدريب (كما في جدول المذكرة).
package mobile; public class Student {    // Fields    int id;    String name;    double mark;     //   Default Constructor    public Student() {    }     // User-Defined Constructor    public Student(int id, String name, double mark) {        this.id = id;        this.name = name;        this.mark = mark;    }     void printData(){        System.out.println("Student data:");        System.out.println("Id: " + id);        System.out.println("name: " + name);        System.out.println("mark: " + mark);    }     String getResult(){        if (mark >= 60)            return "Pass";        else            return "Fail";    }}
package mobile; public class Main {     public static void main(String[] args) {        Student s1 = new Student();        s1.id = 4321;        s1.name = "Mohammed";        s1.mark = 80;         s1.printData();        System.out.println("Result: " + s1.getResult());         System.out.println();        Student s2 = new Student(4344, "Turki", 50);        s2.printData();        System.out.println("Result: " + s2.getResult());    }}
مخطط المشروع مستخرج من الكود. انقر على أي كلاس لفتح كوده.
StudentMain
Student~ id : int~ name : String~ mark : double+ Student()+ Student(id : int, name : String, mark : double)~ printData() : void~ getResult() : StringMain+ main(args : String[]) : void

ملفات المشروع في تبويبات كما في NetBeans. زر التشغيل يجمعها في ملف واحد ليعمل على OneCompiler.

Output – Student (run)×
run:
Student data:
Id: 4321
name: Mohammed
mark: 80.0
Result: Pass
 
Student data:
Id: 4344
name: Turki
mark: 50.0
Result: Fail
BUILD SUCCESSFUL (total time: 0 seconds)

أسئلة المناقشة

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

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

1) عند إنشاء الكائن s1 باستخدام new Student() كيف تم تهيئة الحقول قبل إسناد القيم؟
2) بعد تنفيذ الأوامر
snippet
 s1.id = 4321;s1.name = "Mohammed";s1.mark = 80;
ما النتيجة المتوقعة عند استدعاء s1.getResult()
3) ما الفرق بين الكائن s1 و s2 في البرنامج؟
4) بناء على الكود في كلاس Main عند استدعاء s2.getResult() ماهي القيمة التي ستعيدها؟
5) ما نوع المخرجات التي تُظهرها الدالة printData()
6) ماذا يطبع السطر
snippet
 System.out.println("Result: " + s1.getResult());
إذا كانت mark = 80
7) لماذا نستخدم الكلمة this في الـ constructor المخصص؟
8) أي من العبارات التالية صحيحة؟
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».