UML Core::Basic: Typeها، Classها، DataTypeها و Packageها

UML Core::Basic: Typeها، Classها، DataTypeها و Packageها

توسط admin | گروه مهندسی نرم افزار | 1405/05/21

نظرات 0

10 Core::Basic

package Basic از InfrastructureLibrary::Core یک زبان مدل‌سازی حداقلی مبتنی بر class فراهم می‌کند که زبان‌های پیچیده‌تر می‌توانند بر پایه آن ساخته شوند. این package برای استفاده مجدد توسط لایه Essential در Meta-Object Facility (MOF) طراحی شده است. metaclassهای Basic با چهار diagram مشخص می‌شوند: Types، Classes، DataTypes و Packages. Basic را می‌توان instance خود آن در نظر گرفت. نسخه‌های پیچیده‌تر سازه‌های Basic در Constructs تعریف می‌شوند که برای استفاده مجدد توسط لایه Complete در MOF و نیز UML Superstructure طراحی شده است.

شکل 10.1 روابط میان packageهای Core و نحوه مشارکت آن‌ها در منشأ و تکامل package Basic را نشان می‌دهد. package Basic، model elementها را از package PrimitiveTypes import می‌کند. Basic همچنین metaclassهایی دارد که از metaclassهای مشترک تعریف‌شده در packageهای موجود در Abstractions مشتق شده‌اند. این metaclassهای مشترک با copy در Basic گنجانده می‌شوند.

شکل 10.1 - package Core در مالکیت package InfrastructureLibrary قرار دارد و چند subpackage را شامل می‌شود.
شکل 10.1 - package Core در مالکیت package InfrastructureLibrary قرار دارد و چند subpackage را شامل می‌شود.

10.1 نمودار Types

نمودار Types، metaclassهای انتزاعی مرتبط با naming و typing elementها را تعریف می‌کند.

شکل 10.2 - classهای تعریف‌شده در نمودار Types
شکل 10.2 - classهای تعریف‌شده در نمودار Types

10.1.1 Comment

توصیف

Basic::Comment از تعریف Comment در Abstractions::Comments استفاده مجدد می‌کند.

Generalizationها

  • Element، صفحه 93

Attributeها

  • body: String[0..1] - رشته‌ای را مشخص می‌کند که متن comment است.

Associationها

  • annotatedElement: Element[*] - property متناظر در Abstractions را بازتعریف می‌کند.

Constraintها

هیچ constraint اضافی وجود ندارد.

معناشناسی

معناشناسی اضافی وجود ندارد.

نمادگذاری

نمادگذاری اضافی وجود ندارد.

10.1.2 Element

element یکی از اجزای تشکیل‌دهنده model است.

توصیف

Element یک metaclass انتزاعی و بدون superclass است. از آن به‌عنوان superclass مشترک همه metaclassهای Infrastructure Library استفاده می‌شود.

Generalizationها

هیچ‌کدام.

Attributeها

هیچ attribute اضافی وجود ندارد.

Associationها

هیچ association اضافی وجود ندارد.

Constraintها

هیچ constraint اضافی وجود ندارد.

معناشناسی

subclassهای Element معناشناسی متناسب با مفهوم خود را فراهم می‌کنند.

نمادگذاری

برای Element notation عمومی وجود ندارد. subclassهای مشخص Element notation خود را تعریف می‌کنند.

10.1.3 NamedElement

توصیف

named element، elementهای دارای name را نمایش می‌دهد.

Generalizationها

  • Element، صفحه 93

Attributeها

  • name: String[0..1] - نام element.

معناشناسی

elementهای دارای name instanceهایی از NamedElement هستند. name یک named element اختیاری است. اگر مشخص شود، هر string معتبر، از جمله string تهی، قابل استفاده است.

نمادگذاری

Basic::NamedElement به‌عنوان class انتزاعی notation ندارد.

10.1.4 Type

توصیف

type یک named element است که به‌عنوان type یک typed element استفاده می‌شود.

Generalizationها

  • NamedElement، صفحه 93

Attributeها

هیچ attribute اضافی وجود ندارد.

معناشناسی

Type class انتزاعی‌ای است که مفهوم عمومی type یک typed element را نمایش می‌دهد و مجموعه valueهایی را که typed element می‌تواند به آن‌ها ارجاع دهد محدود می‌کند.

نمادگذاری

Basic::Type به‌عنوان class انتزاعی notation ندارد.

10.1.5 TypedElement

توصیف

typed element نوعی named element است که elementهای دارای type را نمایش می‌دهد.

Generalizationها

  • NamedElement، صفحه 93

Attributeها

  • type: Type[0..1] - type مربوط به element.

معناشناسی

elementهای دارای type instanceهایی از TypedElement هستند. typed element می‌تواند به‌صورت اختیاری فاقد type باشد. type مربوط به typed element مجموعه valueهایی را که element می‌تواند به آن‌ها ارجاع دهد محدود می‌کند.

نمادگذاری

Basic::TypedElement به‌عنوان class انتزاعی notation ندارد.

10.2 نمودار Classes

نمودار Classes سازه‌های لازم برای مدل‌سازی مبتنی بر class را تعریف می‌کند.

شکل 10.3 - classهای تعریف‌شده در نمودار Classes
شکل 10.3 - classهای تعریف‌شده در نمودار Classes

10.2.1 Class

توصیف

class یک type است که instanceهای آن object هستند.

Generalizationها

  • Type، صفحه 94

Attributeها

  • isAbstract: Boolean - وقتی class انتزاعی است true خواهد بود. مقدار پیش‌فرض false است.
  • ownedAttribute: Property[*] - attributeهایی که در مالکیت class هستند. attributeهای inherited را شامل نمی‌شود. attributeها با instanceهای Property نمایش داده می‌شوند.
  • ownedOperation: Operation[*] - operationهایی که در مالکیت class هستند. operationهای inherited را شامل نمی‌شود.
  • superClass: Class[*] - superclassهای بلافصل class که class از آن‌ها inheritance دارد.

معناشناسی

classها attribute و operation دارند و در hierarchyهای inheritance شرکت می‌کنند. multiple inheritance مجاز است. instanceهای class object هستند. وقتی class abstract باشد نمی‌تواند direct instance داشته باشد. هر direct instance یک class عینی، یعنی non-abstract، هم‌زمان indirect instance superclassهای آن class نیز هست. هر object برای هر attribute مستقیم و inherited class خود یک slot دارد. object اجازه فراخوانی operationهای تعریف‌شده در class خود و superclassهای class را می‌دهد. context چنین invocationای همان object فراخوانی‌شده است.

یک class نمی‌تواند به featureهای private کلاس دیگر یا featureهای protected در class دیگری که supertype آن نیست دسترسی داشته باشد. هنگام ایجاد و حذف associationها، حداقل یک end باید اجازه access به class را بدهد.

نمادگذاری

notation مربوط به Basic::Class همان notation Constructs::Class است با حذف جنبه‌هایی از notation که توسط model Basic قابل نمایش نیستند.

10.2.2 MultiplicityElement

توصیف

Basic::MultiplicityElement از تعریف Abstractions::MultiplicityElement استفاده مجدد می‌کند.

Generalizationها

  • Element، صفحه 93

سند در همین نقطه یک توصیف از Constructs::Relationship نیز ارائه می‌کند: Constructs::Relationship تعریف Relationship را از Abstractions::Relationships استفاده مجدد می‌کند و یک specialization به Constructs::Element می‌افزاید.

Generalizationها

  • Element، صفحه 93

Attributeها

هیچ attribute اضافی وجود ندارد.

Associationها

هیچ association اضافی وجود ندارد.

Constraintها

هیچ constraint اضافی وجود ندارد.

معناشناسی

معناشناسی اضافی وجود ندارد.

نمادگذاری

نمادگذاری اضافی وجود ندارد.

10.2.3 Operation

توصیف

operation در مالکیت class قرار دارد و می‌تواند در context objectهایی که instance همان class هستند invocation شود. operation هم typed element و هم multiplicity element است.

Generalizationها

  • TypedElement، صفحه 94
  • MultiplicityElement مطابق ارجاع متن سند در بخش TypedElement، صفحه 94

Attributeها

  • class: Class[0..1] - class مالک operation.
  • ownedParameter: Parameter[*] {ordered, composite} - parameterهای operation.
  • raisedException: Type[*] - exceptionهایی که ممکن‌بودن آن‌ها هنگام invocation operation اعلان شده است.

معناشناسی

operation متعلق به یک class است. operation را می‌توان روی هر objectای فراخوانی کرد که مستقیم یا غیرمستقیم instance همان class باشد. در چنین invocationای execution context شامل این object و valueهای parameterهاست. type operation، در صورت وجود، type نتیجه‌ای است که operation برمی‌گرداند و multiplicity آن multiplicity نتیجه است. operation می‌تواند با مجموعه‌ای از typeها مرتبط باشد که exceptionهای احتمالی قابل raise شدن توسط operation را نمایش می‌دهند.

نمادگذاری

notation در متن سند مطابق Constructs::Class بیان شده است، با حذف جنبه‌هایی که توسط model Basic قابل نمایش نیستند.

10.2.4 Parameter

توصیف

parameter یک typed element است که parameter یک operation را نمایش می‌دهد.

Attributeها

  • operation: Operation[0..1] - operation مالک parameter.

معناشناسی

هنگام invocation یک operation، می‌توان برای هر parameter یک argument به operation داد. هر parameter type و multiplicity دارد. هر Basic::Parameter با یک operation مرتبط است، هرچند subclassهای Parameter در بخش‌های دیگر model UML الزاماً نباید با operation مرتبط باشند؛ ازاین‌رو multiplicity برابر 0..1 است.

نمادگذاری

notation مربوط به Basic::Parameter همان Constructs::Parameter است با حذف جنبه‌هایی که model Basic نمی‌تواند نمایش دهد.

10.2.5 Property

توصیف

property یک typed element است که attribute یک class را نمایش می‌دهد.

Generalizationها

  • TypedElement، صفحه 94
  • MultiplicityElement مطابق ارجاع متن سند در بخش TypedElement، صفحه 94

Attributeها

  • class: Class[0..1] - class مالک property که property attribute آن است.
  • default: String[0..1] - رشته‌ای که ارزیابی می‌شود تا هنگام instantiate شدن object از owning class، default value مربوط به attribute را فراهم کند.
  • isComposite: Boolean - اگر true باشد، object دربرگیرنده attribute container مربوط به object یا value درون attribute است. مقدار پیش‌فرض false است.
  • isDerived: Boolean - اگر true باشد، value attribute از اطلاعات موجود در جای دیگری مشتق می‌شود. مقدار پیش‌فرض false است.
  • isReadOnly: Boolean - اگر true باشد، پس از initialization نمی‌توان در attribute نوشت. مقدار پیش‌فرض false است.
  • opposite: Property[0..1] - دو attribute با نام‌های attr1 و attr2 متعلق به objectهای o1 و o2، که ممکن است همان object باشند، می‌توانند با یکدیگر pair شوند به‌گونه‌ای که o1.attr1 به o2 ارجاع دهد اگر و تنها اگر o2.attr2 به o1 ارجاع دهد. در این حالت attr1 opposite مربوط به attr2 و attr2 opposite مربوط به attr1 است.

معناشناسی

property یک attribute از class را نمایش می‌دهد. property دارای type و multiplicity است. وقتی property با opposite pair شود، این دو property دو attribute با constraint متقابل را نمایش می‌دهند. معناشناسی دو property که opposite متقابل یکدیگرند همان معناشناسی associationهای دوطرفه قابل پیمایش در Constructs است، با این استثنا که association linkهای صریح به‌عنوان instance ندارد و فاقد name است.

نمادگذاری

وقتی Basic::Property opposite ندارد، notation آن همان Constructs::Property هنگام استفاده به‌عنوان attribute است، با حذف جنبه‌هایی که model Basic نمی‌تواند نمایش دهد. معمولاً اگر type property یک data type باشد، attribute در attribute compartment جعبه class نمایش داده می‌شود و اگر type property یک class باشد، با notation پیکان‌مانند association نشان داده می‌شود.

وقتی property opposite داشته باشد، زوج attributeها با همان notation یک Constructs::Association دارای دو end قابل پیمایش نمایش داده می‌شوند، با حذف جنبه‌هایی که model Basic نمی‌تواند نمایش دهد.

10.3 نمودار DataTypes

نمودار DataTypes، metaclassهایی را که data typeها را تعریف می‌کنند مشخص می‌کند.

شکل 10.4 - classهای تعریف‌شده در نمودار DataTypes
شکل 10.4 - classهای تعریف‌شده در نمودار DataTypes

10.3.1 DataType

توصیف

DataType یک class انتزاعی است که به‌عنوان superclass مشترک برای انواع مختلف data type عمل می‌کند.

Generalizationها

  • Type، صفحه 94

Attributeها

هیچ attribute اضافی وجود ندارد.

معناشناسی

DataType class انتزاعی‌ای است که مفهوم عمومی data type بودن را نمایش می‌دهد؛ یعنی typeای که instanceهای آن فقط با value خود شناسایی می‌شوند.

نمادگذاری

Basic::DataType به‌عنوان class انتزاعی notation ندارد.

10.3.2 Enumeration

توصیف

enumeration مجموعه‌ای از literalها را تعریف می‌کند که می‌توانند به‌عنوان valueهای آن استفاده شوند.

Generalizationها

  • DataType، صفحه 99

Attributeها

  • ownedLiteral: EnumerationLiteral[*] {ordered, composite} - collection ordered از literalهای enumeration.

معناشناسی

enumeration یک مجموعه محدود و ordered از valueها مانند {red, green, blue} تعریف می‌کند. valueهایی که typed elementهای دارای type enumeration نمایش می‌دهند باید از همین مجموعه گرفته شوند.

نمادگذاری

notation مربوط به Basic::Enumeration همان Constructs::Enumeration است با حذف جنبه‌هایی که model Basic نمی‌تواند نمایش دهد.

10.3.3 EnumerationLiteral

توصیف

enumeration literal یک value از enumeration است.

Generalizationها

  • NamedElement، صفحه 93

Attributeها

  • enumeration: Enumeration[0..1] - enumerationای که این literal به آن تعلق دارد.

معناشناسی

به بخش Enumeration مراجعه کنید.

نمادگذاری

به بخش Enumeration مراجعه کنید.

10.3.4 PrimitiveType

توصیف

primitive type یک data type است که توسط infrastructure زیربنایی پیاده‌سازی می‌شود و برای modeling در دسترس قرار می‌گیرد.

Generalizationها

  • DataType، صفحه 99

Attributeها

هیچ attribute اضافی وجود ندارد.

معناشناسی

primitive typeهایی که در خود model Basic استفاده می‌شوند عبارت‌اند از Integer، Boolean، String و UnlimitedNatural. معناشناسی مشخص آن‌ها توسط context ابزار یا در extensionهای metamodel، مانند OCL، تعیین می‌شود.

نمادگذاری

notation primitive type وابسته به implementation است. notation primitive typeهای استفاده‌شده در metamodel UML در «package PrimitiveTypes» در صفحه 171 ارائه شده است.

10.4 نمودار Packages

نمودار Packages سازه‌های Basic مرتبط با Packageها و محتوای آن‌ها را تعریف می‌کند.

شکل 10.5 - classهای تعریف‌شده در نمودار Packages
شکل 10.5 - classهای تعریف‌شده در نمودار Packages

10.4.1 Package

توصیف

package یک container برای typeها و packageهای دیگر است.

Generalizationها

  • NamedElement، صفحه 93

Attributeها

  • nestedPackage: Package[*] - مجموعه packageهای دربرگرفته‌شده.
  • nestingPackage: Package[0..1] - package دربرگیرنده.
  • ownedType: Type[*] - مجموعه typeهای دربرگرفته‌شده.

معناشناسی

Packageها روشی برای گروه‌بندی typeها و packageها فراهم می‌کنند که می‌تواند برای درک و مدیریت model مفید باشد. یک package نمی‌تواند خودش را در بر بگیرد.

نمادگذاری

containment مربوط به packageها و typeها در packageها از همان notation مربوط به Constructs::Packages استفاده می‌کند، با حذف جنبه‌هایی که model Basic قادر به نمایش آن‌ها نیست.

10.4.2 Type

یادداشت: propertyهای اضافی - به Type در صفحه 94 مراجعه کنید.

توصیف

type می‌تواند درون یک package قرار گیرد.

Generalizationها

  • NamedElement، صفحه 93

Attributeها

  • package: Package[0..1] - package دربرگیرنده.

معناشناسی

معناشناسی اضافی وجود ندارد.

نمادگذاری

containment typeها در packageها همان notation مربوط به Constructs::Packages را استفاده می‌کند، با حذف جنبه‌هایی که model Basic نمی‌تواند نمایش دهد.

امتیاز کاربران به این مقاله

☆☆☆☆☆

0 نفر امتیاز داده اند. میانگین: 0.0 از 5

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

0 / 500

اطلاعات تماس

  • آدرس:اصفهان-خیابان ام کلثوم غربی - بعد خیابان تخم چی - بیست متر بعد از پیتزا ننه شب - کوچه تعمیر گاه سمار زغالی - پلاک 354 - درب مشکی - طبقه هفتم
  • آدرس ایمیل:najafzade@gmail.com
  • وب سایت:http://www.a00b.com/
  • تلفن ثابت:(+98)9131253620
  • تلفن همراه:09131253620