آموزش php از مبتدی تا ....
Ir al canal en Telegram
902
Suscriptores
Sin datos24 horas
Sin datos7 días
Sin datos30 días
Archivo de publicaciones
بر خلاف دیگر زبان های شی گرا نمی توان چند سازنده داشته باشیم که هم نام باشند
در واقع php از چندریختی متد پشتیبانی نمی کند
ابتدا شی p ساخته می شود و مقادیر رضا /رضایی/18 در متغیر های شی قرار می گیرند و بعد از ان شی s و مقادیر امیر/امیری/17 در متغیرهای شی قرار می گیرند از طریق مد سازنده
هنگام اتمام برنامه مخرب اشیا از اجرا می شود ابتدا مخرب شی s و سپس مخرب شی p
پس اجرای مخرب ها عکس اجرای سازنده ها می باشد
name=$a;
$this->famil=$b;
$this->avg=$c;
}
function __destruct()
{
echo $this->name." ";
echo $this->famil." ";
echo $this->avg."
"; } } $p=new student('reza','rezaei',18); $s=new student('amir','amiri',17); ?>
"; } } $p=new student('reza','rezaei',18); $s=new student('amir','amiri',17); ?>
سازنده و مخرب
هرکلاس میتواند شامل یک سازنده باشدکه از طریق ان بتوان به متغیرهای کلاس مقدار دارد . متد سازنده به طور اتومایک هنگام ایجاد شی اجرا می شود همچنین می توان برای کلاس متد مخربی تعریف نمود که هنگام پایان اجرای برنامه و از بین رفتن شی به طور اتوماتیک اجرا شود
متد سازنده با کلمه __construct تعریف می شود
متد مخرب با کلمه__destruct تعریف می شود
هر کدام از این متد ها می توانند به تعداد دلخواه پارامتر ورودی داشته باشند
برخلاف دیگر زبان های شی گرا در php نمی توان چند متد سازنده با یک نام تعریف که پارامترهای مختلف داشته باشند
name=$x;
$this->famil=$y;
$this->avg=$z;
}
public function show()
{
echo $this->name." ";
echo $this->famil." ";
echo $this->avg."
"; } public function average() { return($this->avg); } } $s=new student; $p=new student; $k=new student; $t=new student; $s->get("ali","amiri",17); $p->get("nader","naderi",13.5); $k->get("babak","akbari","20"); $t=$s; if($p->average()>$t->average()) { $t=$p; } if($k->average()>$t->average()) { $t=$k; } $t->show(); ?>
"; } public function average() { return($this->avg); } } $s=new student; $p=new student; $k=new student; $t=new student; $s->get("ali","amiri",17); $p->get("nader","naderi",13.5); $k->get("babak","akbari","20"); $t=$s; if($p->average()>$t->average()) { $t=$p; } if($k->average()>$t->average()) { $t=$k; } $t->show(); ?>
کلاسی تعریف کنید که اطلاعات سه دانشجو نام/فامیل/معدل را خوانده مخصات دانشجویی که بیشترین معدل را دارد نمایش دهد
دراینجا ما باید متدی را به کلاس اضافه کنیم که مقدار معدل را بازگرداند
اگر بخواهیم به متغیری از کلاس در خارج از کلاس دسترسی داشته باشیم برای پردازش خاصی باید در کلاس متدی تعریف کنیم که ان متغیر را بازگرداند .نکته مهم در طراحی شی گرا توجه به اصل کپسول سازی می باشد
Class نام کلاس
{
تعریف متغیر ها ;
تعریف متد ها ;
}
نام شی = new نام کلاس ;
کلاسی به نام student تعریف شده است که در ان متغیر های کلاس (نام/فامیل/معدل) به صورت خصوصی تعریف شده و کلاس شامل دو متد get برای دریافت مقادیر کلاس و show برای نمایش مقادیر کلاس می باشد
در متدهای برای دستری به متغیر های کلاس از this استفاده می شود دقت شود که نام متغیر بعد this نیاز به $ ندارد .
بعد از تعریف کلاس برای استفاده از ان می توان اشیا را تعریف نمود که در اینجا سه شی با استفاده از new تعریف شده است
هرگاه بخواهیم متد های مربوط به اشیا را فراخوانی کنیم از علامت <- استفاده می کنیم
name=$x;
$this->famil=$y;
$this->avg=$z;
}
public function show()
{
echo $this->name." ";
echo $this->famil." ";
echo $this->avg."
"; } } $s=new student; $p=new student; $k=new student; $s->get("ali","amiri",17); $p->get("nader","naderi",13.5); $k->get("babak","akbari","20"); $s->show(); $p->show(); $k->show(); ?>
"; } } $s=new student; $p=new student; $k=new student; $s->get("ali","amiri",17); $p->get("nader","naderi",13.5); $k->get("babak","akbari","20"); $s->show(); $p->show(); $k->show(); ?>
کلاسی تعریف کنید که اطلاعات سه دانشجو نام/فامیل/معدل را خوانده و نمایش دهد
نگاه ما به کلاس همیشه باید یک نگاه مدلی باید در مسئله بالا از سه دانشجو نام برده شده است درواقع سه دانشجو سه شی می باشند که از کلاس تعریف شده اند بنابر این هنگام ایجاد کلاس ما فقط به یک دانشجو فکر می کنیم
داده ها (متغیرها) و توابع(متدها) می تواند به سه صورت در کلاس تعریف شوند
خصوصی یا private
که فقط در داخل همان کلاس قابل دسترسی می باشند و خارج از کلاس در دسترس نمی باشند در واقع با این ویژگی می توانیم خصوصیت کپسول سازی را در php پیاده سازی نماییم .
مغیرهایی که به صورت خصوصی تعریف می شوند برای دسترسی به انها به منظور مقدار دهی یا خواندن مقادیرشان باید از طریق متد های عمومی اقدام شود
عمومی یا public
در این حالت متد و داده در خارج از کلاس قابل دسترسی می باشد
محافظت شده یا Protected
این حال فقط در ارث بری کلاس ها از یکدیگر قابل استفاده می باشد . یعنی داده ای که به صور محافظ شده تعریف شود در کلاس مشتق شده نیز قابل دسترسی می باشد ولی در خارج کلاس قابلیت دستیابی ندارد
ما می توانیم کلاس به اسم پرنده تعریف کنیم
داده ها (متغیرها) : نوک ، دو بال،دو پا
توابع(متد): پرواز کردن ،
در دنیای وافعی ما موجودی به اسم پرنده نداریم در واقع پرنده یک مفهوم مجازی هست (کلاس) با مشخصات بالا
ولی وقتی می گوییم کبوتر ، گنجشک و... داریم از این کلاس پرنده نمونه تعریف می کنیم
کبوترنمونه ای از کلاس پرنده هست در واقع یک شی و شی حالت فیزیکی دارد
دنیا در واقع برهم کنش اشیا می باشد
کپسول سازی به معنای جمع کردن داده ها (متغیرها) و توابع (متد) درکنار هم در داخل مفهومی به نام کلاس می باشد ا از دسترسی غیر مجاز به متغیرها جلو گیری شود
کلاس حال یک نمونه یا یک ماکت برای پدیده / فرد /شی و... دارد
کلاس حالت منطقی و مجازی دارد
هرگاه بخواهیم از کلاس استفاده نماییم باید از ان نمونه تعریف کنیم که به ان شی می گویند
شی نمونه ای از کلاس می باشد
شی حال فیزیکی و واقعی دارد و از یک کلاس به تعداد دلخواه (بی نهایت) می توان شی تعریف نمود .که هر شی ویژگی های کلاس را دارا می باشد
برای مثال
شی گرایی در php
برنامه نویسی شئ گرا (Object Oriented Programming): برنامهنویسی شیءگرا یک شیوه برنامه نویسی است که ساختار یا بلوک اصلی اجزای آن، شیها میباشند. در واقع در این شیوه برنامه نویسی، برنامه به شیء گرایش پیدا میکند. به این معنا که دادهها و توابعی که قرار است بر روی این دادهها عمل کنند، تا حد امکان در قالبی به نام کلاس کنار یکدیگر قرار گرفته، جمعبندی شده و یک واحد (کلاس) را تشکیل داده و نسبت به محیط بیرونِ خود، کپسوله میشوند و از این طریق، توابع بیگانه خارج از آن کلاس، دیگر امکان ایجاد تغییر در دادههای درون آن کلاس را ندارند. از دیگر ویژگیهای برنامه نویسی شی گرا، پیچیدگی کم، هزینه کم، امکان گسترش سریع برنامه با خطای کمتر نسبت به سایر پارادیامهای برنامه نویسی است.
فلسفه یی که منجر به شکل گیری ی زبانهای شی گرا شد، عبارت بود از این واقعیت که نحوه عملکرد مغز و شیوه دریافت اطلاعات از محیط پیرامون و پردازش آن اطلاعات (اندیشیدن)، شیوه یی شی گراست، از همین روی میبایستی زبانی تعریف میشد که همین شیوه را مبنای کار خود قرار داده و بازتولید میکرد؛ و دقیقاً به همان شکل که اشیا در جهان خارج، دارای هویت و کارکرد مشخص و یگانه برای خود هستند و در عین حال با دیگر اشیا در ارتباطی تنگاتنگ و مستقیم اند، در زبانهای برنامه نویسی نیز میبایستی این اصول کلی برقرار میشد. تا به این شکل، برنامه نویس بتواند با بهرهگیری از زبانی که به روش اندیشیدنش، نزدیکی بیشتری دارد، شیهای مختلفی را تعریف نموده، این شیها را در ارتباط با یکدیگر قرار داده و از شیهای پویای تولید شده برای حل مساله ی پیش روی استفاده نماید. امروزه اکثر زبانهای دستوری برنامه نویسی از فنون شیءگرایی پشتیبانی میکنند. زبانهایی مانند جاوا، سی++، سی شارپ، دلفی از جمله زبانهای شیءگرا هستند. حتی بسیاری از زبانهای روال گونه که ساختار برنامهها در آنها بلوکهایی با نام پروسیجر است امروزه از فنون شیءگرایی نیز پشتبانی میکنندphp از این جمله است. در این پارادایم برنامه نویسی، دید برنامه نویس به سیستم دید شخصی است که سعی مینماید با پیدا کردن اشیاء مختلف در سیستم و برقراری ارتباط بین آنها سیستم را تولید نماید.
