مطالب تصادفی

طراحی برنامه ( بخش دوم )

طراحی برنامه ( بخش دوم )


UML چیست ؟
مراحل پنج گانه برنامه نویسی ، نقطه شروع مناسبی برای  طراحی یک برنامه است ( اولین فاز). در ادامه با استفاده از پالایش ( بهسازی ) یکطرفه  مراحل پنج گانه برنامه نویسی ، فاز دوم طراحی یک برنامه انجام خواهد شد . استفاده از شبه کد بمنظور ارائه جزئیات پالایش ، کمک قابل توجه و مفیدی در ارتباط با طراحی برنامه را بدنبال خواهد داشت . رویکرد فوق ( مراحل پنج گانه برنامه نویسی ) ، روشی مفید بمنظور طراحی یک برنامه است . در این راستا برخی از طراحان برنامه های کامپیوتری ترجیح می دهند که از یک روش دقیق تر و موشکافانه تر استفاده نمایند . UML(Unified Modeling Language) مبتنی بر چنین رویکردی است .
UML ،زبانی استاندارد بمنظور مشخص نمودن ، پیش بینی ، ایجاد و مستند سازی تولیدات نرم افزاری است . UML ، مجموعه ای از بهترین امکانات مهندسی را بمنظور استفاده در مدل سازی سیستم های بزرگ و پیچیده ارائه که کارآئی آنان به اثبات رسیده است . UML یک متدولوژی رسمی برای پیاده سازی نرم افزار است .

روند شکل گیری UML
برنامه نویسی شی گراء ( OOP ) ، از اوایل  سال ۱۹۶۰ مطرح  گردید . برنامه نویسی شی گراء با اینکه  بعنوان یک ایده جدید مطرح شده بود ولی بسرعت زبان های مدل سازی شی گراء برای پوشش ایده فوق ، مطرح و پیاده سازی گردیدند. در فاصله سال های ۱۹۷۰ تا اواخر ۱۹۸۰ چندین زبان مدل سازی شی گراء پیاده سازی گردید . تعداد زبان ها ی مدل سازی شی گراء در سال ۱۹۹۵ به بیش از پنجاه نمونه رسیده بود .
از افراد فعال و پیشرو در این زمینه می توان به  Jim Rumbaugh ( شرکت جنرال الکتریک )، Grady Booch  ( شرکت Rational software )  و  Ivar Jacobson  ( شرکت  Objectory )  اشاره نمود. هر یک از افراد فوق ، تلاش گسترده ای  را در جهت مدل سازی زبان برنامه نویسی انجام داده بودند . در سال ۱۹۹۴ ، Rumbaugh شرکت جنرال الکتریک را ترک و به Booch در شرکت Rational Software ملحق گردید. یک سال بعد ، شرکت Rational Software ، شرکت Objectory را خریداری و افراد یاد شده همکاری  خود را با یکدیگر و در یک شرکت مشترک آغاز نمودند. ماحصل همکاری فوق ، ارائه  اولین نسخه UML 0.9 توسط شرکت Rational software در سال ۱۹۹۶ بود .
در سالیان بعد ، OMG)Object Management Group) ،  تلاش های گسترده ای را بمنظور ارتقاء و  بهسازی UML آغاز نمود. در اواسط سال ۲۰۰۱ ، اعضاء OMG ، کار خود را بمنظور ارتقاء به UML 2.0 آغاز نمودند. در حا ل حاضر ، UML شامل مدل سازی ویژوال ، شبیه سازی و امکانات پیاده سازی است . تعداد زیادی از ابزارهای UML طراحی و در اختیار علاقه مندان قرار گرفتند .  Rational Rose 2002 از شرکت Rational Software ، نرم افزار Describe Enterprise از شرکت Embarcadero Technologies و Visio 2002 از شرکت مایکروسافت . نمونه هائی از ابزارهای UML می باشند .

