PDA

View Full Version : تفاوت دیاگرام کلاس و ERD



mona.nkh
پنج شنبه 17 بهمن 1392, 12:57 عصر
من برای پروژه دیاگرام کلاس و ERD کشیدم، هر دو مثل هم شد. یعنی اول کلاس دیاگرام رو کشیدم و روابط چند به چند رو با اضافه کردن کلاس های دیگه، به روابط یک به چند تبدیل کردم، بعد موقع کشیدن ERD همه ی کلاس های کلاس دیاگرام رو به عنوان Entity در نظر گرفتم تووی ERD.
که استادم گفت نباید اینطور باشه، این یعنی که کلاس دیاگرامت ناقصه، باید کلاس های کنترلی و کلاس های اینترفیسی هم داشته باشی.
من مشکلم اینه که انواع کلاس رو از هم تشخیص نمیدم (Entity, Interface, Control )
شاید الان کلاس کنترلی هم داشته باشم ولی چون تشخیص نمیدم، اونها رو در ERD هم قرار دادم. البته اگر اون کلاس های اضافه شده رو در ERD نیارم، مشکل چند به چند بودن روابط به وجود میاد
میشه کمکم کنید؟

Vitallity
پنج شنبه 17 بهمن 1392, 18:26 عصر
که استادم گفت نباید اینطور باشه، این یعنی که کلاس دیاگرامت ناقصه، باید کلاس های کنترلی و کلاس های اینترفیسی هم داشته باشی.
من مشکلم اینه که انواع کلاس رو از هم تشخیص نمیدم (Entity, Interface, Control )

کلاس‌های Entity: کلاس‌هایی هستند که فقط اطلاعات رو تو خودشون نگه می‌دارن... مثل جداول دیتابیس و فقط با اطلاعات سر و کار دارن.
کلاس‌های Control: فقط منطق برنامه در اونها پیاده می‌شه و کنترل و جریان اصلی برنامه در اونها اتفاق می‌افته.
کلاس‌های Interface یا Boundary: کلاس‌هایی هستند که ظاهر برنامه و هر چیز که به کاربر نمایش داده می‌شه و به دریافت ورودی از کاربر پاسخ می‌ده.

همچنین کلاس‌های Boundary مسقیماً نمی‌تونن به اطلاعات Entity دست داشته باشن و برعکس بلکه باید یه کلاس Control درخواست رو از یه لایه دریافت کنه و به لایه دیگه پاس بده. یعنی این شکلی:
Entity <---> Control <---> Boundary
مثلاً تو یه برنامه دیکشنری کلاسی که توش فرم برنامه رو داری که شامل دکمه و فیلد ورود متن هست و نمایش نتایج هست میشه کلاس Interface / Boundary و کلاسی که کلامات با معنی‌شون رو پیدا می‌کنه میشه Entity و کلاسی که بین این دو تا قرار می‌گیره و چک می‌کنه که کارکترهای وارد شده صحیح باشه یا اگر نتیجه‌ای پیدا نشد باید چه پیغامی بده رو کلاس Control مدیریت می‌کنه.

mona.nkh
جمعه 18 بهمن 1392, 10:04 صبح
ممنون. میشه توو همین مثالی که زدین Attribute و متد کلاس ها رو هم بگین؟ مخصوصا برای کلاس Control .
توو پروژه ی من هر فرم اینترفیسی که کاربر تکمیلش میکنه، بایگانی میشه که بعدا در صورت نیاز بشه توسط کاربر جستجو بشه. به همین دلیل این فرم های اینترفیسی در ERD هستند.
تووی عکسی که گذاشتم فرم ثبت دستگاه ها هست که کاربر پر میکنه، توی این فرم دوتا جدول هست که کاربر میتونه توی جدول دستگاه، اطلاعات چند دستگاه رو وارد کنه در صورت نیاز. برای جدول ابزار هم همینطور.
من بین کلاس فرم ثبت دستگاه و ابزار، و کلاس دستگاه و کلاس ابزار، دوتا کلاس اضافه کردم که روابط چند به چند از بین بره. چون توی هر فرم میتونه چندتا دستگاه یا ابزار وجود داشته باشه.
در ERD هم مجبور شدم هر 5 تا کلاس رو قرار بدم تا مشکل چند به چند بودن رفع بشه.
کاری که انجام دادم درسته؟ توو این شکل کنترل کلاس و اینترفیس کلاس وجود داره؟
116486

cups_of_java
جمعه 18 بهمن 1392, 12:25 عصر
وقتی گفته کلاس دیاگرام شما ناقصه یعنی اینکه فقط Entity Class ها رو کشیدی.
ببین ERD مدل داده ای شماست که به طور دقیق و مناسبی به Entity Classها تبدیل میشه. اما Control و Boundry ها رو از روی ERD نمی تونی بکشی و اصلن نباید توی ERD باشن. اونا کلاس های زمان طراحی هستن که توی کلاس دیاگرام شما فقط اضافه میشن. یعنی کلاس دیاگرام نهایی شما کامل تر ERDتون میشه طبیعتن.
برای دراوردن اون کلاس ها شما باید تحلیل و طراحی شی گرا رو از توی کتاب ها بخونید.
و ERD دراوردن هم که Data Modeling باید بخونید به روش Structured

این دو تا دیاگرام رو اصولن با هم نمیکشن دیگه چون یه موقع هایی با هم هم خونی ندارن. یکی شی گراست یکی نیست.... اما توی دانشگاه به عنوان تمرین خوب باید کشیدشون.

mona.nkh
جمعه 18 بهمن 1392, 20:51 عصر
کاش مثال هم میزدین راجع به Attribute و متد کلاس های کنترلی و اینترفیسی.
راستی من اول کلاس دیاگرامم رو کشیده بودم. بعدش ERD کشیدم.
الان هرچی سناریوی پروژه م رو بررسی میکنم کلاس جدیدی پیدا نمیکنم! هر چی هست اگه از ERD حذف بشه رابطه چند به چند ایجاد میشه

cups_of_java
شنبه 19 بهمن 1392, 10:43 صبح
کلاس های اینترفیسی و کنترلی اصولن دیتای مانا ندارن یعنی تو دیتابیس نگهداری نمی شن و تو ERD نیستن. اگه با فریم ورک خاصی تا حالا کار کرده باشین نمونه هاشو دیدین.
مثلن یک فرم، یک پنل، یک پنجره یا یک دکمه... اینا می تونن همه کلاس های Boundry باشن.
یا کنترلر ها که توشون کدی هست که اگر فلان دکمه زده شد کدوم تابع صدا بشه و بعدش چه اتفاقایی بیفته...