نمایش نتایج 1 تا 12 از 12

نام تاپیک: عنصر والد

  1. #1
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    عنصر والد

    سلام من اين كد ساده رو براي عنصر والد در شي گرايي نوشتم . در خروجي مقدار reza رو چاپ ميكنه.
    به نظر شما اين كد اشكالي هم داره؟
    نميخوام چند نمونه كد برام اينجا بذاريم ميخوام فقط اگه اين كد اشكالي داره برام بگيد.
    <?php
    class class1{
    var $att=ahmad;
    function operation(){
    echo 'inclass-one'.$this->att;
    }}
    class class2 extends class1{
    var $att=reza;
    function operation(){
    echo '-----------inclass-tow'.$this->att;
    }}
    $c2=new class1();
    $c2=new class2();
    $c2->operation();
    $c2->operation();
    ?>

  2. #2
    کاربر دائمی آواتار irGeek
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    eclipse
    پست
    123

    نقل قول: عنصر والد

    constructor شما کو پس؟
    وقتی یک شی می سازی constructor فراخوانی میشه!

  3. #3
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: عنصر والد

    ميشه در اين موردي كه ميگيد يه كم توضيح بديد؟

  4. #4
    کاربر دائمی آواتار mtchabok
    تاریخ عضویت
    آذر 1389
    محل زندگی
    مازندران - ساری
    سن
    37
    پست
    560

    نقل قول: عنصر والد

    <?php
    class class1{
    public $att='ahmad';
    function operation(){
    echo 'inclass-one'.$this->att;
    }
    }

    class class2 extends class1{
    public $att='reza';
    function operation(){
    echo '-----------inclass-tow'.$this->att;
    }
    }
    $c1=new class1();
    $c2=new class2();
    $c1->operation();
    $c2->operation();
    ?>

  5. #5
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: عنصر والد

    متشكرم.
    ميشه بگيد اين عنصر والد و فرزند توي برنامه نويسي چه كاربردي داره؟ و ميشه يه نمونه مثال در اين مورد كه در عمل به كار بياد رو بنويسيد؟
    چون من در اين مورد چيزي گيرم نيومد.
    متشكرم.

  6. #6
    کاربر دائمی آواتار irGeek
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    eclipse
    پست
    123

    نقل قول: عنصر والد

    ميشه بگيد اين عنصر والد و فرزند توي برنامه نويسي چه كاربردي داره؟
    ببینید شما در برنامه نویسی شی گرا به یک سری ویپگی هایی میرسی که همیشه تکرار میشه فرض یک کلاس ماشین داریم
    هر آماشینی یک سر ی ویژگی مشترک از قبیل رنگ پلاک داشتن فرمان ودنده و... مشترک هستند که در کلاس پدر آورده می شوند ویژگی های مختص برای هر کلاس فرزند نوشته میشه ونیازی به نوشتن توابعی مشترک نیست چون انها رو به ارث برده

  7. #7
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: عنصر والد

    اين مطلب رو هزار بار تا حالا خوندم ولي چون IQ من ضعيف زود يادم ميره
    حالا ميشه يه مثال عملي بزنيد ؟ يه كدي كه يه كاري بكنه.

  8. #8
    کاربر دائمی آواتار mtchabok
    تاریخ عضویت
    آذر 1389
    محل زندگی
    مازندران - ساری
    سن
    37
    پست
    560

    نقل قول: عنصر والد

    بهتره که سری به این تاپیک بزنی : https://barnamenevis.org/showthread.p...8%B3%DB%8C-OOP

  9. #9
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: عنصر والد

    نقل قول نوشته شده توسط mtchabok مشاهده تاپیک
    بهتره که سری به این تاپیک بزنی : https://barnamenevis.org/showthread.p...8%B3%DB%8C-OOP
    اين تاپيك رو قبلاً خوندم مطالبش هم از سايت مجيد آنلاين بدون ذكر منبع كپي شده
    شما بهتر توضيح ميديد.
    متشكرم

  10. #10

    نقل قول: عنصر والد

    دوست عزیز، اجازه بدین اینطور توضیح بدم که در برنامه نویسی شئ گرا، وراثت به معنای ارث بردن کد از کلاس والد هست. بعضی اوقات ممکنه دو کلاس داشته باشیم که شباهتهای زیادی به هم دارن ولی در عین حال، تفاوتهای جزئی هم بین اونها وجود داره. مثلاً توی سیستم دانشگاه، کلاس دانشجو و کلاس استاد رو درنظر بگیرین. قطعاً اطلاعاتی که برای این دو گروه ذخیره میشه، کاملاً یکسان نیست ولی شباهتهایی بین اونها هست. مثلاً هر دو گروه، شماره ملی، نام و نام خانوادگی، نام پدر و... دارن. حالا میتونیم برای سهولت بیشتر، یک کلاس به نام Person درست کنیم و اطلاعات مشترک اونها رو توی اون پیاده سازی کنیم و بعد، کلاسهای Student و Professor هر دو از اون کلاس مشتق بشن. اینطوری، کد مشترک موجود در کلاس Person رو به ارث میبرن و کلاس Person میشه کلاس والد اونها. اینطوری کار شما خیلی راحتتر میشه چون اگه مثلاً الگوریتمی برای بررسی صحت کد ملی نوشتین، یکبار اون رو توی کلاس والد مینویسین و هر دو کلاس مشتق شده، از اون استفاده میکنن. اگه قرار باشه تغییری هم ایجاد بشه، فقط توی کلاس والد تغییر میدین و کلاسهای مشتق شده خودبخود اصلاح میشن. حالا اگه توی کلاس مشتق شده، نیاز باشه یک تابع یا متغیر کلاس والد رو تغییر بدین، کافیه به همون نام، توی کلاس مشتق شده یک تابع یا متغیر دیگه تعریف کنید. اینطوری، اشیاء ایجاد شده از کلاس پایه، تابع موجود در کلاس پایه و اشیاء کلاس مشتق شده، تابع موجود در کلاس مشتق شده رو فراخوانی میکنند. به این عمل اصطلاحاً میگن Override (بازنویسی). ذکر این نکته هم خالی از لطف نیست که فقط عناصر public و protected در کلاس پایه، به ارث برده میشن. مثلاً اگه یک عنصر رو در یک کلاس بصورت private تعریف کنیم و از اون کلاس، کلاس دیگری مشتق بشه، اون عنصر private توی کلاس مشتق شده وجود نخواهد داشت. فرق public و protected هم در اینه که عناصر public ازطریق اشیاء قابل دسترسی هستن ولی عناصر protected خیر. درواقع، عناصر public همه جا قابل استفاده هستن ولی عناصر protected برای کلاسهای مشتق شده مثل public عمل میکنن (توی کد کلاسهای مشتق شده هم قابل استفاده هستن) ولی برای اشیاء ایجادشده از کلاس (چه کلاس والد و چه کلاس مشتق شده) مثل private عمل میکنن و از بیرون کلاس، دیده نمیشن.
    موفق باشید.

  11. #11
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: عنصر والد

    خيلي ممنون.
    ميشه در مورد اين constructor كه ايشون گفتن توضيح بديد ؟ يعني چه ؟ كاربردش چيه؟

  12. #12

    نقل قول: عنصر والد

    Constructor یا سازنده، تابع خاصی هست که همیشه public تعریف میشه و همنام کلاس هست یا از نام خاص construct__ برای اون استفاده میکنیم. وظیفه اصلی این تابع، مقداردهی اولیه به عناصر کلاس در زمان ایجاد شئ هست. این تابع میتونه دارای پارامتر ورودی باشه یا نباشه. اگه این تابع رو ننویسیم، یک سازنده پیشفرض برای کلاس درنظر گرفته میشه که متغیرهای عددی رو با صفر، متغیرهای منطقی رو با false و متغیرهای ارجاعی مثل رشته ها و اشیاء و... رو با null مقداردهی اولیه میکنه.
    برای مثال به کد زیر دقت کنید:

    class Point {
    private $x;
    private $y;

    public function __construct() {
    $this->x = 0;
    $this->y = 0;
    }

    public function Point($x, $y) {
    $this->x = $x;
    $this->y = $y;
    }

    public function Set($x, $y) {
    $this->Point($x, $y);
    }

    public function Display() {
    echo 'X: '.$x.' - Y: '.$y;
    }
    }

    توی کد فوق، همونطور که میبینید تو سازنده برای کلاس Point داریم که یکی دارای پارامتر ورودی هست و یکی دیگه، پارامتر ورودی نمیگیره. به اسم توابع سازنده هم دقت کنید. حالا برای ایجاد شئ از کلاس Point و مقداردهی به عناصر اون، دو راه دارین:

    $p1 = new Point();
    $p1->Set(5, 7);
    $p1->Display();

    $p2 = new Point(3, 4);
    $p2->Display();

    همونطور که میبینید، راه دوم راحتتر هست. ضمناً اگه دقت کنید، تابع Set با فراخوانی تابع سازنده، میتونه وظیفه مقداردهی رو به اون محول کنه. البته این روش فقط وقتی جواب میده که از اسم کلاس برای تابع سازنده استفاده کنیم یا به عبارت دیگه، تابعی که صدا میزنیم، اسم داشته باشه و از اسامی خاص مثل construct__ و... استفاده نکرده باشیم.
    موفق باشید.

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

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