UML Diagram (Class Diagram)

بعد از خوندن UML Diagram بود که فهمیدم میشه چقدر اهمیت داشته باشه، شاید خیلی از ماها تو خیلی از کتابا وقتی میدیدم میگفتیم میفهمیم چیه و اصلا راجبش تحقیق نمیکردیم که بخوایم دیپ یاد بگیریم، به پیشنهاد یکی از همکارا رفتم ببینم UML Diagram اصلا چی هست؟UML چیست؟تو لغت UML مخفف (unified modeling language) ، اصلا این یعنی چی؟تو لغت unified modeling language به معنی زبان مدل سازی یکپارچه اس. هدف UML ارائه یک نماد استاندارد است که میتوانیم توسط تمام روش های شی گرا استفاده کنیم.UML انواع مختلفی داره یه تو این مقاله بهشون میپردازیم.کلاس دیاگرام (Class Diagram)فک کنم یکی از چیزایی که خیلی دیده باشید کلاس دیاگرام باشه.قبل از اینکه بخوایم بگیم کلاس دیاگرام چیه بیاید یه مروری کنیم که کلاس چی هست؟ یادتون باشه کلاس یه قالب برای ساخت یک شی است. برگردیم به دیاگرامموناسم کلاسمون همیشه بالای مستطیل کلاسمون میاد.توی قسمت بعدی ام ویژگی های کلاسمون میاد، نوع (Type) ویژگی هم باید مشخص باشه.اخرین چیزی ام که تو هر کلاسمون میمونه متد های کلاسه، نوع چیزی که میخواد خروجی بده باید بعد از دو نقطه نوشته بشه.تو پرانتز و مهمدقت کنید بالا کنار اتریبیوت ها و متد ها یه سری + و - هستش حالا اینا چیه؟+ : یعنی پابلیک یا عمومی یا Public یعنی این متد یا اتریبیوت یه چیز پابلیکه.- : یعنی پرایوت یا خصوصی یا Private یعنی این متد یا اتریبیوت یه چیز پرایوته.# : یعنی پروتکتد یا حفاظت شده یا protected یعنی این متد یا اتریبیوت یه چیز حفاظت شده اس.~ : یعنی پیج لوکال.برای اتصال دو کلا به هم باید از یکی از ای خط ها یا خط چین ها استفاده کنیم.Associationیعنی چی؟ Association در لغت به معنی اتصاله برای اتصال دو کلاس به هم از این استفاده میکنیم.یه سوال شاید واستون پیش بیاد که فقط برای اتصال کلاس ها باید از این استفاده کرد؟ در جواب باید بگم نه یه سوالی که برای خودمم پیش اومده بود و خیلی سعی کردم پیداش کنم این بود که من یه Enumeration رو بخوام به یه کلاس متصل کنم باید با کدوم از اینا انجام بدم بعد از گشتن سال ها و ماه ها (کلا نیم روز شد) فهمیدم میتونم با همین خط صاف اتصال بدم.Inheritanceیعنی چی؟ Inheritance در لغت باز به معنی وراثته ، اولین چیزی که بعد از معنیش به ذهنتون میاد چیه؟ افرین ارث بری ، وقتی یه کلاس از یه کلاس دیگه ارث میبره از این این نوع خط استفاده میکنیم یه خط صاف که سرش یه مثلث تو خالیه.Realizationیعنی چی؟ Realization در لغت به معنی تحقق ا که من خودم هیچی نفهمیدم از معنی لغویش ولی اگه نخوایم با معنی لغوی بریم جلو بخوایم ساده بگیم ، یک المان رفتار را مشخص میکنه و المان دیگه اون رفتار رو اجرا میکنه بخوام مدل دیگه بگیم اون رفتار رو درک میکنه.Dependencyیعنی چی؟ Dependency در لغت به معنی وابستگی ا ، رابطه وابستگی رابطه ای است که تو اون یک عنصر یعنی مشتری از عنصر دیگه یعنی تامین کننده استفاده میکنه یا به اون وابسته اس.Aggregationیعنی چی؟ Aggregation تو لغت به معنی تجمیع ا، ولی خودمم از این هیچی نفهمیدم یکی از چیزایی که برام خیلی گُنگ بود همین اگریگیشن بود اینو میخوام با یه مثال توضیح بدم که بیشتر و بهتر بفهمیم.این عکسو نگاه کنید، یه شرکت داریم چند تا دپارتمان ،دقت کنید بغل شرکت یه یک نوشته یعنی یدونه شرکت. سمت دپارتمان یه ستاره گذاشته یعنی چند تا یه شرکت میتونه چند تا دپارتمان داشته باشه. اینجا ام همینه رابطه بین کمپانی و دپارتمان رو اگریگیشن میگیم.تو پرانتزاگر این رابطه ماندگار ، حالت کل به جز داشته باشه این رابطه به شکل aggregation نمایش داده میشه. مثل رابطه ماشین با چرخ.compositionیعنی چی؟ composition تو لغت به معنی ترکیب بندی ا، اینم مثل اگریگیشن خودم نفهمیدم باز ولی با این مثال میتونیم بفهمیم چیه ، اگر رابطه کل به جز به گونه ای باشه که یکی بدون اون یکی معنی نداشته باشه مثل رابطه بدن و دست اینو کامپوزیشن میگیم.تو پرانتر اخردقت کنید بعد از این که خط ها رو طبق الگو بالا کشیدید احتمال داره ارتباط های مختلفی داشته باشهتو این شکل میگه چه جوری باید مشخص کنیماگه یک به یک بود ارتباط باید 1 بزاریماگه یک به چند بود *..1 باید بزاریماگه چند به چند بود یه * میزاریمحرف اخرکلاس دیاگرام یکی از مهم ترین دیاگرام هایی که یه برنامه نویس باید بلد باشهیه سریاتون شاید بگید چرا مثلا این چیه؟بعد از یادگیری میفهمیم چقدر مهمه و چقدر استفاده میشه وقتی همه چیز از قبل مشخص بشه خیلی راحت تر و خیلی اصولی تر شروع میشه و همه چیزو میدونیم دیگه فقط باید کد بزنیم ولی اگه اینارو نزنیم یه گُنگی خاصی تو کد زدنمون هست