متدها

درست همانند کلاس‌ها، متد های طبیعی جاوا اسکریپت نیز به قوت خودشان باقی هستند و قابل استفاده می باشند، اما اضافه بر آنها، متدهای خاص Objective J موجود می باشند که بخشی از سیستم کلاس های جدید به حساب می آیند. اجازه دهید که چند تا متد جهت دسترسی به خواص شی ایجاد کنیم:

prt

طوط فوق را می توان بعد از دستور @implementation و بلاک تعریف متغیرها، در هر جایی از کد قرار داد مشروط به این که پیش از دستور @end باشد. این شیوه‌ی کد نویسی برای تمام کسانی که زبان‌های مشابه C (از جمله جاوا اسکریپت) را کد نویسی کرده اند، آشنا است. تنها مورد جدید و جالب، شیوه‌ی تعریف متد است.
تعریف هر متدی با یک علامت – و یا + شروع می شود. علامت منها – برای متد های استفاده می شود که فقط در instance موجود می باشند (یعنی این متد ها را فقط می توان بر روی instance های آن کلاس فراخوانی کرد) هر دو متدی که در مثال فوق ایجاد کردیم، متدهای instance می باشند. البته واضح است زیرا این متد ها فقط مقادیر متغیر های عضو اشیا را برمی گردانند و یا ست می کنند.
پس از علامت منها یا بعلاوه، نوع مقدار بازگشتی متد را در داخل پرانتز مشخص می کنیم. نکته‌ی خاصی در این وجود ندارد. مجددا در این جا هم تعریف نوع بازگشتی الزامی نیست اما اکیدا توصیه می شوند زیرا به مستند سازی کد کمک می کنند. در انتها، ما نام متد را مشخص می کنیم. در زبان Objective J ، پارامتر های متد ها، در درون نام متد تعریف می شوند. متد هایی که در مثال بالا تعریف کردیم، عبارتند از name و setName: . دقت کنید که علامت دو نقطه (:) پس از نام متد به این معنی است که پس از آن لیست پارامتر ها می آید.
هنگامی که یک متد، بیش از یک پارامتر داشته باشد، پارامتر‌ها را با کولون (:) از هم جدا می کنیم. در این حالت، به جز پارامتر اول، باقی پارامتر ها، داری یک label هم می باشند و تعریف هر پارامتر به این صورت است: برچسب پارامتر، کولون، نوع پارامتر در درون پرانتز، و سپس خود نام پارامتر:

mn

در Objective J نام متد به صورت زیر استفاده می شود: نام اصلی متد (بخش آغازین تعریف متد) و سپس نام تک تک label ها به ترتیب، که با کولون از هم جدا شده اند.
در مثال فوق، نام متد تعریف شده عبارت است از

kl

پارامترهای یک متد باید به ترتیب ارسال شوند و همه‌ی پارامترها الزامی می باشند. برای فراخوانی چنین متد چند پارامتره ای، باید اطلاعاتمان را پس از هر label قرار دهیم و به متد ارسال کنیم:

lo

همانطور که می بینید، به دنبال هر کولون، مقدار ورودی ای که به پارامتر مربوطه ارسال می شود آمده است. به ازای هر پارامتر متد، باید یک ترکیب “برچسب، کولون، مقدار” داشته باشیم.
یکی از شیوه‌هایی که در زبان Objective J و Cappuccino خواهید یافت، ارسال یک متد به عنوان آرگومان به یک متد دیگر است. این روش اغلب در سیستم های مدیریت رویداد و delegation استفاده می شود. از آنجایی که متد ها مانند اشیای ابتدایی جاوا اسکریپت نیستند، برای اشاره به آن ها از یک شیوه ی خاص استفاده می کنیم به این صورت: @selector()
برای مثال اگر بخواهیم متد قبلی را به عنوان آرگومان به یک متد دیگر اسال کنیم، چنین کدی می نویسیم:

set

همان طور که می بینید، نام متد همراه با کولون ها و لیست پارامتر ها و label هایش به @selector ارسال شده است.