PDA

View Full Version : سوال در مورد روابط 1 به 1 و n به n , .. در کلاس ها



amirjalili
چهارشنبه 23 اردیبهشت 1388, 15:18 عصر
دوستان من میخواستم اگر میشه روابط بین کلاسی رو برام توضیح بدید..
ببینید مثلا در دیتا بیس کاملا روابط بین کلاسی رو میدونم.. اما در کلاس ها متوجه این روابط نمیشم.. در دیتابیس مقادیر تعیین شده در فیلد های یک جدول با فیلد های هم نوع در جدول دیگر رابطه دارند.. مثلا یک شخص میتونه چند تا ماشین داشته باشه و یک ماشین حتی ممکنه چند تا صاحب داشته باشه..
اما در کلاس ها نمیدونم کلاس ها چطور رابطه دارند.. آیا attribute ها با ارتباط دارند یا متد ها؟؟
اصلا کی با کی رابطه داره؟ اگر لطف کنید و با مثالی توضیح بدید ممنون میشم...

Elham_gh
چهارشنبه 23 اردیبهشت 1388, 17:04 عصر
كلي نوشتم پاك شد، اجالتا اين لينك رو مطالع كنيد تا دوباره توضيح بدم!!!
http://barnamenevis.org/forum/showthread.php?t=119555

amirjalili
چهارشنبه 23 اردیبهشت 1388, 18:43 عصر
ممنون خانم elham_gh ..
شما همیشه لطف داشتید..
ممنونم. شما و بعضی دوستان همیشه کامل جوابم رو دادید..
اون لینک رو هم میخونم..
مرسی

cups_of_java
چهارشنبه 23 اردیبهشت 1388, 23:52 عصر
ارتباط بین کلاس ها از نوع Association از طریق attributeها بر قرار می شه!
ما دو نوع ارتباط داریم:
Composition هر شی از یک کلاس (کل) از یک یا چند شی از کلاس دیگه (جز) تشکیل شده و جز بدون کل معنی ندارد!
Aggregation هر شی از یک کلاس (کل) از یک یا چند شی از کلاس دیگه (جز) تشکیل شده ولی جز بدون کل معنا و ماهیت دارد!

گاهی به طور کلی هر رابطه association بین کلاس ها رو می گن composition که تعریف دقیقی نیست.
در مواردی که رابطه چند به چند می شه لازم هست که شما از لیست ها استفاده کنید!
به رایطه درس و دانشجو توجه کنید! (هر دانشجو در چند درس شرکت می کنه! و هر درس چند دانشجو شرکت کننده داره!)



class Student {
list courses;
}

class Course {
list students;
}

Elham_gh
شنبه 26 اردیبهشت 1388, 09:05 صبح
دوستان من میخواستم اگر میشه روابط بین کلاسی رو برام توضیح بدید..
ببینید مثلا در دیتا بیس کاملا روابط بین کلاسی رو میدونم.. اما در کلاس ها متوجه این روابط نمیشم.. در دیتابیس مقادیر تعیین شده در فیلد های یک جدول با فیلد های هم نوع در جدول دیگر رابطه دارند.. مثلا یک شخص میتونه چند تا ماشین داشته باشه و یک ماشین حتی ممکنه چند تا صاحب داشته باشه..
اما در کلاس ها نمیدونم کلاس ها چطور رابطه دارند.. آیا attribute ها با ارتباط دارند یا متد ها؟؟
اصلا کی با کی رابطه داره؟ اگر لطف کنید و با مثالی توضیح بدید ممنون میشم...

