گاما رو نصب کن!

{{ number }}
اعلان ها
اعلان جدیدی وجود ندارد!
کاربر جدید

جستجو

پربازدیدها: #{{ tag.title }}

میتونی لایو بذاری!
نمونه سوال محتوای آموزشی آزمون آنلاین پرسش و پاسخ درسنامه آموزشی مدرسه‌یاب معلم‌ها

نمونهٔ لاک‌پشت چیست؟

بروزرسانی شده در: 14:59 1405/04/18 مشاهده: 27     دسته بندی: کپسول آموزشی

نمونهٔ لاک‌پشت چیست؟ شیئی ساخته‌شده از کتابخانهٔ turtle برای اجرای دستورهای رسم

آشنایی با مفهوم نمونه در برنامه‌نویسی، تفاوت آن با کلاس، و کاربرد عملی در محیط ترتل
در برنامه‌نویسی، وقتی از کتابخانهٔ ترتل استفاده می‌کنیم، یک «نمونه» یا «شیء» از نوع لاک‌پشت می‌سازیم تا بتوانیم دستورهای رسم مانند خط کشیدن، چرخیدن و حرکت را روی آن اجرا کنیم. این نمونه در واقع یک لاک‌پشت مجازی روی صفحهٔ نمایش است که با دستورهایی مانند forward، backward، left و right حرکت می‌کند و شکل‌های هندسی می‌کشد. در این مقاله می‌آموزیم که نمونهٔ لاک‌پشت چیست، چگونه ساخته می‌شود، چه تفاوتی با کلاس دارد، و چطور می‌توانیم از چند نمونه به‌طور همزمان استفاده کنیم.

نمونهٔ لاک‌پشت؛ از تعریف تا حرکت

در زبان برنامه‌نویسی پایتون، کتابخانهٔ ترتل ابزاری است برای کشیدن شکل‌های هندسی و یادگیری مفاهیم برنامه‌نویسی به‌صورت دیداری. اما خودِ ترتل یک «کلاس» است، یعنی یک طرح یا نقشهٔ کلی که می‌گوید یک لاک‌پشت چه ویژگی‌هایی دارد و چه کارهایی می‌تواند انجام دهد. برای اینکه بتوانیم از آن استفاده کنیم، باید یک «نمونه» یا «شیء» از آن کلاس بسازیم. این نمونه، همان لاک‌پشت مجازی ما روی صفحه است که با دستورها حرکت می‌کند.

برای ساخت یک نمونهٔ لاک‌پشت، از دستور turtle.Turtle() استفاده می‌کنیم. این دستور یک شیء جدید از نوع ترتل می‌سازد و آن را در یک متغیر ذخیره می‌کنیم. مثلاً با نوشتن لاک‌پشت_من = turtle.Turtle()، یک نمونهٔ جدید به نام «لاک‌پشت_من» می‌سازیم. حالا این نمونه می‌تواند دستورهایی مانند لاک‌پشت_من.forward(100) را اجرا کند که یعنی ۱۰۰ واحد به جلو برود، یا لاک‌پشت_من.right(90) که یعنی ۹۰ درجه به راست بچرخد.

هر نمونهٔ ترتل ویژگی‌های جداگانه‌ای دارد؛ مثلاً رنگ، اندازهٔ قلم، سرعت حرکت و موقعیت روی صفحه. وقتی دو نمونهٔ متفاوت بسازیم، هرکدام می‌توانند رنگ یا مکان متفاوتی داشته باشند و مستقل از هم حرکت کنند. این موضوع به ما امکان می‌دهد تا چند شکل را هم‌زمان و بدون تداخل با هم بکشیم.

نکته: به یاد داشته باش که خودِ کلاس ترتل (turtle) فقط یک نقشه است، اما نمونهٔ آن (turtle.Turtle()) همان لاک‌پشت واقعی روی صفحه است که می‌توانیم حرکتش بدهیم. بدون ساخت نمونه، هیچ لاک‌پشتی برای رسم وجود نخواهد داشت.

برای درک بهتر تفاوت کلاس و نمونه، می‌توانیم به یک کارخانهٔ تولید خودرو فکر کنیم. نقشهٔ خودرو (کلاس) مشخص می‌کند که خودرو چه چرخ‌هایی دارد، چه موتوری، و چه امکاناتی. اما خودِ خودرویی که از خط تولید خارج می‌شود، یک نمونه است که می‌توانیم با آن رانندگی کنیم. هر خودرو نمونه‌ای جداگانه است با شمارهٔ شاسی، رنگ و وضعیت متفاوت، درست مثل هر نمونهٔ ترتل که موقعیت و رنگ مخصوص خودش را دارد.

چند نمونه، چند لاک‌پشت هم‌زمان

