Skip to content
Milad Khajavi edited this page Feb 25, 2013 · 10 revisions

دو نوع دیاگرام در UML:

  1. دیاگرام‌های ساختاری.
    1. ساختار استاتیک سیستم
    2. کلاس‌ها، کامپوننت‌ها، اشیاء و ...
  2. دیاگرام‌های رفتاری.
    1. رفتار داینامیک بین اشیاء در سیستم
    2. متدها، همکاری‌ها و کولبریشن‌ها، اکتیویتی‌ها
    3. یوزکیس دیاگرام‌ها و سیکوئنس دیاگرام‌ها
هر دیاگرام UML در یکی از این دو دسته قرار دارد.

Table of Contents

Class Diagram

کلاس دیاگرام، از نوع دیاگرام‌های ساختاری‌ست.

هدف کلاس دیاگرام: نشان دادن انواعی که مدل شده‌اند:

  1. کلاس
  2. اینترفیس
  3. نوع داده
  4. کامپوننت
به این چهار نوع، در UML، کلاسیفایر (Classifier) می‌گویند.

Class

این نمودار به سه قسمت تقسیم می‌شود:

  1. نام کلاس
  2. اوصاف کلاس (Class Attributes)
  3. عملیات کلاس (Class Operations)
اولی اجباری و دو تای دیگر اختیاری.

inheritance

Abstract class/methods

به نمودار بالا دقت کنید. نام کلاس و متد withdrawal ایتالیک است. که توسط دو کلاس مشتق شده، پیاده‌سازی شده‌اند.

Association

رابطهٔ بین دو شیء را اسوسیشن می‌گوییم. انواع رابط:

  1. یک به یک
  2. یک به چند
  3. چند به یک
  4. چند به چند

نمودار

مثال: دانشجو و دانشکده رابطهٔ اسوسیشن دارند.

انوع اسوسیشن:

بی‌جهت (بی-دایرکشنال) (role-name + multiplicity value)

هر دو کلاس می‌دانند که با هم در رابطه هستند.

  1. کلاس Plane نقش assignedPlane را دراین رابطه بازی می‌کند. 0..1 یعنی، برای یک نمونه از Flight ممکن است صفر یا یک Plane منسوب شده باشد.
  2. کلاس Flight نقش assignedFlights را در این رابطه بازی می‌کند. 0..* یعنی برای یک Plaen ممکن است صفر تا بی‌نهایت پرواز منسوب شده باشد.

جهت‌دار (دایرکشنال) (role-name + multiplicity value)

کلاس OverdrawnAccountsReport از کلاس BankAccount اطلاع دارد. و کلاس BankAccount نقش overdrawnAccounts را بازی می‌کند. در این رابطه، کلاس BankAccount نمی‌داند که به کلاس OverdrawnAccountsReport مرتبط شده است. (Loose Coupling)

به یک گزارش بانکی ممکن است صفر یا چند حساب بانکی منسوب شده باشد.

Reflexive associations

نمونه‌ای از کلاس Employee می‌تواند مدیر نمونهٔ دیگری از کلاس Employee باشد. 0..* یعنی ممکن است نمونه‌ای از کلاس Employee مدیر هیچ نمونهٔ دیگری نباشد.

Aggregation

رابطهٔ اگریگیشن همان رابطهٔ Has-a است. یعنی شیء‌ای که حاوی شیء دیگری‌ست. رابطهٔ اگریگیشن حالت خاصی از اسوسیشن است.

Basic Aggregation

مثال: رابطهٔ بین تایر و ماشین، اگریگیشن است. تایر می‌تواند وجود داشته باشد در حالی که هنوز ماشین آماده نشده است. (بیسیک اگریگیشن)

Composition Aggregation

اگر لایف‌سایکل اجزاء مستقل از کل سیستم نباشد، به چنین اگریگیشنی، کامپوزیشن اگریگیشن می‌گویند.

composition

رابطهٔ کامپوزیشن حالت خاصی از اگریگیشن است. اگر وجود شیء‌ محتوی وابسته به وجود شیء حاوی خود باشد، به این اگریگیشن، کامپوزیشن می‌گوییم.

سؤال

  1. فرق بین کامپوزیشن و اگریگیشن چیست؟
  2. یک کتابخانه که محتوی دانشجو و کتاب است را در نظر بگیرید.
    1. رابطهٔ بین کتابخانه و دانشجو چیست؟ اسوسیشن
    2. رابطهٔ بین کتابخانه و کتاب چیست؟ کامپوزیشن

Abstraction

Generalization

جنرالیزیشن از رابطهٔ Is-a از طرف کلاس ویژه به کلاس عمومی، استفاده می‌کند.

مثال: هیئت علمی، انسان است. دانشجو نیز انسان است. رابطهٔ بین دانشجو و انسان و همچنین رابطهٔ بین هیئت علمی و انسان، جنرالیزیشن است.

Realization

رابطهٔ بین اینترفیس و کلاس پیاده شدهٔ اینترفیس را ریالازیشن می‌نامند. یا رابطهٔ بین طرح و نقشهٔ اولیه و شیء پیاده شدهٔ آن.

Dependency

وقتی ساختار یا رفتار یک کلاس تغییر کند و متعاقباً بر روی کلاس دیگری تأثیر بگذارد.

مثلا: رابطهٔ بین شکل و دایره دیپندنسی‌ست.

منبع

  1. http://javapapers.com/oops/association-aggregation-composition-abstraction-generalization-realization-dependency/
  2. http://www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell/

Packages

Interface

بالای نام اینترفیس، عبارت «interface» را قرار می‌دهیم تا نمودار آن از نمودار کلاس قابل تمیز باشد.

همان طور که قبلاً‌ گفتیم، رابطهٔ بین اینترفیس و کلاس پیاده‌سازی شدهٔ آن را، ریالایزیشن می‌نامیم. که با پیکان نقطه‌چین از طرف کلاس پیاده‌سازی شده به طرف اینترفیس نمایش می‌دهیم.

Association Class

وقتی تو کلاس با هم رابطهٔ اسوسیشن دارند، می‌توانیم کلاس دیگری به این رابطه اضافه کنیم تا اطلاعات باارزش بیشتری در مورد این رابطه در اختیارمان قرار دهد.

در دیاگرام زیر، هر گام دو نمونه از کلاس Flight و FrequentFlyer با یکدیگر اسوشیت شوند، یک نمونه از کلاس MileageCreadit نیز وجود خواهد داشت.

Visibility

  1. Mark Visibility type
  2. + Public
  3. # Protected
  4. - Private
  5. ~ Package

Instances

Instance Name : Class Name

Roles

Internal Structures

فرق بین دو دیاگرام زیر را ببینید: