نمایش نتایج 1 تا 40 از 165

نام تاپیک: آموزش برنامه نویسی OOP

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1

    آموزش برنامه نویسی OOP

    سلام
    از عنوان انتخاب شده معلوم هست که در مورد چی هست ولی من واسه اون دسته از کسانی که به تازگی وارد برنامه نویسی شند توضیح می دم :
    برنامه نویسی شی گرا (OOP مخفف Object Oriented Programming) شیوه ای از برنامه نویسی است که بیشتر بر روی شی کار میکند .
    هر شی دارای توابع و متغیر هایی می باشد که درون شی تعریف می شوند.
    در PHP ما با استفاده از Class اشیا مورد نظر خود را تعریف می کنیم .
    مثال :
    <?php
    class Myclass
    {
    // some code
    }
    ?>


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

    <?php
    class Myclass
    {
    function printphp()
    {
    echo 'php';
    }
    }
    ?>


    حالا این کد رو اجرا می کنیم . ولی خروجی در صفحه مشاهده نمی کنیم ! چرا ؟
    برای اینکه ما باید این شی را در برنامه به یک متغیر نسبت بدهیم . بدین صورت :

    <?php
    class Myclass
    {
    function printphp()
    {
    echo 'php';
    }
    }

    $my_var = new Myclass();
    ?>


    همانطور که می بینید توسط new بعد از مساوی نام کلاسی که ساختیم را می نویسیم.
    تا اونجا که من میدونم در PHP 4 یک کپی از این کلاس درون متغیر یا شی قرار می گیره .. اما در PHP 5 فقط یک دستگیره از کلاس به شی ارجا می شود.
    حالا نوبت به استفاده تابع درون کلاس می باشد. برای اینکه به توابع یا متغیر های درون Class دسترسی داشته باشیم باید از پس از نام متغیر از <- استفاده کنیم :

    <?php
    class Myclass
    {
    function printphp()
    {
    echo 'php';
    }
    }

    $my_var = new Myclass();
    $my_var->printphp();
    ?>

    پس از تعریف شی در خط 11 اسکریپت به PHP فرمان اجرای تابع ()printphp از Myclass رو میده و پس از اجرای این اسکریپت می بینید که php درون صفحه نمایش داده می شود.

    خیلی ساده بود نه ؟

    حالا یکم سخت ترش می کنیم.
    به کلاسی که ساختیم یک متغیر اضافه می کنیم. بدین صورت :

    <?php
    class Myclass
    {
    public $myname;

    function printphp()
    {
    echo 'php';
    }
    }

    $my_var = new Myclass();
    $my_var->printphp();
    ?>


    تابع ()printphp رو به نام ()print_my_name تغییر نام می دهیم :

    <?php
    class Myclass
    {
    public $myname;

    function print_my_name()
    {
    echo 'php';
    }
    }

    $my_var = new Myclass();
    $my_var->print_my_name();
    ?>


    یک تابع جدید با نام ()set_my_name بوجود می آوریم :

    <?php
    class Myclass
    {
    public $myname;

    function print_my_name()
    {
    echo 'php';
    }

    function set_my_name()
    {

    }
    }

    $my_var = new Myclass();
    $my_var->print_my_name();
    ?>


    خب حالا یه سوال پیش میاد که ما به متغیر هایی که درون کلاس تعریف می کنیم به چه صورت دسترسی پیدا می کنیم ؟
    جواب خیلی سادست .. همون طور که نام تابع رو صدا زدیم می تونیم بجای نام تابع نام متغیر رو بنویسیم و به متغیر درون کلاس دسترسی داشته باشیم.


    $my_var->myname = "ALI"; // می توانید به متغیر بدهید

    $x = $my_var->myname; // می توانید مقدار متغیر را درون متغیر دیگری بریزید


    ما تاحالا از بیرون کلاس به متغیر ها و توابع دسترسی داشتیم .. اما راهی برای دسترسی از درون کلاس به اشیاء کلاس هست ؟
    بله .. توسط متغیر this$ می توانید به متغیر ها درون یک شی دسترسی داشته باشید و به آنها مقدار بدهید یا مقدار آنها را درون متغیر دیگری قرار دهید یا مقدار آن را مورد مقایسه قرار دهید.
    توی یک مثال ساده توسط this$ به متغیر myname$ مقداری می دهیم :

    <?php
    class Myclass
    {
    public $myname;

    function print_my_name()
    {
    echo 'php';
    }

    function set_my_name()
    {
    $this->myname = 'Ali';
    }
    }

    $my_var = new Myclass();
    $my_var->print_my_name();
    ?>


    در تابع ()set_my_name توسط this$ به متغیر myname$ مقدار Ali را ارجا دادیم.
    function set_my_name()
    {
    $this->myname = 'Ali';
    }


    حالا تابع ()print_my_name را با کمک this$ طوری تغییر می دهیم که متغیر myname$ را چاپ کند :

    <?php
    class Myclass
    {
    public $myname;

    function print_my_name()
    {
    echo $this->myname;
    }

    function set_my_name()
    {
    $this->myname = 'Ali';
    }
    }

    $my_var = new Myclass();
    $my_var->print_my_name();
    ?>


    با اجرای این اسکریپت بازم شما هیچ خروجی نخواهید داشت .. زیرا شما باید ابتدا تابع ()set_my_name را اجرا کنید تا درون متغیر myname$ مقدار Ali قرار بگیرد .. سپس تابع ()print_my_name را اجرا کنید .. پس قبل از دستور اجرای تابع ()print_my_name دستور اجرای تابع ()set_my_name را صادر می کنیم :

    <?php
    class Myclass
    {
    public $myname;

    function print_my_name()
    {
    echo $this->myname;
    }

    function set_my_name()
    {
    $this->myname = 'Ali';
    }
    }

    $my_var = new Myclass();
    $my_var->set_my_name();
    $my_var->print_my_name();
    ?>


    حالا برای بهتر شدن این کد آخرین تغیرات رو انجام می دهیم در تابع ()set_my_name یک تغییر کوچک می دهیم :

    function set_my_name($name)
    {
    $this->myname = $name;
    }


    فکر می کنم فهمیدید چیکار کردم ! با تغییرات انجام شده تابع ()set_my_name یک آرگمان اجباری از شما میخواهد و مقدار همون آرگمان رو در خروجی چاپ می کنه پس حالا باید دستور اجرا ی تابع ()set_my_name رو تغییر بدهیم تا رشته ای که به عنوان آرگمان می گیرد را چاپ کند.

    $my_var->set_my_name('Ali');


    این هم اسکریپت نهایی :

    <?php
    class Myclass
    {
    public $myname;

    function print_my_name()
    {
    echo $this->myname;
    }

    function set_my_name($name)
    {
    $this->myname = $name;
    }
    }

    $my_var = new Myclass();
    $my_var->set_my_name('Ali');
    $my_var->print_my_name();
    ?>


    فایل پیوست شده هم همین اسکریپت هست .

    انشا الله اگر این جلسه مورد استقبال دوستان قرار گرفت در جلسه دوم به بحث در مورد :

    __construct()
    __destruct()
    self::
    parent::

    می پردازیم ..

    اگر سوالی در این مورد داشتید بپرسید .. فقط سوالاتی که در همین مورد هستند رو مطرح کنید .



    موفق و پیروز باشید
    فایل های ضمیمه فایل های ضمیمه

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •