متد چیست؟ کاری آماده که یک شیء مانند لاکپشت میتواند انجام دهد
متدها؛ دستورهای آماده برای شیءها
برای اینکه متد را بهتر بشناسیم، بیایید به لاکپشت معروف در برنامهنویسی فکر کنیم. لاکپشت یک شیء است که میتواند روی صفحه نقاشی بکشد. وقتی به لاکپشت میگوییم «برو به جلو 100»، این یک متد است. لاکپشت میداند که «رفتن به جلو» یعنی چه و این کار را انجام میدهد. به همین سادگی، متدها کارهایی هستند که یک شیء بلد است انجام دهد.
در دنیای برنامهنویسی، هر شیء میتواند متدهای متفاوتی داشته باشد. مثلاً یک شیء از نوع «رشته» که شامل یک متن است، متدهایی برای پیدا کردن اندازهٔ متن، تبدیل حروف به بزرگ یا کوچک، و یا پیدا کردن یک کلمه درون متن دارد. یک شیء از نوع «عدد» نیز متدهایی برای انجام محاسبات ریاضی مانند توان یا ریشهگیری دارد.
برای استفاده از یک متد، معمولاً نام شیء را مینویسیم، سپس یک نقطه، و بعد نام متد را با پرانتز جلوی آن مینویسیم. به عنوان نمونه، اگر نام لاکپشت ما «لاکپشت_۱» باشد، برای حرکت دادن آن مینویسیم: لاکپشت_۱.برو_به_جلو(۱۰۰). این شکل نوشتن، نشان میدهد که متد مربوط به همان شیء خاص است و فقط بر روی آن تأثیر میگذارد.
تفاوت متد با تابع و کاربردهای آن
شاید برای شما سؤال پیش آمده باشد که متد با تابع چه فرقی دارد؟ در برنامهنویسی، تابع یک مجموعه دستور است که کاری را انجام میدهد، اما متد، تابعی است که به یک شیء خاص تعلق دارد. به عبارت دیگر، همهٔ متدها تابع هستند، اما همهٔ توابع متد نیستند. متدها همیشه به یک شیء وابستهاند و برای انجام کاری روی آن شیء به کار میروند.
بیایید یک مثال ملموس بزنیم. فرض کنید یک شیء به نام «لیست_اعداد» داریم که شامل اعداد [۳, ۷, ۲, ۹] است. این لیست یک متد به نام «مرتبکن» دارد که اعداد را به ترتیب صعودی مرتب میکند. وقتی مینویسیم لیست_اعداد.مرتبکن()، لیست تغییر میکند و به [۲, ۳, ۷, ۹] تبدیل میشود. این متد فقط برای لیستها معنی دارد و نمیتوانیم از آن برای یک عدد استفاده کنیم.
یکی از جذابیتهای متدها این است که میتوانند ورودی بگیرند یا نگیرند و همچنین ممکن است خروجی داشته باشند یا نداشته باشند. برخی متدها فقط یک کار را انجام میدهند و نتیجهای برنمیگردانند (مانند متد حرکت لاکپشت)، اما برخی دیگر یک مقدار جدید به ما تحویل میدهند. مثلاً متدی که اندازهٔ یک رشته را حساب میکند، عددی را به عنوان خروجی برمیگرداند.
| نوع شیء | نمونه متد | کاری که انجام میدهد |
|---|---|---|
| رشته (متن) | بزرگکن | همهٔ حروف را به بزرگ تبدیل میکند |
| لیست | اضافهکن | یک عضو جدید به انتهای لیست اضافه میکند |
| عدد | توان | عدد را به توان مشخصی میرساند |
| لاکپشت | بچرخ به راست | لاکپشت را به راست میچرخاند |
پرسشهای رایج دربارهٔ متدها
پرسش: آیا هر شیء متدهای یکسانی دارد؟
خیر، هر شیء متدهای مخصوص به خود را دارد. یک لاکپشت متد «برو به جلو» دارد، اما یک رشتهٔ متنی چنین متدی ندارد. در عوض، رشته متد «بزرگکن» دارد که برای لاکپشت بیمعنی است. هر شیء بر اساس نوع خود، متدهای متناسبی را در اختیار ما قرار میدهد.
پرسش: آیا متدها همیشه نتیجهای برمیگردانند؟
نه، برخی متدها فقط کاری را انجام میدهند و هیچ مقداری را برنمیگردانند. به این نوع متدها، متدهای بدون خروجی میگویند. مثلاً متدی که لاکپشت را حرکت میدهد، فقط یک حرکت انجام میدهد و عدد یا متنی را به ما تحویل نمیدهد. اما متدی که اندازهٔ یک رشته را حساب میکند، حتماً یک عدد را به عنوان خروجی برمیگرداند.
پرسش: چرا بعضی متدها داخل پرانتزشان چیزی مینویسیم و بعضی خالی است؟
داخل پرانتز متدها، اطلاعاتی که برای انجام کار نیاز داریم را مینویسیم. به این اطلاعات، ورودی یا آرگومان میگوییم. مثلاً متد «برو به جلو» نیاز دارد بداند چقدر باید برود، پس عدد مسافت را داخل پرانتز مینویسیم. اما متدی مانند «بزرگکن» برای تبدیل حروف به بزرگ، هیچ اطلاعات اضافی نیاز ندارد، بنابراین پرانتز آن خالی میماند.
آنچه آموختیم:
متدها کارهای آمادهای هستند که هر شیء در برنامهنویسی میتواند انجام دهد. هر شیء، متدهای مخصوص به خود را دارد و برای استفاده از آنها، نام شیء را به همراه نقطه و نام متد مینویسیم. متدها میتوانند ورودی بگیرند یا نگیرند و ممکن است خروجی داشته باشند یا نداشته باشند. درک متدها به ما کمک میکند تا از قابلیتهای آمادهٔ اشیاء در برنامهنویسی به بهترین شکل استفاده کنیم و کدهای تمیزتر و خواناتری بنویسیم.