نمودار UML انواع نمودارهای UML مشخصات عمومی زبان UML نمونه ای از نمودارها در زبان uml

UML (Unified Modeling Language - Unified Modeling Language) - یک زبان توصیفی گرافیکی برای مدلسازی شی در زمینه توسعه نرم افزار. UML یک زبان عمومی است، این یک استاندارد باز است که از نماد گرافیکی برای ایجاد یک مدل انتزاعی از یک سیستم استفاده می کند که مدل UML نامیده می شود. UML برای تعریف، تجسم، طراحی و مستندسازی عمدتاً سیستم های نرم افزاری ایجاد شد. UML یک زبان برنامه نویسی نیست، اما تولید کد در ابزارهای اجرای مدل های UML به عنوان کد تفسیر شده امکان پذیر است.ویکیپدیا

محصولات تجاری

مایکروسافت ویزیو

نوع: نرم افزار تجاری

یک محصول نرم افزاری محبوب از مایکروسافت که به شما امکان می دهد نمودارهای غنی از جمله UML بکشید:

از نسخه 2010، امکان انتشار نمودارها در وب (SharePoint + Visio Services) فراهم شد:

Visio Viewer- یک برنامه رایگان که به شما امکان می دهد نمودارهای Visio قبلا ایجاد شده را مشاهده کنید. می‌توانید در %D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B5%20 دانلود کنید.

%0A

Microsoft%20Visual%20Studio%202010

%0A

%D0%A2%D0%B8%D0%BF:%20%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D1%80%D1%87%D0%B5%D1% 81%D0%BA%D0%BE%D0%B5%20%D0%9F%D0%9E%20(%D0%B5%D1%81%D1%82%D1%8C%20%D0%B1%D0 %B5%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D0%BD%D0%B0%D1%8F%20اکسپرس%20%D0%B2%D0%B5%D1%80 %D1%81%D0%B8%D1%8F).

%0A

%D0%92%20%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B5%D0%B9%20%D0%B2%D0 %B5%D1%80%D1%81%D0%B8%D0%B8%20Microsoft%20Visual%20Studio%202010%20%D0%BF%D0%BE%D1%8F%D0%B2%D0%B8%D0 %BB%D1%81%D1%8F%20%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9%20%D1%82%D0%B8%D0%BF%20%D0 %BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0%20-%20مدل‌سازی،%20%D0%BA%D0%BE%D1%82%D0%BE %D1%80%D1%8B%D0%B9%20%D0%BF%D0%BE%D0%B7%D0%B2%D0%BE%D0%BB%D1%8F%D0%B5%D1%82 %20%D1%80%D0%B8%D1%81%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D1%80%D0%B0%D0%B7%D0 %BB%D0%B8%D1%87%D0%BD%D1%8B%D0%B5%20UML%20%D0%B4%D0%B8%D0%B0%D0%B3%D1%80%D0%B0 %D0%BC%D0%BC%D0%B0%20%D0%B8%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D1 %82%D1%8C%20%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5%20 %D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%BD%D0%B0%20%D1%81%D0%BE%D0 %BE%D1%82%D0%B2%D0%B5%D1%82%D1%81%D1%82%D0%B2%D0%B8%D0%B5%20%D1%81%20%D0%BD %D0%B5%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%20%D0%B0%D1%80%D1%85 %D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%BE%D0%B9.

%0A

%D0%9F%D0%BE%D0%B7%D0%B2%D0%BE%D0%BB%D1%8F%D0%B5%D1%82%20%D0%B3%D0%B5%D0%BD %D0%B5%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20Sequence%20Diagram%20%D0%BD%D0%B0 %20%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%BA%D0%BE%D0 %B4%D0%B0,%20%D0%B2%D0%B8%D0%B7%D1%83%D0%B0%D0%BB%D0%B8%D0%B7%D0%B8%D1%80% D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D1%81%D0%B2%D1%8F%D0%B7%D0%B8%20%D0%B2%20% D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B5%20%D0%BC%D0%B5%D0%B6%D0%B4%D1%83% 20%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D0%B0%D0%BC%D0%B8، %20%D1%81%D0%B1%D0%BE%D1%80%D0%BA%D0%B0%D0%BC%D0%B8%20%D0%B8%20%D1%81%D1%81 %D1%8B%D0%BB%D0%BA%D0%B0%D0%BC%D0%B8%20%D0%B8%20%D1%82.%D0%B4.

%0A

%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20استفاده%20مورد%20%D0%B4%D0%B8%D0%B0%D0%B3%D1%80 %D0%B0%D0%BC%D0%BC%D1%8B,%20%D0%BD%D0%B0%D1%80%D0%B8%D1%81%D0%BE%D0%B2%D0% B0%D0%BD%D0%BD%D0%BE%D0%B9%20%D0%B2%20Visual%20Studio%202010:

%0A%0A

%D0%9A%D1%80%D0%BE%D0%BC%D0%B5%20%D1%82%D0%BE%D0%B3%D0%BE،%20%D0%B4%D0%BE% D1%81%D1%82%D1%83%D0%BF%D0%B5%D0%BD%20Visualization%20and%20Modeling%20Feature%20Pack%20(%D0%B4%D0%BB%D1%8F%20 %D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D1%87%D0%B8%D0%BA%D0%BE%D0%B2%20MSDN)،%20 %D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B9%20%D0%BF%D0%BE%D0%B7%D0%B2%D0%BE %D0%BB%D1%8F%D0%B5%D1%82:

%0A
  • %D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20 %D0%BA%D0%BE%D0%B4%20%D0%BD%D0%B0%20%D0%B1%D0%B0%D0%B7%D0%B5%20UML%20%D0%B4%D0 %B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%20%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0 %BE%D0%B2
  • %0A
  • %D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%B2%D0%B0%D1%82%D1%8C%20UML%20%D0%B4%D0%B8%D0 %B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B%20%D0%B8%D0%B7%20%D0%BA%D0%BE%D0%B4 %D0%B0
  • %0A
  • %D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1 %8C%20UML%20%D0%B4%D0%B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B%20%D0%BA%D0 %BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2,%20%D0%B4%D0%B8%D0%B0%D0%B3%D1%80%D0%B0% D0%BC%D0%BC%D1%8B%20%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0% D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B5%D0%B9,%20%D0%B4%D0%B8 %D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B%20%D0%B2%D0%B0%D1%80%D0%B8%D0%B0 %D0%BD%D1%82%D0%BE%D0%B2%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE %D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%81%20XMI%202.1
  • %0A
  • %D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%B2%D0%B0%D1%82%D1%8C%20%D0%B4%D0%B8%D0%B0 %D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B%20%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8 %D0%BC%D0%BE%D1%81%D1%82%D0%B5%D0%B9%20%D0%B4%D0%BB%D1%8F%20ASP.NET،%20C%20%D0% B8%20C++%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%BE%D0%B2
  • %0A
  • %D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%B2%D0%B0%D1%82%D1%8C%20%D0%B8%20%D0%BF%D1 %80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D1%82%D1%8C%20لایه%20نمودار%20%D0%B4%D0%BB%D1%8F%20C %20%D0%B8%20C++%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%BE%D0%B2
  • %0A
  • %D0%BF%D0%B8%D1%81%D0%B0%D1%82%D1%8C%20%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2 %D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA نمودارهای %D0%B8%20%D0%B4%D0%BB%D1%8F%20لایه%20
  • %0A

%D0%A1%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C%20Visualization%20and%20Modeling%20ویژگی%20بسته%20%D0%BC%D0%BE%D0 %B6%D0%BD%D0%BE%20%D0%BF%D0%BE%20%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B5:%20 http://msdn.microsoft.com/en-us/vstudio/ff655021%28en-us%29.aspx.

IBM Rational Rose

توانایی ها:

  • نمودار مورد استفاده (نمودار سوابق)؛
  • نمودار استقرار (نمودار توپولوژی)؛
  • نمودار وضعیت (نمودار حالت)؛
  • نمودار فعالیت (نمودار فعالیت);
  • نمودار تعامل (نمودارهای تعامل);
  • نمودار توالی (نمودار توالی اقدامات)؛
  • نمودار همکاری (نمودار همکاری);
  • نمودار کلاس (نمودار کلاس);
  • نمودار اجزاء (نمودار اجزا).

اسکرین شات ها:

برنامه های متن باز

StarUML

توانایی ها:

  • پشتیبانی از UML 2.0
  • MDA (معماری مبتنی بر مدل)
  • معماری پلاگین (شما می توانید به زبان های سازگار با COM بنویسید: C++، Delphi، C#، VB، ...)

StarUML عمدتاً در دلفی نوشته شده است، اما کامپوننت ها را می توان به زبان های دیگر مانند C/C++، Java، Visual Basic، Delphi، JScript، VBScript، C#، VB.NET اضافه کرد. در زیر چند اسکرین شات وجود دارد.

نمودار کلاس:

نمودار مورد استفاده:

ArgoUML

نمودارهای پشتیبانی شده:

  • کلاس
  • دولت
  • موارد استفاده
  • فعالیت
  • همکاری
  • گسترش
  • توالی

توانایی ها:

  • پشتیبانی از نه نمودار UML 1.4
  • مستقل از پلتفرم (جاوا 5+)
  • UML 1.4 متامدل استاندارد
  • پشتیبانی از XMI
  • صادرات به GIF، PNG، PS، EPS، PGML و SVG
  • زبان‌ها: EN، EN-GB، DE، ES، IT، RU، FR، NB، PT، ZH
  • پشتیبانی OCL
  • مهندسی پیشرو، معکوس

اسکرین شات:

UML یک زبان مدل سازی گرافیکی یکپارچه برای توصیف، تجسم، طراحی و مستندسازی سیستم های OO است. UML برای پشتیبانی از فرآیند مدل‌سازی PS بر اساس رویکرد OO، سازمان‌دهی رابطه بین مفاهیم مفهومی و برنامه‌ای، و انعکاس مشکلات مقیاس‌گذاری سیستم‌های پیچیده طراحی شده است. مدل های UML در تمام مراحل چرخه عمر نرم افزار، از تجزیه و تحلیل کسب و کار گرفته تا تعمیر و نگهداری سیستم، استفاده می شوند. سازمان‌های مختلف بسته به حوزه‌های مشکل‌شان و فناوری‌های مورد استفاده، می‌توانند از UML به روش خود استفاده کنند.

تاریخچه مختصری از UML

در اواسط دهه 1990، چندین ده روش مدلسازی OO توسط نویسندگان مختلف پیشنهاد شد که هر کدام از نمادهای گرافیکی خود استفاده می کردند. در همان زمان، هر یک از این روش ها نقاط قوت خود را داشت، اما اجازه ساخت یک مدل PS به اندازه کافی کامل را نمی داد تا آن را "از همه طرف" نشان دهد، یعنی تمام پیش بینی های لازم (به مقاله 1 مراجعه کنید). علاوه بر این، عدم وجود استاندارد مدل سازی OO، انتخاب مناسب ترین روش را برای توسعه دهندگان دشوار می کرد، که مانع از استفاده گسترده از رویکرد OO برای توسعه نرم افزار شد.

به درخواست گروه مدیریت شی (OMG) - سازمانی که مسئول پذیرش استانداردها در زمینه فناوری های شی و پایگاه داده است، مشکل فوری یکسان سازی و استانداردسازی توسط نویسندگان سه روش محبوب OO - G. Booch حل شد. ، D. Rambo و A. Jacobson که تلاش ها را ترکیب کردند UML نسخه 1.1 را ایجاد کردند که توسط OMG در سال 1997 به عنوان یک استاندارد تأیید شد.

UML یک زبان است

هر زبانی از یک فرهنگ لغت و قوانینی برای ترکیب کلمات برای ساختن ساختارهای معنادار تشکیل شده است. بنابراین، به طور خاص، زبان های برنامه نویسی مرتب شده اند، مانند UML. ویژگی بارز آن این است که واژگان زبان توسط عناصر گرافیکی شکل می گیرد. هر نماد گرافیکی معنای خاصی دارد، بنابراین یک مدل ایجاد شده توسط یک توسعه‌دهنده می‌تواند توسط دیگری و همچنین توسط ابزاری که UML را تفسیر می‌کند، بدون ابهام درک کند. از این، به ویژه، نتیجه می شود که یک مدل PS ارائه شده در UML می تواند به طور خودکار به یک زبان برنامه نویسی OO (مانند Java، C ++، VisualBasic) ترجمه شود، یعنی با یک ابزار مدل سازی بصری خوب که از UML پشتیبانی می کند، توسط با ساخت یک مدل، کد برنامه مربوط به این مدل را نیز خالی خواهیم داشت.

باید تاکید کرد که UML یک زبان است نه یک روش. توضیح می‌دهد که از چه عناصری باید مدل‌ها را ایجاد کرد و چگونه آنها را خواند، اما در مورد اینکه کدام مدل‌ها و در چه مواردی باید توسعه یابند چیزی نمی‌گوید. برای ایجاد یک روش مبتنی بر UML، لازم است آن را با شرحی از فرآیند توسعه PS تکمیل کنید. نمونه ای از چنین فرآیندی فرآیند یکپارچه منطقی است که در مقالات بعدی مورد بحث قرار خواهد گرفت.

واژگان UML

مدل در قالب موجودیت ها و روابط بین آنها نشان داده شده است که در نمودارها نشان داده شده است.

اسانس هاانتزاعاتی هستند که عناصر اصلی مدل ها هستند. چهار نوع موجودیت وجود دارد - ساختاری (کلاس، رابط، جزء، مورد استفاده، همکاری، گره)، رفتاری (تعامل، حالت)، گروه‌بندی (بسته‌ها) و توضیحی (نظر). هر نوع موجودیت نمایش گرافیکی خود را دارد. هنگام مطالعه نمودارها، نهادها به تفصیل مورد بحث قرار خواهند گرفت.

روابطروابط مختلف بین موجودیت ها را نشان می دهد. انواع روابط زیر در UML تعریف شده است:

  • اعتیادچنین رابطه‌ای را بین دو موجود نشان می‌دهد، زمانی که تغییر در یکی از آنها - مستقل - می‌تواند بر معناشناسی دیگری - وابسته تأثیر بگذارد. یک وابستگی با یک فلش نقطه‌دار نشان داده می‌شود که از موجودیت وابسته به موجودیت مستقل اشاره می‌کند.
  • اتحادیهیک رابطه ساختاری است که نشان می دهد اشیاء یک موجود با اشیاء موجودی دیگر مرتبط هستند. از نظر گرافیکی، یک ارتباط به عنوان خطی نشان داده می شود که موجودیت های مرتبط را به هم متصل می کند. انجمن ها برای حرکت بین اشیا استفاده می شوند. برای مثال، ارتباط بین کلاس‌های «سفارش» و «محصول» می‌تواند برای یافتن تمام محصولات مشخص‌شده در یک سفارش خاص - از یک طرف، یا یافتن همه سفارش‌هایی که حاوی این محصول هستند - از سوی دیگر استفاده شود. واضح است که برنامه های مربوطه باید مکانیزمی را اجرا کنند که چنین ناوبری را فراهم کند. اگر پیمایش فقط در یک جهت مورد نیاز باشد، با یک فلش در انتهای ارتباط نشان داده می شود. یک مورد خاص از تداعی تجمع است - رابطه ای به شکل "کل" - "جزء". از نظر گرافیکی، با یک لوزی در انتها در نزدیکی موجودیت-کل برجسته شده است.
  • تعمیمیک رابطه بین یک موجودیت اصلی و یک موجودیت فرزند است. اساساً، این رابطه منعکس کننده خاصیت وراثت برای کلاس ها و اشیا است. تعمیم به صورت خطی نشان داده می شود که با مثلثی که به سمت موجودیت والد اشاره دارد، ختم می شود. کودک ساختار (ویژگی ها) و رفتار (روش) والدین را به ارث می برد، اما در عین حال می تواند دارای عناصر ساختاری جدید و روش های جدید باشد. زمانی که یک موجودیت به بیش از یک موجودیت اصلی مرتبط باشد، UML اجازه ارث بری چندگانه را می دهد.
  • پیاده سازی- رابطه بین موجودی که مشخصات رفتار (رابط) را تعریف می کند با نهادی که اجرای این رفتار را تعریف می کند (کلاس، جزء). این رابطه معمولاً در مدلسازی مولفه استفاده می شود و در مقالات بعدی با جزئیات بیشتر توضیح داده خواهد شد.

نمودارها UML نمودارهای زیر را ارائه می دهد:

  • نمودارهایی که رفتار سیستم را توصیف می کنند:
    • نمودارهای حالت (نمودار حالت)،
    • نمودارهای فعالیت،
    • نمودارهای اشیاء،
    • نمودارهای توالی،
    • نمودارهای همکاری؛
  • نمودارهایی که پیاده سازی فیزیکی سیستم را توصیف می کنند:
    • نمودارهای اجزاء؛
    • نمودارهای استقرار

نمای کنترل مدل بسته ها

قبلاً گفتیم که برای اینکه یک مدل توسط شخص به خوبی درک شود، باید آن را به صورت سلسله مراتبی سازماندهی کرد و تعداد کمی موجودیت در هر سطح از سلسله مراتب باقی ماند. UML شامل ابزاری برای سازماندهی نمایش سلسله مراتبی یک مدل - بسته ها است. هر مدلی شامل مجموعه‌ای از بسته‌ها است که ممکن است شامل کلاس‌ها، موارد استفاده و سایر موجودیت‌ها و نمودارها باشد. یک بسته می تواند شامل بسته های دیگری نیز باشد که به شما امکان می دهد سلسله مراتبی ایجاد کنید. UML نمودارهای بسته جداگانه ارائه نمی دهد، اما ممکن است در نمودارهای دیگر ظاهر شوند. بسته به صورت یک مستطیل با یک زبانه نمایش داده می شود.

آنچه UML ارائه می دهد.

  • توصیف سلسله مراتبی یک سیستم پیچیده با برجسته کردن بسته ها.
  • رسمی کردن الزامات عملکردی برای سیستم با استفاده از دستگاه موارد استفاده؛
  • جزئیات الزامات سیستم با ساختن نمودارهای فعالیت ها و سناریوها؛
  • انتخاب کلاس های داده و ساخت یک مدل داده مفهومی در قالب نمودارهای کلاس.
  • انتخاب کلاس هایی که رابط کاربری را توصیف می کنند و ایجاد یک طرح ناوبری صفحه نمایش.
  • شرح فرآیندهای تعامل اشیاء در اجرای عملکردهای سیستم؛
  • توصیف رفتار اشیاء در قالب نمودارهای فعالیت ها و حالات.
  • شرح اجزای نرم افزار و تعامل آنها از طریق رابط.
  • شرح معماری فیزیکی سیستم

و آخرین…

با وجود تمام جذابیت های UML، استفاده از آن در مدل سازی PS واقعی بدون ابزارهای مدل سازی بصری دشوار خواهد بود. چنین ابزارهایی به شما امکان می دهند نمودارها را به سرعت بر روی صفحه نمایش ارائه دهید، آنها را مستند کنید، کدهای خالی برنامه را در زبان های مختلف برنامه نویسی OO ایجاد کنید و طرحواره های پایگاه داده ایجاد کنید. اکثر آنها شامل امکان مهندسی مجدد کدهای برنامه هستند - بازیابی برخی از پیش بینی های مدل PS با تجزیه و تحلیل خودکار کدهای منبع برنامه ها، که برای اطمینان از مطابقت مدل و کدها و هنگام طراحی سیستم هایی که عملکرد سیستم های قبلی را به ارث می برند بسیار مهم است. .

حاشیه نویسی: موضوع این دوره UML - Unified Modeling Language است. در سخنرانی قبلی، در مورد چیستی UML، تاریخچه، هدف، روش های استفاده از زبان، ساختار تعریف، اصطلاحات و نشانه گذاری آن صحبت کردیم. اشاره شده است که یک مدل UML مجموعه ای از نمودارها است. در این سخنرانی به این سؤالات خواهیم پرداخت: چرا به چندین نوع نمودار نیاز داریم. انواع نمودارها؛ OOP و نمودار توالی

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

ما مدل‌هایی از سیستم‌های پیچیده می‌سازیم، زیرا نمی‌توانیم آنها را به طور کامل توصیف کنیم، "در یک نگاه به آنها نگاه کنید". بنابراین، ما فقط ویژگی های سیستم را که برای یک کار خاص ضروری هستند، جدا می کنیم و مدل آن را می سازیم که این ویژگی ها را منعکس می کند. روش تجزیه و تحلیل شی گرا این امکان را فراهم می کند که سیستم های پیچیده واقعی را به مناسب ترین شکل توصیف کنیم. اما با پیچیده‌تر شدن سیستم‌ها، نیاز به فناوری شبیه‌سازی خوب وجود دارد. همانطور که در سخنرانی قبلی گفتیم، یک سیستم یکپارچه به عنوان یک فناوری "استاندارد" استفاده می شود. زبان مدلسازی(Unified Modeling Language, UML) که یک زبان گرافیکی برای مشخصات، تجسم، طراحی و مستندسازی سیستم ها است. با استفاده از UML، می توانید یک مدل دقیق از سیستم در حال ایجاد ایجاد کنید که نه تنها مفهوم آن، بلکه ویژگی های پیاده سازی خاص را نیز منعکس می کند. در چارچوب مدل UML، تمام نمایش‌های مربوط به سیستم در قالب ساختارهای گرافیکی خاصی به نام نمودار ثابت می‌شوند.

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

چرا به چندین نوع نمودار نیاز دارید؟

ابتدا اجازه دهید اصطلاحات را تعریف کنیم. در مقدمه این سخنرانی بارها از مفاهیم سیستم، مدل و نمودار استفاده کردیم. نویسنده مطمئن است که هر یک از ما به طور شهودی معنای این مفاهیم را درک می کنیم، اما برای روشن شدن کامل، بیایید دوباره به واژه نامه نگاه کنیم و موارد زیر را مطالعه کنیم:

سیستم- مجموعه ای از زیرسیستم های کنترل شده به هم پیوسته که با یک هدف مشترک از عملکرد متحد شده اند.

بله، خیلی آموزنده نیست. پس سیستم فرعی چیست؟ برای روشن شدن وضعیت، بیایید به کلاسیک ها بپردازیم:

سیستممجموعه‌ای از زیرسیستم‌ها را که برای دستیابی به یک هدف خاص سازماندهی شده و با استفاده از مجموعه‌ای از مدل‌ها، احتمالاً از دیدگاه‌های مختلف، توصیف شده‌اند، فراخوانی کنید.

خب هیچ کاری نمیشه کرد، باید دنبال تعریف زیرسیستم بگردید. اونجا هم میگه زیر سیستممجموعه ای از عناصر است که برخی از آنها رفتار عناصر دیگر را مشخص می کند. ایان سامرویل این مفهوم را اینگونه توضیح می دهد:

زیر سیستمسیستمی است که عملکرد آن به خدمات زیرسیستم های دیگر بستگی ندارد. سیستم نرم افزاری به عنوان مجموعه ای از زیرسیستم های نسبتاً مستقل ساختار یافته است. تعاملات بین زیرسیستم ها نیز تعریف شده است.

همچنین خیلی واضح نیست، اما بهتر است. با صحبت کردن به زبان «انسانی»، سیستم به عنوان مجموعه‌ای از موجودیت‌های ساده‌تر نشان داده می‌شود که نسبتاً خودکفا هستند. این را می توان با این مقایسه کرد که چگونه، در فرآیند توسعه یک برنامه، یک رابط گرافیکی از "مکعب" استاندارد - اجزای بصری ایجاد می کنیم، یا اینکه چگونه متن برنامه به ماژول هایی تقسیم می شود که حاوی زیرروال هایی هستند که مطابق با یک عملکرد ترکیب شده اند. ویژگی، و می توان از آنها در برنامه های زیر استفاده مجدد کرد.

مفهوم سیستم را درک کنید. در طول فرآیند طراحی، سیستم مورد توجه قرار می گیرد از دیدگاه های مختلفبا کمک مدل هایی که نمایش های مختلف آنها به صورت نمودار ظاهر می شود. باز هم، خواننده ممکن است در مورد معنای مفاهیم سؤالاتی داشته باشد مدل هاو نمودارها. ما به یک تعریف زیبا، اما نه چندان واضح فکر می کنیم مدل‌ها به‌عنوان یک انتزاع سیستم از نظر معنایی بستهبعید است که وضعیت را روشن کند، بنابراین بیایید سعی کنیم "به قول خودمان" توضیح دهیم.

مدل- این یک شی خاص (ماده یا غیر) است که فقط مهمترین ویژگی های سیستم را برای این کار نشان می دهد. مدل ها متفاوت هستند - ملموس و ناملموس، مصنوعی و طبیعی، تزئینی و ریاضی...

بیایید چند مثال بزنیم. ماشین های پلاستیکی اسباب بازی آشنا برای همه ما که در کودکی با شور و شوق بازی می کردیم چیزی بیش نیست مواد مصنوعی تزئینیمدل ماشین واقعی البته، در چنین "ماشینی" موتوری وجود ندارد، ما باک آن را با بنزین پر نمی کنیم، گیربکس در آن کار نمی کند (علاوه بر این، اصلا وجود ندارد)، اما به عنوان یک مدل، این اسباب بازی به طور کامل آن را برآورده می کند. عملکردها: به کودک ایده ای در مورد ماشین می دهد، زیرا ویژگی های بارز آن وجود چهار چرخ، بدنه، درها، پنجره ها، توانایی رانندگی و غیره را نشان می دهد.

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

معادله نشان داده شده در بالا نیز یک مدل است، اما این یک مدل ریاضی است و حرکت یک نقطه مادی را تحت اثر گرانش توصیف می کند.

فقط باید بگوییم که نمودار چیست. نمودارنمایش گرافیکی مجموعه ای از عناصر است. معمولاً به صورت نمودار با رئوس (موجودات) و یال ها (روابط) نشان داده می شود. نمونه های زیادی از نمودارها وجود دارد. این یک بلوک دیاگرام برای همه ما از سال های مدرسه آشناست، و نمودارهای نصب تجهیزات مختلف که می توانیم در کتابچه راهنمای کاربر ببینیم، و درختی از فایل ها و دایرکتوری ها روی یک دیسک، که با اجرای دستور درخت در کنسول ویندوز، و خیلی، خیلی چیزهای دیگر. در زندگی روزمره، نمودارها از همه طرف ما را احاطه کرده اند، زیرا درک یک تصویر برای ما راحت تر از یک متن است...

اما برگردیم به طراحی نرم افزار (و نه تنها). در این صنعت از زمان با استفاده از نمودارها، می توانید سیستم را از دیدگاه های مختلف تجسم کنید. یکی از نمودارها، به عنوان مثال، می تواند تعامل کاربر با سیستم را توصیف کند، دیگری - تغییر در حالات سیستم در طول عملیات آن، سوم - تعامل بین عناصر سیستم، و غیره. سیستم را می‌توان و باید به‌عنوان مجموعه‌ای از مدل‌های کوچک و تقریباً مستقل نشان داد - نمودارها، و هیچ‌کدام از آنها برای توصیف سیستم و دریافت تصویر کاملی از آن کافی نیست، زیرا هر یک از آنها بر جنبه‌ای خاص از عملکرد سیستم تمرکز می‌کنند. سیستم و متفاوت بیان می کند سطح انتزاع. به عبارت دیگر، هر مدل با یک دیدگاه خاص و خاص در مورد سیستم طراحی شده مطابقت دارد.

علیرغم اینکه در پاراگراف قبل با مفهوم مدل بسیار سست بودیم، باید فهمید که در چارچوب تعاریف فوق هیچ نمودار واحدی یک مدل نیست. نمودارها تنها وسیله ای برای تجسم مدل هستند و باید این دو را از هم متمایز کرد. فقط مجموعه ای از نمودارها یک مدل سیستم را تشکیل می دهندو آن را به طور کامل توصیف می کند، اما نه یک نمودار خارج از زمینه.

انواع نمودار

UML 1.5 تعریف شده است دوازده نوع نموداربه سه گروه تقسیم می شوند:

  • چهار نوع نمودار نشان دهنده ساختار استاتیک برنامه است.
  • پنج نشان دهنده جنبه های رفتاری سیستم هستند.
  • سه نشان دهنده جنبه های فیزیکی عملیات سیستم (نمودارهای پیاده سازی) هستند.

نسخه فعلی UML 2.1 تغییرات زیادی ایجاد نکرده است. نمودارها کمی از نظر ظاهری تغییر کرده اند (قاب ها و سایر پیشرفت های بصری ظاهر شده اند)، نشانه گذاری کمی بهبود یافته است، برخی از نمودارها نام های جدیدی دریافت کرده اند.

با این حال، تعداد دقیق نمودارهای متعارفبرای ما کاملاً بی اهمیت است، زیرا ما همه آنها را در نظر نخواهیم گرفت، بلکه فقط برخی را در نظر خواهیم گرفت - به این دلیل که تعداد انواع نمودار برای یک مدل خاص از یک برنامه خاص به شدت ثابت نیست. برای کاربردهای ساده، نیازی به ساخت تمام نمودارها بدون استثنا نیست. به عنوان مثال، برای یک برنامه محلی، نیازی به ساخت یک نمودار استقرار نیست. درک این نکته مهم است که لیست نمودارها به مشخصات پروژه در حال توسعه بستگی دارد و توسط خود توسعه دهنده تعیین می شود. اگر خواننده کنجکاو همچنان بخواهد در مورد تمام نمودارهای UML بداند، او را به استاندارد UML ارجاع می دهیم (http://www.omg.org/technology/documents/modeling_spec_catalog.htm#UML). به یاد بیاورید که هدف از این دوره توصیف مطلقاً تمامی امکانات UML نیست، بلکه تنها معرفی این زبان برای ارائه ایده اولیه از این فناوری است.

بنابراین، به طور خلاصه به انواع نمودارهایی مانند:

  • نمودار مورد استفاده;
  • نمودار کلاس؛
  • نمودار شی;
  • نمودار توالی؛
  • نمودار تعامل؛
  • نمودار حالت؛
  • نمودار فعالیت;
  • نمودار استقرار.

در سخنرانی های بعدی در مورد برخی از این نمودارها با جزئیات بیشتر صحبت خواهیم کرد. در این میان، ما بر جزئیات تمرکز نمی کنیم، بلکه هدف خود را این می کنیم که به خواننده آموزش دهیم که حداقل به صورت بصری بین انواع نمودارها تمایز قائل شود تا ایده اولیه ای از هدف انواع اصلی نمودارها ارائه دهد. . بنابراین، بیایید شروع کنیم.

از نمودار موردی استفاده کنید

هر سیستم (از جمله نرم افزار) با در نظر گرفتن این واقعیت طراحی می شود که در طول کار آنها توسط افراد استفاده می شود و / یا با سایر سیستم ها تعامل دارند. موجوداتی که سیستم در جریان کار خود با آنها تعامل دارد نامیده می شوند بازیگرانو هر بازیگر انتظار دارد که سیستم به شیوه ای کاملاً تعریف شده و قابل پیش بینی رفتار کند. بیایید سعی کنیم تعریف دقیق تری از اکتور ارائه کنیم. برای این کار از یک واژگان بصری فوق العاده برای UML استفاده می کنیم مربی زیکام:

هکتور (بازیگر)- این مجموعه ای از نقش های مرتبط منطقی است که هنگام تعامل با سوابق یا موجودیت ها (سیستم، زیر سیستم یا کلاس) انجام می شود. یک کنشگر می تواند یک شخص یا سیستم، زیرسیستم یا کلاس دیگری باشد که چیزی خارج از موجودیت را نشان می دهد.

از نظر گرافیکی، بردار یا " مرد کوچک"، شبیه به آنهایی که در کودکی کشیده ایم، اعضای خانواده ما را به تصویر می کشد، یا نماد کلاس با کلیشه مربوطه، همانطور که در تصویر نشان داده شده است. هر دو شکل ارائه به یک معنا هستند و می توانند در نمودارها استفاده شوند. فرم "کلیشه ای" اغلب برای نشان دادن بازیگران سیستم یا در مواردی که بازیگر دارای ویژگی هایی است که باید نمایش داده شوند استفاده می شود (شکل 2.1).

خواننده با دقت ممکن است بلافاصله این سوال را بپرسد: چرا هکتور است و بازیگر نیست؟? ما موافقیم، کلمه "ektor" گوش یک روسی را کمی بریده است. دلیل اینکه ما این را می گوییم ساده است - اکتور از کلمه تشکیل شده است عمل، که در ترجمه به معنی است عمل. ترجمه تحت اللفظی کلمه "ektor" - بازیگر- استفاده بیش از حد طولانی و ناراحت کننده است. بنابراین، ما همچنان به گفتن آن ادامه خواهیم داد.


برنج. 2.1.

همان خواننده توجه می تواند متوجه شود که کلمه "سابقه" در تعریف اکتور چشمک می زند. چیست؟ اگر به یاد بیاوریم که اکنون در مورد آن صحبت می کنیم، این سؤال ما را بیشتر مورد توجه قرار خواهد داد نمودار مورد استفاده. بنابراین،

سابقه (مورد استفاده)- توصیف یک جنبه خاص از رفتار سیستم از دیدگاه کاربر (Butch).

این تعریف کاملاً قابل درک و جامع است، اما می توان با استفاده از همین تعریف، آن را بیشتر اصلاح کرد مربی زیکام"om:

مورد استفاده- توصیف مجموعه ای از رویدادهای متوالی (از جمله انواع) انجام شده توسط سیستم که منجر به نتیجه مشاهده شده توسط بازیگر می شود. مورد استفاده رفتار یک موجودیت را با توصیف تعامل بین بازیگران و سیستم نشان می دهد. یک سابقه نشان نمی دهد که "چگونه" یک نتیجه مشخص به دست می آید، بلکه فقط "چیست" را نشان می دهد.

سوابق به روشی بسیار ساده نشان داده شده است - به شکل یک بیضی که نام آن در داخل آن مشخص شده است. موارد استفاده و بازیگران با خطوط مرتبط هستند. اغلب در یک انتهای خط برنج را به تصویر می کشند. 2.3

  • تشکیل الزامات عمومی برای رفتار سیستم در حال طراحی؛
  • توسعه یک مدل مفهومی از سیستم برای جزئیات بعدی آن؛
  • تهیه مستندات برای تعامل با مشتریان و کاربران سیستم.
  • UML یک زبان مدل سازی گرافیکی همه منظوره برای مشخصات، تجسم، طراحی و مستندسازی تمام مصنوعات ایجاد شده در توسعه سیستم های نرم افزاری است.

    کتاب‌های خوب زیادی وجود دارد که با جزئیات در مورد UML توضیح می‌دهند (گاهی اوقات حتی بسیار مفصل)، من می‌خواهم مفاهیم اساسی در مورد نمودارها، موجودیت‌ها و روابط بین آنها را برای یادآوری سریع در یک مکان جمع‌آوری کنم، چیزی شبیه به یک برگه تقلب.

    در یادداشت از مطالب کتاب استفاده شده است: Ivanov D. Yu., Novikov F. A. زبان مدل سازی یکپارچه UMLو لئوننکوف آموزش UML.

    بیایید با ویرایشگر شروع کنیم. تحت لینوکس، ویرایشگرهای UML مختلف را امتحان کردم، بیشتر از همه از UMLet خوشم آمد، اگرچه در جاوا نوشته شده است، اما خیلی سریع حرکت می کند و بیشتر موارد خالی موجود در آن هستند. همچنین ArgoUML وجود دارد، یک ویرایشگر UML بین پلتفرمی، که به زبان جاوا نیز نوشته شده است، از نظر عملکردی غنی است، اما سرعت بیشتری را کاهش می دهد.

    توقف کردم UMlet، آن را در زیر نصب کنید آرچ لینوکسو اوبونتو:

    # تحت Arch Linux yaourt -S umlet # تحت Ubuntu sudo apt-get install umlet

    در UML، تمام موجودیت ها را می توان به انواع زیر تقسیم کرد:

    • ساختاری؛
    • رفتاری
    • گروه بندی؛
    • حاشیه نویسی

    UML از چهار نوع اصلی روابط استفاده می کند:

    وابستگی- نشان می دهد که تغییر نهاد مستقل به نحوی بر موجودیت وابسته تأثیر می گذارد. از نظر گرافیکی، یک رابطه وابستگی به عنوان یک خط نقطه چین با یک فلش از موجودیت وابسته به موجودیت مستقل نشان داده می شود.

    اتحادیه- در صورتی اتفاق می افتد که یک موجودیت مستقیماً با دیگری (یا به دیگران) مرتبط باشد - ارتباط نه تنها می تواند باینری باشد. از نظر گرافیکی، یک ارتباط به عنوان یک خط ثابت با اضافات مختلف که موجودیت های مرتبط را به هم متصل می کند، نشان داده می شود.

    تعمیمرابطه بین دو نهاد است که یکی از آنها مورد خاص (تخصصی) دیگری است. از نظر گرافیکی، تعمیم به عنوان یک خط با یک فلش مثلثی پر نشده در انتها نشان داده می شود که از خاص (زیر کلاس) به کلی (ابر کلاس) هدایت می شود.

    پیاده سازی ها- رابطه پیاده سازی نشان می دهد که یک موجودیت پیاده سازی دیگری است. از نظر گرافیکی، پیاده‌سازی به صورت یک خط نقطه چین با یک فلش مثلثی پر نشده در انتها نشان داده می‌شود که از موجودیت اجرا به سمت اجرا شده هدایت می‌شود.

    AT UML 2تعریف شده است 13 انواع نمودار طبق استانداردها، هر نمودار باید یک قاب با یک مستطیل (گوشه سمت راست پایین تراشیده شده) در گوشه بالا سمت چپ داشته باشد که نشان دهنده شناسه نمودار (برچسب) و عنوان است.

    نمودارهایی برای به تصویر کشیدن ساختار سیستم:

    • نمودار مؤلفه (نمودار مؤلفه، برچسب جزء);
    • نمودار استقرار (نمودار استقرار، برچسب گسترش);
    • نمودار کلاس (نمودار کلاس، برچسب کلاس);
    • نمودار شیء (نمودار شیء، برچسب هدف - شی);
    • نمودار ساختار داخلی (نمودار ساختار ترکیبی، برچسب کلاس);

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

    • نمودار همگام سازی (نمودار تعامل، برچسب زمان سنجی);
    • نمودار فعالیت (نمودار فعالیت، برچسب فعالیت);
    • نمودار توالی (نمودار توالی، برچسب SD);
    • نمودار ارتباطی (نمودار ارتباطی، برچسب کام);
    • نمودار خودکار (نمودار ماشین حالت، برچسب ماشین حالت);
    • نمودار نمای کلی تعامل، برچسب اثر متقابل);

    نمودارها برجسته هستند:

    • نمودار مورد استفاده (نمودار مورد استفاده، برچسب مورد استفاده)؛
    • نمودار بسته (نمودار بسته، برچسب بسته بندی);

    نمودار استفاده

    نمودار استفاده(نمودار مورد استفاده) کلی ترین نمایش هدف عملکردی سیستم است.

    با در نظر گرفتن نمودار مورد استفاده به عنوان یک مدل از یک سیستم، می توان آن را با یک مدل جعبه سیاه مرتبط کرد. هر مورد استفاده، دنباله ای از اقدامات را تعریف می کند که باید توسط سیستم طراحی شده در هنگام تعامل با بازیگر مربوطه انجام شود.

    نمودار استفاده از دو نوع موجودیت اساسی استفاده می کند: موارد استفاده و بازیگران، که بین آنها انواع اساسی روابط زیر برقرار می شود.

    رابطه انجمن- این رابطه مشخص می کند که یک بازیگر چه نقش خاصی را هنگام تعامل با یک نمونه از یک مورد استفاده ایفا می کند. یک رابطه ارتباطی با یک خط ثابت بین بازیگر و مورد استفاده نشان داده می شود. این خط ممکن است دارای نمادهای اضافی باشد، مثلاً یک نام و یک کثرت.

    رابطه بسط- رابطه نمونه های یک مورد استفاده واحد را با یک مورد استفاده عمومی تر تعریف می کند که ویژگی های آن بر اساس نحوه ترکیب این موارد با یکدیگر تعیین می شود. بنابراین، اگر یک رابطه گسترش از مورد استفاده A به مورد استفاده B وجود داشته باشد، به این معنی است که ویژگی‌های یک نمونه از استفاده B را می‌توان به دلیل وجود ویژگی‌ها در مورد استفاده گسترده A تکمیل کرد.

    رابطه گسترش بین موارد استفاده با یک خط چین با یک فلش (مورد رابطه وابستگی) نشان داده می شود که به دور از مورد استفاده که پسوند مورد استفاده اصلی است اشاره می کند.

    رابطه تعمیمنشان دهنده این واقعیت است که برخی از موارد استفاده A را می توان به استفاده از مورد B تعمیم داد. در این مورد، مورد استفاده A یک تخصص کاربرد B خواهد بود. در این مورد، B را جد یا والد A می نامند و استفاده می شود. A از نسل استفاده از موارد استفاده از V است.

    از نظر گرافیکی، این رابطه با یک خط ثابت با یک فلش مثلث باز نشان داده می شود که به مورد استفاده والد اشاره می کند.

    یک رابطه تعمیم بین موارد استفاده زمانی استفاده می شود که لازم به ذکر است که موارد استفاده از کودک تمام ویژگی ها و رفتارهای موارد استفاده والدین را دارند.

    رابطه شمولبین دو مورد استفاده نشان می دهد که برخی از رفتارهای مشخص شده برای یک مورد استفاده به عنوان یک جزء در توالی رفتار مورد استفاده دیگر گنجانده شده است.

    یک رابطه شامل، از مورد استفاده A تا مورد استفاده B، نشان می‌دهد که هر نمونه از مورد استفاده A شامل ویژگی‌های کاربردی مشخص‌شده برای مورد استفاده B است.

    از نظر گرافیکی، این رابطه با یک خط نقطه چین با یک فلش (نوع رابطه وابستگی) نشان داده می شود که از مورد استفاده پایه به مورد استفاده شامل شده اشاره می کند.

    نمودار کلاس

    نمودار کلاس(نمودار کلاس) - راه اصلی برای توصیف ساختار استاتیک سیستم.

    نمودار کلاس از یک نوع اصلی از موجودیت ها استفاده می کند: کلاس ها (از جمله موارد خاص متعدد کلاس ها: رابط ها، انواع اولیه، کلاس های انجمن و غیره)، که بین آنها انواع اصلی روابط زیر برقرار می شود: وابستگی ها، انجمن ها، تعمیم ها، پیاده سازی ها.

    رابطه وابستگیبه طور کلی یک رابطه معنایی بین دو عنصر مدل یا دو مجموعه از چنین عناصری را نشان می دهد که یک ارتباط، تعمیم یا اجرا نیست. یک رابطه وابستگی در شرایطی استفاده می شود که برخی تغییرات در یک عنصر مدل ممکن است نیاز به تغییر در عنصر مدل وابسته دیگر داشته باشد.

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

    کلمات کلیدی خاص (کلیشه ها) را می توان بالای فلش قرار داد:

    • "دسترسی" - برای نشان دادن در دسترس بودن ویژگی های عمومی و عملیات کلاس منبع برای کلاس های مشتری است.
    • "bind" - کلاس کلاینت می تواند از برخی الگوها برای پارامترسازی بعدی خود استفاده کند.
    • "اشتقاق" - ویژگی های کلاس مشتری را می توان از ویژگی های کلاس منبع محاسبه کرد.
    • "واردات" - ویژگی های عمومی و عملیات کلاس منبع بخشی از کلاس مشتری می شوند، گویی مستقیماً در آن اعلام شده اند.
    • "تصفیه" - نشان می دهد که کلاس مشتری به دلایل تاریخی، زمانی که اطلاعات اضافی در جریان کار روی پروژه در دسترس قرار می گیرد، به عنوان اصلاح کلاس منبع عمل می کند.

    رابطه انجمنمربوط به وجود رابطه ای بین کلاس ها است. این رابطه با یک خط ثابت با نمادهای ویژه اضافی که ویژگی های فردی یک انجمن خاص را مشخص می کند نشان داده می شود. به عنوان کاراکترهای ویژه اضافی می توان از نام انجمن و همچنین نام و تعدد طبقات نقش انجمن استفاده کرد. نام یک انجمن یک عنصر اختیاری از تعیین آن است.

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

    رابطه ترکیبیک مورد خاص از یک رابطه تجمع است. این رابطه در خدمت برجسته کردن شکل خاصی از رابطه جزء-کل است که در آن اجزای سازنده به نوعی در کل هستند. ویژگی رابطه بین آنها در این است که اجزا نمی توانند جدا از کل عمل کنند، یعنی با از بین رفتن کل، تمام اجزای تشکیل دهنده آن نیز از بین می روند.

    رابطه تعمیمرابطه ای است بین یک عنصر کلی تر (والد یا جد) و یک عنصر خاص یا خاص (فرزند یا اولاد). همانطور که در نمودار کلاس اعمال می شود، این رابطه ساختار سلسله مراتبی کلاس ها و وراثت ویژگی ها و رفتار آنها را توصیف می کند. فرض بر این است که کلاس decendant تمام خصوصیات و رفتار کلاس ancestor را دارد و همچنین دارای خواص و رفتار خاص خود است که در کلاس ancestor وجود ندارد.

    نمودار خودکار

    نمودار خودکار(نمودار ماشین حالت) یا نمودار حالتدر UML 1 (نمودار نمودار حالت) یکی از راه‌های توصیف رفتار با جزئیات در UML است. در اصل، نمودارهای خودکار، همانطور که از نام آن پیداست، نموداری از حالات و انتقالات یک خودکار محدود هستند که با جزئیات و جزئیات اضافی زیادی بارگذاری شده است.

    نمودار حالت، فرآیند تغییر حالت های تنها یک کلاس، یا بهتر است بگوییم، یک نمونه از یک کلاس خاص را توصیف می کند، یعنی تمام تغییرات ممکن در وضعیت یک شی خاص را مدل می کند. در این حالت، تغییر در وضعیت یک شی می تواند ناشی از تأثیرات خارجی از اشیاء دیگر یا از خارج باشد. برای توصیف واکنش یک جسم به چنین تأثیرات خارجی است که از نمودارهای حالت استفاده می شود.

    در نمودار خودکار، یک نوع اصلی از موجودیت استفاده می شود - حالات، و یک نوع رابطه - انتقال، اما برای هر دوی آنها انواع زیادی، موارد خاص و نامگذاری های اضافی تعریف شده است. خودکار جنبه های دینامیکی سیستم شبیه سازی شده را در قالب یک نمودار جهت دار نشان می دهد که رئوس آن با حالت ها و قوس ها مربوط به انتقال هستند.

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

    فینال (نهایی)یک حالت حالت خاصی است که شامل هیچ گونه کنش داخلی (شبه دولت ها) نیز نمی شود. شی به طور پیش فرض پس از تکمیل خودکار در زمان پایان در این حالت خواهد بود.

    نمودار فعالیت

    هنگام مدل‌سازی رفتار یک سیستم طراحی‌شده یا تحلیل‌شده، نه تنها ارائه فرآیند تغییر حالات آن ضروری است، بلکه جزئیات اجرای الگوریتمی و منطقی عملیات انجام شده توسط سیستم نیز ضروری است.

    نمودار فعالیت(نمودار فعالیت) روش دیگری برای توصیف رفتار است که از نظر بصری شبیه فلوچارت خوب قدیمی یک الگوریتم است. برای شبیه سازی فرآیند انجام عملیات استفاده می شود.

    جهت اصلی استفاده از نمودارهای فعالیت، تجسم ویژگی های اجرای عملیات کلاس است، زمانی که لازم است الگوریتم هایی برای اجرای آنها ارائه شود.

    در نمودار فعالیت، یک نوع اصلی از موجودیت ها استفاده می شود - عمل، و یک نوع رابطه - انتقال (انتقال کنترل). همچنین از سازه هایی مانند چنگال ها، ادغام ها، اتصالات، انشعاب ها استفاده می شود. استفاده از فعل با کلمات توضیحی به عنوان نام یک عمل ساده توصیه می شود.

    نمودار توالی

    نمودار توالی(نمودار توالی) روشی برای توصیف رفتار سیستم "با مثال" است.

    در واقع نمودار توالی رکوردی از پروتکل یک جلسه خاص از سیستم (یا قطعه ای از چنین پروتکلی) است. در برنامه نویسی شی گرا، مهمترین چیز در زمان اجرا، ارسال پیام بین اشیاء همکار است. دنباله ای از ارسال پیام است که در این نمودار نمایش داده می شود، از این رو نام آن است.

    در نمودار توالی، یک نوع اصلی از موجودیت ها استفاده می شود - نمونه هایی از طبقه بندی کننده های تعاملی (عمدتاً کلاس ها، مؤلفه ها و بازیگران) و یک نوع رابطه - پیوندهایی که از طریق آنها پیام ها رد و بدل می شوند.

    انواع پیام های احتمالی (تصویر گرفته شده از larin.in):

    نمودار ارتباطی

    نمودار ارتباطی(نمودار ارتباطی) - راهی برای توصیف رفتار، از نظر معنایی معادل نمودار توالی. در واقع، این همان توصیف توالی تبادل پیام از نمونه‌های تعاملی طبقه‌بندی‌کننده‌ها است که فقط با ابزارهای گرافیکی دیگر بیان می‌شود.

    بنابراین، در نمودار ارتباطی، و همچنین در نمودار توالی، از یک نوع اصلی از موجودیت ها استفاده می شود - نمونه هایی از طبقه بندی کننده های تعاملی و یک نوع رابطه - اتصالات. با این حال، در اینجا تاکید بر زمان نیست، بلکه بر ساختار روابط بین موارد خاص است.

    نمودار مؤلفه

    نمودار مؤلفه(نمودار مؤلفه) - رابطه بین ماژول های (منطقی یا فیزیکی) که سیستم شبیه سازی شده را تشکیل می دهند را نشان می دهد.

    نوع موجودیت اصلی در نمودار مؤلفه، خود مؤلفه ها و همچنین رابط ها هستند که از طریق آنها رابطه بین مؤلفه ها نشان داده می شود. روابط زیر در نمودار مؤلفه اعمال می شود:

    • پیاده سازی بین مؤلفه ها و رابط ها (کامپوننت رابط را پیاده سازی می کند).
    • وابستگی بین اجزا و رابط ها (یک جزء از یک رابط استفاده می کند).

    نمودار قرارگیری

    نمودار قرارگیری(نمودار استقرار)، همراه با نمایش ترکیب و روابط عناصر سیستم، نحوه قرارگیری فیزیکی آنها بر روی منابع محاسباتی در حین اجرا را نشان می دهد.

    در نمودار قرارگیری، در مقایسه با نمودار مؤلفه، دو نوع موجودیت اضافه می‌شود: یک مصنوع، که پیاده‌سازی مؤلفه است و یک گره (می‌تواند یک طبقه‌بندی کننده باشد که نوع گره را توصیف می‌کند یا یک نمونه خاص) و همچنین یک رابطه ارتباطی بین گره ها، نشان می دهد که گره ها به طور فیزیکی در زمان اجرا به هم متصل می شوند.

    نمودار شی

    نمودار شی(نمودار شی) - نمونه ای از نمودار کلاس است.

    در نمودار شی، یک نوع اصلی از موجودیت ها استفاده می شود: اشیا (نمونه های کلاس)، که بین آنها روابط خاصی نشان داده شده است (اغلب موارد مرتبط). نمودارهای اشیاء ماهیت کمکی دارند - در واقع، اینها نمونه هایی هستند (ممکن است بگوییم تخلیه حافظه) که نشان می دهد چه چیزهایی وجود دارند و روابط بین آنها در یک لحظه خاص از عملکرد سیستم.

    نمودار ساختار داخلی(نمودار ساختار مرکب) برای ارائه دقیق‌تر طبقه‌بندی‌کننده‌های ساختاری، در درجه اول کلاس‌ها و اجزاء استفاده می‌شود.

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

    نمودار نمای کلی تعامل(نمودار نمای کلی تعامل) نوعی نمودار فعالیت با نحو توسعه یافته است: پیوندها به تعاملات (استفاده از تعامل) که توسط نمودارهای توالی تعریف می شوند می توانند به عنوان عناصر یک نمودار تعامل کلی عمل کنند.

    نمودار زمان بندی

    نمودار زمان بندی(نمودار زمان بندی) شکل خاصی از نمودار توالی است که در آن به تغییر حالت های نمونه های مختلف طبقه بندی کننده ها و همگام سازی زمانی آنها توجه ویژه ای می شود.

    نمودار بسته

    نمودار بسته(نمودار بسته) تنها ابزاری است که به شما امکان می دهد پیچیدگی خود مدل را مدیریت کنید.

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

    مدل رابطه نهاد (ER-model)

    آنالوگ نمودارهای کلاس(UML) می تواند باشد مدل ER، که در طراحی پایگاه داده ها (مدل رابطه ای) استفاده می شود.

    مدل رابطه نهادی (ER-model) یک مدل داده ای است که به شما امکان می دهد طرحواره های مفهومی حوزه موضوعی را توصیف کنید. مدل ER در طراحی پایگاه داده سطح بالا (مفهومی) استفاده می شود. با کمک آن می توانید موجودیت های کلیدی را برجسته کرده و روابطی را که می توان بین این موجودیت ها ایجاد کرد مشخص کرد. ویکیپدیا

    هر بخش از حوزه موضوعی را می توان به عنوان مجموعه ای از موجودیت ها نشان داد که بین آنها مجموعه ای از روابط وجود دارد.

    مفاهیم اساسی:

    ذات(نهاد) موجودی است که می توان آن را به گونه ای شناسایی کرد که آن را از سایر موجودات متمایز کند، برای مثال، مشتری 777. موجودیت در واقع مجموعه ای از صفات است.

    مجموعه نهاد(مجموعه نهاد) - مجموعه ای از موجودات از همان نوع (دارای ویژگی های یکسان).

    ارتباط(رابطه) ارتباطی است که بین چندین موجودیت ایجاد می شود.

    دامنه(دامنه) - مجموعه ای از مقادیر (دامنه) ویژگی.

    سه نوع پیوند باینری وجود دارد:

    • یک به یک- یک نمونه واحد از یک موجودیت یک کلاس با یک نمونه واحد از یک موجودیت کلاس دیگر مرتبط است، به عنوان مثال، HEAD - DEPARTMENT.
    • 1 تا Nیا یک به بسیاری- یک نمونه واحد از یک موجودیت یک کلاس با بسیاری از نمونه های موجودیت یک کلاس دیگر مرتبط است، به عنوان مثال، DEPARTMENT - EMPLOYEE.
    • N به Mیا بسیاری از بسیاری- بسیاری از نمونه های یک موجودیت یک کلاس با بسیاری از نمونه های موجودیت یک کلاس دیگر مرتبط هستند، به عنوان مثال، EMPLOYEE - PROJECT.
    • واژه نامه مفاهیم پایه در UML

      هدف - شی- موجودی که منحصر به فرد است و حالت و رفتار را در بر می گیرد.

      کلاس- توصیف مجموعه ای از اشیاء با ویژگی های مشترک حالت و عملیات تعیین کننده رفتار.

      رابط- مجموعه ای از عملیات نامگذاری شده که مجموعه ای از خدمات را تعریف می کند که می تواند توسط مصرف کننده درخواست شود و توسط ارائه دهنده خدمات ارائه شود.

      مشارکت- مجموعه ای از اشیاء که برای رسیدن به هدفی با هم تعامل دارند.

      بازیگر- موجودی که خارج از سیستم مدل شده است و مستقیماً با آن در تعامل است.

      جزء- بخش مدولار سیستم با مجموعه ای از رابط های مورد نیاز و ارائه شده به خوبی تعریف شده است.

      غیرواقعی، ساختگی- عنصری از اطلاعاتی که در فرآیند توسعه نرم افزار استفاده یا تولید می شود. به عبارت دیگر، آرتیفکت یک واحد فیزیکی پیاده سازی است که از یک عنصر مدل (مانند یک کلاس یا جزء) مشتق شده است.

      گره- یک منبع محاسباتی که مصنوعات روی آن قرار می گیرند و در صورت لزوم اجرا می شوند.

      نهادهای رفتاری برای توصیف رفتار در نظر گرفته شده اند. تنها دو نهاد رفتاری اساسی وجود دارد: حالت و عمل.

      حالت- دوره ای از چرخه زندگی یک شی، موجودی که در آن شیء شرایط خاصی را برآورده می کند و فعالیت خود را انجام می دهد یا منتظر وقوع رویدادی است.

      عمل- محاسبه اولیه اتمی

      دستگاهبسته ای است که مجموعه ای از مفاهیم لازم را برای نمایش رفتار موجودیت مدل شده به عنوان یک فضای گسسته با تعداد محدودی از حالت ها و انتقال ها تعریف می کند.

      طبقه بندییک توصیف کننده برای مجموعه ای از اشیاء از همان نوع است.

      خواندن اضافی

      • فاولر M. UML. مبانی، چاپ سوم
      • بوچ جی.، رمبو دی.، جاکوبسون آی. زبان UML. دفترچه راهنمای کاربر

    نشان دادن رفتار یک شی در طول عمر آن، از ایجاد شیء تا نابودی آن. هر نمودار وضعیت نشان دهنده مقداری خودکار است.

    برنامه عملیاتی

    در بخش توضیحات، با مجموعه کاراکترهای نمودار حالت اولیه مورد نیاز برای خواندن نمودارها آشنا شوید.

    پس از خواندن سایر بخش ها ("مثال"، "استفاده")، می توانید دست خود را در ایجاد نمودارهای حالت به تنهایی امتحان کنید.

    یادداشت ها (توضیحات)

    در اینجا مجموعه شخصیت های اصلی است نمودارهای حالتبرای خواندن نمودار لازم است. پس از خواندن سایر بخش ها («مثال»، «کاربرد»)، قادر به نوشتن خواهید بود نمودارهای حالتبدون کمک دیگری!

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

    چگونه از تکنیک خلاقیت استفاده کنیم

    نمودارهای حالت UML برای توصیف رفتار یک شی واحد در موارد استفاده چندگانه خوب هستند. اما آنها برای توصیف رفتاری که با تعامل بسیاری از اشیاء مشخص می شود بسیار مناسب نیستند. بنابراین، منطقی است که از سایر فناوری ها در ارتباط با نمودارهای حالت استفاده کنیم. به عنوان مثال، نمودارهای تعامل (فصل 4) در توصیف رفتار چندین شی در یک مورد استفاده عالی هستند، در حالی که نمودارهای فعالیت UML برای نشان دادن توالی اصلی اعمال چندین شی در چندین مورد استفاده خوب هستند.

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

    اگر از نمودارهای وضعیتی استفاده می کنید، سعی نکنید آنها را برای هر کلاس در سیستم ترسیم کنید. این رویکرد اغلب به خاطر کامل بودن کاملاً دقیق استفاده می شود، اما تقریباً همیشه هدر دادن تلاش است. از نمودارهای حالت فقط برای کلاس هایی استفاده کنید که رفتار جالبی از خود نشان می دهند، جایی که رسم نمودار وضعیت به شما کمک می کند تا بفهمید اوضاع چگونه پیش می رود.

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

    چگونه یاد بگیریم

    در اینجا سعی شده است ساده ترین راه برای یادگیری ارائه شود نمودارهای وضعیت UML.

    مانند بسیاری از زبان های دیگر، از مجموعه ای از کاراکترها برای توصیف استفاده می کند. معنی این نمادها را می توان در جدول در قسمت "یادداشت ها (توضیحات)" مشاهده کرد. هر علامت نام (اصطلاح) و املای خود را دارد. همچنین، هر اصطلاح با توضیح مختصری برای درک سریع ماهیت اصلی آن ارائه شده است.

    در مرحله بعد، توصیه می کنیم به بخش "نمونه ها" بروید نمودارهای حالتتا دست خود را در خواندن نمودارهای مختلف امتحان کنید. سپس باید بخش "استفاده" را مطالعه کنید، زیرا اگرچه تعداد انواع نمودارها در UML کم است، اما تنها در صورت استفاده از نمودارهای مناسب برای هدف مورد نظر می توانید حداکثر سود را از استفاده از آنها ببرید.

    مثال استفاده

    نمودارهای ماشین حالتیک تکنیک شناخته شده برای توصیف رفتار یک سیستم است. استاتچارت ها به هر شکلی از دهه 1960 وجود داشته اند و در روزهای اولیه برنامه نویسی شی گرا از آنها برای نمایش رفتار یک سیستم استفاده می شد. در رویکردهای شی گرا، شما یک نمودار حالت از یک کلاس را ترسیم می کنید تا رفتار یک شی منفرد را در طول عمر آن نشان دهید.

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

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

    انتقال یعنی حرکت از حالتی به حالت دیگر. هر انتقال دارای برچسب مخصوص به خود است که از سه بخش تشکیل شده است:
    trigger-identifier [محافظت]/فعالیت (trigger-signature /activity). همه آنها اختیاری هستند. معمولا، trigger-idتنها رویدادی است که می تواند باعث تغییر حالت شود.

    نگهبان، اگر مشخص شود، شرط منطقی است که باید برای انتقال انجام شود. فعالیت برخی از رفتارهای سیستم در طول انتقال است. این می تواند هر نوع بیان رفتاری باشد. شکل کامل یک ماشه شناسه می‌تواند شامل چندین رویداد و پارامتر باشد. انتقال از حالت انتظار (شکل 10.1) به حالت دیگر را می توان به صورت "در حالت انتظار، اگر شمع برداشته شود، یک قفل می بینید و به حالت قفل می روید."

    هر سه بخش از توضیحات انتقال اختیاری هستند. رد شدن از فعالیت به این معنی است که در طول انتقال هیچ اتفاقی نمی افتد. Skip guards به این معنی است که در صورت وقوع رویداد محرک، انتقال همیشه اجرا می شود. شناسه ماشه به ندرت گم می شود، اما این اتفاق می افتد. این بدان معنی است که انتقال بلافاصله رخ می دهد، که عمدتاً در حالت های فعال قابل مشاهده است.

    هنگامی که یک رویداد در یک حالت خاص رخ می دهد، تنها یک انتقال می تواند از این حالت انجام شود، برای مثال، در حالت قفل (شکل 10.1)، حفاظت ها باید متقابلاً منحصر به فرد باشند. اگر رویدادی رخ دهد و هیچ انتقال مجاز وجود نداشته باشد - برای مثال، بستن گاوصندوق در حالت انتظار، یا برداشتن شمع در حالی که در باز است - رویداد نادیده گرفته می‌شود.

    وضعیت نهایی ( حالت نهایی) به این معنی است که ماشین حالت به پایان رسیده است که باعث می شود شی کنترلر حذف شود. بنابراین، برای کسانی از شما که به اندازه کافی مراقب نبودند که به دام بیفتند، چون شی کنترلر وجود ندارد، ما مجبور هستیم خرگوش را دوباره در قفسش بگذاریم، کف را تمیز کنیم و سیستم را دوباره راه اندازی کنیم.

    به یاد داشته باشید که ماشین های حالت فقط می توانند اشیایی را نشان دهند که مستقیماً مشاهده می شوند یا روی آنها عمل می شود. بنابراین، در حالی که ممکن است انتظار داشته باشید وقتی در باز است، چیزی را داخل گاوصندوق بگذاریم یا چیزی را بیرون بیاوریم، ما آن را روی نمودار علامت گذاری نکردیم زیرا کنترلر نمی تواند چیزی در مورد آن به ما بگوید.

    هنگامی که توسعه دهندگان در مورد اشیا صحبت می کنند، اغلب به وضعیت اشیا اشاره می کنند، به این معنی که ترکیبی از تمام داده های موجود در فیلدهای شی است. با این حال، حالت در نمودار ماشین حالت یک مفهوم انتزاعی تر از حالت است. نکته این است که حالت های مختلف متضمن روش های متفاوتی برای واکنش به رویدادها هستند.

    فعالیت های داخلی در نمودار حالت

    دولت ها می توانند بدون استفاده از انتقال به رویدادها پاسخ دهند فعالیت های داخلی (فعالیت های داخلی)، در این صورت رویداد، نگهبان و فعالیت در داخل مستطیل حالت قرار می گیرند.

    روی انجیر شکل 10.2 وضعیت فعالیت های نماد داخلی و رویدادهای کمکی سیستم را نشان می دهد که می توانید در قسمت های متنی ویرایشگر مشاهده کنید. UI. یک فعالیت درونی مانند یک خود گذار است - انتقالی که به همان حالت باز می گردد. نحو فعالیت های داخلی بر اساس همان طرح منطقی رویدادها، حفاظت ها و رویه ها ساخته شده است.

    روی انجیر 10.2 همچنین فعالیت های ویژه را نشان می دهد: فعالیت های ورودی و خروجی. فعالیت ورودیهر زمان که وارد وضعیت شوید اجرا می شود. فعالیت خروجی- هر زمان که ایالت را ترک کردید. با این حال، فعالیت های داخلی آغاز نمی شود فعالیت ورودی و خروجی; این تفاوت بین فعالیت های داخلی وخود انتقالی ها .

    وضعیت فعالیت در نمودار وضعیت

    در حالت هایی که تاکنون توضیح دادیم، شی ساکت است و قبل از انجام هر کاری منتظر رویداد بعدی است. با این حال، حالت هایی ممکن است که در آنها شیء فعالیتی از خود نشان می دهد.

    دولت جستجوکردندر شکل 10.3 چنین حالتی است وضعیت فعالیت: فعالیت در حال انجام با نماد نشان داده می شود انجام دادن/; از این رو اصطلاح انجام فعالیت (فعال باش). پس از تکمیل جستجو، انتقال بدون فعالیت انجام می شود، مانند نمایش تجهیزات جدید (نمایش سخت افزار جدید). اگر یک رویداد لغو در طول فعالیت رخ دهد ( لغو)، سپس انجام فعالیتبه سادگی قطع می شود و ما به حالت برمی گردیم به روز رسانی پنجره سخت افزار.

    هم انجام فعالیت ها و هم فعالیت های عادی نشان دهنده تجلی برخی رفتارها هستند. تفاوت اساسی بین این دو این است که فعالیت‌های عادی "فورا" اتفاق می‌افتند و نمی‌توان آنها را با رویدادهای عادی قطع کرد، در حالی که فعالیت‌های do می‌توانند برای مدت محدودی اجرا شوند و می‌توانند قطع شوند، همانطور که در شکل 2 نشان داده شده است. 10.3. لحظه ای بودن برای سیستم های مختلف متفاوت تفسیر می شود. برای سیستم‌های بلادرنگ، این می‌تواند چندین دستورالعمل ماشین طول بکشد، و برای نرم‌افزار دسکتاپ، ممکن است چندین ثانیه طول بکشد.

    AT UML 1فعالیت های معمولی با این اصطلاح مشخص می شد عمل(عمل) و اصطلاح فعالیت(فعالیت) فقط برای استفاده شد انجام فعالیت ها.

    ابر دولت ها

    اغلب اتفاق می افتد که چندین دولت دارای انتقال و فعالیت های داخلی مشترک هستند. در چنین مواردی، می‌توانید آن‌ها را به حالت‌های فرعی تبدیل کنید و رفتار کلی را به یک ابرحالت (ابر حالت) منتقل کنید، همانطور که در شکل نشان داده شده است. 10.4. بدون ابردولت، ما باید انتقال را ترسیم کنیم لغو(لغو) برای هر سه ایالت در یک ایالت جزئیات اتصال را وارد کنید.

    کشورهای موازی

    حالت ها را می توان به چندین حالت همزمان تقسیم کرد که همزمان اجرا می شوند. روی انجیر شکل 10.5 یک ساعت زنگ دار ساده را نشان می دهد که می تواند سی دی یا رادیو را روشن کند و زمان فعلی یا زمان سیگنال را نشان دهد.

    گزینه های CD/رادیو و زمان فعلی/زمان زنگ هشدار موازی هستند. اگر می‌خواهید این را با یک نمودار حالت غیر موازی نشان دهید، در نهایت با یک نمودار درهم و برهم مواجه می‌شوید زیرا حالت‌ها باید اضافه شوند. تقسیم این دو رفتار به دو نمودار حالت، آن را بسیار واضح تر می کند.

    برنج. 10.5 نیز شامل می شود حالت پیش از تاریخ(دولت کاذب تاریخی). این بدان معناست که وقتی ساعت روشن می شود، گزینه رادیو/CD به حالتی تغییر می کند که ساعت در زمان خاموش شدن در آن قرار داشت. پیکانی که از تاریخ بیرون می‌آید نشان می‌دهد که کدام دولت در ابتدا وجود داشته است، زمانی که تاریخ وجود نداشته است.

    اجرای نمودارهای وضعیتی

    نمودار حالت را می توان به سه روش اصلی پیاده سازی کرد: با استفاده از دستور سوئیچ تودرتو، الگوی حالت و جدول وضعیت. مستقیم ترین رویکرد برای کار با نمودارهای حالت، عبارت سوئیچ تودرتو است، مانند آنچه در شکل 1 است. 10.6.

    اگرچه این روش ساده است، اما حتی برای این مورد ساده بسیار طولانی است. علاوه بر این، با این رویکرد از دست دادن کنترل بسیار آسان است، بنابراین استفاده از آن را حتی در شرایط ابتدایی توصیه نمی کنیم.
    الگوی State نشان دهنده سلسله مراتبی از کلاس های حالت برای مدیریت رفتار حالت است. هر ایالت در نمودار حالت دارای زیر کلاس حالت خاص خود است. کنترل کننده برای هر رویداد متدهایی دارد که به سادگی به کلاس state هدایت می شوند. نمودار وضعیت نشان داده شده در شکل. 10.1 را می توان با استفاده از کلاس های نشان داده شده در شکل پیاده سازی کرد. 10.7.

    بالای سلسله مراتب یک کلاس انتزاعی است که شامل توصیفی از تمام متدهایی است که رویدادها را مدیریت می کنند، اما هیچ پیاده سازی ندارند.
    برای هر حالت خاص، کافی است روش کنترل کننده یک رویداد خاص که انتقال از حالت را آغاز می کند، بازنویسی کنید.
    جدول حالت، نمودار حالت را به عنوان داده نشان می دهد.

    بنابراین، نمودار در شکل. 10.1 را می توان در قالب یک جدول ارائه کرد. 10.1.
    سپس یک مفسر می سازیم که از جدول حالت در حین اجرای برنامه استفاده می کند، یا یک تولید کننده کد که کلاس هایی را بر اساس این جدول تولید می کند.

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

    پیاده سازی های ارائه شده تقریباً حداقل هستند، اما ایده ای از نحوه اعمال می کنند نمودارهای حالت. در هر مورد، پیاده‌سازی مدل‌های حالت منجر به یک برنامه نسبتاً کلیشه‌ای می‌شود، بنابراین معمولاً بهتر است از نوعی تولید کد برای این کار استفاده کنید.

    با عضویت در اخبار سایت می توانید فرم اشتراک را در ستون سمت راست سایت پیدا کنید.

    اگر می خواهید به صورت حرفه ای فریلنسری را بیاموزید، شما را به دوره "" دعوت می کنیم.