واجهة المسؤول
جزء من قسم Object Oriented Programming في رحلة Dart على Coddy — الدرس 105 من 110.
التحدي
سهلفي الدرس السابق، قمت بإضافة وظيفة البحث إلى فئة Library الخاصة بك. الآن دعنا ننشئ واجهة مسؤول (admin) تسمح للمستخدمين المتميزين بإدارة مخزون المكتبة - إضافة كتب جديدة وإزالة الكتب الموجودة.
ستقوم بتقديم فئة Admin جديدة وتعزيز Library الخاصة بك بقدرات إدارية:
book.dart: احتفظ بفئةBookالحالية دون تغيير.user.dart: احتفظ بفئةUserالحالية دون تغيير.admin.dart: أنشئ فئةAdminجديدة تمثل مسؤولي المكتبة. يمتلك المسؤولid(String) وname(String). قم بإعادة كتابة (Override) لـtoString()لتعيدAdmin [id]: name.library.dart: أضف وظائف إدارية إلى فئةLibraryالخاصة بك:- أضف قائمة لتخزين المسؤولين المسجلين
registerAdmin(Admin admin)- يضيف مسؤولاً إلى المكتبةaddBookAsAdmin(String adminId, Book book)- إذا كان المسؤول موجوداً، يضيف الكتاب ويطبعadminId added "title". إذا لم يكن المسؤول موجوداً، يطبعUnauthorized.removeBook(String adminId, String isbn)- إذا كان المسؤول موجوداً والكتاب موجوداً، يزيل الكتاب من المكتبة ويطبعadminId removed "title". إذا لم يكن المسؤول موجوداً، يطبعUnauthorized. إذا لم يكن الكتاب موجوداً، يطبعBook not found.getBookCount()- يعيد إجمالي عدد الكتب في المكتبة
main.dart: قم باستعراض واجهة المسؤول. أنشئLibraryوقم بتسجيل مسؤول (A001،Sarah Admin). استخدم المسؤول لإضافة ثلاثة كتب:978-0-13-468599-1،The Pragmatic Programmer،David Thomas978-0-596-51774-8،JavaScript: The Good Parts،Douglas Crockford978-0-13-235088-4،Clean Code،Robert Martin
Total books: X. ثم حاول إضافة كتاب باستخدام معرف مسؤول غير مسجلA999. قم بإزالة الكتاب الثاني باستخدام المسؤول المسجل. اطبع العدد النهائي للكتب.
المخرجات المتوقعة:
A001 added "The Pragmatic Programmer"
A001 added "JavaScript: The Good Parts"
A001 added "Clean Code"
Total books: 3
Unauthorized
A001 removed "JavaScript: The Good Parts"
Total books: 2جرّب بنفسك
import 'book.dart';
import 'user.dart';
import 'library.dart';
import 'admin.dart';
void main() {
// TODO: إنشاء مكتبة (Library)
// TODO: إنشاء وتسجيل مسؤول (A001, Sarah Admin)
// TODO: استخدام المسؤول لإضافة ثلاثة كتب:
// - 978-0-13-468599-1, The Pragmatic Programmer, David Thomas
// - 978-0-596-51774-8, JavaScript: The Good Parts, Douglas Crockford
// - 978-0-13-235088-4, Clean Code, Robert Martin
// TODO: طباعة عدد الكتب بصيغة "Total books: X"
// TODO: محاولة إضافة كتاب باستخدام معرف مسؤول غير مسجل A999
// TODO: إزالة الكتاب الثاني (978-0-596-51774-8) باستخدام المسؤول المسجل
// TODO: طباعة العدد النهائي للكتب
}
جميع دروس Object Oriented Programming
1أساسيات الـ OOP
الملفات الخارجيةالمكتبات والـ Importsمقدمة في الـ OOPالـ Classes مقابل الـ Objectsالكلمة المفتاحية thisالـ Methodsمتغيرات الـ Instanceأساسيات الـ Constructorمراجعة - آلة حاسبة بسيطة4أمان الـ Null
مقدمة في أمان الـ NullNullable مقابل Non-Nullableعاملا الـ ? و !الكلمة المفتاحية Late وأمان الـ Nullالعوامل المدركة للـ Nullأمان الـ Null في الـ Classesمراجعة - نظام ملف تعريف المستخدم7الفئات المجردة والواجهات
الفئات المجردةالدوال المجردةالواجهات في Dartالواجهات الضمنيةالتنفيذ مقابل التوسيعالواجهات المتعددةمراجعة - حاسبة الأشكال10المجموعات والأنماط العامة
نظرة عامة على List و Set و Mapالمجموعات آمنة النوعالفئات العامةالدوال العامةقيود الأنماط العامةIterable و Iteratorملخص - التخزين العام13مفاهيم OOP المتقدمة
التركيب مقابل الوراثة (Composition vs Inheritance)دوال التوسعة (Extension Methods)الأصناف القابلة للاستدعاء (Callable Classes)الأصناف المختومة (Sealed Classes - Dart 3)السجلات (Records - Dart 3)الأنماط والمطابقة (Patterns & Matching - 3.0)التعدادات مع الدوال (Enums with Methods)16مشروع: إدارة المكتبة
نظرة عامة على المشروعفئات الكتاب والمستخدم2المنشئات في Dart
المنشئ الافتراضيالمنشئات المسماةقوائم التهيئةالمنشئات الثابتةالمنشئات المصنعيةالمنشئات الموجهةملخص - بناء الأشكال5التغليف (Encapsulation)
الأعضاء العامة مقابل الخاصةاتفاقية البادئة _الخصوصية على مستوى المكتبةتعمق في Getters و Settersإخفاء المعلوماتمراجعة - سجلات الطلاب8Mixins
مقدمة إلى Mixinsإنشاء Mixinsاستخدام Mixins متعددةالكلمة المفتاحية on في MixinsMixin مقابل الوراثة (Inheritance)Mixin مقابل الواجهة (Interface)مراجعة - نظام الحيوانات (Animal System)3خصائص الـ Class
أعضاء الـ Instance مقابل الـ Staticحقول Final و Constمتغيرات Lateالـ Static Methods والحقولدوال الـ Getters والـ Settersمراجعة - مدير الحساب البنكي6الوراثة
أساسيات الوراثةالكلمة المفتاحية superإعادة تعريف الدوال (Method Overriding)الوسم @overrideالكلمة المفتاحية final Classالدوال البانية والوراثةمراجعة - هيكلية الموظفين9تعدد الأشكال
أساسيات تعدد الأشكالتعدد الأشكال عبر الـ Interfacesالتحقق من النوع أثناء التشغيلالمعاملات is و asالكلمة المفتاحية Covariantملخص - معالج الدفع12البرمجة الكائنية غير المتزامنة (Async OOP)
Futures و async/awaitأساسيات الـ Streamsمتحكمات الـ Streamsالـ Constructors غير المتزامنةالعمليات غير المتزامنة في دوال الكلاسمراجعة - جالب البيانات (Data Fetcher)15أنماط التصميم - الجزء الثاني
نمط الأمرنمط المحولنمط المزيننمط طريقة القالبنمط الحالةنمط التركيبنمط المستودع