دیاگرام های UML
UML یک ابزار ویژوال بوده و از انواع متفاوتی دیاگرام استفاده می نماید . هر یک از دیاگرام های  UML ، امکان مشاهده یک سیستم نرم افزاری را از دیدگاههای متفاوت و با توجه به درجات متفاوتAbstraction در اختیار پیاده کنندگان قرار می دهد. برخی از دیاگرام های UML عبارتند از :

 

     

  • Class Diagram
  • State Diagram
  • Sequence Diagram
  • Collaboration Diagram
  • Activity Diagram
  • Component Diagram
  • Deployment Diagram
  •  

آنالیز شی گراء  (OOA)
آنالیز شی گراء  و یا OOA ، یک متدولوژی قدرتمند برای تجزیه و تحلیل  فرآیند پیاده سازی نرم افزار است . در زمان استفاده از OOA ،  هر چیز در فرآیند پیاده سازی نرم افزار بمنزله کلاس در نظر گرفته خواهد شد ( این طرز تفکر می بایست محور آنالیز سیستم قرار گیرد ) . مثلا” در یک بیمارستان هر یک از عناصر موجود نظیر : دکتر ، پرستار ، بیمار و ملاقات کننده ، بمنزله یک کلاس در نظر گرفته می شوند . هر نسخه جدیدی که از یک کلاس ایجاد می گردد ، بمنزله یک نمونه ( Instance ) از کلاس در نظر گرفته خواهد شد . محوریت فرآیند آنالیز شی گراء ، تاکید بر ایجاد کلاس های مورد نیاز سیستم است .
مهمترین و اصلی ترین رویکرد OOA ،یافتن پاسخ مناسب برای سوالاتی است که با What شروع و در  فرآیند پیاده سازی نرم افزار حضوری موثر دارند . نمونه سوالات OOA در این زمینه عبارتند از : ” چه کلاس هائی در برنامه وجود دارد؟”  . ” چه چیزی را برنامه انجام خواهد داد ؟”  ” هر یک از کلاس ها در برنامه چه عملیاتی را بمنظور حل مسئله انجام خواهند داد ؟”  ” مسئولیت هر کلاس در برنامه چیست ؟” در  OOA ، تاکید بر آنالیز اشیاء ، فعالیت ها و مسئولیت های سیستم نرم افزاری است .

طراحی شی گراء ( OOD )
نکته اساسی  در طراحی شی گراء ، تاکید و سرو کار داشتن با سوالاتی است که با  How شروع و در فرآیند پیاده سازی  نرم افزار حضوری فعال و موثر خواهند داشت . ” چگونه این کلاس داده را جمع آوری می کند ؟” . ” چگونه این کلاس گزارش را چاپ می نماید ؟”  ، نمونه سوالاتی در این زمینه می باشند .در نمونه مثال بیمارستان، وضعیت فوق  به خصلت ها ، صفات و متدهای یک کلاس  مرتبط می گردد .
بنابراین OOA ، کلاس های مورد نظر و ضروری  بمنظور نیل به اهداف نرم افزار را مشخص می نماید و محور عملیات بر جستجو و تبین جایگاه یک کلاس در برنامه متمرکز است . در OOD ، تاکید بر پیاده سازی  کلاس ها ، صفات و خصایصی است   که بمنزله هسته یک کلاس مطرح می گردند . ترکیب  هر یک از فعالیت های فوق ( آنالیز شی گراء و طراحی شی گراء ) بهمراه پیاده سازی لینک هائی که با کلاس ها سروکار دارند جملگی بعنوان  بخشی از فرآیند OOP ( برنامه نویسی شی گراء ) محسوب می گردند.

