هادی عباسی

توسعه‌دهنده ارشد نرم افزار

تجربه بالا در برنامه‌نویسی و ایجاد نرم‌افزار

توسعه‌دهنده اپلیکیشن دسکتاپ/موبایل

برنامه نویسی زبان C++

متخصص فریم وورک Qt

هادی عباسی
هادی عباسی
هادی عباسی
هادی عباسی
هادی عباسی
هادی عباسی
هادی عباسی

توسعه‌دهنده ارشد نرم افزار

تجربه بالا در برنامه‌نویسی و ایجاد نرم‌افزار

توسعه‌دهنده اپلیکیشن دسکتاپ/موبایل

برنامه نویسی زبان C++

متخصص فریم وورک Qt

انتشار کتاب نگاهی بر معماری نرم افزار در C++ با تشریح Design Pattern ها (الگوهای طراحی) و Architectural Pattern ها (الگوهای معماری)

انتشار کتاب نگاهی بر معماری نرم افزار در C++ با تشریح Design Pattern ها (الگوهای طراحی) و Architectural Pattern ها (الگوهای معماری)

به نام خداوند بزرگ

حدود دو سال و نیم است که به صورت ناپیوسته در زمینه‌ی ++C، معماری نرم‌افزار و الگوهای طراحی مطالعه می‌کنم. در این مدت هر چیزی که یاد می‌گرفتم، در قالب Documentهای مختلف یادداشت و دسته‌بندی می‌کردم.

بعد از مدتی متوجه شدم حجم این مطالب آن‌قدر زیاد شده که می‌توانم مجموعه‌ی این یادداشت‌ها و آموخته‌ها را به شکل یک کتاب منتشر کنم؛ کتابی درباره‌ی Software Architecture در ++C که از Design Patternهای کلاسیک شروع می‌شود و در ادامه به Enterprise Patternها و Architectural Patternهای مهم می‌رسد.

به همین دلیل تصمیم گرفتم این مطالب را در قالب یک کتاب نسبتاً ساده و قابل‌فهم جمع‌آوری کنم.

🎓 البته جا دارد در ابتدا تشکر بسیار ویژه ای داشته باشم از دوست و استاد عزیزم جناب آقای مهندس محمد آزاد که بخش بزرگی از کتگوری این کتاب را در کلاس ایشان آموختم. بنده افتخار داشتم در آموزشگاه تحلیل داده، در درس معماری نرم افزار مایکروسرویس ها، در کلاس آقای مهندس آزاد شرکت کنم و مطالب بسیاری بیاموزم که بخش ناچیزی از آنها را با رویکردی متفاوت در این کتاب آوردم.

📚 این کتاب درباره چیست؟

تمرکز اصلی کتاب روی آشنایی با الگوهایی است که یک Software Developer برای طراحی بهتر نرم‌افزار می‌تواند با آن‌ها مواجه شود.

کتاب از Creational، Structural و Behavioral Design Patternها شروع می‌شود و سپس به سراغ Enterprise Patternها و در نهایت Architectural Patternها می‌رود.

هدفم این بوده که مطالب صرفاً به تعریف تئوری الگوها محدود نشوند و تا حد امکان با مثال‌های ++C و توضیح ساده ارائه شوند.

🎮 حل یکی از بزرگترین چالش های دنیای بازی های رایانه ای:

یکی از بخش های جالب این کتاب، روش حل یکی از بزرگترین چالش های دنیای بازی های رایانه ای است و آن چیزی نیست جز روش حل مکانیسم Time Rewind (revesing) در بازی Prince Of Persia که با فشردن یک دکمه، کل جریان جهان بازیتان در زمان معکوس به عقب باز می گشت! شاید در ابتدا سخت به نظر می رسد، ولی با یادگیری الگوهای طراحی نرم افزار، به روش حل آن پی می برید!


🧑‍💻 چرا ++C؟

انتخاب ++C برای این کتاب چند دلیل داشت.

اول از همه، علاقه‌ی شخصی من به این زبان و همچنین قدرت و انعطاف بالای ++C است. این زبان شاید یکی از تنها زبانهای برنامه نویسی Multi-Paradigm Programming Language است که می توان به انواع سبک ها و ساختارها، برنامه نویسی کرد! از OOP تا AOP و Functional و …

از طرف دیگر، ++C یکی از زبان‌هایی است که بسیاری از برنامه‌نویسان از طریق آن با مفاهیم پایه‌ی برنامه‌نویسی و شیءگرایی آشنا شده‌اند و بنابراین بسیاری از مفاهیم و Syntaxهای آن برای برنامه‌نویسان آشناست.

اما دلیل مهم‌تر این بود که بخش قابل‌توجهی از منابعی که درباره‌ی معماری نرم‌افزار و Patternها صحبت می‌کنند، معمولاً مثال‌های خود را با زبان‌هایی مانند Java , #C یا زبان‌های دیگر ارائه می‌کنند و منابعی که همین مفاهیم را با ++C آموزش دهند، کمتر به چشم می‌خورد.

بنابراین تلاش کردم این خلأ کوچک را تا حدی پوشش دهم.

البته اگر با ++C کار نمی‌کنید هم این کتاب می‌تواند برایتان مفید باشد؛ چراکه مفاهیم معماری و Patternها وابسته به یک زبان خاص نیستند و حتی می‌توانید کدهای ++C کتاب را در اختیار ابزارهای هوش مصنوعی قرار دهید و آن‌ها را به زبان موردنظر خود تبدیل کنید.

