ably ably برای هدایت شدن به سایت جدید اینجا کلیک کنید

آموزش برنامه نویسی

آموزش برنامه نویسی وب، اندروید، ویندوز , اسکیوال و...
Tell: 0912 097 5516
| Email: Hello@EduOnline.ir

۶ مطلب با موضوع «Analysis and Design Teams :: Architecture» ثبت شده است

الگوهای برنامه نویسی (abstract factory)

بسم الله الرحمن الرحیم

بخش ششم

الگوهای برنامه نویسی

الگوی Abstract Factory

در آموزش قبل با روش Method Factory آشنا شدیم، در این روش با الگوی برنامه نویسی Abstract Factory آشنا خواهیم شد.

در روش Method Factory تمامی اشیا توسط یک متد ایجاد می شدند، اما در روش Abstract Factory هر کلاس یک سازنده جداگانه خواهد داشت و البته همه ی این سازنده ها در کلاس اصلی ما قرار می گیرند.

آموزش Method Factory

در Abstract Factory ما یک Interface اصلی خواهیم داشت که مجموعه ای از Object های وابسته را تعریف می کند. در Abstract Factory ما وظیفه ی تولید هر شی را به Factory مربوطه اش واگذار می کنیم، اینجاست که اگر بعد از مدتی از ما خواسته شود که برنامه را بسط بدهیم تنها با ایجاد یک Factory مشکل را می توانیم حل می کنیم.

روش Abstract Factory برای ایجاد اشیای مرتبط مورد استفاده قرار می گیرد، این روش به دلیل اینکه تمامی اشیا را به صورت واحد طراحی و ایجاد می کند روش Factory of factories نیز خوانده می شود، همانطور که گفته شد در روش Abstract Factory یک interface مسئولیت ایجاد و ساخت اشیاء مرتبط را به عهده دارد.

بر اساس تصویر بالا یک برنامه طراحی شده با استفاده از AbstractFactory دارای 5 قسمت خواهد بود:

AbstractFactory

یک interface می باشد که برای ساخت abstract product مورد استفاده قرار می گیرد.

ConcreteFactory

کلاسی که اینترفیس AbstractFactory را برای concrete products پیاده سازی می کند.

AbstractProduct

AbstractProduct یک interface است که اشیا (product های) ما را تعریف می کند.

ConcreteProduct

ConcreteProduct یک کلاس است که اینترفیس AbstractProduct را برای ساخت  اشیا (product های) پیاده سازی می کند.

Client

Client یک کلاس است که از اینترفیس AbstractFactory و AbstractProduct برای ساخت اشیاء مرتبط استفاده می کند.

ادامه مطلب...

الگوهای برنامه نویسی

بسم الله الرحمن الرحیم

بخش پنجم

الگوهای برنامه نویسی

الگوی Factory

