مقاله فرزند 3 - NewsID: 2465 - گروه: 10 - محدوده منبع: صفحات 103-114 PDFفروش یا انتشار این ترجمه منوط به داشتن مجوز لازم از صاحب حقوق اثر است.
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 نمودار Types
نمودار Types، metaclassهای انتزاعی مرتبط با naming و typing elementها را تعریف میکند.
شکل 10.2 - classهای تعریفشده در نمودار Types
10.1.1 Comment
توصیف
Basic::Comment از تعریف Comment در Abstractions::Comments استفاده مجدد میکند.
Generalizationها
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ها
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ها
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ها
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.2.1 Class
توصیف
class یک type است که instanceهای آن object هستند.
Generalizationها
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ها
سند در همین نقطه یک توصیف از Constructs::Relationship نیز ارائه میکند: Constructs::Relationship تعریف Relationship را از Abstractions::Relationships استفاده مجدد میکند و یک specialization به Constructs::Element میافزاید.
Generalizationها
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.3.1 DataType
توصیف
DataType یک class انتزاعی است که بهعنوان superclass مشترک برای انواع مختلف data type عمل میکند.
Generalizationها
Attributeها
هیچ attribute اضافی وجود ندارد.
معناشناسی
DataType class انتزاعیای است که مفهوم عمومی data type بودن را نمایش میدهد؛ یعنی typeای که instanceهای آن فقط با value خود شناسایی میشوند.
نمادگذاری
Basic::DataType بهعنوان class انتزاعی notation ندارد.
10.3.2 Enumeration
توصیف
enumeration مجموعهای از literalها را تعریف میکند که میتوانند بهعنوان valueهای آن استفاده شوند.
Generalizationها
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ها
Attributeها
enumeration: Enumeration[0..1] - enumerationای که این literal به آن تعلق دارد.
معناشناسی
به بخش Enumeration مراجعه کنید.
نمادگذاری
به بخش Enumeration مراجعه کنید.
10.3.4 PrimitiveType
توصیف
primitive type یک data type است که توسط infrastructure زیربنایی پیادهسازی میشود و برای modeling در دسترس قرار میگیرد.
Generalizationها
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.4.1 Package
توصیف
package یک container برای typeها و packageهای دیگر است.
Generalizationها
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ها
Attributeها
package: Package[0..1] - package دربرگیرنده.
معناشناسی
معناشناسی اضافی وجود ندارد.
نمادگذاری
containment typeها در packageها همان notation مربوط به Constructs::Packages را استفاده میکند، با حذف جنبههایی که model Basic نمیتواند نمایش دهد.
اعتبار ترجمه: ترجمه با کمک هوش مصنوعی. فروش یا انتشار این ترجمه منوط به داشتن مجوز لازم از صاحب حقوق اثر است.