بعد از این درس دقیقاً چه بلدی؟
- میتوانی «Class» را با مثال همین درس توضیح بدهی.
- میدانی «Object» کجای مسئله به کار میآید.
- تغییر پیشنهادی درس را اجرا میکنی و از روی نتیجه، اشتباه را پیدا میکنی.
نقشه خانه و خود خانه
کلاس نقشهای است که میگوید هر نمونه چه اطلاعات و رفتارهایی دارد. هر شیء، یک نمونه واقعی با مقدارهای خودش است.
برای یک محاسبه کوچک نیازی به کلاس نداریم. وقتی داده و رفتار یک مفهوم واقعی مثل سفارش در چند جای برنامه پخش میشود، کلاس میتواند آنها را کنار هم نگه دارد.
چرا مهم است؟ کلاس Order مبلغ را هنگام ساخت میگیرد و یک متد مشخص میگوید ارسال آن رایگان است یا نه.
اولین تمرین تو: کلاس Order مبلغ را هنگام ساخت میگیرد و یک متد مشخص میگوید ارسال آن رایگان است یا نه.
اول بفهم، بعد کد بنویس
Class
تعریف میکند یک نوع تازه چه داده و رفتارهایی دارد.
Object
نمونه ساختهشده از کلاس است؛ دو سفارش از یک کلاس میتوانند مبلغ متفاوتی داشته باشند.
مسئولیت
کلاس خوب یک دلیل روشن برای تغییر دارد و همه کارهای برنامه را در خودش جمع نمیکند.
یک سفارش با مبلغ خودش
کلاس Order مبلغ را هنگام ساخت میگیرد و یک متد مشخص میگوید ارسال آن رایگان است یا نه.
قطعهها را به ترتیب درست بچین
روی هر قطعه بزن تا وارد پاسخ شود؛ برای برگرداندن دوباره روی آن بزن. با دکمههای جابهجایی هم میتوانی بدون کشیدن و رهاکردن ترتیب را اصلاح کنی.
کد را کامل کن و ساختار آن را بررسی کن
این درس وارد قابلیتهای سروری یا حرفهای شده است. برای امنیت سایت، کد دلخواه روی سرور اجرا نمیشود؛ بررسیگر، وجود اجزای ضروری و منطق مورد انتظار را کنترل میکند و راهنمای اصلاح میدهد.
کد را کامل کن و «بررسی ساختار» را بزن.
این مثال خطبهخط چه میگوید؟
فعلاً حفظ نکن؛ هر خط را به یک جمله ساده تبدیل کن.
- 1
<?phpاز اینجا مفسر PHP شروع به خواندن کد میکند.
- 2
class Order {یک قرارداد یا نوع جدید برای سازماندهی مسئولیتهای برنامه معرفی میشود.
- 3
public function __construct(public int $total) {}یک کار نامگذاریشده تعریف میشود تا منطق آن قابل استفاده دوباره و قابل آزمون باشد.
- 4
public function hasFreeShipping(): bool {یک کار نامگذاریشده تعریف میشود تا منطق آن قابل استفاده دوباره و قابل آزمون باشد.
- 5
return $this->total >= 500000;نتیجه این بخش به محل فراخوانی برگردانده میشود.
- 6
}مرز یک بلوک یا فراخوانی در اینجا باز یا بسته میشود.
- 7
}مرز یک بلوک یا فراخوانی در اینجا باز یا بسته میشود.
- 8
$order = new Order(620000);یک مقدار با نام $order نگهداری میشود تا در خطهای بعد دوباره استفاده شود.
- 9
echo $order->hasFreeShipping() ? "رایگان" : "پولی";نتیجه این عبارت به خروجی پاسخ فرستاده میشود.
راهنماییها مرحلهای هستند؛ اول خودت پیام خطا را بخوان.
مبلغ سفارش را ۳۰۰۰۰۰ کن. سپس نام متد را طوری عوض کن که سؤال درست/نادرست آن هنوز واضح باشد.
از ساده به چالشی، بدون پرش
یکی از مقدارهای مثال را عوض کن، خروجی را روی کاغذ حدس بزن و سپس بررسی کن.
مبلغ سفارش را ۳۰۰۰۰۰ کن. سپس نام متد را طوری عوض کن که سؤال درست/نادرست آن هنوز واضح باشد.
سناریوی «یک سفارش با مبلغ خودش» را با نامهای واضحتر و یک حالت تازه گسترش بده.
این سه اشتباه را انجام نده
برای هر چند خط کد یک کلاس بیدلیل میسازی.
ویژگیها را عمومی میگذاری و هر بخش برنامه بدون قانون آنها را تغییر میدهد.
یک کلاس را مسئول کاربر، سفارش، ایمیل و دیتابیس میکنی.
5 پرسش کوتاه؛ مطمئن شو واقعاً یاد گرفتهای
برای هر پرسش یک پاسخ انتخاب کن. بعد از هر انتخاب، دلیل پاسخ را همانجا میبینی.
$order در مثال چیست؟
کدام توضیح، «Class» را دقیقتر بیان میکند؟
بهترین قدم بعد از خواندن مثال این درس چیست؟
کدام روش نشان میدهد این درس را واقعاً فهمیدهای؟
کدام رفتار احتمال خطا را در همین موضوع بیشتر میکند؟
درس را فقط وقتی تمام کن که کد را تغییر دادهای
دیدن آموزش کافی نیست؛ یک مقدار را تغییر بده، خروجی را پیشبینی کن و بعد اجرا بزن.