روابط کلاسی – انجمن DEV

برای طراحی کلاس ها، باید روابط بین کلاس ها را بررسی کنید. روابط مشترک بین طبقات عبارتند از: تداعی، تجمع، ترکیب و وراثت. این بخش به بررسی ارتباط، تجمیع و ترکیب میپردازد.
اتحادیه
اتحادیه یک رابطه دودویی کلی است که فعالیت بین دو کلاس را توصیف می کند. به عنوان مثال، دانش آموزی که یک دوره را می گذراند، ارتباط بین دانشجو کلاس و دوره کلاس، و یک عضو هیئت علمی تدریس یک دوره، ارتباط بین دانشکده کلاس و دوره کلاس همانطور که در شکل زیر نشان داده شده است، می توان این ارتباطات را در نماد گرافیکی UML نشان داد.
این نمودار UML نشان می دهد که یک دانش آموز ممکن است هر تعداد دروس را بگذراند، الف
یک عضو هیئت علمی حداکثر می تواند سه دوره تدریس کند، یک درس ممکن است از پنج تا شصت دانشجو داشته باشد، و یک دوره فقط توسط یک عضو هیئت علمی تدریس می شود. یک ارتباط با یک خط ثابت بین دو کلاس با یک برچسب اختیاری که رابطه را توصیف می کند، نشان داده می شود. در شکل بالا، برچسب ها هستند بگیرید و آموزش دهید. هر رابطه ممکن است یک مثلث کوچک سیاه رنگ اختیاری داشته باشد که جهت رابطه را نشان می دهد. که در
این شکل، جهت نشان می دهد که یک دانش آموز یک دوره را می گذراند (برخلاف دوره ای که دانشجو می گیرد).
هر کلاس درگیر در رابطه ممکن است نام نقشی داشته باشد که نقشی را که در رابطه ایفا می کند را توصیف کند. در شکل بالا، معلم نام نقش برای است دانشکده.
هر کلاس درگیر در یک انجمن ممکن است یک را مشخص کند کثرت، که در کنار کلاس قرار می گیرد تا مشخص کند که چه تعداد از اشیاء کلاس در رابطه در UML نقش دارند. یک چندگانه می تواند یک عدد یا یک بازه باشد که مشخص می کند چه تعداد از اشیاء کلاس در رابطه درگیر هستند. کاراکتر ***** به معنای تعداد نامحدودی از اشیاء و فاصله است m..n نشان می دهد که تعداد اشیاء بین است متر و n، به طور فراگیر. در شکل بالا، هر دانش آموز ممکن است هر تعداد درس را بگذراند و هر درس باید حداقل پنج و حداکثر شصت دانشجو داشته باشد. هر دوره فقط توسط یک عضو هیئت علمی تدریس می شود و یک عضو هیئت علمی می تواند از صفر تا سه درس در هر ترم تدریس کند.
در کد جاوا، می توانید با استفاده از فیلدها و روش های داده، تداعی ها را پیاده سازی کنید. برای مثال، روابط در شکل بالا ممکن است با استفاده از کلاس های شکل زیر پیاده سازی شوند.
رابطه “یک دانش آموز دوره ای را می گذراند” با استفاده از عبارت اجرا می شود افزودن دوره روش در دانشجو کلاس و افزودن دانش آموز روش در دوره کلاس رابطه “یک دانشکده یک دوره را تدریس می کند” با استفاده از افزودن دوره روش در دانشکده کلاس و مجموعه دانشکده روش در دوره کلاس این دانشجو کلاس ممکن است از لیستی برای ذخیره دروسی که دانش آموز می گذراند استفاده کند دانشکده کلاس ممکن است از فهرستی برای ذخیره دروسی که دانشکده تدریس می کند استفاده کند دوره کلاس ممکن است از یک لیست برای ذخیره دانش آموزان ثبت نام شده در دوره و یک فیلد داده برای ذخیره مربی که دوره را تدریس می کند استفاده کند.
راه های زیادی برای اجرای روابط وجود دارد. به عنوان مثال، اطلاعات دانشجو و اساتید در دوره کلاس را می توان حذف کرد، زیرا آنها قبلاً در کلاس هستند دانشجو و دانشکده کلاس به همین ترتیب، اگر نیازی به دانستن دورههایی که دانشجو میگذراند یا یکی از اعضای هیئت علمی تدریس میکند، ندارید، قسمت داده لیست دوره ها و افزودن دوره روش در دانشجو یا دانشکده را می توان حذف کرد.
تجمیع و ترکیب
تجمع شکل خاصی از ارتباط است که نشان دهنده رابطه مالکیت بین دو شی است. مدل های تجمیع دارای یک رابطه است. شی مالک an نامیده می شود شیء تجمیع کنندهو کلاس آن an نامیده می شود کلاس تجمیع. مفعول موضوع an نامیده می شود شیء تجمیع شدهو کلاس آن an نامیده می شود کلاس تجمیع شده.
یک شی می تواند متعلق به چندین شیء تجمیع کننده دیگر باشد. اگر شیئی منحصراً متعلق به یک شیء تجمیع کننده باشد، رابطه بین شیء و شیء تجمیع کننده آن به عنوان یک ترکیب بندی. به عنوان مثال، “یک دانش آموز یک نام دارد” یک رابطه ترکیبی بین دانشجو کلاس و نام کلاس، در حالی که “یک دانش آموز آدرس دارد” یک رابطه تجمعی بین آن است دانشجو کلاس و نشانی کلاس، از آنجایی که یک آدرس می تواند توسط چندین دانش آموز به اشتراک گذاشته شود. در UML، یک الماس پر شده به یک کلاس تجمیع کننده متصل می شود (در این مورد، دانشجو) برای نشان دادن رابطه ترکیب با یک کلاس انبوه (نام، و یک الماس خالی به یک کلاس تجمیع کننده متصل می شود (دانشجو) برای نشان دادن رابطه تجمع با یک کلاس تجمیع شده (نشانی) همانطور که در شکل زیر نشان داده شده است.
در شکل بالا، هر دانش آموز فقط یک کثرت – آدرس – دارد و هر آدرس را می توان تا حداکثر به اشتراک گذاشت. 3 دانش آموزان. هر دانش آموز یک نام دارد و برای هر دانش آموز یک نام منحصر به فرد است.
یک رابطه تجمع معمولاً به عنوان یک فیلد داده در کلاس تجمیع نشان داده می شود. برای مثال، روابط در شکل بالا ممکن است با استفاده از کلاس های شکل زیر پیاده سازی شوند. رابطه “یک دانش آموز یک نام دارد” و “یک دانش آموز یک آدرس دارد” در قسمت داده پیاده سازی می شوند نام و نشانی در دانشجو کلاس
تجمع ممکن است بین اشیاء یک کلاس وجود داشته باشد. به عنوان مثال، ممکن است شخصی یک سرپرست داشته باشد. این در شکل زیر نشان داده شده است.
در رابطه “یک شخص یک سرپرست دارد”، یک سرپرست را می توان به عنوان یک فیلد داده در آن نشان داد شخص کلاس به شرح زیر
public class Person {
// The type for the data is the class itself
private Person supervisor;
...
}
اگر شخصی می تواند چندین سرپرست داشته باشد، همانطور که در شکل زیر (الف) نشان داده شده است، می توانید از یک آرایه برای ذخیره ناظران استفاده کنید، همانطور که در شکل زیر (ب) نشان داده شده است.
از آنجایی که روابط تجمیع و ترکیب با استفاده از کلاس ها به یک شکل نمایش داده می شوند، ما آنها را متمایز نمی کنیم و برای سادگی هر دو ترکیب را فراخوانی می کنیم.