استفاده از اشیا و کلاس ها

تا این جا، ما مقدمات اشیا و کلاس های Objective J را شرح دادیم. اجازه دهید که طریقه ی استفاده از آن ها را هم شرح دهیم. کد زیر یک شی Person جدید ایجاد می کند و نام آن را ست می کند:

sell

در Objective J به فراخوانی متد ها، در اصطلاح، ارسال پیام می گوییم. و برای ارسال یک پیغام به یک شی، از علامت کروشه به این صورت استفاده می کنیم:

mes

قبلا توضیح دادم که برخی از متد ها، متد های کلاس هستند یعنی بر روی خود کلاس قابل فراخوانی هستند. متد alloc یکی از همین متد ها است. کلیه‌ی کلاس ها در Objective J دارای یک متد خاص به نام alloc است که این متد، یک instance جدید از آن کلاس را ایجاد می کند و برمی گرداند.
در مثال بالا، ما متد alloc را بر روی کلاس Person فراخوانی می کنیم که در نتیجه یک instance جدید از کلاس Person بر می گرداند. سپس ما متد init را بر روی instance ایجاد شده فراخوانی می کنیم. هر دو متد init و alloc یک reference به شی ایجاد شده برمیگردانند که ما می توانیم به کمک آن، متغیر myPerson را مقدار دهی کنیم. متد init نیز درست همانند alloc ، از کلاس پایه‌ی CPObject به کلیه‌ی کلاس ها به ارث می رسد.
متد کلاسی alloc معادل کلمه ی کلیدی new در بسیاری از زبان ها از جمله Javascript, C++, Java است. متد instance ای init هم همانند متدهای constructor در زبان های فوق الذکرمی باشد و عمل آماده سازی initialization را بر روی شی جدید انجام می دهد.
برخی از کلاس ها متد های init خاص خودشان را تعریف می کنند. مانند کلاس CPView که از روش زیر استفاده می کند:

id

کلیه ی کلاس‌های فرزند (زیر کلاس ها) باید متد init کلاس والد شان را فراخوانی کنند. در کد زیر، یک متد init سفارشی برای کلاس Person تعریف کرده ایم:

sup

در متد init باید ابتدا متد init کلاس والد (که با کلمه‌ی کلیدی super مشخص می شود) را فراخوانی کنیم که یک reference به instance آماده سازی شده را برمی گرداند. این instance ای که برگردانده می شود را باید به متغیر self انتساب دهیم (در این جا، متد init کلاس والد، instance اصلی را با یک instance جدید جایگزین کرد.) سپس باید بررسی کنیم که آیا self به درستی آماده شده است یا خیر. در صورتی که self به درستی آماده شده باشد، می‌توانیم عملیات مورد نظرمان مانند مقدار دهی name به aName را بر روی آبجکت انجام دهیم. در پایان، متغیر self را return می کنیم تا کدی که متد ما را فراخوانی کرده است، شی آماده شده را به دست بیاورد.
self معادل کلمه‌ی کلیدی this در جاوااسکریپت می‌باشد. همانطور که this در جاوا اسکریپت، به آبجکت جاوا اسکریپت جاری اشاره می کند، self نیز به آبجکت جاری در Objective-J اشاره می کند. درست مانند جاوا اسکریپت، self.foo به متغیر foo از آبجکت self اشاره می کند؛ اما بر خلاف جاوا اسکریپت، در اینجا self الزامی نیست. بنا بر این می توانید از متغیر foo به طور مستقیم در داخل تمامی متد‌های instance استفاده کنید.
بسیاری از کلاس‌های کاپوچینو (Cappuccino) یک مدل کمی متفاوت برای ساخت اشیا ارائه می دهند که می تواند مناسب تر باشد. به جای فراخوانی alloc و init ، این کلاس ها، متدهای خاص خودشان را برای ساخت آبجکت های جدید تعریف می کنند. توجه کنید که در داخل متد‌های کلاس، کلمه‌ی کلیدی self به خود کلاس اشاره می کند.

mmm

که به صورت زیر قابل فراخوانی خواهد بود:

per