در علوم رایانه سیستم نوع نامی (به انگلیسی: nominal or nominative type system) (یا سیستم نوع مبتنی بر نام) یک کلاس عمده از سیستم انواع است، که در آن سازگاری و معادل بودن انواع داده، توسط «اعلام صریح» انجام می شود همچنین ممکن است خود «نام انواع» سازگاری یا معادل بودن را تعیین کند.

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

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

نوع دهی نامی

ویرایش

نوع دهی نامی یعنی دو متغیر در حالت نوع-سازگار قرار دارند اگر و تنها اگر در اعلام آنها، نوع مشابه نامگذاری شده باشد.

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

زیرنوع دهی نامی

ویرایش

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

زبان های C++، C#، Java، Objective-C، Delphi، Swift، Julia، و Rust همه از نوع دهی نامی، و زیرنوع دهی نامی استفاده می کنند.

بعضی از زبان های نامی-زیرنوعی، مثل جاوا و سی شارپ، به کلاس ها اجازه می دهند تا به صورت final تعریف شوند (در عبارات شناسی سی شارپ موجود است)، و نشان می دهد که زیرنوع سازی بیشتر مجاز نیست.

مقایسه

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

منابع

ویرایش