دیاگرام های کلاس UML
دیاگرام کلاس در UML یکی از مهمترین دیاگرام ها تلقی می گردد . دیاگرام فوق ، مسئولیت مدل سازی ساختار کلاس و محتویات را با استفاده از عناصری نظیر کلاس ها ، اشیاء و پکیج ها برعهده دارد . این دیاگرام همچنین ، ارتباطاتی نظیر : توارث و پیوستگی را نمایش خواهد داد. دیاگرام فوق ، شکل خلاصه و استانداردی بمنظور نمایش یک کلاس را ارائه می نماید. در این راستا از یک مستطیل که به سه بخش متفاوت تقسیم می گردد ، استفاده می شود.  در اولین بخش مستطیل ، نام کلاس قرار می گیرد . در دومین بخش مستطیل ، خصلت های یک کلاس قرار خواهند گرفت ( ممکن است از واژه صفات و یا متغیر نیز استفاده گردد ) و در بخش سوم ، متدهای یک کلاس قرار می گیرند.متدهای هر کلاس ، عملیاتی را که یک کلاس می تواند انجام دهد ، مشخص می نمایند.  شکل زیر ، یک دیاگرام کلاس نمونه  را نشان می دهد. در اولین بخش ، نام کلاس Vehicle مشخص شده است .نام هر کلاس با یک حرف بزرگ شروع و در مواردیکه نام کلاس شامل بیش از یک کلمه باشد ، هر کلمه در نام کلاس با یک حرف بزرگ آغاز می گردد . Vehicle ، PassengerCar و IncomeStatement نمونه هائی در این زمینه می باشند .استفاده از از فضای خالی بین کلمات  تشکیل دهنده نام یک کلاس ، مجاز نمی باشد .\

خصایص کلاس (Properties , Attributes)
در دیاگرام کلاس Vehicle و در  بخش  دوم از شش خصلت Integer استفاده شده است  . در نمونه کلاس های دیگر ، یک کلاس ممکن است  دارای دهها خصلت باشد .در برخی زبانهای برنامه نویسی نظیر ویژوال بیسیک دات نت ،از خصلت  با نام  Prtoperty نیز یاد می گردد. هر خصلت می تواند دارای مقادیر متفاوتی باشد . مقادیر جاری خصلت ها ، وضعیت یک کلاس را تشریح می نمایند .  در مقام مقایسه می توان خصایص یک شی را نظیر نقش اسامی در یک جمله در نظر گرفت ( مقایسه فوق صرفا” جنبه آموزشی دارد ) .

علایم + و -
همانگونه که مشاهده می گردد ، هر entry دربخش دوم  دیاگرام کلاس Vehicle ، دارای یک علامت -  در جلوی نام خود است .در بخش سوم ، برخی از Entry ها ، دارای  علامت +  و برخی دیگر دارای علامت – می باشند . وجود علامت + در ابتدای یک آیتم ( خصلت ، متد ) ، نشاندهنده در دسترس بودن آن از طریق خارج از کلاس است . بعبارت دیگر ، علامت +، امکان استفاده از آیتم مورد نظر و تاثیرگذاری بر وضعیت یک کلاس را نشان می دهد . علامت + ، عمومی بودن ( Public ) عناصر کلاس مربوطه را نشان می دهد .
اگر یک Entry با یک علامت -  شروع گردد ، بدین معنی خواهد بود که آیتم مورد نظر صرفا” برای استفاده خود کلاس در دسترس بوده و امکان استفاده از آن برای خارج از کلاس میسر نخواهد بود. بنابراین علامت – ، نشاندهنده خصوصی ( Private ) بودن عناصر مربوط به یک کلاس است .
استفاده از علائم + و – ، نشاندهنده نوع دستیابی به هر یک از عناصر مربوط به یک کلاس است . در حقیقت علامت + ، روشی بمنظور ارتباط با کلاس را مشخص نموده و علامت – نشاندهنده عناصری است که صرفا” برای خود کلاس قابل استفاده خواهند بود .
ایجاد یک آیتم بصورت خصوصی  همواره مورد توجه طراحان شی گراء بوده و تامین کننده اهداف کپسوله سازی در برنامه نویسی شی گراء است . با کپسوله سازی داده ، امکان بروز تغییرغیرعمد داده در برخی بخش ها ی برنامه و  از طریق خارج از کلاس به حداقل مقدار خود خواهد رسید . بدین ترتیب،  تشخیص و برطرف نمودن خطاهای احتمالی ، بسرعت و بسادگی میسر خواهد شد .

متدهای کلاس ( عملیات )
عنصر سوم  در دیاگرام کلاس ، نشاندهنده نوع عملیات مرتبط با کلاس است . در UML آیتم های موجود در این بخش را  "عملیات ” ( Operations ) ، ودر برخی از زبان های برنامه نویسی نظیر ویژوال بیسیک دات نت ، به آنان "متد” گفته می شود . متدها ، نحوه ارتباط برنامه نویسان با یک کلاس را مشخص می نمایند. هر متد عملیات خاصی را در ارتباط با یک کلاس انجام خواهد داد.اگر خصلت ها را بمنزله اسامی در یک جمله در نظر بگیریم ، می توان متدها  را بمنزله افعال موجود در یک جمله در نظر گرفت .
متدهای کلاس و آرگومان ها
در برخی موارد یک متد نیازمند اطلاعات خارجی بمنظور انجام وظایف محوله  است . مثلا” در دیاگرام کلاس Vehicle از متد زیر استفاده شده است  :

 

+SetSpeed(DesiredSpeed:Integer):Integer

 

علامت + نشاندهنده این موضوع است که ( ) SetSpeed یک متد Public است . بنابراین امکان استفاده از آن توسط یک برنامه نویس وجود خواهد داشت .بمنظور ارسال داده به متد مورد نظر از آرگومان استفاده شده که بین علامت پرانتز قرار می گیرند.در مثال فوق ، پارامتر مورد نظر DesiredSpeed بوده و از نوع Integer است . در انتهای علامت پرانتز بسته ، ازیک کالون ":” ،  که بدنبال آن کلمه Integer آمده است ، استفاده شده است . این بدان معنی است که متد  ( ) SetSpeed یک مقدار صحیح را به برنامه صدازننده  ، بر می گرداند.
در نمونه کلاس Vehicle از دومتد بمنظور افزایش و یا کاهش سرعت استفاده شده است :

 

-IncreaseSpeed(DesiredSpeed:Integer):Integer
-DecreaseSpeed(DesiredSpeed:Integer):Integer

 

هر یک از متدهای فوق ، عملیات مورد نظر در رابطه با افزایش و یا کاهش سرعت را انجام خواهند داد . برای نیل به خواسته فوق ( افزایش و یا کاهش سرعت )  می توان دو متد فوق را با یکدیگر تلفیق و در یک متد واحد دیگر جایگزین نمود:

 

-ChangeSpeed(DesiredSpeed:Integer):Integer

 

در صورتیکه پارامتر DesiredSpeed مثبت باشد ، سرعت افزایش و در غیر اینصورت ( پارامتر منفی باشد ) ، سرعت کاهش خواهد یافت.

 

Dim MyVehicle as New Vehicle
Dim ObjectSpeed as integer
‘ Some code that does something…
ObjectSpeed = MyVehicle.GetSpeed()
ObjectSpeed = MyVehicle.ChangeSpeed(-ObjectSpeed)

 

درنمونه مثال فوق ، در ابتدا یک شی Vehicle با نام MyVehicle تعریف شده است . در ادامه ، متد   GetSpeed در ارتباط با شی MyVehicle فرا خوانده شده است .بمنظور جداسازی نام شی از متد مربوطه از علامت نقطه استفاده شده است .
فرض کنید که Vehicle با سرعت ۵۵مایل در ساعت در حال حرکت است . مقدار ObjectSpeed ، پنجاه و پنج  در نظر گرفته می شود .در صورتیکه در ادامه مقداری منفی را به متد فوق پاس دهیم سرعت کاهش پیدا خواهد کرد.  اگر مقدار ۵۵ -  را به متد  ChangeSpeed() پاس دهیم ، توقف اتومبیل  را بدنبال خواهد داشت .
همانگونه که مشاهده می شود ،  برخی از متدها با علامت -  شروع شده اند .  این بدان معنی است که آنان متدهای اختصاصی ( Private) بوده  و خارج از کلاس قابل دستیابی نخواهند بود. چنین متدهائی به سایر متدها ی موجود در کلاس ، سرویس و خدمات لازم را ارائه و استفاده از آنان برای برنامه نویس مجاز نخواهد بود.بعبارت دیگر متدهای فوق بعنوان ایترفیس کلاس مطرح نبوده و از خدمات آنان در داخل کلاس استفاده خواهد شد . در چنین مواردی ممکن است یک متد که بصورت Public تعریف و امکان استفاده از آن در خارج از کلاس و توسط برنامه نویسان وجود دارد ، خود از خدمات چندین متد خصوصی استفاده نماید .
یک دیاگرام کلاس UML ، امکان مرور سریع و فشرده پتانسیل ها ی یک کلاس را فراهم و نحوه ارتباط یک برنامه نویس با کلاس مورد نظر را نیز مشخص خواهد شد. اگر یک کلاس را بعنوان یک جعبه سیاه  در نظر بگیریم ، علامت "-” ،  نشاندهنده آیتم هائی درون جعبه سیاه است که امکان استفاده از آنان توسط برنامه نویسان وجود نخواهد داشت . علامت  "+” ،  نشاندهنده امکاناتی است که می توان از آنان بمنظور ارتباط با متدها و خصایص یک کلاس استفاده کرد . آیتم های Public یک کلاس ، اینترفیس لازم برای یک کلاس را تعریف و نحوه ارتباط با آن را مشخص می نمایند.  در حقیقت متدهای Public ، نحوه استفاده از یک کلاس را به برنامه نویسان دیکته خواهند کرد .

خلاصه

     

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

  • مقداردهی اولیه ، ورودی ، پردازش ، خروجی و پاکسازی ، پنج مرحله متفاوت برنامه نویسی می باشند .

  • مراحل پنج گانه برنامه نویسی ، نگرشی  ماکرو از یک برنامه را ارائه می نمایند . مثلا” مرحله ورودی ممکن است نیازمند اخذ داده از صفحه کلید ، خواندن یک جدول تنظیمات از یک بانک اطلاعاتی و نهایتا” خواندن اطلاعات بیشتر از بانک اطلاعاتی دیگر باشد . بهسازی ( پالایش ) یکطرفه ، فرآیندی است که بر اساس آن یکی از مراحل  برنامه نویسی (نظیر مرحله ورودی )  بررسی و به آن جزئیات بیشتری اضافه اضافه خواهد شد . عملیات فوق  تا استخراج و مشخص شدن تمامی جزئیات لازم در رابطه با یک مرحله خاص ادامه خواهد یافت . عملیات بهسازی ( پالایش ) یکطرفه ، زمانی متوقف می گردد که کد واقعی  یک تابع نوشته گردد .محوریت فرآیند فوق ، تبدیل الگوریتم های ماکرو به میکرو است  :

    Input Step->ReadKeyboard( )
    ReadSetupTable( ) ->ReadTable1( ) ->(Code)
    ReadTable2( )
    ReadTable3( )

  • UML ، از کلمات Unified Modeling Language  اقتباس شده است . مزیت استفاده از UML ، تفکر مبتنی بر برنامه نویسی شی گراء است .بلاک های اولیه ایجاد UML کلاس ، خصلت و متد  نامیده می شوند. دیاگرام های کلاس UML تمام سه عنصر OOP را در یک دیاگرام مناسب  نمایش می دهند .

  • در OOP ، واژه های Private و Public به نحوه دستیابی به خصلت ها بر می گردد . اگرخصلتی از نوع Private باشد ،امکان تغییر آن صرفا” برای کسانی که به کلاس فوق تعلق دارند، وجود خواهد داشت .اگر خصلتی از نوع Public باشد ، سایر اشیاء امکان دستیابی کامل به خصلت را ( اعمال تغییرات مورد نظر ) خواهند داشت.

ارسال نظر

نام:* ایمیل:*
 
پررنگ کج خط دار خط دار در وسط | سمت چپ وسط سمت راست | قرار دادن شکلک قراردادن لینکقرار دادن لینک حفاظت شده انتخاب رنگ | پنهان کردن متن قراردادن نقل قول تبدیل نوشته ها به زبان روسی قراردادن Spoiler
 

نظرات

عضویت ویژه / تمامی مطالب / تماس با ما

طراحی شده توسط چشم انداز رسانه ها | پشتیبانی توسط سرور های قدرتمند میهن وب هاست