اینترفیس برنامه نویسی شی گرایی کلاس Abstract

تفاوت اینترفیس و کلاس Abstract در برنامه نویسی

در بحث برنامه نویسی شی گرایی با مفاهیم به نام اینترفیس ( Interface ) و کلاس های Abstract روبرو هستیم که کارکرد و شباهت های زیادی به هم دارند.

افراد تازه کار معمولا تفاوت این دو مورد را نمیتوانند به خوبی درک کنند و در این مقاله به این مورد میپردازیم.

مثال های این بخش به زبان کاتلین است و مناسب کسانی که در حال آموزش برنامه نویسی اندروید هستند.

اینترفیس در برنامه نویسی چیست؟

اینترفیس (Interface) در برنامه‌نویسی یک قرارداد (Contract) است که تعیین کننده‌ی مشخصه‌ها و عملکردهایی است که یک کلاس باید پیاده‌سازی کند.

به عبارت دیگر، اینترفیس یک نوع مشخص برای ارتباط بین کلاس‌ها است که تضمین می‌کند که کلاس‌هایی که آن را پیاده‌سازی می‌کنند، مشخصه‌ها و عملکردهای مورد نیاز را دارند.

در برنامه‌نویسی شیءگرا، Interface به عنوان یک قرارداد میان کلاس‌ها عمل می‌کند.

در برنامه نویسی شی گرا، اینترفیس‌ها برای تعریف رفتارهای مشترک بین کلاس‌ها استفاده می‌شوند. استفاده از اینترفیس‌ها می‌تواند به بهبود انعطاف‌پذیری و قابلیت استفاده از کد کمک کند.

پیاده سازی اینترفیس در زبان کاتلین

در زبان کاتلین Kotlin نیز می‌توان از اینترفیس‌ها برای تعریف قراردادهای مشترک استفاده کرد.

در زیر یک مثال از چگونگی تعریف و استفاده از اینترفیس در کاتلین آورده شده است:

interface MyInterface {
    fun myMethod()
}

class MyClass : MyInterface {

    override fun myMethod() {
        println("MyMethod implementation in MyClass")
    }
}

fun main() {

    val myObject = MyClass()


    myObject.myMethod()
}

در این مثال، MyInterface یک اینترفیس با یک متد به نام myMethod است. سپس کلاس MyClass این اینترفیس را پیاده‌سازی می‌کند و متد myMethod را پیاده‌سازی می‌کند.

در نهایت، یک نمونه از MyClass ایجاد شده و متد myMethod از طریق این نمونه فراخوانی می‌شود.

توضیحات تکمیلی داکیومنت رسمی کاتلین: Kotlin Interface

مزایا استفاده از Interface در برنامه نویسی

با استفاده از اینترفیس‌ها، می‌توانید کد خود را به گونه‌ای بنویسید که مستقل از کلاس‌های خاص باشد. به این ترتیب، می‌توانید کد خود را بدون نیاز به تغییر آن برای کلاس‌های جدید، مجدداً استفاده کنید.

در اینجا چند مزیت استفاده از اینترفیس‌ها در برنامه نویسی شی گرا آورده شده است:

  • انعطاف‌پذیری: استفاده از Interfaceها می‌تواند به بهبود انعطاف‌پذیری کد کمک کند. به این ترتیب، می‌توانید کد خود را بدون نیاز به تغییر آن برای کلاس‌های جدید، مجدداً استفاده کنید.
  • قابلیت استفاده: استفاده از Interfaceها می‌تواند به بهبود قابلیت استفاده از کد کمک کند. به این ترتیب، می‌توانید کد خود را آسان‌تر برای دیگران درک کنید.
  • تست‌پذیری: استفاده از Interfaceها می‌تواند به بهبود قابلیت تست‌پذیری کد کمک کند. به این ترتیب، می‌توانید کد خود را آسان‌تر تست کنید.

کلاس Abstract در زبان کاتلین

یک کلاس Abstract (که به عنوان “کلاس انتزاعی” هم نامیده می‌شود) در برنامه‌نویسی یک نوع کلاس است که نمی‌توانید از آن یک نمونه مستقیم ایجاد کنید.

این کلاس‌ها معمولاً برای ارائه یک پایه انتزاعی برای کلاس‌های زیرمجموعه (subclasses) استفاده می‌شوند.

یک کلاس Abstract می‌تواند شامل متدهایی با بدنه‌های (implementations) ناقص یا حتی بدون بدنه (abstract) باشد.

ساخت کلاس Abstract در زبان کاتلین

در کاتلین یک کلاس Abstract نیاز به کلمه کلیدی abstract دارد. متدهای Abstract با استفاده از کلمه کلیدی abstract بدون بدنه تعریف می‌شوند.

abstract class MyAbstractClass {
    // متد Abstract بدون بدنه
    abstract fun myAbstractMethod()

    // متد با بدنه
    fun myConcreteMethod() {
        println("Concrete method in abstract class")
    }
}

اهمیت کلاس‌های Abstract در این است که اجازه می‌دهند یک ساختار ارث‌بری (inheritance) برای کلاس‌های زیرمجموعه ایجاد شود و می‌توانند به عنوان یک پایه مشترک برای کلاس‌های مشتق شده عمل کنند.

استارتاپ چیست؟ نکات مهم برای یادگیری

به بیان دیگر سایر کلاس ها نیز میتوانند از این نوع کلاس ها ارث بری کنند.

فرق اینترفیس با کلاس Abstract

تا اینجا با ساختار هر دو مورد به خوبی آشنا شدیم و دیدیم که تقریبا کارهای مشابهی انجام میدهند. اما چه تفاوتی باهم دیگر دارند؟

  • متد سازنده: در کلاس های Abstract میتوانید متدسازنده داشته باشید اما برای Interface نمیتوانید متد سازنده تعریف کنید.
  • متدها: در کلاس های Abstract میتوانید متدهایی داشته باشید بخش بدنه آنها نیز پیاده سازی شده اما در اینترفیس فقط متدها تعریف میشوند.
  • ارث بری: کلاس های Abstract میتوانند توسط کلاس های دیگر ارث برده شوند اما اینترفیس چنین قابلیتی ندارد.
  • نوع متد: متدها در کلاس های Abstract میتوانند بصورت عمومی یا خصوصی تعریف شوند اما در اینترفیس متدها حتما باید بصورت عمومی تعریف شوند.

به طور کلی، اینترفیس‌ها برای ارائه یک قرارداد برای پیاده‌سازی متدها و ایجاد ارتباطات چندگانه (multiple inheritance) مناسب هستند، در حالی که کلاس‌های Abstract بیشتر برای ارائه یک پایه مشترک برای کلاس‌های مشتق شده و افزودن قابلیت‌های مشترک استفاده می‌شوند.


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

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *