طراحی برنامه ( بخش دوم ) در قسمت اول اين مقاله به مسائل مرتبط با برنامه نويسی اشاره و در ادامه با مراحل متفاوت برنامه نويسی آشنا شديم . در اين بخش به بررسی متدولوژی UML خواهيم پرداخت . UML ، يک متدولوژی طراحی خصوصا" در زمينه برنامه نويسی شی گراء است .
UML چيست ؟ مراحل پنج گانه برنامه نويسی ، نقطه شروع مناسبی برای طراحی يک برنامه است ( اولين فاز). در ادامه با استفاده از پالايش ( بهسازی ) يکطرفه مراحل پنج گانه برنامه نويسی ، فاز دوم طراحی يک برنامه انجام خواهد شد . استفاده از شبه کد بمنظور ارائه جزئيات پالايش ، کمک قابل توجه و مفيدی در ارتباط با طراحی برنامه را بدنبال خواهد داشت . رويکرد فوق ( مراحل پنج گانه برنامه نويسی ) ، روشی مفيد بمنظور طراحی يک برنامه است . در اين راستا برخی از طراحان برنامه های کامپيوتری ترجيح می دهند که از يک روش دقيق تر و موشکافانه تر استفاده نمايند . UML(Unified Modeling Language) مبتنی بر چنين رويکردی است . UML ،زبانی استاندارد بمنظور مشخص نمودن ، پيش بينی ، ايجاد و مستند سازی توليدات نرم افزاری است . UML ، مجموعه ای از بهترين امکانات مهندسی را بمنظور استفاده در مدل سازی سيستم های بزرگ و پيچيده ارائه که کارآئی آنان به اثبات رسيده است . UML يک متدولوژی رسمی برای پياده سازی نرم افزار است .
روند شکل گيری UML برنامه نويسی شی گراء ( OOP ) ، از اوايل سال 1960 مطرح گرديد . برنامه نويسی شی گراء با اينکه بعنوان يک ايده جديد مطرح شده بود ولی بسرعت زبان های مدل سازی شی گراء برای پوشش ايده فوق ، مطرح و پياده سازی گرديدند. در فاصله سال های 1970 تا اواخر 1980 چندين زبان مدل سازی شی گراء پياده سازی گرديد . تعداد زبان ها ی مدل سازی شی گراء در سال 1995 به بيش از پنجاه نمونه رسيده بود . از افراد فعال و پيشرو در اين زمينه می توان به Jim Rumbaugh ( شرکت جنرال الکتريک )، Grady Booch ( شرکت Rational software ) و Ivar Jacobson ( شرکت Objectory ) اشاره نمود. هر يک از افراد فوق ، تلاش گسترده ای را در جهت مدل سازی زبان برنامه نويسی انجام داده بودند . در سال 1994 ، Rumbaugh شرکت جنرال الکتريک را ترک و به Booch در شرکت Rational Software ملحق گرديد. يک سال بعد ، شرکت Rational Software ، شرکت Objectory را خريداری و افراد ياد شده همکاری خود را با يکديگر و در يک شرکت مشترک آغاز نمودند. ماحصل همکاری فوق ، ارائه اولين نسخه UML 0.9 توسط شرکت Rational software در سال 1996 بود . در ساليان بعد ، OMG)Object Management Group) ، تلاش های گسترده ای را بمنظور ارتقاء و بهسازی UML آغاز نمود. در اواسط سال 2001 ، اعضاء 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 با سرعت 55مايل در ساعت در حال حرکت است . مقدار ObjectSpeed ، پنجاه و پنج در نظر گرفته می شود .در صورتيکه در ادامه مقداری منفی را به متد فوق پاس دهيم سرعت کاهش پيدا خواهد کرد. اگر مقدار 55 - را به متد 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 باشد ، ساير اشياء امکان دستيابی کامل به خصلت را ( اعمال تغييرات مورد نظر ) خواهند داشت.
|