"اما در کلاس ها نمیدونم کلاس ها چطور رابطه دارند.. آیا attribute ها با ارتباط دارند یا متد ها؟؟"
هم هردو هم هيچكدام.بعضي از كلاسها با هم ارتباط دارند فقط به خاطر اينكه باهم ارتباط دارند و اين ربطي به ارتباط داشتن attribute ها ا متدهاشون نداره. اين نوع ارتباط assiciation است. مثلا كلاس Person و Company.كه بين اينها ارتباط Works for(از جهت Person بهCompany) بر قرار است، هيچ ربطي بين attribute ها و متدهاي اين دو كلاس نيست.
اگر چنين ارتباطي بين attribute ها يا متدهاي 2 كلاس وجود داشته باشد ديگه اون رابطه اسمش Dependency است.كع تغييرات در يككلاس باعث تغييرات در كلاس ديگر هم مي شود

Elham_gh
شنبه 26 اردیبهشت 1388, 09:09 صبح
ارتباط بین کلاس ها از نوع Association از طریق attributeها بر قرار می شه!
نه دوست عزيز اون Dependency است


ما دو نوع ارتباط داریم:
Composition هر شی از یک کلاس (کل) از یک یا چند شی از کلاس دیگه (جز) تشکیل شده و جز بدون کل معنی ندارد!
Aggregation هر شی از یک کلاس (کل) از یک یا چند شی از کلاس دیگه (جز) تشکیل شده ولی جز بدون کل معنا و ماهیت دارد!

گاهی به طور کلی هر رابطه association بین کلاس ها رو می گن composition که تعریف دقیقی نیست.


اينم درست نيست. ما 3 نو رابطه بيت كلاسها داريم:
1-Association
2-Dependency
3-Generalization
كه خود Composition وAggregation از انواع Association هستنددر حقيقت هر رابطه Composition ياAggregation بين كلاسها همان Association است كه حالت خاص تري شده اند.

amirjalili
شنبه 26 اردیبهشت 1388, 12:12 عصر
نه دوست عزيز اون Dependency است


اينم درست نيست. ما 3 نو رابطه بيت كلاسها داريم:
1-Association
2-Dependency
3-Generalization
كه خود Composition وAggregation از انواع Association هستنددر حقيقت هر رابطه Composition ياAggregation بين كلاسها همان Association است كه حالت خاص تري شده اند.

با تشکر از دوستان محترم..
به نظر من agreegation , composition ها از نوع association نیستند..
انواع روابط بین کلاسی عبارتند از: 1: Relationship و 2: Association

خود Relationship ها دو نوع هستند: generalization , Aggregation

اما Association ها همون روابط همکاری بین کلاس ها هستند که با verb مشخص میشوند..
مثلا کلاس دانشجو اخذ میکند(verb)درس را(class).. در منبع زیر فکر کنم توضیح کاملی داده شده.. با تشکر از پاسخ های دوستان

http://en.wikipedia.org/wiki/Class_diagram

cups_of_java
شنبه 26 اردیبهشت 1388, 12:56 عصر
نه دوست عزيز اون Dependency است

خود رابطه Association یک نوع dependency ایجاد می کنه. رابطه association با attribute ها بر قرار می شه. شما چطور می تونید یک رابطه association رو بر قرار کنید بین کارمند و اداره ای که کار می کنه؟ منظور از ارتباط association بر قرار کردن بین کلاس ها همین استفاده از یک کلاس در کلاس دیگر هست با استفاده از attributeها نه این که attribute های یک کلاس به کلاس دیگه ربط دارند!




اينم درست نيست. ما 3 نو رابطه بيت كلاسها داريم:
1-Association
2-Dependency
3-Generalization
كه خود Composition وAggregation از انواع Association هستنددر حقيقت هر رابطه Composition ياAggregation بين كلاسها همان Association است كه حالت خاص تري شده اند.فکر کنم کامل ننوشتم شما هم با دقت نخوندین! اونجا منظور من ارتباط Association بود. که دو نوع داره!

اما به طور کلی هم ما در شی گرایی دو نوع رابطه بین کلاس ها داریم:
1. association
2. generalization/specification

بحث dependency بحث دیگه ای هست. رابطه dependency از طریق هر کدام از این دو نوع بالا ایجاد می شه و انواع دیگه ای هم داره. و جزدسته رابطه های بالا محسوب نمی شه چون باهاشون overlap داره و یک مفهوم منطقی هست!

