انجمن گروه موج سازان

نسخه‌ی کامل: معرفی زبان Objective-C
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
آبجکتیو-سی (به انگلیسی: Objective-C) یک زبان شی‌گرا است که با اضافه کردن مفاهیم ارسال پیام از زبان اسمال‌تاک به زبان سی ایجاد شده‌. در حال حاضر استفادهٔ اصلی آن در محیط‌های Mac OS X و iPhone OS است.

برنامه‌هایی از این زبان که از کتابخانه‌های خاص این محیط‌ها استفاده نکرده باشند در همهٔ محیط‌هایی که کامپایلر جی‌سی‌سی (GCC) استفاده می‌شود، قابل استفاده‌اند.

در سال‌های اولیهٔ ۱۹۸۰ روش غالب در مهندسی نرم‌افزار روش برنامه‌سازی ساخت‌یافته بود. این روش بر مبنای اصل تقسیم مسئله به اجزای کوچک‌تر و حل تک‌تک آن‌ها بنا شده بود. با افزایش اندازهٔ مسئله‌ها این روش به تدریج کارایی خود را از دست داد.

راه حل جدید پیشنهاد شده روش برنامه‌سازی شی‌گرا بود که زبان‌هایی مانند اسمال‌تاک بر مبنای آن ساخته شدند.

Brad Cox و Tom Love زبان آبجکتیو-سی را در سال‌های اولیهٔ ۱۹۸۰ در کارخانه‌شان تولید کردند. Cox با الهام از زبان اسمال‌تالک با تغییر در کامپایلر زبان سی توانست امکانات شی‌گرایی را به آن اضافه کند. او نام این زبان را OOPC مخفف Object Oriented Programming in C گذاشت. بعدها با کمک Love محصول جدیدی به نام Productivity Products International یا PPI را ساخت که یک کامپایلر آبجکتیو-سی با کتابخانهٔ کلاس‌های قدرت‌مند بود.

در سال ۱۹۸۸ شرکت NeXT مالکیت آبجکتیو-سی را از StepStone خرید و کامپایلر و کتابخانه‌های خاص خودش را منتشر کرد. پروژهٔ GNU نیز ورژن خودش به نام GNUStep را از کامپایلر این زبان منتشر کرد. بعد از خریده شدن NeXT توسط Apple این شرکت ابزارهایی برای کار با این زبان را منتشر کرد.
زبان آبجکتیو-سی یک لایهٔ بسیار نازک روی زبان سی است. هر برنامه به زبان سی را می‌توان با کامپایلر آبجکتیو-سی کامپایل کرد. اکثر دستورات از زبان سی به ارث رسیده‌اند و تعدادی دستور برای ارسال پیغام به آن‌ها اضافه شده‌است.

زبان آبجکتیو-سی روش‌هایی برای انتقال پیام به زبان سی اضافه کرد. در این زبان از مدل اسمال‌تالک برای فرستادن پیام استفاده می‌شود. در این روش یک پیام برای یک شی فرستاده می‌شود و در صورتی که شی گیرنده متدی برای اجرای آن داشته باشد، آن را اجرا می‌کند. این روش برعکس روش سی++ است که گیرنده باید حتماً یک متد را پیاده‌سازی کرده باشد تا شی‌ای بتواند آن را صدا بزند.

تفاوت‌های اساسی با سی++
سی++ شامل کتابخانه‌ها و استانداردهایی برای برنامه‌سازی شی‌گرا، برنامه‌سازی عمومی است. در حالی که آبجکتیو-سی تنها یک لایه برای برنامه‌سازی شی‌گرا به زبان سی اضافه می‌کند.

آبجکتیو-سی امکانات reflection برای برنامه‌نویس به وجود می‌آورد که در زمان اجرا آدرس بعضی توابع معلوم می‌گردد حال آن‌که در سی++ امکانات reflection وجود ندارد. یعنی آبجکتیو-سی از سی++ امور بیشتری را در زمان اجرا تعیین می‌کند که باعث انعطاف بیشتر زبان می‌شود ولی سرعت اجرای آن را کاهش می‌دهد.

آبجکتیو-سی برخلاف اکثر زبان‌های شی‌گرا که هم‌زمان با آن ساخته شدند از ماشین مجازی برای اجرای برنامه استفاده نمی‌کند.

این زبان می‌تواند روی یک کامپایلر زبان سی پیاده‌سازی شود. به این ترتیب که اول به صورت پیش‌پردازشی کدهای خاص آبجکتیو-سی تبدیل به کدهای سی متناسب می‌شوند.

این زبان برعکس سی++ از دادن چند مفهوم به یک اپراتور (operator overloading) پشتیبانی نمی‌کند.

منبع