PDA

View Full Version : generalization



Future
یک شنبه 01 دی 1387, 04:52 صبح
سلام دوستان، ميشه لطف كنيد و مفهوم generalization رو با يه مثال بگيد.

Elham_gh
یک شنبه 01 دی 1387, 08:10 صبح
Generalization یکی از انواع ارتباطات در UML است. و نکته کلیدی آن این است که در بر دارنده مفهوم "نوعی است از" می باشد.یعنی وقتی بین مثلا دو کلاس این رابطه بر قرار است یکی "نوعی است از" دیگری.
به عنوان مثال در شکل زیر:
http://barnamenevis.org/forum/attachment.php?attachmentid=26664&stc=1&d=1229836221

بین کلاس Animal و Cat و بین کلاسهای Animal و Dog رابطه Generalization وجود دارد.Cat نوعی است از Animal و Dog هم نوعی است از Animal .
به کلاس پدر SuperClass و به کلاسهای فرزند Subclass می گویند.در این مثال Animal همان SuperClass و کلاسهای Dog وCat ، در اینجا Subclass هستند.
خاصیت مهمی که Generalization دارد, توارث یا inheritance است.یعنی Subclass ها , Attribute ها , متدهای SuperClass خود را به ارث می برند. یعنی اگر Animal خصوصیتی به اسم "نام" داشته باشد و متد به نام "حرکت کردن",کلاسهای Dog وCat هم این خصوصیت و متد را دارند و نیاز به تکرار آنها در این کلاسها نیست. این Subclass ها تنها خصوصیات و متدهای خاص خود را تعریف می کنند. مثلا برای سگ "نگهبانی دادن" و....

cups_of_java
یک شنبه 01 دی 1387, 13:40 عصر
حرفای الهام خانم درسته اما بزار من از نقطه نظر دیگه ای هم برات توضیحاتی بدم.
generalization یک مفهوم عام هست برای ساخت سلسله مراتب طراحی در شی گرایی. به طوری که اشیایی که به هم نزدیک هستن و خصوصیات یا رفتار شبیه دارن رو با تعریف کردن تایپ های جدید به هم نزدیک می کنیم و ارتباط می دیم. Inheritance یکی از راه های اعمال generalization هستش. وقتی شما در یک مدل یک کلاس ایجاد می کنی و اون رو پدر چندین کلاس قرار می دی داری generalization می کنی. (بر عکس این موضوع Specialization هستش)
مثلن انگور و پرتقال و سیب رو می شه به کلاس میوه (که مفهوم General و عمومی تری داره) عمومیت داد. حالا این generalization به تو خیلی امکانات می ده.
می دونی چه امکاناتی مثلن؟