أمثلة وتمارين محلولة في لغة جافا
08 Feb 2020
آخر تعديل: 20 Mar 2021
إليك تمارين وأمثلة في البرمجة الموجهة في لغة البرمجة جافا مع الحلول.
الأسئلة جميعها مترابطة مع بعضها لإتمام كتابة وظائف في نفس البرنامج.
الحلول المطروحة هي حلول ممكنة وليست حلولًا مثاليّة.
الأسئلة
السؤال الأول
يتطلب كتابة برنامج لإدارة الطلاب حيث يتم حفظ الطلاب والمواد الدراسية ويقوم الطلاب لاحقًا بتسجيل أو إلغاء تسجيل أنفسهم في المواد.
البرنامج الرئيسي يكون في الملف: Main.java (انظر الكود أدناه)
والمطلوب هو:
-
كتابة أصناف (class) للطالب والجامعة: Student.java و University.java
-
حفظ هذه الأصناف في نفس مجلد Main.java
-
كتابة الوظائف المطلوبة أدناه في مكان العبارة TODO
في النهاية يجب أن يكون البرنامج قادرًا على إنشاء طلاب وحفظهم وعرضهم.
السؤال الثاني
يتطلب تطوير البرنامج السابق بحيث:
أ. تطوير صنف الطالب Student وفق التالي:
-
إعادة كتابة دالة equals في صنف java.lang.Object (حيث ينبغي اعتبار عنصرين من صنف Student متساويين في حال كان رقم الطالب الخاص بهم متساو)
-
إعادة كتابة الدالة toString في صنف java.lang.Object ( الـ String الخاص بالعناصر من صنف Student يجب أن تكون على الشكل “رقم الطالب، الاسم الكنية” حيث تُكتب الكنية بأحرف كبيرة). حيث يتم استخدام دالة toString() عند استعراض الطلاب المخزنين في النظام.
ب. إجراء تغيير في صنف University بحيث يُحفظ الطلاب في شعاع java.util.Vector بدلًا من مصفوفة
ج. تطوير الصنف الرئيسي Main بحيث يمكن للمستخدم إضافة طلاب فقط في حالة عدم توافرهم أصلا في النظام. في حالة وجود الطالب مسبقًا وأراد المستخدم إضافته فستظهر رسالة خطأ توضح السبب.
عند كتابة البرنامج يرجى الانتباه للنقاط التالية:
-
يجب أن يحوي صنف Student على عشر متغيرات على الأقل
-
جميع المتغيرات في جميع الأصناف يجب أن تكون من نوع private وأن تحوي قيمة ابتدائية (غير الصفر أو null)
-
يجب أن يحوي الصنف Student على دالتي بناء (Constructors) على الأقل. ويجب عدم السماح بإنشاء عنصر طالب Student بدون رقم الطالب. ويمكن إنشاء عنصر طالب برقم طالب واسم وكنية.
-
يجب أن يحوي الصنف University على دالتي بناء على الأقل. يجب عدم السماح بإنشاء عنصر جامعة University بدون اسم الجامعة.
-
الانتباه لتنسيق الكود وبحيث يتم إزاحة الأسطر البرمجية في كل مجموعة { .. }
السؤال الثالث
لقد قمتَ بإعطاء المستخدم في البرنامج الرئيسي إمكانية إنشاء عناصر (object) جديدة من صنف الطالب Student وحفظها في عناصر من صنف الجامعة University class في حال عدم وجود تلك الطلاب في النظام مسبقًا.
مهامك الجديدة هي:
أ. تطوير الصنف الرئيسي Main بحيث يتم كتابة الوظائف المُعلّمة بـ TODO في الكود أدناه.
ب. إنشاء أصناف للمدرِّس Lecturer والمواد الدراسية Lessons
ج. ستلاحظ أن صنف المُدرِّس يشترك مع صنف الطالب في العديد من المتغيرات. استخدم مفهوم الوراثة وقم بإنشاء صنف شخص Person والذي يرث المتغيرات المشتركة من كلا الصنفين السابقين.
د. تطوير صنف الطالب بحيث يزوّد دالة ثابتة static للتأكد من رقم الطالب. يتم استدعاء هذه الدالة من الصنف الرئيسي Main لإظهار رسالة خطأ للمستخدم في حال أدخل رقمًا للطالب مخالفًا للقواعد التالية (أو أحدها):
-
يُسمح لرقم الطالب أن يحوي أرقامًا فقط.
-
يجب أن يكون طول رقم الطالب 7 أرقامًا.
-
لا يُسمح ﻷول رقم أن يكون صفرًا
هـ. إعادة كتابة صنف الجامعة University بحيث تستخدم خاصية generics لشعاع (Vector) الصنف بحيث يمكن حفظ العناصر من نفس الصنف فقط في عناصر الشعار Vector-Objects
السؤال الرابع
قم بتطوير برنامجك السابق بحيث يشتمل على المهام التالية:
الحلول
ملاحظة: يرجى الانتباه إلى أنه في الحلول أدناه المقصود بـ students_number هو عدد الطلاب ككل، بينما student_number هو رقم الطالب الجامعي.
حل السؤال الأول
Main.java
Student.java
University.java
حل السؤال الثاني
Main.java
Student.java
University.java
حل السؤال الثالث
Main.java
Student.java
University.java
Person.java
Lecture.java
Lecturer.java
حل السؤال الرابع
Main.java
Person.java
Student.java
Uni.java
الكود في هذا الصنف طويل بسبب احتوائه على حالات زائدة غير مطلوبة في السؤال مثل عرض خيار إضافة طالب في حال عدم العثور عليه وما إلى ذلك..
Course.java
Lecturer.java
يرجى مراسلتي ﻷي مشكلة أو سؤال.
المرجع: منهاج أساسيات البرمجة الموجهة، د.بورجو يلدز - الجامعة التركية الألمانية