/
  • interface ها

  • ارسال پاسخ   امتیاز موضوع:
    • 1 رأی - میانگین امیتازات: 5
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی interface ها
    نویسنده پیام
    Alimokhlesi آفلاین
    مدیر کل
    **********

    ارسال‌ها: 457
    تاریخ عضویت: ۱۳۸۷ آذر ۲۵
    اعتبار: 13
    تشکرها : 601
    ( 1126 تشکر در 412 ارسال )
    ارسال: #1
    interface ها
    به طور کلی خیلی از اوقات تو برنامه های مختلف کارایی داریم که باهم هم نام هستند.
    این همنامی بعضی مواقع به یکی بود کار منجر میشه و بعضی وقتا به هم نامی صرف و کاری جداگونه.
    معمولا تو برنامه نویسای PHP کمتر کسی ( بیکاره Big Grin ) کار هار و براساس نوع و ساختار شون دسته بندی می کنه. به عنوان مثال تو یک سایت ما ممکن حدود N با عملیات ویرایش داشته باشیم. خ وب چی کار می کنیم.
    اولا چون از این دست کد ها زیاد دیدم خدمتتون عرض کنم عده ای میان و یک کلاس می نویسن مثلا با نام X . بعد همه ی کاراشونو اون تو انجام میدن.این کاملا اشتباهه. اصول برنامه نویسی شی گرا می گه هر برنامکه در عین اینکه باید دسته بند شیی داشته باشه باید دسته بند موضوعی و نوعی هم برای خودش داشته باشه. همون مثلا در ویرایش. شما می تونید برای هر شی تون یک کلاس با نام همون شی ایجاد کنید . و برای هرکدوم از اشیا تون تو کلاس یه متد ویرایش تعریف کنید.
    اما یکسری میان اینکاروانجام میدن ، یه کار بهتر هم کنارش انجام میدن. میان یه interfacr تعریف میکنن و متدهای تکراری رو که تو کلاس های مختلف تکرار میشن رو تو اون اینرفیس مینویسن.
    بعد به کلاس میگن بیا و از اینترفیس ایمپلیمنت implement بگیر. اینبار کلاس باید پیاده شه اما باید تمامی متدهای داخل اینترفیس رو داخل خودش داشته باشه.
    این کار برای مدیران پروژه که میخوان کاراشون رو تعمیم بدی و یا پروژه رو د اختیار سایر برنامه نویسان قرار بدن ( به همراه یک سیستم نام گزاری مفهوم و گویا ) خیلی بهشون کمک میکنه. به علاوه اینکه برنامه رو در اصطلاح خوانا تر میکنه .تو اینترفیس هیچ بدنه ای از متدها پیاده نمیشن.و البته Private متدها توش قرار نمی گیرن.
    به ساختار زیر توجه نمایید :
    کد PHP:
    <?php
    interface IPrinterAction
    {
        public function 
    PrintText($Text);
        public function 
    PrintLink($LinkHref,$LinkCaption); 
    }

    class 
    News implements IPrinterAction 
    {
        public function 
    PrintText($Text)
        {
            echo 
    "<font color='red'>".$Text."</font>";
        }
        
        public function 
    PrintLink($LinkHref,$LinkCaption)
        {
            echo 
    "<a href='".$LinkHref."'><font color='Green'>".$Text."</font></a>";
        }
    }

    class 
    Article implements IPrinterAction 
    {
        public function 
    PrintText($Text)
        {
            echo 
    "<font color='Blue'>".$Text."</font>";
        }
        
        public function 
    PrintLink($LinkHref,$LinkCaption)
        {
            echo 
    "<a href='".$LinkHref."'><font color='Red'>".$Text."</font></a>";
        }
    }
    ?>
    توصیه میشه ساختار نام گذاری در اینترفیس ها جهت تشخیص و سهولت با نام I شروع بشه.
    سئوالی داشتین در خدمتم Smile
    __________________________________________________________________________
    علم تاج افتخار دنیا و یادگار پس از مرگ است
    (آخرین ویرایش در این ارسال: ۱۳۸۸ تير ۲۸ ۰۵:۳۴ عصر، توسط Alimokhlesi.)
    ۱۳۸۸ تير ۲۸ ۰۵:۳۲ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : oia Na3r amir.s admin zoghal parvane payam Masoud1365 behrooz_heyhu
    zoghal آفلاین
    صالح سوزنچی
    *****

    ارسال‌ها: 1,766
    تاریخ عضویت: ۱۳۸۷ دي ۲۵
    اعتبار: 23
    تشکرها : 1500
    ( 1729 تشکر در 992 ارسال )
    ارسال: #2
    RE: interface ها
    چه موقع نیاز به تعریف interface چندگانه و جدا داریم؟
    ۱۳۸۸ مرداد ۲ ۰۸:۵۲ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    oia آفلاین
    محمد ثانی
    *****

    ارسال‌ها: 2,014
    تاریخ عضویت: ۱۳۸۷ آذر ۲۶
    اعتبار: 66
    تشکرها : 2330
    ( 2091 تشکر در 1290 ارسال )
    ارسال: #3
    RE: interface ها
    من برای استفاده از این امکان توجیح نشدم Huh
    ۱۳۸۸ مرداد ۲ ۱۱:۰۵ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Alimokhlesi آفلاین
    مدیر کل
    **********

    ارسال‌ها: 457
    تاریخ عضویت: ۱۳۸۷ آذر ۲۵
    اعتبار: 13
    تشکرها : 601
    ( 1126 تشکر در 412 ارسال )
    ارسال: #4
    RE: interface ها
    هر سیستمی در عمل یه هسته داره.
    هسته سیستم میتونه به دوبخش عمده قسمت بشه:
    1- فعالیت هایی که بسیار تکراری هستند ( mysql_connect)
    2- فعالیت هایی که از لحاظ نام با هم مشترکن ولی عملیاتشون و خروجیشون ممکنه با هم متفاوت باشه. (مثل چاپ اطلاعا و نمایششون در خروجی یا ....)
    البته این تقسیم بندی صرف نظر از دیدگاه نگاه به منطق اصلی پروژه ( که میتونه یک آزمون آنلاین یا فروشگاه یا... باشه ) دیده شده
    پیاده سازی قسمت اول روش هایی داره که براتون در آینده شرح خواهم داد
    اما پیاده سازی قسمت دوم رو با Interface انجام میدن. بدین ترتیب ما درون همه ی کلاس هایی که از اون اینترفیس داریم که به ما داره میگه باید یکسری متد رو پیاده کنید. روش پیاده سازی اون متد مهم نیست.مهم حضور و وجودشه. فرض کنید متد مرتب سازی. روش های مختلفی وجود داره اینکه با توجه به تعداد درایه های موجود در ارایه چه جوری باید مرتب سزی انجام بشه دست خود کاربره.
    در اصطلاح به اینجور ساختار های که یک فعالیت واحد توسیستم وجود داشته باشه که ( مرتب سازی ) که کارکرد های و روشهای متفاوت برای پیاده سازی داشته باشه ( باینری و دی وی و... ) میگن Polymorphism یا چند ریختی .
    تو خیلی از پروژه ها از این ساختار ها استفاده نمی شه Confused ولی تو پروزه هایی که بزرگن و گروهی نوشته میشن باید از این سیستم استفاده کرد تا سایر برنامه نویسها منطق اصلی برنامه رو ( البته بخشیش رو) درک کنن
    صالح جان درباره سئوالت بیشتر توضیح بده. ممنون
    __________________________________________________________________________
    علم تاج افتخار دنیا و یادگار پس از مرگ است
    ۱۳۸۸ مرداد ۳ ۰۹:۳۱ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : admin Y.P.Y amir.s scorpion
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS