کتاب مهندسی نرمافزار با SOLID: از تئوری تا کدنویسی حرفهای با فرمت AZW3 برای کتابخوان کیندل و فرمت EPUB
مهندسی نرمافزار با SOLID: از تئوری تا کدنویسی حرفهای مهندسی نرمافزار با SOLID: از تئوری تا کدنویسی حرفهای آیا میخواهید کدهای تمیزتر، پایدارتر و مقیاسپذیرتری بنویسید؟ آیا میخواهید به یک برنامهن...
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره مهندسی نرمافزار با SOLID: از تئوری تا کدنویسی حرفهای
موضوع کلی: برنامه نویسی
موضوع میانی: اصول SOLID
📋 سرفصلهای دوره
- 1. مقدمهای بر مهندسی نرمافزار و اصول طراحی
- 2. چرا به اصول طراحی نرمافزار نیاز داریم؟
- 3. مفهوم بدهی فنی (Technical Debt) و راههای مقابله با آن
- 4. مروری سریع بر اصول برنامهنویسی شیءگرا (OOP): کپسولهسازی
- 5. مروری سریع بر اصول برنامهنویسی شیءگرا (OOP): وراثت
- 6. مروری سریع بر اصول برنامهنویسی شیءگرا (OOP): چندریختی (Polymorphism)
- 7. مروری سریع بر اصول برنامهنویسی شیءگرا (OOP): انتزاع (Abstraction)
- 8. مفاهیم کلیدی: پیوستگی (Cohesion) چیست؟
- 9. مفاهیم کلیدی: وابستگی (Coupling) چیست؟
- 10. ارتباط بین پیوستگی بالا و وابستگی پایین
- 11. معرفی اجمالی اصول SOLID و تاریخچه آن
- 12. SOLID به عنوان نقشه راه برای کدی تمیز و قابل نگهداری
- 13. نقش SOLID در کاهش پیچیدگی نرمافزار
- 14. آمادهسازی محیط کدنویسی برای تمرینهای دوره
- 15. آشنایی با پروژه نمونه: یک سیستم ناکارآمد برای ریفکتورینگ
- 16. بخش اول: اصل تک مسئولیتی (Single Responsibility Principle - SRP)**
- 17. تعریف دقیق اصل تک مسئولیتی (SRP)
- 18. "مسئولیت" واقعاً به چه معناست؟ مفهوم "Actor"
- 19. مثالهای نقض SRP: کلاس همهکاره (God Class)
- 20. بوی کد (Code Smell): ترکیب منطق کسبوکار با منطق نمایش
- 21. بوی کد: کلاسی با دلایل متعدد برای تغییر
- 22. پیادهسازی SRP: شناسایی مسئولیتهای جداگانه
- 23. تکنیک ریفکتورینگ: استخراج کلاس (Extract Class)
- 24. تکنیک ریفکتورینگ: استخراج متد (Extract Method)
- 25. کارگاه عملی: ریفکتورینگ یک کلاس کنترلر بزرگ
- 26. کارگاه عملی: جداسازی منطق اعتبارسنجی از مدل داده
- 27. SRP در سطح متدها و توابع
- 28. SRP در سطح ماژولها و کامپوننتها
- 29. مزایای SRP: افزایش خوانایی و قابلیت تست
- 30. معایب و تلههای SRP: تقسیمبندی بیش از حد (Over-engineering)
- 31. جمعبندی اصل تک مسئولیتی
- 32. بخش دوم: اصل باز/بسته (Open/Closed Principle - OCP)**
- 33. تعریف دقیق اصل باز/بسته (OCP)
- 34. مفهوم "باز برای توسعه" و "بسته برای تغییر"
- 35. نقش کلیدی انتزاع (Abstraction) در پیادهسازی OCP
- 36. مثالهای نقض OCP: استفاده از if/else و switch برای انواع مختلف
- 37. بوی کد: تغییر کد موجود برای افزودن یک قابلیت جدید
- 38. استفاده از وراثت برای پیادهسازی OCP
- 39. استفاده از اینترفیسها و ترکیب (Composition) برای پیادهسازی OCP
- 40. الگوی طراحی استراتژی (Strategy Pattern) به عنوان راهکار OCP
- 41. الگوی طراحی متد قالب (Template Method Pattern)
- 42. کارگاه عملی: ریفکتورینگ یک سیستم پردازش پرداخت با OCP
- 43. کارگاه عملی: ساخت یک سیستم گزارشگیری قابل توسعه
- 44. OCP و معماری پلاگین (Plugin Architecture)
- 45. مزایای OCP: افزایش انعطافپذیری و کاهش ریسک خطا
- 46. هزینههای پیادهسازی OCP: پیچیدگی اولیه
- 47. جمعبندی اصل باز/بسته
- 48. بخش سوم: اصل جایگزینی لیسکوف (Liskov Substitution Principle - LSP)**
- 49. تعریف دقیق اصل جایگزینی لیسکوف (LSP)
- 50. اهمیت رفتار مورد انتظار و قراردادهای ضمنی
- 51. مثال نقض کلاسیک: مشکل مربع و مستطیل
- 52. بوی کد: بررسی نوع کلاس فرزند (instanceof) در کد
- 53. بوی کد: متدهایی در کلاس فرزند که کاری انجام نمیدهند یا خطا پرتاب میکنند
- 54. قوانین LSP: تقویت پسشرطها (Postconditions)
- 55. قوانین LSP: تضعیف پیششرطها (Preconditions)
- 56. تکنیکهای ریفکتورینگ برای اصلاح نقض LSP
- 57. جایگزینی وراثت با ترکیب (Composition) برای حل مشکلات LSP
- 58. کارگاه عملی: ریفکتورینگ سلسلهمراتب کلاسهای پرندگان
- 59. کارگاه عملی: مدیریت کاربران با سطوح دسترسی مختلف بدون نقض LSP
- 60. LSP و ارتباط آن با چندریختی (Polymorphism)
- 61. تأثیر LSP بر قابلیت اطمینان سیستم
- 62. طراحی بر اساس قرارداد (Design by Contract) و ارتباط آن با LSP
- 63. جمعبندی اصل جایگزینی لیسکوف
- 64. بخش چهارم: اصل تفکیک اینترفیس (Interface Segregation Principle - ISP)**
- 65. تعریف دقیق اصل تفکیک اینترفیس (ISP)
- 66. مشکل اینترفیسهای بزرگ و سنگین (Fat Interfaces)
- 67. مثالهای نقض ISP: کلاسی که مجبور به پیادهسازی متدهای بیاستفاده است
- 68. بوی کد: پرتاب خطای NotImplementedException در متدهای اینترفیس
- 69. تکنیک ریفکتورینگ: شکستن اینترفیسهای بزرگ به اینترفیسهای کوچکتر و خاص
- 70. اینترفیسهای مبتنی بر نقش (Role-based Interfaces)
- 71. کارگاه عملی: ریفکتورینگ اینترفیس "IWorker" برای رباتها و انسانها
- 72. کارگاه عملی: طراحی اینترفیسهای یک سیستم مدیریت اسناد
- 73. ISP و تأثیر آن بر قابلیت تست و Mocking
- 74. ارتباط بین ISP و اصل تک مسئولیتی (SRP)
- 75. ISP در طراحی API و کتابخانهها
- 76. مزایای ISP: کاهش وابستگیهای ناخواسته
- 77. معماری ماژولار با استفاده از ISP
- 78. آیا تفکیک بیش از حد اینترفیسها ممکن است؟
- 79. جمعبندی اصل تفکیک اینترفیس
- 80. بخش پنجم: اصل وارونگی وابستگی (Dependency Inversion Principle - DIP)**
- 81. تعریف دقیق اصل وارونگی وابستگی (DIP)
- 82. "ماژولهای سطح بالا نباید به ماژولهای سطح پایین وابسته باشند"
- 83. نقش حیاتی انتزاع در وارونگی وابستگی
- 84. مفهوم وارونگی کنترل (Inversion of Control - IoC)
- 85. الگوی تزریق وابستگی (Dependency Injection - DI)
- 86. انواع تزریق وابستگی: Constructor, Setter, Interface Injection
- 87. مثالهای نقض DIP: استفاده مستقیم از کلمه کلیدی `new` برای ساخت وابستگیها
- 88. تکنیک ریفکتورینگ: معرفی اینترفیس برای شکستن وابستگی مستقیم
- 89. کارگاه عملی: ریفکتورینگ یک سرویس برای جدا شدن از پایگاه داده مشخص
- 90. استفاده از کانتینرهای IoC/DI (DI Containers)
- 91. اصل هالیوود: "ما با شما تماس میگیریم، شما با ما تماس نگیرید"
- 92. مزایای DIP: افزایش شدید قابلیت تستپذیری و ماژولار بودن
- 93. DIP به عنوان پایه و اساس معماری تمیز (Clean Architecture)
- 94. DIP و ایجاد مرزهای معماری (Architectural Boundaries)
- 95. جمعبندی اصل وارونگی وابستگی
- 96. بخش ششم: جمعبندی و مباحث پیشرفته**
- 97. همافزایی اصول SOLID: چگونه این اصول یکدیگر را تکمیل میکنند
- 98. مطالعه موردی جامع: ریفکتورینگ کامل یک پروژه با استفاده از تمام اصول SOLID
- 99. SOLID در مقابل اصول دیگر: DRY, KISS, YAGNI
- 100. تأثیر SOLID بر چرخه عمر توسعه نرمافزار (SDLC)
تگها:
آموزش آنلاین
اصول SOLID
برنامه نویسی
دوره آموزشی
مهندسی نرمافزار با SOLID: از تئوری تا کدنویسی حرفهای
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.