• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
interface ها
#1
به طور کلی خیلی از اوقات تو برنامه های مختلف کارایی داریم که باهم هم نام هستند.
این همنامی بعضی مواقع به یکی بود کار منجر میشه و بعضی وقتا به هم نامی صرف و کاری جداگونه.
معمولا تو برنامه نویسای PHP کمتر کسی ( بیکاره Big Grin ) کار هار و براساس نوع و ساختار شون دسته بندی می کنه. به عنوان مثال تو یک سایت ما ممکن حدود N با عملیات ویرایش داشته باشیم. خ وب چی کار می کنیم.
اولا چون از این دست کد ها زیاد دیدم خدمتتون عرض کنم عده ای میان و یک کلاس می نویسن مثلا با نام X . بعد همه ی کاراشونو اون تو انجام میدن.این کاملا اشتباهه. اصول برنامه نویسی شی گرا می گه هر برنامکه در عین اینکه باید دسته بند شیی داشته باشه باید دسته بند موضوعی و نوعی هم برای خودش داشته باشه. همون مثلا در ویرایش. شما می تونید برای هر شی تون یک کلاس با نام همون شی ایجاد کنید . و برای هرکدوم از اشیا تون تو کلاس یه متد ویرایش تعریف کنید.
اما یکسری میان اینکاروانجام میدن ، یه کار بهتر هم کنارش انجام میدن. میان یه interfacr تعریف میکنن و متدهای تکراری رو که تو کلاس های مختلف تکرار میشن رو تو اون اینرفیس مینویسن.
بعد به کلاس میگن بیا و از اینترفیس ایمپلیمنت implement بگیر. اینبار کلاس باید پیاده شه اما باید تمامی متدهای داخل اینترفیس رو داخل خودش داشته باشه.
این کار برای مدیران پروژه که میخوان کاراشون رو تعمیم بدی و یا پروژه رو د اختیار سایر برنامه نویسان قرار بدن ( به همراه یک سیستم نام گزاری مفهوم و گویا ) خیلی بهشون کمک میکنه. به علاوه اینکه برنامه رو در اصطلاح خوانا تر میکنه .تو اینترفیس هیچ بدنه ای از متدها پیاده نمیشن.و البته Private متدها توش قرار نمی گیرن.
به ساختار زیر توجه نمایید :
کد پی‌اچ‌پی:
<?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
علم تاج افتخار دنیا و یادگار پس از مرگ است
  پاسخ
#2
چه موقع نیاز به تعریف interface چندگانه و جدا داریم؟
  پاسخ
تشکر شده توسط :
#3
من برای استفاده از این امکان توجیح نشدم Huh
  پاسخ
تشکر شده توسط :
#4
هر سیستمی در عمل یه هسته داره.
هسته سیستم میتونه به دوبخش عمده قسمت بشه:
1- فعالیت هایی که بسیار تکراری هستند ( mysql_connect)
2- فعالیت هایی که از لحاظ نام با هم مشترکن ولی عملیاتشون و خروجیشون ممکنه با هم متفاوت باشه. (مثل چاپ اطلاعا و نمایششون در خروجی یا ....)
البته این تقسیم بندی صرف نظر از دیدگاه نگاه به منطق اصلی پروژه ( که میتونه یک آزمون آنلاین یا فروشگاه یا... باشه ) دیده شده
پیاده سازی قسمت اول روش هایی داره که براتون در آینده شرح خواهم داد
اما پیاده سازی قسمت دوم رو با Interface انجام میدن. بدین ترتیب ما درون همه ی کلاس هایی که از اون اینترفیس داریم که به ما داره میگه باید یکسری متد رو پیاده کنید. روش پیاده سازی اون متد مهم نیست.مهم حضور و وجودشه. فرض کنید متد مرتب سازی. روش های مختلفی وجود داره اینکه با توجه به تعداد درایه های موجود در ارایه چه جوری باید مرتب سزی انجام بشه دست خود کاربره.
در اصطلاح به اینجور ساختار های که یک فعالیت واحد توسیستم وجود داشته باشه که ( مرتب سازی ) که کارکرد های و روشهای متفاوت برای پیاده سازی داشته باشه ( باینری و دی وی و... ) میگن Polymorphism یا چند ریختی .
تو خیلی از پروژه ها از این ساختار ها استفاده نمی شه Confused ولی تو پروزه هایی که بزرگن و گروهی نوشته میشن باید از این سیستم استفاده کرد تا سایر برنامه نویسها منطق اصلی برنامه رو ( البته بخشیش رو) درک کنن
صالح جان درباره سئوالت بیشتر توضیح بده. ممنون
علم تاج افتخار دنیا و یادگار پس از مرگ است
  پاسخ
تشکر شده توسط : admin Y.P.Y amir.s scorpion


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان