کتاب اصل جایگزینی لیسکوف (LSP): وراثت صحیح و رفتارهای قابل پیش‌بینی با فرمت AZW3 برای کتابخوان کیندل و فرمت EPUB

اصول SOLID: اصل جایگزینی لیسکوف - وراثت صحیح و رفتارهای قابل پیش‌بینی اصول SOLID: اصل جایگزینی لیسکوف (LSP) - وراثت صحیح و رفتارهای قابل پیش‌بینی معرفی دوره آیا تا به حال در کدنویسی با چالش‌هایی مواجه...

انتخاب پلن

انتخاب پلن برای ادامه خرید الزامی است.

پرداخت اقساطی
در صورت خرید اقساطی هر قسط: 62,488 تومان
۴ قسط ماهانه. بدون سود، چک و ضامن.
پرداخت اقساطی با دیجی‌پی پرداخت اقساطی با ترب‌پی

🎓 دوره آموزشی جامع

📚 اطلاعات دوره

عنوان دوره: دوره اصل جایگزینی لیسکوف (LSP): وراثت صحیح و رفتارهای قابل پیش‌بینی

موضوع کلی: برنامه نویسی

موضوع میانی: اصول SOLID

📋 سرفصل‌های دوره

  • 1. مقدمه‌ای بر اصول SOLID
  • 2. مرور کلی اصل مسئولیت واحد (SRP)
  • 3. مرور کلی اصل باز/بسته (OCP)
  • 4. مرور کلی اصل جداسازی رابط (ISP)
  • 5. مرور کلی اصل وارونگی وابستگی (DIP)
  • 6. معرفی اصل جایگزینی لیسکوف (LSP): مشکل چیست؟
  • 7. تاریخچه و معرفی باربارا لیسکوف
  • 8. تعریف رسمی اصل جایگزینی لیسکوف
  • 9. چرا LSP قلب برنامه‌نویسی شیءگرا است؟
  • 10. مفهوم "جایگزینی" در LSP
  • 11. مفهوم "رفتار قابل پیش‌بینی"
  • 12. وراثت چیست؟ مرور مفاهیم پایه
  • 13. وراثت به عنوان رابطه "is-a"
  • 14. مزایای وراثت: استفاده مجدد از کد
  • 15. خطرات وراثت: مشکل کلاس پایه شکننده (Fragile Base Class)
  • 16. وراثت در مقابل ترکیب (Composition): چه زمانی از کدام استفاده کنیم؟
  • 17. مفهوم پلی‌مورفیسم (Polymorphism) و ارتباط آن با LSP
  • 18. قراردادهای طراحی (Design by Contract) به عنوان پایه LSP
  • 19. پیش‌شرط‌ها (Preconditions) در یک متد
  • 20. پس‌شرط‌ها (Postconditions) در یک متد
  • 21. ناورداها (Invariants) در یک کلاس
  • 22. قانون اول LSP: پیش‌شرط‌ها در زیرکلاس نباید قوی‌تر شوند
  • 23. مثال عملی: نقض قانون پیش‌شرط‌ها
  • 24. قانون دوم LSP: پس‌شرط‌ها در زیرکلاس نباید ضعیف‌تر شوند
  • 25. مثال عملی: نقض قانون پس‌شرط‌ها
  • 26. قانون سوم LSP: ناورداهای کلاس پایه باید در زیرکلاس حفظ شوند
  • 27. مثال عملی: نقض قانون ناورداها
  • 28. تاریخچه متدها (The History Rule) و ارتباط آن با وضعیت (State)
  • 29. قانون استثناها (Exceptions): زیرکلاس نباید استثناهای جدیدی پرتاب کند
  • 30. قانون امضای متدها: کوواریانس (Covariance) در نوع بازگشتی
  • 31. قانون امضای متدها: تضادپذیری (Contravariance) در پارامترها
  • 32. مشکل کلاسیک: مربع و مستطیل (The Rectangle-Square Problem)
  • 33. تحلیل مشکل مربع-مستطیل: چرا مربع یک نوع مستطیل نیست؟
  • 34. شکستن ناورداها در مثال مربع-مستطیل
  • 35. راه‌حل‌های مشکل مربع-مستطیل: تفکیک کلاس‌ها
  • 36. مشکل کلاسیک دوم: بیضی و دایره
  • 37. بررسی بوی کد (Code Smell): بررسی نوع (Type Checking) با `is` یا `instanceof`
  • 38. چرا بررسی نوع، LSP را نقض می‌کند؟
  • 39. بوی کد: پرتاب استثنای `NotImplementedException` در متدهای بازنویسی شده
  • 40. بوی کد: زیرکلاسی که هیچ کاری انجام نمی‌دهد (Empty Override)
  • 41. بوی کد: بازگرداندن مقادیر غیرمنتظره (null یا مقادیر جادویی)
  • 42. شناسایی نقض LSP در کد موجود
  • 43. نقض LSP در سازنده‌ها (Constructors)
  • 44. نقض LSP از طریق تغییر وضعیت داخلی به شکل غیرمنتظره
  • 45. عوارض نقض LSP: کدهای پیچیده و غیرقابل نگهداری
  • 46. عوارض نقض LSP: نیاز به تغییرات گسترده در کلاینت‌ها
  • 47. عوارض نقض LSP: تست‌نویسی دشوار
  • 48. الگوی طراحی Template Method و ارتباط آن با LSP
  • 49. پیاده‌سازی صحیح Template Method با رعایت LSP
  • 50. الگوی طراحی Strategy به عنوان جایگزین وراثت نامناسب
  • 51. چگونه Strategy به رعایت LSP کمک می‌کند؟
  • 52. الگوی طراحی Factory و نقش آن در حفظ LSP
  • 53. الگوی طراحی Decorator و سازگاری آن با LSP
  • 54. الگوی طراحی Null Object برای جلوگیری از نقض LSP
  • 55. رفکتورینگ برای انطباق با LSP: استخراج رابط (Extract Interface)
  • 56. رفکتورینگ: جایگزینی وراثت با ترکیب (Replace Inheritance with Composition)
  • 57. رفکتورینگ: جایگزینی وراثت با تفویض اختیار (Replace Inheritance with Delegation)
  • 58. طراحی سلسله‌مراتب وراثت با ذهنیت LSP
  • 59. نقش کلاس‌های انتزاعی (Abstract Classes) در پیاده‌سازی LSP
  • 60. نقش رابط‌ها (Interfaces) در تضمین LSP
  • 61. LSP و تست‌نویسی: چگونه LSP تست‌ها را ساده‌تر می‌کند؟
  • 62. نوشتن تست‌های واحد برای اطمینان از رعایت LSP
  • 63. استفاده از Mocking و Stubbing در تست‌های مبتنی بر LSP
  • 64. LSP و اصل باز/بسته (OCP): یک رابطه هم‌افزا
  • 65. چگونه نقض LSP منجر به نقض OCP می‌شود؟
  • 66. LSP و اصل جداسازی رابط (ISP)
  • 67. LSP و اصل وارونگی وابستگی (DIP)
  • 68. تحلیل یک سناریوی واقعی: سیستم مدیریت کاربران
  • 69. شناسایی نقض LSP در سیستم مدیریت کاربران
  • 70. رفکتورینگ سیستم مدیریت کاربران برای رعایت LSP
  • 71. تحلیل یک سناریوی واقعی: سیستم پردازش سفارش
  • 72. شناسایی نقض LSP در سیستم پردازش سفارش
  • 73. رفکتورینگ سیستم پردازش سفارش برای رعایت LSP
  • 74. LSP در زبان‌های برنامه‌نویسی استاتیک (مانند C# و Java)
  • 75. LSP در زبان‌های برنامه‌نویسی دینامیک (مانند Python و JavaScript)
  • 76. مفهوم Duck Typing و ارتباط آن با LSP
  • 77. LSP فراتر از کلاس‌ها: اعمال اصل در سطح ماژول‌ها و سرویس‌ها
  • 78. LSP و طراحی API: اطمینان از سازگاری نسخه‌های مختلف
  • 79. چگونه فریمورک‌ها LSP را ترویج یا نقض می‌کنند؟
  • 80. مطالعه موردی: نقض LSP در یک کتابخانه معروف
  • 81. مطالعه موردی: رعایت LSP در یک فریمورک موفق
  • 82. تأثیر LSP بر قابلیت توسعه‌پذیری (Extensibility) سیستم
  • 83. تأثیر LSP بر قابلیت نگهداری (Maintainability) کد
  • 84. هزینه‌های کوتاه‌مدت و بلندمدت رعایت (یا عدم رعایت) LSP
  • 85. چه زمانی می‌توان LSP را (با احتیاط) نادیده گرفت؟
  • 86. استدلال‌های رایج برای نقض LSP و پاسخ به آنها
  • 87. توسعه ذهنیت مبتنی بر رفتار (Behavioral Mindset)
  • 88. LSP به عنوان یک ابزار تفکر برای طراحی بهتر
  • 89. چک‌لیست بررسی انطباق کد با LSP
  • 90. تمرین: طراحی یک سلسله‌مراتب برای پرندگان (مشکل پرنده پنگوئن)
  • 91. تمرین: طراحی سیستم حساب‌های بانکی با رعایت LSP
  • 92. تمرین: رفکتورینگ یک قطعه کد که LSP را نقض می‌کند
  • 93. بازبینی کد (Code Review) با تمرکز بر LSP
  • 94. ابزارهای تحلیل استاتیک و کمک به شناسایی نقض LSP
  • 95. جمع‌بندی قوانین کلیدی LSP
  • 96. LSP: پلی بین انتزاع و پیاده‌سازی انضمامی
  • 97. آینده وراثت و نقش LSP
  • 98. نتیجه‌گیری: ارزش نهایی LSP در ساخت نرم‌افزار پایدار
  • 99. **LSP در عمل: مثال‌ها و ضد الگوهای رایج**
  • 100. **پیامدهای طراحی و معماری نرم‌افزار با رعایت LSP**
تگ‌ها: آموزش آنلاین اصل جایگزینی لیسکوف (LSP): وراثت صحیح و رفتارهای قابل پیش‌بینی اصول SOLID برنامه نویسی دوره آموزشی

نظرات

هنوز نظری ثبت نشده است.

وارد شوید تا نظر ثبت کنید.