Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

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

جزء من قسم Object Oriented Programming في رحلة Dart على Coddy — الدرس 35 من 110.

challenge icon

التحدي

سهل

لنقم ببناء نظام سجلات طلاب يجمع بين جميع مفاهيم التغليف (encapsulation) التي تعلمتها في هذا الفصل. ستقوم بإنشاء فئة Student تحمي البيانات الأكاديمية الحساسة بشكل صحيح مع توفير وصول متحكم فيه من خلال دوال الحصول (getters)، ودوال التعيين (setters)، والخصائص المحسوبة (computed properties).

ستقوم بتنظيم الكود الخاص بك في ملفين:

  • student.dart: قم بتعريف فئة Student تدير السجلات الأكاديمية مع تغليف مناسب:
    • final String id - يجب ألا يتغير معرف الطالب أبداً بعد الإنشاء
    • String name عام - يمكن تحديث الأسماء
    • List<int> _grades خاصة - يجب حماية قائمة الدرجات الخام
    • منشئ (constructor) يأخذ المعرف (id)، والاسم (name)، وقائمة أولية من الدرجات
    • دالة الحصول gradeCount التي تعيد عدد الدرجات المسجلة
    • دالة الحصول المحسوبة average التي تحسب وتعيد متوسط جميع الدرجات كـ double (تعيد 0.0 إذا لم تكن هناك درجات)
    • دالة الحصول المحسوبة 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: قم بإنشاء طالب بـ id 'STU001'، و name 'Emma'، ودرجات أولية [85, 92, 78]
  
  // TODO: قم باستدعاء displayRecord()
  
  // TODO: أضف درجة 95
  
  // TODO: حاول إضافة درجة غير صالحة بقيمة 150
  
  // TODO: أضف درجة 88
  
  // TODO: قم باستدعاء displayRecord()
  
  // TODO: اطبع "Highest grade: [highest]"
}

جميع دروس Object Oriented Programming