آبجکتیو-سی: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
فارسی سازی |
فارسی سازی |
||
خط ۹:
راه حل جدید پیشنهاد شده روش [[برنامهنویسی شیءگرا|برنامهسازی شیگرا]] بود. زبانهایی مانند اسمالتاک بر مبنای آن ساخته شدند.
Brad Cox و Tom Love زبان آبجکتیو-سی را در سالهای اولیهٔ ۱۹۸۰ در کارخانهشان تولید کردند. Cox با الهام از زبان اسمالتالک با تغییر در کامپایلر
در سال ۱۹۸۸ شرکت NeXT مالکیت آبجکتیو-سی را از StepStone خرید و کامپایلر و کتابخانههای خاص خودش را منتشر کرد.
خط ۲۰:
===پیامها===
زبان آبجکتیو-سی روشهایی برای انتقال پیام به زبان سی اضافه کرد. در این زبان از مدل اسمالتالک برای فرستادن پیام استفاده میشود. در این روش یک پیام برای یک
فرستادن یک پیام به یک شی در این زبان به شکل زیر است:
خط ۳۰:
</source>
این دستور مانند عمل زیر در
<source lang="cpp">
خط ۳۸:
</source>
پیامهای آبجکتیو-سی نیازی ندارند که اجرا شوند.اگر به شیئی پیامی بدهیم و آن شی متد مربوطه را پیادهسازی کرده باشد. اجرا میشود و در غیر این صورت اجرا نمیشود. حتی میتوان به
===واسطها و پیادهسازیها===
خط ۶۴:
</source>
+ نمایشگر توابع کلاس و – نمایشگر توابع مربوط به یک نمونه است. معادل کد بالا در سی++
<source lang="cpp">
خط ۸۴:
یکی از موارد قابل توجه instanceMethod2WithParameter است. در آبجکتیو-سی امکان استفاده از پارامتردهی بانام وجود دارد که در حال زیاد بودن تعداد پارامترها کد را تمیز نگاه میدارد. ولی در ++C چنین امکانی وجود ندارد.
مقادیر بازگشتی میتوانند انواع
===پیادهسازی===
واسط تنها روش دسترسی به کلاس را بیان میکند و نه خود متدها را. کد اصلی در قسمت پیادهسازی نوشته میشود. این فایلهای پیادهسازی معمولاً با پسوند m. خاتمه مییابند.
<source lang="objc">
خط ۱۷۱:
Informal protocol لیست متدهایی است که یک کلاس میتواند پیادهسازی کند. توی مستندات میآید زیرا هیچ معادلی در زبان ندارد. معمولاً شامل متدهای اختیاری نیز هست.
Formal protocol مشابه interface در
تعریف یک formal protocol به این شکل است
خط ۲۰۵:
یک شی میتواند کارهای زیادی با یک پیام که برایش ارسال شده است انجام دهد. از جمله این که میتواند شی دریافت شده را به یک شی دیگر ارسال کند.
==تفاوتهای اساسی با
* سی++
* آبجکتیو-سی امکانات reflection برای برنامهنویس به وجود میآورد که در زمان اجرا آدرس بعضی توابع معلوم میگردد حال آنکه در
==تحلیل زبان==
* آبجکتیو-سی برخلاف اکثر زبانهای شیگرا که همزمان با آن ساخته شدند از ماشین مجازی برای اجرای برنامه استفاده نمیکند.
این زبان میتواند روی یک کامپایلر زبان
* این زبان برعکس سی++
==منابع==
|