Menu
CoddyTech

مراجعة - سجلات الطلاب

جزء من قسم البرمجة كائنية التوجه في رحلة Dart على Coddy. الدرس 35 من 110.

challenge icon

التحدي

سهل

لنُنشئ نظامًا لسجلات الطلاب يجمع كل مفاهيم التغليف التي تعلمتها في هذا الفصل. ستُنشئ الصنف Student الذي يحمي البيانات الأكاديمية الحساسة على نحو سليم، مع إتاحة الوصول إليها بشكل مضبوط عبر getters وsetters والخصائص المحسوبة.

ستنظم الشيفرة في ملفين:

  • student.dart: عرّف صنفًا باسم Student يدير السجلات الأكاديمية باستخدام التغليف المناسب:
    • final String id - يجب ألا يتغير معرّف الطالب بعد الإنشاء أبدًا
    • String name عام - يمكن تحديث الأسماء
    • List<int> _grades خاص - يجب حماية قائمة الدرجات الأصلية
    • منشئ يأخذ المعرّف والاسم وقائمة أولية من الدرجات
    • getter باسم gradeCount يعيد عدد الدرجات المسجلة
    • getter محسوب باسم average يحسب متوسط جميع الدرجات ويعيده كقيمة من النوع double (أعِد 0.0 إذا لم تكن هناك درجات)
    • getter محسوب باسم letterGrade يعيد تقديرًا حرفيًا بناءً على المتوسط: 'A' للدرجات من 90 فأعلى، و'B' للدرجات من 80 إلى 89، و'C' للدرجات من 70 إلى 79، و'D' للدرجات من 60 إلى 69، و'F' للدرجات الأقل من 60
    • طريقة addGrade(int grade) لا تقبل إلا الدرجات الواقعة بين 0 و100 (شاملًا). إذا كانت الدرجة صالحة، فأضِفها واطبع Grade [grade] added for [name]. وإذا كانت غير صالحة، فاطبع Invalid grade: [grade]
    • طريقة getHighestGrade() تعيد أعلى درجة، أو 0 إذا لم تكن هناك درجات
    • طريقة displayRecord() تعرض الملخص الأكاديمي للطالب
  • main.dart: استورد صنف الطالب واعرض التغليف عمليًا:
    • أنشئ طالبًا ذا معرّف 'STU001' واسم 'Emma' ودرجات أولية [85, 92, 78]
    • استدعِ displayRecord()
    • أضف درجة 95
    • حاول إضافة درجة غير صالحة مقدارها 150
    • أضف درجة 88
    • استدعِ displayRecord()
    • اطبع Highest grade: [highest]

يجب أن تطبع الطريقة displayRecord() بالتنسيق التالي:

===== Student Record =====
ID: [id]
Name: [name]
Grades Recorded: [gradeCount]
Average: [average]
Letter Grade: [letterGrade]

المخرجات المتوقعة:

===== Student Record =====
ID: STU001
Name: Emma
Grades Recorded: 3
Average: 85.0
Letter Grade: B
Grade 95 added for Emma
Invalid grade: 150
Grade 88 added for Emma
===== Student Record =====
ID: STU001
Name: Emma
Grades Recorded: 5
Average: 87.6
Letter Grade: B
Highest grade: 95

جرّب بنفسك

import 'student.dart';

void main() {
  // TODO: أنشئ طالبًا بمعرّف 'STU001'، واسم 'Emma'، ودرجات أولية [85, 92, 78]
  
  // TODO: استدعِ displayRecord()
  
  // TODO: أضف درجة قيمتها 95
  
  // TODO: حاول إضافة درجة غير صالحة قيمتها 150
  
  // TODO: أضف درجة قيمتها 88
  
  // TODO: استدعِ displayRecord()
  
  // TODO: اطبع "Highest grade: [highest]"
}

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم Dart عبر الإنترنت