یکی از جذابیت‌های کار با نمونه‌های ترتل، امکان ساخت چند لاک‌پشت هم‌زمان است. می‌توانیم دو یا چند نمونه بسازیم و هرکدام را به یک سمت بفرستیم تا شکل‌های مختلفی بکشند. این کار نه‌تنها جذابیت بیشتری دارد، بلکه به ما کمک می‌کند تا مفهوم «هم‌زمانی» و «استقلال اشیا» را در برنامه‌نویسی بهتر بفهمیم.

فرض کنید می‌خواهیم یک مربع و یک مثلث هم‌زمان روی صفحه رسم کنیم. به جای اینکه یکی را بعد از دیگری بکشیم، دو نمونه می‌سازیم؛ یکی با رنگ آبی و دیگری با رنگ قرمز. نمونهٔ اول دستورهای رسم مربع را اجرا می‌کند و نمونهٔ دوم هم‌زمان دستورهای رسم مثلث را. اینگونه می‌بینیم که هر نمونه کاملاً مستقل از دیگری رفتار می‌کند و تغییرات یکی روی دیگری تأثیری ندارد.

ویژگی نمونهٔ اول (آبی) نمونهٔ دوم (قرمز)
رنگ آبی قرمز
موقعیت شروع مرکز صفحه (100- , 100-)
شکل رسم‌شده مربع مثلث
سرعت آهسته تند

برای ساخت چند نمونه، کافی است هر بار یک نمونه با turtle.Turtle() بسازیم و آن را در متغیر جداگانه‌ای ذخیره کنیم. سپس هر متغیر را به‌طور مستقل کنترل می‌کنیم. این کار به ما نشان می‌دهد که در برنامه‌نویسی شی‌گرا، هر نمونه «هویت» خودش را دارد و می‌تواند وظایف متفاوتی را انجام دهد.

پرسش و پاسخ‌های چالشی دربارهٔ نمونهٔ لاک‌پشت

پرسش: آیا می‌توان بدون ساخت نمونه از دستورهای ترتل استفاده کرد؟
پاسخ: خیر، خودِ کتابخانهٔ ترتل فقط ابزارها و کلاس‌ها را در اختیار ما می‌گذارد، اما برای رسم نیاز به یک نمونهٔ فعال داریم. اگر فقط import turtle را بنویسیم، هیچ لاک‌پشتی روی صفحه ظاهر نمی‌شود. نمونه مثل یک خودروی واقعی است که باید آن را روشن کنیم تا حرکت کند.
پرسش: اگر دو نمونه با نام‌های مختلف بسازم، آیا آن‌ها می‌توانند رنگ یکسانی داشته باشند؟
پاسخ: بله، هر نمونه می‌تواند رنگ خودش را داشته باشد. اگر هر دو را به یک رنگ تنظیم کنید، شبیه به هم می‌شوند، اما همچنان مستقل هستند و تغییر رنگ یکی روی دیگری اثر نمی‌گذارد. این استقلال یکی از مزیت‌های اصلی استفاده از نمونه‌هاست.
پرسش: آیا امکان دارد یک نمونه پس از اتمام کار، ناپدید شود؟
پاسخ: نمونه تا وقتی که برنامه در حال اجراست و متغیر مربوط به آن وجود دارد، روی صفحه باقی می‌ماند. با دستورهایی مثل hideturtle می‌توانیم آن را مخفی کنیم، اما همچنان در حافظه وجود دارد. برای حذف کامل، باید برنامه را ببندیم یا متغیر را حذف کنیم.
پرسش: تفاوت نمونهٔ ترتل با ترتلِ نوشته‌شده در دستور turtle.shape چیست؟
پاسخ:turtle.shape یک دستور کلی است که شکل ظاهری لاک‌پشت را تغییر می‌دهد (مثلاً از فلش به دایره)، در حالی که نمونهٔ ترتل خودِ شیء است که می‌توانیم به آن دستور بدهیم. نمونه دارای موقعیت، رنگ و جهت است؛ اما shape فقط یکی از ویژگی‌های ظاهری آن را تنظیم می‌کند.
در این مقاله یاد گرفتیم که نمونهٔ لاک‌پشت در واقع یک شیء ساخته‌شده از کلاس ترتل است که به ما امکان اجرای دستورهای رسم را می‌دهد. تفاوت کلاس و نمونه را با مثال کارخانهٔ خودرو فهمیدیم و دیدیم که هر نمونه ویژگی‌های مستقل خودش را دارد. همچنین با ساخت چند نمونه هم‌زمان، توانستیم شکل‌های مختلفی بکشیم و استقلال اشیا را تجربه کنیم. نکتهٔ مهم این است که بدون ساخت نمونه، هیچ رسمی انجام نمی‌شود و هر نمونه مانند یک لاک‌پشت واقعی روی صفحه رفتار می‌کند که می‌توانیم آن را به هر جهت که بخواهیم هدایت کنیم.