موضوع (علوم کامپیوتر)

از ویکیپدیا، دانشنامه آزاد
رفتن به ناوبری پرش به جستجو

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

در پارادایم برنامه نویسی شی گرا ، شیء می تواند ترکیبی از متغیرها ، توابع و ساختار داده ها باشد. به ویژه در تغییرات پارادایم مبتنی بر کلاس ، به نمونه خاصی از یک کلاس اشاره می کند .

در مدل رابطه ای مدیریت پایگاه داده ، یک شی می تواند یک جدول یا ستون یا ارتباط بین داده ها و موجودیت پایگاه داده باشد (مانند ارتباط سن شخص با شخص خاص). [1]

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

تمایز مهم در زبان های برنامه نویسی تفاوت بین زبان شی گرا و زبان مبتنی بر شی است. یک زبان معمولاً مبتنی بر شیء در نظر گرفته می شود اگر شامل قابلیت های اساسی برای یک شی باشد: هویت ، ویژگی ها و ویژگی ها. در صورتی که یک زبان مبتنی بر شی باشد و دارای قابلیت چند شکلی ، وراثت ، محصورسازی و احتمالاً ترکیب باشد ، یک زبان شی گرا در نظر گرفته می شود . پلی مورفیسم به توانایی اضافه بار کردن نام یک تابع با رفتارهای متعدد اشاره می کند که بر اساس آنها شیء (ا) به آن منتقل می شود. ارسال پیام متعارف فقط در مورد شیء اول تبعیض قائل می شود و آن را "ارسال پیام" به آن شی می داند. با این حال ، برخی از زبان های OOP مانند Flavors و Common Lisp Object System(CLOS) تمایز بیشتر از اولین پارامتر تابع را فعال می کند. [2] وراثت توانایی طبقه بندی یک کلاس شی ، ایجاد یک کلاس جدید است که یک زیر کلاس از یک کلاس قبلی است و همه محدودیت ها و رفتارهای والدین را به ارث می برد ، اما یک یا چند مورد دیگر را اضافه می کند و یا تغییر می دهد. به [3] [4]

برنامه نویسی شی گرا

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

به جای ساختار برنامه ها به عنوان کد و داده ، یک سیستم شی گرا با استفاده از مفهوم "شی" این دو را ادغام می کند. یک شی دارای وضعیت (داده) و رفتار (کد) است. اشیاء می توانند با چیزهایی که در دنیای واقعی یافت می شوند مطابقت داشته باشند. بنابراین به عنوان مثال ، یک برنامه گرافیکی دارای اشیایی مانند دایره ، مربع ، منو خواهد بود. یک سیستم خرید آنلاین دارای اشیایی مانند سبد خرید ، مشتری ، محصول خواهد بود. سیستم خرید از رفتارهایی مانند سفارش مکان ، پرداخت و تخفیف پشتیبانی می کند . اشیاء به صورت سلسله مراتب طبقاتی طراحی شده اند. بنابراین به عنوان مثال در سیستم خرید ممکن است کلاس های سطح بالایی مانند محصولات الکترونیکی وجود داشته باشد، محصول آشپزخانه و کتاب . ممکن است اصلاحات بیشتر برای مثال در زیر وجود دارد محصولات الکترونیکی : دستگاه پخش سی دی، دی وی دی پلیر ، و غیره این کلاس ها و زیر به مطابقت مجموعه و زیر مجموعه های در منطق ریاضی. [5] [6]

اشیاء تخصصی

یک مفهوم مهم برای اشیاء ، الگوی طراحی است . یک الگوی طراحی یک الگوی قابل استفاده مجدد برای حل یک مشکل رایج ارائه می دهد. شرح اجسام زیر نمونه هایی از رایج ترین الگوهای طراحی برای اشیاء است. [7]

  • شیء تابع : یک شی با یک روش واحد (در C ++ ، این روش عملگر تابع ، "عملگر ()") است که بسیار شبیه یک تابع عمل می کند (مانند نشانگر C/C ++ به یک تابع).
  • جسم تغییر ناپذیر : جسمی است که در زمان ایجاد با حالت ثابتی تنظیم شده و پس از آن تغییر نمی کند.
  • شیء درجه یک: شیئی است که می توان بدون محدودیت از آن استفاده کرد.
  • شیء کانتینر : شیئی است که می تواند شامل اجسام دیگر باشد.
  • شیء کارخانه : شیئی که هدف آن ایجاد اشیاء دیگر است.
  • متابوژه : ابژه ای است که می توان اشیاء دیگر را از آن ایجاد کرد (با یک کلاس مقایسه کنید ، که لزوماً یک شیء نیست).
  • نمونه اولیه : یک شیء فوق تخصصی است که با کپی می توان اجسام دیگر را از آن ایجاد کرد
  • اعتراض خدا : شیئی که بیش از حد می داند یا انجام می دهد (نمونه ای از یک الگوی ضد الگو است ).
  • آبجکت Singleton : شیئی است که تنها نمونه کلاس خود در طول عمر برنامه است.
  • آبجکت فیلتر : جسمی است که یک جریان داده را به عنوان ورودی خود دریافت کرده و آن را به خروجی شی تبدیل می کند. اغلب جریانهای ورودی و خروجی جریانهایی از شخصیتها هستند ، اما اینها همچنین ممکن است جریانهای اشیاء دلخواه باشند. اینها معمولاً در بسته بندی ها استفاده می شوند زیرا اجرای فعلی را با انتزاعی که در سمت توسعه دهنده مورد نیاز است پنهان می کنند.

اشیاء توزیع شده

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

یک روش استاندارد برای بسته بندی اشیاء توزیع شده از طریق زبان تعریف رابط (IDL) است. یک IDL کلاینت را از همه جزئیات شیء سرور توزیع شده محافظت می کند. جزئیاتی مانند این که شیء در کدام رایانه قرار دارد ، از چه زبان برنامه نویسی استفاده می کند ، از چه سیستم عامل و سایر مسائل مربوط به پلتفرم استفاده می کند. IDL همچنین معمولاً بخشی از یک محیط توزیع شده است که خدماتی مانند معاملات و تداوم به همه اشیاء را به صورت یکنواخت ارائه می دهد. دو تا از ترین استانداردهای محبوب برای اشیاء توزیع شده هستند گروه مدیریت شی را CORBA استاندارد و مایکروسافت را DCOM. [8]

علاوه بر اشیاء توزیع شده ، تعدادی افزونه دیگر به مفهوم اصلی یک شی پیشنهاد شده است تا محاسبه توزیع شده فعال شود:

  • اشیاء پروتکل اجزای یک پشته پروتکل هستند که ارتباطات شبکه را در یک رابط شی گرا محصور می کنند.
  • اشیاء تکراری گروهی از اشیاء توزیع شده (به نام ماکت ) هستند که یک پروتکل چند حزبی توزیع شده را برای دستیابی به سازگاری بالا بین حالتهای داخلی خود اجرا می کنند و به طور هماهنگ به درخواست ها پاسخ می دهند. به عنوان مثال می توان بهاجسام CORBA مقاوم در برابر خطا اشاره کرد.
  • اجسام زنده توزیع شده (یا به سادگی اجسام زنده ) [9] مفهوم شی تکرار شده را به گروه هایی از ماکت هاتعمیممی دهند که ممکن است در داخل از هر پروتکل توزیع شده استفاده کنند ، و شاید فقط یک سازگاری ضعیف بین ایالت های محلی آنها ایجاد شود.

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

وب معنایی

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

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

با این حال ، تفاوت های مهمی بین اشیاء OWL و اشیاء برنامه نویسی شی گرا سنتی وجود دارد. اشیاء سنتی معمولاً با وراثت واحد به سلسله مراتب استاتیک گردآوری می شوند ، اما اشیاء OWL پویا هستند. یک شی OWL می تواند ساختار خود را در زمان اجرا تغییر دهد و می تواند به نمونه ای از کلاس های جدید یا متفاوت تبدیل شود.

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

اشیاء OWL در واقع بیشتر شبیه اشیاء در زبان های فریم هوش مصنوعی مانند KL-ONE و Loom هستند.

جدول زیر اشیاء سنتی زبانهای برنامه نویسی شی گرا مانند جاوا یا C ++ را با اشیاء وب معنایی مقایسه می کند: [10] [11]

اشیاء OOP اشیاء وب معنایی
کلاسها به عنوان انواع برای موارد در نظر گرفته می شوند. کلاسها به عنوان مجموعه ای از افراد در نظر گرفته می شوند.
نمونه ها نمی توانند نوع خود را در زمان اجرا تغییر دهند. عضویت در کلاس ممکن است در زمان اجرا تغییر کند.
لیست کلاسها در زمان کامپایل کاملاً مشخص است و پس از آن قابل تغییر نیست. کلاس ها را می توان در زمان اجرا ایجاد و تغییر داد.
کامپایلرها در زمان ساخت استفاده می شوند. خطاهای زمان کامپایل نشان دهنده مشکلات است. از منطقی ها می توان برای طبقه بندی و بررسی ثبات در زمان اجرا یا زمان ساخت استفاده کرد.
کلاسها بسیاری از معانی و رفتار خود را از طریق توابع و روشهای ضروری رمزگذاری می کنند. کلاسها معنای خود را از نظر عبارات OWL آشکار می کنند. نمی توان کد اجباری را ضمیمه کرد.
موارد تا جایی ناشناس هستند که نمی توان به راحتی از خارج از برنامه اجرایی به آنها رسیدگی کرد. همه منابع RDF و OWL دارای URI منحصر به فردی هستند که می توان به وسیله آنها به آنها اشاره کرد.
جهان بسته: اگر اطلاعات کافی برای اثبات صحت یک گزاره وجود نداشته باشد ، پس نادرست فرض می شود. دنیای باز: اگر اطلاعات کافی برای اثبات صحت یک عبارت وجود نداشته باشد ، ممکن است درست یا نادرست باشد. [12]

همچنین ببینید

مراجع

  1. ^ OPPEL، اندی (2005). SQL روشنی انداخته . مک گرو هیل پ. 7. شابک 0-07-226224-9به
  2. ^ گابریل ، ریچارد ؛ لیندا G. DeMichie. "سیستم شیء مشترک Lisp: مروری" (PDF) . گزارش فنی شفاف شرکت .
  3. ^ ونگر، پیتر (دسامبر 1987). میروویتز ، نورمن (ویرایش). "ابعاد طراحی زبان مبتنی بر شیء". مجموعه مقالات کنفرانس OOPSLA'87 . 22 (12): 168-182. doi : 10.1145/38807.38823 .
  4. ^ باربی ، اس ؛ M. Kempe؛ A. Strohmeier (1993). "برنامه نویسی شی گرا با Ada 9X" . پیش نویس گزارش فنی . موسسه فناوری فدرال سوئیس در آزمایشگاه مهندسی نرم افزار لوزان . بازبینی شده در 15 دسامبر 2013 . خود Ada 83 عموماً شی گرا در نظر گرفته نمی شود. بر اساس اصطلاحات وگنر [Weg 87] ، گفته می شود که شیء محور است ، زیرا فقط یک شکل محدود از وراثت را ارائه می دهد و فاقد چند شکلی است.
  5. ^ جاکوبسن ، ایوار ؛ مگنوس کریسترسون ؛ پاتریک جانسون ؛ گونار اورگارد (1992). شی گرا مهندسی نرم افزار . Addison-Wesley ACM Press. شابک 0-201-54435-0به
  6. ^ "شی چیست؟" به oracle.com . شرکت اوراکل . بازبینی شده در 13 دسامبر 2013 .
  7. ^ مارتین ، روبرت سی. "اصول طراحی و الگوهای طراحی" (PDF) . بایگانی شده از نسخه اصلی (PDF) در 6 سپتامبر 2015 . بازبینی شده در 28 آوریل 2017 .
  8. ^ اورفالی ، رابرت (1996). راهنمای بقاء مشتری/سرور ضروری . نیویورک: انتشارات رایانه ای ویلی. صص  399–403 . شابک 0-471-15325-7به
  9. ^ Ostrowski، K.، Birman، K.، Dolev، D.، and Ahnn، J. (2008). "برنامه نویسی با اشیاء زنده توزیع شده" ، مجموعه مقالات بیست و دومین کنفرانس اروپایی برنامه نویسی شی گرا ، پافوس ، قبرس ، 07-11 ژوئیه 2008 ، J. Vitek ، Ed. ، یادداشت های سخنرانی در علوم کامپیوتر ، جلد. 5142 ، اسپرینگر-ورلاگ ، برلین ، هایدلبرگ ، 463-489 ، http://portal.acm.org/citation.cfm؟id=1428508.1428536 .
  10. ^ برنرز لی ، تیم ؛ جیمز هندلر ؛ اورا لاسیلا (17 مه 2001). "وب معنایی" شکل جدیدی از محتوای وب که برای رایانه ها معنادار است انقلابی از امکانات جدید را به راه می اندازد . " علمی آمریکایی . 284 : 34-43. doi : 10.1038/Scientificamerican0501-34 . بایگانی شده از نسخه اصلی در 24 آوریل 2013.
  11. ^ Knublauch ، Holger ؛ اوبرل ، دانیل ؛ تتلو ، فیل ؛ والاس ، ایوان (09-03-2006). "آغازگر وب معنایی برای توسعه دهندگان نرم افزار شی گرا" . W3C . بازیابی شده 2008-07-30 .
  12. ^ جدول برگرفته از جداول در: http://www.w3.org/2001/sw/BestPractices/SE/ODSD/

پیوندهای خارجی