مفهوم لغات رو درست استفاده کنیم و با لغات بازی نکنیم!

cups_of_java
شنبه 26 اردیبهشت 1388, 13:00 عصر
با تشکر از دوستان محترم..
به نظر من agreegation , composition ها از نوع association نیستند..
انواع روابط بین کلاسی عبارتند از: 1: Relationship و 2: Association

خود Relationship ها دو نوع هستند: generalization , Aggregation

اما Association ها همون روابط همکاری بین کلاس ها هستند که با verb مشخص میشوند..
مثلا کلاس دانشجو اخذ میکند(verb)درس را(class).. در منبع زیر فکر کنم توضیح کاملی داده شده.. با تشکر از پاسخ های دوستان

http://en.wikipedia.org/wiki/Class_diagram


نظر شما اشتباه هست. همون طور که گفته شد رابطه بین کلاسی (relationship)ها از دو نوع هستند و relationship کلن dependency می آره. به کاربرد درست لغات توجه کنید.
http://en.wikipedia.org/wiki/Class_(computer_science (http://en.wikipedia.org/wiki/Class_%28computer_science%29)

Elham_gh
شنبه 26 اردیبهشت 1388, 15:19 عصر
خود رابطه Association یک نوع dependency ایجاد می کنه. رابطه association با attribute ها بر قرار می شه. شما چطور می تونید یک رابطه association رو بر قرار کنید بین کارمند و اداره ای که کار می کنه؟ منظور از ارتباط association بر قرار کردن بین کلاس ها همین استفاده از یک کلاس در کلاس دیگر هست با استفاده از attributeها نه این که attribute های یک کلاس به کلاس دیگه ربط دارند!



فکر کنم کامل ننوشتم شما هم با دقت نخوندین! اونجا منظور من ارتباط Association بود. که دو نوع داره!

اما به طور کلی هم ما در شی گرایی دو نوع رابطه بین کلاس ها داریم:
1. association
2. generalization/specification

بحث dependency بحث دیگه ای هست. رابطه dependency از طریق هر کدام از این دو نوع بالا ایجاد می شه و انواع دیگه ای هم داره. و جزدسته رابطه های بالا محسوب نمی شه چون باهاشون overlap داره و یک مفهوم منطقی هست!

مفهوم لغات رو درست استفاده کنیم و با لغات بازی نکنیم!
:متعجب:
دوست عزيز بازي با لغات كدومه؟!!!!
اصلا اين جمله كه "رابطه dependency از طریق هر کدام از این دو نوع بالا ایجاد می شه و انواع دیگه ای هم داره" اشتباست. و اين جمله كه "خود رابطه Association یک نوع dependency ایجاد می کنه. " 1000% اشتباست.

dependency يك نوع رابطه كاملا مستقل با نماد مشخص است(خط چين فلش دار) كه ذاتش با association فرق داره.association با اين خط صاف متتد با فلش يا بي فلش نشون داده مي شه. و من تا حالا خيچ جا نديدم كه اسم generalization معادل specification داشته باشه. بعد از 10 سال كار با UML گمانم در اين مورد اشتباه نكنم.
در ضمن اينجا نه جنگ داريم نه ني خواهيم چيزي رو ثابت كنيم ، اما وقتي كسي داره حرف مارو ملاك كارش قرار مي ده نبايد نارحت شيم اگه اشتباه مي كنيم يا خوب عنوانش نمي كنيم ، كسي بياد اونو اصلاح كنه يا بهتر بيانش كنه

amirjalili
شنبه 26 اردیبهشت 1388, 15:34 عصر
دوستان من اینجا فقط نقش یک شاگرد رو دارم و از هر دو تون تشکر میکنم..

اما نفهمیدم که بالاخره حرف من راجع به تقسیم بندی انواع روابط کلاسی درست بود یا نه؟؟؟

من اونا رو از اینترنت دیدم..

cups_of_java
شنبه 26 اردیبهشت 1388, 17:34 عصر
به سوال اولیه دوستمون نگاه کنید! فکر نمی کنم بحثی از UML کرده باشند! ما اگه مفاهیم شی گرایی رو درست درک کنیم (بدون توجه به زبان نماد گذادری مثل UML) اون وقت هست که می تونیم از UML هم استفاده درست بکنیم.
اون رابطه dependency که توسط خط چین نشون داده می شه یک نماد برای نمایش برخی گونه های dependency هست اما این یک مفهوم عام تر در شی گرایی هستش. ایا کلاس فرزند به کلاس پدر dependency نداره؟ قطعن داره اونم از نوع بسیار قوی! ولی این رو ما از طریق همون نماد generalization نشون می دیم در UML!
dependency یک مفهوم عام هست! با اون dependency در UML اشتباهش نگیرید!

رابطه association بین دو کلاس یعنی اون دو کلاس به هم dependency ایجاد می کنند! ولی در UML ما این رو با خط چین نشون نمی دیم چون مدل واضحی از dependency هست به نام association که خودش نماد داره!
ولی برای حالتی که ما در پارامتر یک متد از یک کلاس استفاده می کنیم! این رو در نمودار کلاس نشون نمی تونیم بدیم جز خط چین!
پس اون ها برای حالت هایی هستند که dependency هایی غیر از association یا generalization باشه ....



من تا حالا خيچ جا نديدم كه اسم generalization معادل specification داشته باشه. بعد از 10 سال كار با UML گمانم در اين مورد اشتباه نكنم.شما UML رو خوب می شناسید وهرچی میگید هم درسته اما حاوی دید سطح بالای شی گرا به مفاهیم نیست. ببینید اون چه در UML به عنوان generalization می شناسید و در زبان ها به عنوان Inheritance خودش رو نشون می ده رابطه ای هست تحت عنوان روابط generalization/specification بین موجودیت ها
generalization یعنی رو به بالا (دراوردن کلاس های عمومی تر-پدر-...)
specification می شه رو به پایین (در اوردن کلاس های خاص تر-فرزند -...)
این از مفاهیم طراحی شی گرا هستش که در UML از نماد generalization برای نمایششون استفاده می شه.

ضمنن خیلی برام جالب بود! از عمر استاندارد شده UML فقط 12 سال می گذره! یعنی در سال 1999 هم تو ایران UML استفاده می شده؟!

Elham_gh
یک شنبه 27 اردیبهشت 1388, 09:37 صبح
به سوال اولیه دوستمون نگاه کنید! فکر نمی کنم بحثی از UML کرده باشند! ما اگه مفاهیم شی گرایی رو درست درک کنیم (بدون توجه به زبان نماد گذادری مثل UML) اون وقت هست که می تونیم از UML هم استفاده درست بکنیم.
اون رابطه dependency که توسط خط چین نشون داده می شه یک نماد برای نمایش برخی گونه های dependency هست اما این یک مفهوم عام تر در شی گرایی هستش. ایا کلاس فرزند به کلاس پدر dependency نداره؟ قطعن داره اونم از نوع بسیار قوی! ولی این رو ما از طریق همون نماد generalization نشون می دیم در UML!
dependency یک مفهوم عام هست! با اون dependency در UML اشتباهش نگیرید!

رابطه association بین دو کلاس یعنی اون دو کلاس به هم dependency ایجاد می کنند! ولی در UML ما این رو با خط چین نشون نمی دیم چون مدل واضحی از dependency هست به نام association که خودش نماد داره!
ولی برای حالتی که ما در پارامتر یک متد از یک کلاس استفاده می کنیم! این رو در نمودار کلاس نشون نمی تونیم بدیم جز خط چین!
پس اون ها برای حالت هایی هستند که dependency هایی غیر از association یا generalization باشه ....


شما UML رو خوب می شناسید وهرچی میگید هم درسته اما حاوی دید سطح بالای شی گرا به مفاهیم نیست. ببینید اون چه در UML به عنوان generalization می شناسید و در زبان ها به عنوان Inheritance خودش رو نشون می ده رابطه ای هست تحت عنوان روابط generalization/specification بین موجودیت ها
generalization یعنی رو به بالا (دراوردن کلاس های عمومی تر-پدر-...)
specification می شه رو به پایین (در اوردن کلاس های خاص تر-فرزند -...)
این از مفاهیم طراحی شی گرا هستش که در UML از نماد generalization برای نمایششون استفاده می شه.

ضمنن خیلی برام جالب بود! از عمر استاندارد شده UML فقط 12 سال می گذره! یعنی در سال 1999 هم تو ایران UML استفاده می شده؟!

منظورمن Object Oriented بود نه UMLكه اشتباه گفتم.
بله از سال 75 من با Object Oriented آشنا شدم و از 2 سال بعدش بصورت جدي تر باهاش درگير شدم.

Elham_gh
یک شنبه 27 اردیبهشت 1388, 09:42 صبح
دوستان من اینجا فقط نقش یک شاگرد رو دارم و از هر دو تون تشکر میکنم..

اما نفهمیدم که بالاخره حرف من راجع به تقسیم بندی انواع روابط کلاسی درست بود یا نه؟؟؟

من اونا رو از اینترنت دیدم..

نه دوست عزيز. تقسيم بندي شما درست نيست.
من به شما پيشنهاد مي كنم كتاب زير رو Download كنيد. براي شروع كتاب خوبيه.
Addison Wesley - The UML User Guide
هر چند UML1 است.اما جز مبحث Component ها تغييرات بيشتر است از بقيه فصلها خوب مي تونيئ استفاده كنيد.
ebook ش در اينترنت هست.يا از طريق emule دانلود كنيد

Elham_gh
یک شنبه 27 اردیبهشت 1388, 09:59 صبح
انواع ارتباط و تعريف مختصري از هر كدوم رو از كتابي كه در پيغام قبلي گفتم رو انتخاب كردم و اينجا مي ذارم
http://barnamenevis.org/forum/attachment.php?attachmentid=30958&stc=1&d=1242536208

cups_of_java
یک شنبه 27 اردیبهشت 1388, 11:44 صبح
انواع ارتباط و تعريف مختصري از هر كدوم رو از كتابي كه در پيغام قبلي گفتم رو انتخاب كردم و اينجا مي ذارم
http://barnamenevis.org/forum/attachment.php?attachmentid=30958&stc=1&d=1242536208

خب! بیان از اول با هم بخونیمش:

Relationship is a connection among thingsآقای Booch در این فصل داره انواع ارتباط ها رو در UML می گه. ارتباط رو تعریف می کنه هر اتصالی بین اجزا! حالا این اجزا می تونن هر عنصری در مدل باشن! مثل کلاس! مثل مولفه مثل actor مثل use case مثل...
ایشون اینجا از روابط بین کلاسی حرف نمی زنند (هرچند اعم این روابط بین کلاس ها هستند!) توجه کنید این یک کتاب UML هست نه تحلیل طراحی شی گرا! (کتاب تحلیل طراحی آقای Booch رو هم نگاهی بندازید! یا هر کتاب تحلیل طراحی شی گرای مناسب دیگه) دید این کتاب UMLی هست و داره انواع relationshiop در UML رو تعریف می کنه (نه ارتباط های بین کلاس ها) که دقیقن هم ۴تا هستند همون طور که گفته!
حالا جمله بعد رو ببینیم:

In Object Oriented modeling, the four most important ...توجه کنید چطور جمله رو شروع کرده! گفته در مدل سازی شی گرا (یعنی مثلن UML) نگفته در تحلیل و طراحی شی گرا! تازه دیگه بد تر! نگفته در تحلیل و طراحی کلاس ها!
ببینید! جمله ای که اوردین از یک context مدل سازی و uml داره می اد نه تحلیل و طراحی شی گرا!
بازم عرض می کنم که در فلسفه تحلیل و طراحی شی گرا بین کلاس ها ما در اساس دو نوع رابطه داریم
۱. روابط یا از نوع association هستند که خود انواع دارد.
۲. یا اینکه از نوع generalization/specification هستند که یک کلاس حالت کلی تر (general) یا پدر کلاسی دیگر هست و یا کلاسی حالت خاص تر (specific) یا فرزند کلاسی دیگر است!