شاید با مفهوم (OCP (Open Close Principle آشنا باشید، OCP یکی از اصول اساسی طراحی سیستم های شی گرا می باشد که بسیاری از ما این اصل را رعایت نمی کنیم. OCP بیانگر این مفهوم می باشد که کدهای  شما باید در برابر تغییر (modification) بسته و در برابر توسعه (extension) باز باشد.

اگر این مفهوم را نمی دانستیم و  رعایت نمی کردیم، از امروز سعی کنیم هنگامی که کد نویسی می کنیم، کد خود را بررسی کنیم که آیا OCP را رعایت می کند و یا خیر، رعایت کردن OCP و قوانین کار چندان پیچیده ای نیست.

یکی از الگوهای طراحی (Design Pattern) که این اصل رعایت کرده، الگوی Factory می باشد. همانطور که در آموزش های قبلی هم گفته شد این الگو جز الگوهای ایجاد اشیا می باشد، از طریق لینک زیر می توانید این مباحث را مطالعه کنید.

آموزش Design Pattern

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

مثل همیشه سعی می کنیم مباحث را در قالب یک مثال بیان کنیم.

در این مثال ما قصد داریم یک factory ساده ایجاد کنیم تا با گرفتن یک عدد یکی از شی های دایره، مستطیل، مربع را برای ما ایجاد کند.

شکل بالا نشان دهنده ارتباط بین 3 کلاس با کلاس Shape است، می خواهیم با ارتباط بین این 4 کلاس یک Simple Factory ایجاد کنیم. ابتدا یک interface به شکل زیر ایجاد می کنیم:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Factory
{
    public interface Ishape
    {
        void Draw();
    }
}

حالا کلاس Circle را به صورت زیر پیاده سازی می کنیم:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Factory
{
    class Circle:Ishape
    {
        public void Draw()
        {
            Console.WriteLine("Draw one Circle");
        }
    }
}

ادامه مطلب...

الگوهای طراحی Design Pattern

بسم الله الرحمن الرحیم

بخش چهارم

الگوی طراحی (Design Pattern)

الگو طراحی چیست؟

design pattern چیست؟

Design pattern ها راهکارهایی هستند برای رفع مشکلات طراحی نرم افزار، pattern ها یا همان الگوها باعث می شوند تا کدهای ما قابلیت استفاده مجدد داشته باشند.

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

حال اگر ما به صورت دقیق فعالیت هایی را انجام دهیم که باعث شوند میزان مشکلات ما کم تر شوند بدین معنا خواهد بود که ما از یک سری الگوهای رفتاری یا همان Design pattern استفاده می کنیم.

Design pattern ها یا روش های مختلفی برای حل مشکلات وجود دارد، که طبیعتا هر یک از این روش ها می تواند مشکلات خاصی را حل می کنند، در نتیجه هر تیم نرم افزاری بر اساس مشکلات و پروژه خود یکی از روش های Design pattern را می تواند انتخاب کند، البته می توان روشهای مختلفی را نیز کنار یکدیگر به کار گرفت.

 

کاربرد و هدف الگوهای طراحی

اما الگوهای طراحی بعد از الگو های معماری آمدند و در طراحی زیر سیستم ها، Package  ها و Component ها استفاده می­ شوند و هدفشان ارائه راه حل هایی برای حل مشکلات معمول و تکراری می­ باشد، مشکلاتی مانند:

    مدیریت حافظه

    مدیرت اشاره گرها

    synchronization  and mutual exclusion

    جلوگیری از بن بست (deadlock avoidance)

 

در Design pattern ها مفهومی به نام الگوی معماری (Architectural pattern) وجود دارد، این معماری مشخص کننده ترکیب ساختاری (Structural Arrangement) زیر سیستم های های نرم افزاری و قوانین ارتباطی ببین آنها می باشد.

لازم است توجه شود که الگو‌های طراحی به حل مسأله کمک می‌کنند ولی راه‌حل کامل آنرا در اختیار ما نمی‌گذارند همچنین استفاده از الگوهای طراحی الزامی نیست و برنامه نویس بعد از درک درست از مسئله و با توجه به نیاز می تواند از این الگوها استفاده کند.

در اینجا سعی می کنیم تا به بررسی الگوهای طراحی از دو دیدگاه بپردازم، یکی تقسیم بندی الگوها از نظر GOF و دیگری از دیدگاه Martin Fowler.

 

ادامه مطلب...

معماری n-layer

بسم الله الرحمن الرحیم

معماری n-layer

بخش سوم

N-Layer

در بخش قبل معماری های نرم افزار  را بررسی کردیم و همچنین معماری سه لایه را بیان کردیم. در این بخش قصد داریم معماری های n-Layer یا معماری های چند لایه ای را بررسی کنیم.

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

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

طبیعتا معماری یک بیمارستان با معماری یک پاساژ تجاری یا معماری ساختمان مسکونی قابل مقایسه و ارزیابی نیست زیرا هر یک نیازمندی های خود را دارند و برای هر یک باید روش خاصی را در نظر گرفت.

تصور می کنم پاسخ سوال را بیان کرده باشم، طبیعتا نمی توان یک معماری را خوب و یا یک معماری را بد دانست (البته اگر موارد فنی آنها رعایت شده باشند)، معماری های متفاوتی وجود دارند که شما می بایست بر اساس تیم فنی خود، پروژه و سایر عوامل، معماری  مناسب را برای سازمان و کار خود انتخاب کنید. اما با وجود همه ی این مسائل معماری هایی وجود دارند که نسبت به سایر معماری ها شهرت دارند، مانند معماری 3 لایه و یا معماری 5 لایه.

پیشنهاد می کنم برای انتخاب یک معماری ابتدا مفاهیم آن را فرا بگیرید و سپس بر اساس نیاز خود معماری مناسبی را انتخاب و یا طراحی کنید.


در طراحی معماری یک نرم افزار می بایست مباحثی را مد نظر قرار داد که برخی از آنها را در این بخش بررسی خواهیم کرد.

ادامه مطلب...

انواع معماری های نرم افزار

بسم الله الرحمن الرحیم

انواع معماری های نرم افزار

بخش دوم

مقدمه

داشتن یک الگوی مناسب در هر کاری باعث می­شود شما به صورت برنامه ریزی شده و در یک چارچوب حرکت کنید در نتیجه خروجی کار هم بسیار  بهتر خواهد بود. بحث مهندسی نرم افزار هم از این قانون تبعیت می­کند وقتی در تولید یک نرم افزار از الگوها استفاده کنیم باعث میشود که سرعت تست نرم افزار بیشتر شود، و امکان توسعه نرم افزار بعد از مدتی بسیار راحت تر و سریعتر صورت گیرد. امروزه برنامه نویسی که آشنا به این الگوها نباشد با مشکلاتی روبرو می شود زیرا شرکت های نرم افزاری موفق در ارائه محصولات خود از الگوهای معرفی شده در این صنعت بهره می برند.

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

الگوهای برنامه نویسی

 اگر بخواهم در مورد الگو صحبت کنم در واقع باید بگم یک الگو راه حلی برای حل مسایل است که در گذشته به عنوان بهترین راه حل ارائه شده، الگوها ساختارها و روش (methodology) های کلی ایجاد می­کنند. یک الگو یک abstraction قابل تشخیص است که در موقعیت­ها و برنامه های کاربردی مختلف تکرار شده و متناوبا استفاده می­شود. این موقعیت می­تواند مربوط به ساختار (Structure) باشد که مبین الگوی معماری است و یا توصیفی از رفتار (behavior) نرم افزار باشد که تعریفی از الگوی طراحی است و یا در خصوص یک زبان برنامه نویسی خاص باشد که در این صورت الگوی زبان نام دارد.

الگوهای معماری

ادامه مطلب...

معماری های نرم افزار

بسم الله الرحمن الرحیم

 

معماری های نرم افزار

معماری های نرم افزار

ساخت یک کارخانه نرم افزار

هر شرکت و مجموعه و گروهی طبیعتا برای انجام کارهای خود نیاز به یک مجموعه از قوانین دارد مثلا تمامی شرکت ها ساعتی را برای شروع و ساعتی را پایان کار در نظر می گیرند. همین قوانین بسیار ساده و ابتدایی می تواند باعث ایجاد منظم درون یک سازمان شود.

در دنیای نرم افزار نیز قوانینی وجود دارد که همه موظف به رعایت آن هستیم مثلا در زبان سی شارپ انتهای هر خط کد را با ";" مشخص می کنیم. شرکت هایی که از مدیران فنی با سوادی برخوردار هستند معمولا علاوه بر این قوانین، قوانین داخلی دیگری را برای انجام کارها وضع می کنند که می تواند بسیار کمک کننده باشد.

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

طبیعتا ایجاد یک نظم و قانون برای انجام پروژه ها می تواند منافع زیادی را برای شما داشته باشد که بهتر است برای روشن تر شدن این موضوع چند مورد از آنها را بررسی کنیم:

مزایای استفاده از الگوهای برنامه نویسیx

1- افزایش قابلیت پشتیبانی

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

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

ادامه مطلب...
up
ما را در گوگل محبوب کنید