واجهة المسؤول
جزء من قسم 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أنماط التصميم - الجزء الثاني
نمط الأمرنمط المحولنمط المزيننمط طريقة القالبنمط الحالةنمط التركيبنمط المستودعتدرّب بنفسك: مترجم Dart عبر الإنترنت