UML & OO
يعقوب محمد علي نياء عمران
استاد درس: دكتر ناصر سلماسي
درس: CIS
UML& OO
تاريخچه
ديدگاه شي گرا از اواسط دهه 70 ميلادي در مباحث برنامه نويسي كامپيوتر متولد شد.پس از گذشت چند سال و در اوايل دهه 90 به جهت ناكارامدي روش هاي سنتي در مباحث تحليل و طراحي سيستم هاي اطلاعاتي و كامپيوتري و نيز ظهور سيستم هايي كه مدل كردن انها به روش هاي سنتي ناقص بود٬ تحليل گران و طراحان سيستم را به اين فكر انداخت تا از ديدگاه شي گرا علاوه بر برنامه نويسي در زمينه تحليل وطراحي سيستم نيز استفاده كنند.در طي اين سالها متدولوژي هاي مختلفي توسط دانشمندان شي گرا به دنيا عرضه شده بود از جمله اين متدولوزي هاي شي گرا مي توان مواردي نظير: متدولوژيCoad ٬ متدولوژيBooch ٬ متدولوژيFusion ٬ متدولوژيRumbaugh٬متدولوژيJacobson را بر شمرد.در سال 96 اقايان Rumbaugh٬Booch وJacobson در كنار هم گرد امدند و پايه هاي زبان مدل سازي يكپارچه معروف به UML را ايجاد كردند. اين زبان در سال 97 توسط گروه مديريت شي در امريكا به عنوان استاندارد پذيرفته شد و شركت هاي مختلفي نظير: Oracle ٬ Microsoft و Hewlett_packard ان را پشتيباني نمودند.
ديدگاه شي گرا(Object Oriented)
ديدگاه شي گرا در اصل نگرشي جديد به دنيا و سيستم هاست. اين ديدگاه سعي دارد تا با نگرش خود به عناصر يك سيستم ٬ كل ان سيستم را مدل سازي كند.ديدگاه شي گرا بر مباحثي نظير:شي٬ كلاس٬مسئوليت و سناريو استوار است.
شي(Object)
در ساده ترين حالت يك شي نمونه اي است كه از روي يك Classايجاد شده است.چون Class نمي تواند عملياتي باشد ولي نمونه هاي توليد شده از ان قابليت اجرايي دارند.در كاملترين حالت يك شي موجوديتي است كاملا مستقل با مسئوليت هاي شخصي خويش كه در لحظه توليد از كلاس مرجع خود بوجود امده است و در پايان مسئوليت هاي خود مي بايد از بين برود.طول دوره تولد تا پايان مسئوليتها را طول عمر يك شي مي ناميم اگر يك شي از طريق خود يا ديگر اشياء به طور مستقيم يا غير مستقيم مورد استفاده قرار نگيرد ان شي متغير يك شي غير فعال خواهد بود در صورتي كه يك شي از طريق خود يا ديگر اشياء به طور مستقيم يا غير مستقيم مورد استفاده قرار بگيرد ان شي متغير يك شي فعال خواهد بود.
كلاس(Class)
موجوديتي است غير قابل استفاده مستقيم شامل مجموعه اي از متغيرهابه عنوان صفات كلاس و خطوط برنامه اي از جنس SubRoutine ها يا Functionها به عنوان بخشي از عملكرد ان كلاس. با توجه به اينكه Classها قابليت استفا ده مستقيم را ندارند از روي هر كلاس ميتوان نمونه يا نمونه هايي را توليد كرد.بر همين اساس Classهابه سه گروه زير تقسيم مي شوند:
1)Multitone Class
2)Singletone Class
3)Utility Class
Multitone Class كلاس هايي هستند كه مي توانند بيش از يك نمونه از خود توليد كنند كه هر نمونه از نوع يك كلاس منحصر به فرد باشدSingletone Class كلاس هايي هستند كه با ان كه مي توانند نمونه يا نمونه هايي از خود را توليد كنند اما تنوع توليد نمونه در انها وجود نداشته وكليه نمونه ها از روي يك كلاس توليد مي شوند. Utility Class كلاس هايي هستند كه توانايي توليد هيچ نمونه اي از خود را نخواهند داشت . در حالت كلي يك كلاس:
Class Name
|
Attributes
|
Operation
|
مسئوليت(Responsibility)
يك كلاس و به تبع ان يك نمونه از يك كلاس در طول عمر خود داراي يك سري از مسئوليت هاست مانند ارتباط با اشياء ديگر و اجراي يك سري ازعمليات و دريافت يكسري از مقادير براي رسيدن به يك هدف خاص بطور كلي منظور از مسئوليت ها شامل موارد زير است:
1)صفات(Attribute)
2)عملكردها(Operation)
3)ارتباط ها(Connection)
صفات(Attribute)
خصوصیات مواردی هستند ازجنس متغیرها که بنا به تعریف اگاهی های شی از خودش را نشان می دهد مانند ابعاد یک فرم،وضعیت یک Connectionونام یک فرد یا رنگ یک متن.
خصوصیات یک Class به سه گروه کلی تقسیم می شوند.این تقسیم بندی فضای اعتباراین صفت یا ویژگی را در محدوده Class ها و اشیاءتولید شده از انها بررسی می کند.
گروه اول صفات عمومی(Public): صفاتی هستند که در داخل یک Class وجود داشته،درون یک Class قابلیت خواندن و نوشتن خواهند داشت و در اختیار نمونه هایی که از روی یک کلاس تولید می شوند نیزقرار می گیرند و در داخل اشیاء نیز قابلیت خواندن و نوشتن را خواهندداشت.
گروه دوم صفات خصوصی(Private): صفاتی هستند که درون یک کلاس وجود دارند قابلیت خواندن و نوشتن خواهند داشت اما در اختیار نمونه های تولید شده از کلاس قرار نگرفته و اشیاء دیگر قدرت استفاده از این صفات را نخواهند داشت.
گروه سوم صفات محافظت شده(Protected):صفاتی هستند که در داخل کلاس و نمونه های تولید شده از کلاس وجود داشته در داخل کلاس به شکل خواندنی و نوشتنی خواهند بود اما درون اشیاء دیگریا به شکل فقط خواندنی یا به شکل فقط نوشتنی ظاهر خواهند شد.
عملكرد(Operation)
عمل٬ عكس العمل يا مجموعه اي از عمليات كه يك شي در طول دوره زندگي خود با ان خواهد بود و به عنوان يك متد يا Operation تعريفمي شود.
ارتباط(Connection)
اگاهي داشتن يك شي از سطوح مسئوليت ديگر اشياء (بعضي از صفات٬ عملكردها يا ارتباطات اشياء ديگر) را رابطه مي نامند.ارتباطات در محيط الزاما دو طرفه نبوده و عموما يك شي با اشياء ديگر بطور يكطرفه ارتباط برقرار مي كند.
انواع ارتباطات در مدل شي گرا
الف)تعميم(Generalization)
اين ارتباط براي پرهيز از تكرار صفات٬ اعمال و ارتباطات بين كلاس ها در يك نمودار به كار مي رود. براي اين منظور مي توان عناصر تكراري را در كلاسي مجزا به عنوان كلاس تعميم و عناصر غير مشترك را در خود كلاس ها قرار داد و با برقراري رابطه تعميم بين هر يك از كلاس ها و كلاس تعميم كليه عناصر را از كلاس تعميم به ارث گرفت.
ب)تناظر(Association)
زماني كه دو شي يك ارتباط ساختاري با يكديگر داشته باشند رابطه اي از جنس تناظر به دست خواهد امد. منظور از ارتباط ساختاري ارتباطي است كه اشياء بتوانند به خصوصيات يكديگر دسترسي داشته باشند.
رابطه تناظر به سه دسته كلي زير تقسيم مي شوند:
1)تناظر معمولي(Normal)
2)تناظر جمعي(Aggregation)
3)تناظرتركيبي(Composition)
رابطه Normal
يك ارتباط تناظري ساده بين دوكلاس
رابطه Aggregation
زمانيكه دو يا چند كلاس در كنار يكديگر قرار بگيرند و از قرار گرفتن انها در كنار هم كلاس جديدي پديد ايد.
رابطه Composition
نوع خاصي از رابطه جمعي مي باشد كه رابطه محكم بين يك جزءاز مجموعه را با كل ان مجموعه نشان مي دهد.
ج)وابستگي(Dependency)
رابطه وابستگي رابطه اي است ساختاري كه اگر شي Y يكي از خصوصياتش يا متدهايش تغيير كند حتما در يكي از خصوصيات شي X نيز تغيير حاصل شودانگاه مي گوييم X به Y وابسته است.
متدولوژي
متدولوژي فرايندي ساختارمند براي حل مسائل مختلف با استفاده از فناوري وابزارهاي معرفي شده در ان٬ به طور كلي 5 متدولوزي در تقسيم بندي ها وجوددارد:
1)سنتي(Conventional Methodology)
اين متدولوژي از اولين متدولوژي هاي مطرح در زمينه تحليل و طراحي سيستم بوده است در اين روش نگرش طراحان بر عملكردها معطوف بوده و از جزئيات شروع به تحليل و طراحي مي شد.
2)فرايندگرا(Process Oriented Methodology)
اين متدولوژي به عنوان شبكه اي از فعاليت هاي در حال توسعه كاربرد داشته كه اين فعاليت ها مي توانند با يكديگر در تعامل باشند.
3)ساختمان داده(Data Structure Methodology)
اين متدولوژي نوعي فرايندگرا بوده با اين تفاوت كه ابزار پياده سازي ان ساختمان هاي داده اي موجود مي باشد. در اين متدولوزي براي اولين بارمفهوم Class معرفي شده است ولي استفاده اساسي از انها به عمل نيامده است و تنها به جنبه تقسيم بندي و طبقه بندي عوامل پرداخته است زبان هاي ساختيافته اوليه از اين متدولوزي استفاده مي كردند.
4)مدلسازي اطلاعات(Information Modeling)
در اين متدولوژي اشياء بوجود امده و مي توانستند با يكديگر مرتبط باشند اماهيچگونه تاثيري بر يكديگر نداشتند.اين اشياء فاقد متد بوده وهدفشان ٬ تنهابازشناسي ساختارهاي داده اي است.در اين فضا مدل هاي تصويري غيراستانداردي نيز تعريف شده اند.
5)شي گرا(Object Oriented)
در اين متدولوژي سيستم به عنوان مجموعه اي از اشياء به هم مرتبط تعريف شده كه اشياء مي توانند مستقيما بر روي يكديگر تاثير بگذارند. اين تاثير هابر اثر Operation ها يا رفتارهاي متقابلي است كه اشياء نسبت به يكديگرخواهند داشت.اين متدولوزي در سه ساختار مجزا متولد شده و سپس از در كنار هم قرار دادن اين سه فضا زبان مدلسازي خاصي به نام UML بدستامده است.اين سه ساختار عبارتند از:
OMG((Object Modeling Group
OOSE(Object Oriented Software Engineering)
OOP((Object Oriented Programming
هفت گام اساسي مدل شي گرا
1)انتزاع(Abstraction): بطور كلي به مفهوم مجردسازي يا خلاصه سازي مي باشد.يعني انكه ما ميتوانيم به مسئله از يك ديد كلي٬به راحتي و بدون لحاظ كردن جزئيات نگاه كنيم. مثل نقشه كشور٬ شهر منطقه
2)Encapsulation :منظور از پنهان سازي يا مخفي سازي عناصر دروني يك Class و به تبع ان يك شي مي باشد.Encapsulation محدود كردن اجزاي يك سيستم را نسبت به ديگر اجزاي ان سيستم بررسي كرده و ميخواهد يك شي و عناصر دروني ان از ديد استفاده كننده پنهان باشد.
3)Inheritance :ارث بري بطور كلي روشي است براي بيان شباهت ها.اين حالت در طراحي به عنوان يك رابطه Generalization تعريف مي گردد وكلاس فرزند تمام خصوصيات كلاس پدر را به ارث خواهد برد.
4)Polymorphism :منظور از چند شكلي ٬ يك شي خاص بودن و چند شكل داشتن مي باشد. مانند اب٬ بخار اب و يخ كه همگي از جنس شي اب مي باشند.
5)Message Communication :ارتباط پيامي ٬ تنها راه ارتباط مابين اشياءاست. مانند ارسال يك مقدار يا يك پارامتر از يك شي به شي ديگر.مانند تلويزيون و كنترل از راه دور
6)Concurrency :اجراي همزمان دو يا چند فعاليت در سطح يك شي يا سيستم ساختار همروندي را ايجاد مي كند.
7) Reusability :به منظور استفاده مجدد از يك شي در پايان مسئوليت هاي قبلي خود با همان نام و ساختار اوليه است.
زبان مدل سازي يكپارچه) Unified Modeling Language)
UML زبان مدلسازي مبتني بر متدولوزي شي گرا است كه داراي اهداف زير مي باشد:
1)مشخص سازي(Specifing)
2)مجسم سازي(Visualising)
3)ساخت(Construction)
4)مستند سازي(Document)
UML عناصر را به شكل لايه هاي منظم با استفاده از تصاوير و قرارداد هاي خاص تعريف كرده و به هر لايه يك نام با هدف پياده سازي اختصاص مي دهد.
اهداف UML
1)فراهم اوردن زبان مدلسازي بصري و گويا
2)فراهم اوردن مكانيزم هاي توسعه
3)استقلال از زبان هاي برنامه نويسي خاص و فرايند هاي توسعه
4)فراهم اوردن پايه و اصولي رسمي براي درك زبان مدل سازي
5)تشويق به رشد بازارابزارهاي OO
6)حمايت از مفاهيم توسعه سطح بالاتر مانند همكاري ها و الگوها و اجزاء
نمودارهاي UML
1)نمودار كلاس(Class Diagram):نموداري است كه مي تواند معرف توصيف تمام يا بخشي از يك سيستم و ارتباطات انها باشد.
2)نمودار مورد كاربرد((Use Case Diagram:نموداري است كه نيازهاي يك سيستم در ان مشخص ميشود.
3)نمودار رفتار سيستم(Behaviour Diagram):نموداري است كه رفتارهاي يك سيستم را مورد بررسي قرار مي دهد. رفتارها عملا از طريق دو نمودار
State Chart و Activity Diagram بررسي مي شوند.
الف)نمودار حالت(State Chart):حالت هاي هر كلاس يا شي را مشخص مي كند و وضعيت هايي را تشريح مي كند كه يك شي در كل سيستم نسبت به يك موضوع خاص از خود بروز مي دهد.
ب)نمودار فعاليت(Activity Diagram):نموداري است كه عملكردهاي يك كلاس يا شي را نمايش مي دهد.اين عملكردها مي توانند شامل يك يا بيش از يك متد بصورت همزمان يا غير همزمان باشند.
4)Behavior Diagram : اين گروه از نمودارها علاوه بر رفتار تاثيرات متقابل ٬ ارتباطات پيامي را نيز مورد بررسي قرار ميدهند و به دو گروه زير تقسيم مي شوند:
الف)نمودار توالي(Sequence Diagram):كه بر اساس يك موضوع و نياز خاص توالي عملياتي را كه براي رفع ان نياز لازم است نمايش مي دهد.
ب)نمودار همكاري(Collaboration Diagram):نموداري كه همكاري متقابل اشياء را براي حل يك نياز نمايش داده و بررسي مي كند .
5)نمودار استقرار(Implementation Diagram):اين گروه شامل نمودارهايي است كه هنگام پياده سازي اجزاي نرم افزاري و سخت افزاري
را كه بايد در كنار يك برنامه قرار بگيرند بررسي مي كند و شامل Component Diagram و Deployment Diagram مي بتشد.
الف)Component Diagram : عناصر نرم افزاري خارج از محيط اوليه رابررسي مي كند.
ب)Deployment Diagram : عناصر سخت افزاري موجود را نمايش مي دهد.
فرايند توسعه(Unified Process)
فرايند توسعه فرايندي است تكراري و افزايشي. طراحان UML در ابتدافرايندي را در كنار UML به نام Objectory براي توسعه٬ طراحي وپياده سازي نرم افزار ارائه دادند كه امروز به ان UP گفته مي شود. فرايند UP در 4 مرحله انجام مي شود كه در هر مرحله مي تواند داراي چندين تكرار باشد.اين مراحل عبارتند از:
1)شروع(Inception)
2)جزئيات(Elaboration)
3)ساخت(Construction)
4)انتقال(Transition)
كليه اين مراحل مي بايد در طول 5 گام اصلي چرخه عمر يك نرم افزار اززمان شروع تا انتقال ان به مشتري صورت پذيرد. اين گام ها عبارتند از :
1)تعيين نيازمندي ها
2)تحليل
3)طراحي
4)پياده سازي نرم افزار
5)ازمون محصول(نرم افزار)
Inception : در اين مرحله تعيين اساس كار و محدوده كلي پروژه و اخذتعهدات از مجري و كارفرما صورت مي پذيرد.
Elaboration : جمع اوري نيازمندي هاي كل سيستم و تحليل و طراحي اوليه يا سطح بالاي سيستم در اين مرحله صورت مي پذيرد در اين مرحله حتما مي بايد خطوط پايه كلي براي مرحله ساخت تعيين شده باشد.
Construction : اين مرحله كه زمانبرترين مرحله در فرايند توسعه مي باشد خود٬ به طور كامل شامل گام هاي چرخه عمر خواهد بود كليه مراحل مي توانند در مرحله ساخت تكرار شوند.اين تكرارها ممكن است منطبق با دو مرحله قبلي باشد انها را نقض كند يا مطالبي را به انها اضافه كند. در اين مرحله ازمون محصول صورت مي پذيرد اين ازمون بر مبناي طراحي بوده و هنوز نيازهاي كارفرما در اين ازمون در نظر گرفته نشده است لذا به همين دليل به ان ازمايش بتا گفته مي شود.
Transition : در اين مرحله كه بعد از انجام ازمايش بتا اغاز مي شوداطمينان حاصل ميگردد كه برنامه تمام شده ٬ ازمايش نهايي با خواستهاي كارفرما صورت مي گيرد زمان اموزش به كاربران و تحويل كل پروژه دراين مرحله محاسبه مي شود.كليه مراحل 4 گانه بالا مي توانند شامل يك سري ريسك هاي كلي باشند كه حتما اين ريسك ها بايد حل شده و سپس هر مرحله جداگانه اغاز شود.
Use case
Use case همان نياز كاربر است.در سيستم بانك مشتري از سيستم انتظار دارد تا چك خود را به پول نقد تبديل كند اين انتظار يا نياز يك use case مي باشد.و Use case مورد نظر را با جمله "تبديل چك به پول" نقد بيان مي كنيم.
Actor (كنشگر)
نقشي كه كاربر در ارتباط با سيستم ايفا مي كند Actor مي ناميم.
Activity Diagram
Activity Diagram اساسا يك نوع فلوچارت مي باشد كه براي نمايش جريان كنترل از يك شي به شي ديگر به كار مي رود همچنين براي ترسيم جريان كار از نمودار فعاليت استفاده مي شود.و داراي يك سري علائم مي باشد.
Sequence Diagram
Sequence Diagram بر اساس يك موضوع و نياز خاص توالي عملياتي را كه براي رفع ان نياز لازم است نشان مي دهد.