PDA

View Full Version : راهنمایی برای کلاس دیاگرام و Design Pattern



hesamy2004
جمعه 09 مرداد 1388, 20:02 عصر
دوستان من کلی کلنجار رفتم تا تونستم Usecase و Class diagram مربوط به سناریویی که باید تحویل دانشگاه بدم رو به اینجا برسونم. اگر ممکنه این فایل رو دانلود کنین و نظرتون رو بهم بگین.
در صفحه اول سناریو رو مشاهده میکنین.
در صفحه دوم دیاگرام Usecase هست.
صفحه سوم هم مصیبته یعنی Class diagram ه. البته نتونستم کاملش کنم چون خودم دارم توش گم میشم. نمیدونم کلاس Employee با کلاس ECO چه نسبتی داره. البته فکر میکنم کامپوزیشن باشه.
در ضمن باید از دیزاین پترن هم استفاده کنم ولی نمیدونم کجاش باشه بهتره. یا چی رو به چی باید ربط بدم.

یه سئوال هم دارم، آیا میشه یه زیر کلاس از کلاس بالاسرش هم ارث ببره و هم کامپوزیشن باشن؟

cups_of_java
شنبه 10 مرداد 1388, 13:29 عصر
من وقت نکردم نمودار هاتو ببینم اما به طور کلی:


خودم دارم توش گم میشم
جزییات نمودار رو اینقدر بیار تا گم نشی و نه بیشتراز حد!

باید Design Pattern ها رو مطالعه کنی تا بتونی تصمیم بگیری کجا ها جا داره ازشون استفاده کنی.


یه سئوال هم دارم، آیا میشه یه زیر کلاس از کلاس بالاسرش هم ارث ببره و هم کامپوزیشن باشن؟
بله! وقتی این کار رو می کنن که یه سری موجودیت هم نوع می خوان به صورت ترکیبی رابطه کل به جز هم داشته باشن. مثلن یک یک مجموعه گرافیکی می تونه از پنجره ها و منوها و بردر ها تشکیل بشه (کل به جز) و ضمنن همه این ها فرزند های کلاس مجرد گرافیک می تونند باشند.
این الگو مخصوصن در الگوی Composite به کار می ره. در الگو های دیگری مثل Decorator هم هست. اگه درست منظورتو نفهمیدم برام مثال بزن تا ببینم چی میگی.

hesamy2004
شنبه 10 مرداد 1388, 20:39 عصر
ممنون از بابت پاسخگویت.

ببین من کاملن Design Pattern ها رو مطالعه کردم. دوتاش بکارم میخوره (اگر زحمت بکشی و به فایل نگاه بندازی خیلی کمکم میکنی). یکیش Facade ه و دیگری Mediator. جفتشون تقریباً یکار میکنن.
الان من 4 کلاس دارم که باید با هن ارتباط برقرار کنند. فقط یه کلاس این وسط میخوام تا ارتباط اینها رو برقرار کنه. یعنی درخواست یکی رو به دیگری منتقل کنه و جواب رو بگیره و برگردونه. حالا تو این شک دارم که کدومشون دقیقاً همینیه که میخوام.

از استادم پرسیدم اولش گفت فکد نمیتونه درخواست ها منتقل کنه ولی تو کتاب نوشته این کار رو میکنه (البته شایدم من درست متوجه منظور کتاب نشدم چون هول هولکی نگاش کردم) البته آخرشم گفت خودت باید انتخاب کنی!!!

مشکل اینجاست Assignment رو باید تا جمعه دیگه تمومش کنم و ارسالش کنم تازه برنامه نویسیش هم مونده. فقط لنگ این کلاس دیاگرامشم (چون Usecase و Sequence و Active state رو کشیدم) تا برم سر برنامه نویسیش.

به هرحال ممنونم از کمکت

cups_of_java
یک شنبه 11 مرداد 1388, 01:58 صبح
من MS Office ندارم. لطفن فایل تصویری نمودار هاتو بزار تا نگاشون کنم.


یکیش Facade ه و دیگری Mediator. جفتشون تقریباً یکار میکنن.
فلسفه این دو الگو یکی هست اما یه کار رو انجام نمی دن. در اساس شبیه نیستن به هم.


تا ارتباط اینها رو برقرار کنه. یعنی درخواست یکی رو به دیگری منتقل کنه
وقتی می خواین با دقت الگو های طراحی رو به کار بگیرین خیلی هم باید به جملاتتون دقت کنید. ارتباط برقرار کردن بین چند کلاس برای این که اون کلاس از هم بی خبر بمونن و یک جا جمع کردن کنترل و منطق رفتاری که بین این کلاس ها صورت می گیره کار Mediator هستش. اما درخواست یکی رو به دیگری تبدیل کنه اصلن معنیش چیزه دیگه ای می شه! بسته به شرایط مسله اگه قرار باشه درخواست یکی رو به دیگری اون وقت می تونه الگو های دیگه هم مثل Proxy، ّFacade، Broker، Command و ... مطرح بشه! پس باید ببینی کدوم ارزش استفاده داره و با مسله تو چفت می شه.
Facade رو یک آدم پشت یک دریچه فرض کن. وقتی می خوای یه سرویس بگیری از پشت دریچه بهش میگی. اون برات سرویس رو از دیگران می گیره و بهت پاسخ می ده!

توچه کن با تعریفی که از Mediator اوردم فرقشون رو حس می کنی!

به طور کلی چند تا نکته:
1. الگو ها به طور 0 و 1 استفاده نمی شن. گاهی چند تا الگوها می تونن به کار برن (با رنگ ها و حس های مختلف)
2. گاهی لازم هست دو یا چند الگو با هم ترکیب بشن تا ما به اون چیز هایی که می خوایم برسیم.
3. سعی کن صورت مسله (تعریف دقیقش رو)(Problem) و شرایط مسله(Context) رو خوب درک کنی تا انتخاب الگو برات راحت تر شه.