30-06-16, 04:11 AM
Abstract Classes تمكنك من اضافة الكثير من الوظائف للتطبيق بدون الاضرار بالكلاسات التي اشتقتها (انا اسميها الابناء)
اذ ان تحديثك للفئة القاعدية فالتحديثات ستشمل كل الفئات الابناء
بينما اذا استخدمت Interfases فانك ستكون مجبرا على اعادة تعريف الطرق الجديدة في كل الفئات الابناء.
انا ارى بنظري ان استخدام Abstract Classe هو انسب للتعامل مع كل الفئات ذات القرابة , اي ذات الارتباط ببعضها
بينما Interfaces تعتبر حل امثل للفئات غير المرتبطة.
لتتضح الفكرة اكثر دعني اضرب المثال التالي
لو فرضنا ان لدينا فئة الطائر و فئة الطائرة و كلا الفئتين يمتلكان الطريقة Flay فانه من السخافة ان نقول ان الطائرة ترث من الطائر فقط لانها تمتلك خاصية الطيران , فانه من المناسب اكثر ان تكون هذه الطريقة موجودة في Interface
و كل فئة تستخدم الطريقة بما يناسبها
اذا اردنا نقدم تعميما اكثر لحل هذه المشكلة هناك قول اخر هو لما لا يكون لدينا Abstract Classes يشمل على كل الوظائف ليساعدنا في التعديلات المستقبلية توفيرا للوقت اذ انني لن اضطر لتعديل كل الفئات الاخرى التي تشتق من هذه الفئة (هل تذكر قولنا عن الفئات ذات القرابة و الارتباط) كما انها تسمح لنا باستخدام جزئيات فقط من الوظائف.
الخيار يتوقف عليك و على حسب حاجتك (لا تغفل الجزئية التي تحدث عنها الاخ الشاكي).
نستطيع الاعتماد على Interfaces و كذلك Abstract Classes و كذلك يمكن المزج بينهما.
اذ ان تحديثك للفئة القاعدية فالتحديثات ستشمل كل الفئات الابناء
بينما اذا استخدمت Interfases فانك ستكون مجبرا على اعادة تعريف الطرق الجديدة في كل الفئات الابناء.
انا ارى بنظري ان استخدام Abstract Classe هو انسب للتعامل مع كل الفئات ذات القرابة , اي ذات الارتباط ببعضها
بينما Interfaces تعتبر حل امثل للفئات غير المرتبطة.
لتتضح الفكرة اكثر دعني اضرب المثال التالي
لو فرضنا ان لدينا فئة الطائر و فئة الطائرة و كلا الفئتين يمتلكان الطريقة Flay فانه من السخافة ان نقول ان الطائرة ترث من الطائر فقط لانها تمتلك خاصية الطيران , فانه من المناسب اكثر ان تكون هذه الطريقة موجودة في Interface
و كل فئة تستخدم الطريقة بما يناسبها
اذا اردنا نقدم تعميما اكثر لحل هذه المشكلة هناك قول اخر هو لما لا يكون لدينا Abstract Classes يشمل على كل الوظائف ليساعدنا في التعديلات المستقبلية توفيرا للوقت اذ انني لن اضطر لتعديل كل الفئات الاخرى التي تشتق من هذه الفئة (هل تذكر قولنا عن الفئات ذات القرابة و الارتباط) كما انها تسمح لنا باستخدام جزئيات فقط من الوظائف.
الخيار يتوقف عليك و على حسب حاجتك (لا تغفل الجزئية التي تحدث عنها الاخ الشاكي).
نستطيع الاعتماد على Interfaces و كذلك Abstract Classes و كذلك يمكن المزج بينهما.
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال


