Professional Documents
Culture Documents
SOLID Principles
SOLID Principles
الSOLD
هي كلمه مختصره لخمس مبادئ اساسيه بطتبيك هذه المبادئ تجعل الكود لابل للتوسع
والتحديث واالختبار
حرف ال <== Sمبدا المسئوليه الواحده Single Responsibility Principle
*لبل ما اوضح الخمس مبادئ دول هوضح لين الفرق بين ال Design Principle &Design Pattern
هي مجموعه مبادئ ولواعد توضح لنا شكل الكود علشان الكود في النهايه يكون
هذه المبادئ بتجنبنا من العاده السيئه بتاعت التركيز علي الوصل للحل دون االخد في االعتبار جوده الحل
هي حلول عمليه وفعليه تم بناؤها علشان تحل مشكله برمجيه معينه
المهندس بيعطي التعليمات والتوجهات علشان البناء يكون طبما لمعايير هندسيه معينه Design principle
2
البناء بينفذ الحلول الفعليه علشان تتم عمليه البناءDesign Pattern
ال Couplingاالرتباط
لما يكون في كالس بيستعمل اوبجكت من كالس اخر بنمول ان الكالسين دول مترابطين ممكن االرتباط
يكون ضعيفاLoose Coupling:
*كلما كان االرتباط بين الكالس وبعضها لوي كلما كان الكود صعب الصيانه والتعديل
ال Cohesionالتماسن
يعني مينفعش االلي كالس للموظفين وفي نفس الكالس بيانات الشركه وبيانات تسجيل الدخول كدا
المكونات غير مترابطه ببعض ....الزم احط الخصائص ال شبه بعض في كالس واحد
مثال:
الكالس ده كالس غير متماسن النه اشتمل علي بيانات عير متماسكه مينفعش كالس الموظف يحتوي علي
بيانات الشركه وحاله المستخدم
3
ممكن التعديل علي الكالس ده ليصبح كالس غير متماسن كاالتي:
هوضح المفهومين دول بمثال لما الول حيوان ده حاجه مجرده انت دلولت مش تعرف اي حيوان الصده كدا
يعتبر Abstract
الكن لما الول لطه اوكلب كدا انت عرفت عن اي حيوان اتكلم ده يعتبر Concrete
* لما يكون هنان كالس في الخصائص الخاصه بتاعته والدر اخد منه اوبجكت كدا انا بتكلم عن حاجه
والعيهConcrete
*لما اتكلم عن حاجه مجرده ال يحتوي علي اي تفاصيل ذي ال Abstract &Interfaceكدا بتكلم عن
4
حاجه مجردهAbstract
في التغيير
مثال المحاسب هو ال بيموم بعمليه الحسابات في الشركه (مسئوليه واحده )غير مسئول مثال عن التسويك
ذي مثال كالس واحد يموم بمراءه البيانات وحفظ البيانات في لاعده البيانات والتحمك من سالمه البيانات
ده عباره عن انذار الستخدام هذا المبدا والسم الكالس ده الي كالسات صغيره كل كالس مسئول عن
مسئوليه واحده فمط
الحل
5
هعمل كالس يكون مسئول عن لراءه البيانات....وكالس مسئول عن حفظ البيانات في لاعده البيانات
وكالس مسئول عن التحمك من سالمه البيانات وكدا انا طبمت مبدا Single Responsibility
هنا هتالليه بينتهن مبدا Single Responsibility Principleالن هتاللي كالس الفاتوره موجود فيه
اربع وظائف وهي اضافه الفاتوره وحذف الفاتوره باالضافه كمان الي ارسال الرسائل وتسجيل االخطاء
هناللي ارسال رسال البريد وتسجيل االخطاء ليست من مسئوليه الفاتور
هنعمل تالته كالس كالس الفاتوره هنحط فيه الحاجات ال متعلمه بالفاتوره
6
المبدأ التانيOpen-Close Principle :
معناه ان بيسمح باالضافه وغير مسموح بالتعديل
*ممكن استخدامه هذا المبدا باستخدام ال Abstract & Interfaceالنه بيسمحوا اننا نضيف علي الكود
الموجود بداخله
مثال :هذا الكود فيه عندنا نوعين من انواع الفاتوره وهما الFinalInvoice , ProposedInvoice
لواحتاجنا اننا نضيف نوع جديد من الفاتوره هنحتاج نضيف else ifفي هذا الكود وهذا يخترق مبدا ال OCP
7
الحل :اننا نعمل Interface or Abstract or Overrideونحط فيه الداله ال عوزين نغير الBody
بتاعها وبكدا لدرنا اننا تضيف علي الكود دون ان نغير في الكود
لو عندي اتنين كالس , Sكالس Tممكن اخلي االوبجكت بتاع ال Sيساوي االوبجكت بتاع ال T
8
Ex:
ممكن الول
Or
9
هنا هناللي IsCircleسهلت الموضوع بدل ما كنا نعمل داله تحسب مساحه الدائره لوحدها وداله تانيه
تحسب مساحه الشكل البيضاوي لواحده هنا عملناCheckواحده بس لو االلطار متساويه هتكون دائره
غير كدا هتكون شكل بيضاوي هنا مش احتاجنا نعمل داله علشان نثبت ان الشكل Ellipse
هنا لما كان ال X,Yمتساويين كان الشكل دائره.غير كدا هيكون شكل بيضاوي
مثال :انا لما يكون عندي Iterfaceطبيعي لما اي كالس مثال يورث منه الزم يطبك كل الدوال ال داخله
طيب ممكن الكالس مش عاوز يطبك كل الدوال ال فيه في الحاله دي بنستخدم مبدا ISP
مثال:في المثال التالي مش الزم كالس ال Userلما يورث من الInterface IUserمش الزم يطبك كل
10
Dependency Inversion Principle:المبدأ الخامس
الزم يعتمدوا االتنينLow Level Module مينفعش يعتمد علي الHigh Level Module معناها ان ال
11
هتاللي ان كالس Bبيحتاج اوبجكت من كالس Aاذا Bهو High Level Module
/https://www.linkedin.com/in/mona-abdelmonem-35453b216
12