هر کدوم از روابط بالا dependency از نوع قوی می ارند ولی انواع ضعیف تری از dependency هم هست که از طریق مثلن استفاده یک کلاس در ارگومان های یک متد و ... ایجاد می شه! که ما همه این dependency ها رو مدل نمی کنیم. (این مسله هم علت داره) ما حتی همه associationها رو هم گاهن مدل نمی کنیم!

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

Elham_gh
یک شنبه 27 اردیبهشت 1388, 11:49 صبح
خب! بیان از اول با هم بخونیمش:

آقای Booch در این فصل داره انواع ارتباط ها رو در UML می گه. ارتباط رو تعریف می کنه هر اتصالی بین اجزا! حالا این اجزا می تونن هر عنصری در مدل باشن! مثل کلاس! مثل مولفه مثل actor مثل use case مثل...
ایشون اینجا از روباط بین کلاسی حرف نمی زنند (هرچند اعم این روابط بین کلاس ها هستند!) توجه کنید این یک کتاب UML هست نه تحلیل طراحی شی گرا! (کتاب تحلیل طراحی آقای Booch رو هم نگاهی بندازید! یا هر کتاب تحلیل طراحی شی گرای مناسب دیگه) درد این کتاب UMLی هست و داره انواع relationshiop در UML رو تهعریف می کنه که دقیقن هم ۴تا هستند همون طور که گفته!
حالا جمله بعد رو ببینیم:

توجه کنید چطور جمله رو شروع کرده! گفته در مدل سازی شی گرا (یعنی مثلن UML) نگفته در تحلیل و طراحی شی گرا! تازه دیگه بد تر! نگفته در تحلیل و طراحی کلاس ها!
ببینید! جمله ای که اوردین از یک context مدل سازی و uml داره می اد نه تحلیل و طراحی شی گرا!
بازم عرض می کنم که در فلسفه تحلیل و طراحی شی گرا بین کلاس ها ما در اساس دو نوع رابطه داریم
۱. روابط یا از نوع association هستند که خود انواع دارد.
۲. یا اینکه از نوع generalization/specification هستند که یک کلاس حالت کلی تر (general) یا پدر کلاسی دیگر هست و یا کلاسی حالت خاص تر (specific) یا فرزند کلاسی دیگر است!

هر کدوم از روابط بالا dependency از نوع قوی می ارند ولی انواع ضعیف تری از dependency هم هست که از طریق مثلن استفاده یک کلاس در ارگومان های یک متد و ... ایجاد می شه! که ما همه این dependency ها رو مدل نمی کنیم. (این مسله هم علت داره) ما حتی همه associationها رو هم گاهن مدل نمی کنیم!

من از ابتدا نظرم این بود که دوست عزیزمون (که در بحث هایی که ایجاد می کردند معلوم بود دارن شی گرایی رو یاد می گیرند) از اساس با لغات و اداب تحلیل و طراحی آشنا باشن و بعد UML رو کامل یاد بگیرند. من اعتقاد دارم کسانی که فقط از طریق UML و کاربرد با این فضا آشنا شن احتمال اینکه دید کامل و روشنی که یک طراح یا تحلیل گر شی گرا داشته باشه رو نخواهند داشت!
توجه کنید ما از uml استفاده می کنیم اما بعضن اصلن پایبند به اصول شی گرا مدل نمی کنیم چون شی گرایی رو خوب بلد نیستیم!

دوست محترم
من اين مباحث رو از فصل كلاسها برداشتم!!! و اين هم انواع روابط بين كلاسهاست.
و اين "گفته در مدل سازی شی گرا (یعنی مثلن UML) نگفته در تحلیل و طراحی شی گرا! تازه دیگه بد تر! نگفته در تحلیل و طراحی کلاس ها!"
خيلي جالبه....

در ضمن گمانم در اين تاپيك ديگه بحثي ندارم. چون گويا از حالت علمي داره خارج مي شه و شده كل كل. ساير دوستان خودشون مي خونن و مطالب درست رو استخراج خواهند كرد

cups_of_java
یک شنبه 27 اردیبهشت 1388, 15:13 عصر
دوست محترم
من اين مباحث رو از فصل كلاسها برداشتم!!! و اين هم انواع روابط بين كلاسهاست.
و اين "گفته در مدل سازی شی گرا (یعنی مثلن UML) نگفته در تحلیل و طراحی شی گرا! تازه دیگه بد تر! نگفته در تحلیل و طراحی کلاس ها!"
خيلي جالبه....

نمی دونم چه موضوعی دراستدلال من براتون این طور تمسخرآمیز جالبه و اون رو بدون منطق می دونید!


در ضمن گمانم در اين تاپيك ديگه بحثي ندارم. چون گويا از حالت علمي داره خارج مي شه و شده كل كل. ساير دوستان خودشون مي خونن و مطالب درست رو استخراج خواهند كرد
انسان ها هدفشون از جمع شدن در این مکان ها کل کل کردن نیست! اگه شما حوصله بحث کردن ندارید یا شما فکر می کنید بحث داره از حالت علمی خارج می شه این نظر شخصیه شماست و البته محترمه!
در حالی که حرف های من بیشتر زمینه بحث علمی رو ایجاد کرده چون ریز بینانه و دقیق داره بحث رو باز می کنه.

یه نگاهی به اینجا بندازین:
http://g.oswego.edu/dl/oosd/ch4.html

به این صفحه و تقسیم بندیش از relationshipها توجه کنید! قسمت dependency رو بخونید!
http://en.wikipedia.org/wiki/Class_diagram


اقای Booch در کتاب تحلیل و طراحیشون (http://www.amazon.com/Object-Oriented-Analysis-Applications-Benjamin-Engineering/dp/0805353402) (صفحه ۹۶) روابط بین کلاس ها رو از سه نوع می دونند:
۱. generalization/specification: (که دوستانی که دم از علم می زنند حتی اسمش رو هم به طور کامل نشنیده بودند)
۲. aggregation (whole/part)
۳. Association

من (با توجه به کتاب هایی که در زمنیه تحلیل و طراحی دیدم) برای راحتی درک و از نظر منطقی به ایشون این تقسیم بندی رو گفتم:
۱. generalization/specification
۲. روابط association که به دو دسته تقسیم می شن!

۲.۱ Aggregation
۲.۲ Composition

یعنی نا خداگاه همون تقسیم بندی اقای Booch ولی با دقت بالاتر و قابل فهم تر! توضیحش رو در پست های قبلیم دادم.

نهایتن ایشون در همون کتاب و در آخر اون قسمت (صفحه ۱۱۱) dependencyها رو به عنوان نوع دیگری از روابط می دونن که یک پاراگراف براش توضیح دادن. ( در مقابل توضیحات گسترده ای که برای ۳ نوع قبل داده اند)

با مطالعات و باز شدن دید می تونید درکتون رو نسبت به dependency کامل تر کنید! dependency مفهوم وابستگی هست و هر ارتباطی یعنی وابستگی!
اگه وقت داشتین بحث های coupling رو از دید اقایان Coad و یا demarco مطالعه کنید!


اگه بحث های من علمی نیست باز هم منو می بخشید! فقط دوست دارم دید و دانشی که از کتاب های مختلف و افراد مختلف بدست آوردم رو در اختیار دوستان قرار بدم. اجباری برای پذیرش نیست! نیازی هم به کل کل با دیگران ندارم.

صلاح ملک خویش خسروان دانند و بس!