🤖 نقش هوش مصنوعی در تهیه‌ی کتاب

در تهیه‌ی این کتاب از ابزارهای مختلف هوش مصنوعی نیز استفاده کرده‌ام؛ از تحقیق و جست‌وجوی مطالب گرفته تا بررسی مفاهیم، مقایسه‌ی دیدگاه‌ها و کمک در نوشتن و بازبینی برخی قسمت‌ها.

با این حال، این کتاب حاصل یک مطالعه‌ی یک‌شبه یا صرفاً تولید خودکار محتوا نیست؛ بلکه نتیجه‌ی حدود دو سال و نیم مطالعه ناپیوسته، مشاهده‌ی دوره‌ها و ویدیوهای آموزشی، خواندن مقالات و مستندات، تحقیق با کمک Agentهای هوش مصنوعی و جمع‌آوری تدریجی مطالب است.

تلاش کرده‌ام مطالب را تا حد امکان ساده و قابل‌فهم بیان کنم تا کتاب صرفاً یک مرجع خشک و تئوریک نباشد.

📝 یک نکته درباره نسخه‌ی فعلی کتاب

این نسخه را باید بیشتر یک نسخه‌ی اولیه و آموزشی در نظر گرفت.

کتاب در حال حاضر به‌صورت حرفه‌ای وارد فرآیند ویراستاری و آماده‌سازی انتشاراتی نشده است و ممکن است در آینده بخش‌هایی از آن را اصلاح، تکمیل یا بازنویسی کنم.

هدف فعلی من بیشتر این بوده که دانسته‌هایی را که طی این مدت جمع‌آوری کرده‌ام، در قالب یک مجموعه‌ی منسجم در اختیار علاقه‌مندان قرار دهم.

🕐📅 انتشار در ابتدای مهر 1405:

به نیت شروع فصل مدرسه ها و به صورت نمادین، تصمیم گرفتم انتشار این کتاب را به اوایل مهر موکول کنم! اوایل مهر در دوران کودکی و نوجوانی، دوران خرید کتابهای درسی مدرسه بود و اینک مفتخرم در این دوره کتاب منتشر نمایم!

📥 دانلود رایگان کتاب

این کتاب به‌صورت رایگان و عمومی منتشر شد.

نسخه‌ی رایگان کتاب را می‌توانید از اینجا دریافت کنید:

👉 دانلود رایگان کتاب معماری نرم‌افزار در ++C

پیش نیاز:


پیش نیازهای این کتاب در ابتدای آن نوشته شده است ولی یکی از مهمترین پیش نیازهای آن، آشنایی با رویکردهای پنجگانه Solid است! اگر با این رویکردها آشنا نیستید، پیشنهاد می دهم این مقاله کوتاه بنده را مطالعه فرمایید:
📥 دانلود مقاله آشنایی با اصول Solid در نرم افزار


📖 فهرست مطالب کتاب

فصل اول — دیزاین پترن‌های ساختنی (Creational Design Patterns)

  • Factory Method
  • Abstract Factory
  • Singleton
  • Prototype
  • Builder
  • Lazy Initialization
  • Object Pool
  • Multiton
  • Dependency Injection

فصل دوم — دیزاین پترن‌های ساختاری (Structural Design Patterns)

  • Adapter
  • Bridge
  • Composite
  • Decorator
  • Facade
  • Flyweight
  • Proxy
  • Pimpl

فصل سوم — دیزاین پترن‌های رفتاری (Behavioral Design Patterns)

  • Chain of Responsibility
  • Command
  • Interpreter
  • Mediator
  • Memento
    • گریزی بر الگوریتم Time Reversing در بازی Prince of Persia
  • Observer
    • گریزی بر الگوی Publish/Subscribe در جهت مدیریت Eventها
  • State
  • Strategy
  • Template Method
  • Visitor
  • Iterator
  • Null Object

فصل چهارم — الگوهای سازمانی (Enterprise Patterns)

  • Repository
  • Service Locator
  • Unit of Work

فصل پنجم — الگوهای معماری (Architectural Patterns)

  • MVC
  • MVP
  • MVVM
  • Domain-Driven Design (DDD)
  • Clean Architecture
  • Onion Architecture
  • Hexagonal Architecture (Ports & Adapters)
  • CQRS
  • معماری ECS مختص بازی ها و موتورهای بازی (Naive ECS, Archetype ECS, Sparse Set ECS)

🚀 یک شروع کوچک برای علاقه‌مندان به معماری نرم‌افزار

این کتاب برای من در واقع حاصل مسیر یادگیری‌ای است که حدود دو سال و نیم پیش شروع شد؛ مسیری که با مطالعه‌ی روزانه‌ی ++C و مباحث Software Design آغاز شد و به‌تدریج به سمت Design Pattern، Enterprise Pattern و Software Architecture رفت.

امیدوارم این مجموعه برای دوستانی که به ++C، طراحی نرم‌افزار و معماری سیستم‌ها علاقه‌مند هستند مفید باشد و بتواند شروع خوبی برای مطالعه‌ی عمیق‌تر این مباحث باشد.

اگر به این حوزه‌ها علاقه‌مند هستید، خوشحال می‌شوم این کتاب را مطالعه کنید و اگر نکته، ایراد یا پیشنهادی برای بهتر شدن آن داشتید، با من در میان بگذارید.

موفق باشید 🌱
هادی عباسی     /     انتشار در 1 مهر 1405     /     September 23rd, 2026

یک دیدگاه بنویسید