جاوا

جلسه ۳۸: انتزاع چیست؟ در جاوا

این جلسه برای آشنایی با مفهوم بسیار مهمی از برنامه نویسی شی گرا یعنی انتزاع است. موارد زیر را بیان خواهیم کرد:

  • تعریف
  • مثالی از دنیای واقعی
  • مثالی از جاوا
  • انواع داده های انتزاعی
  • چگونه می توان به انتزاع دست یافت
  • کلمه کلیدی abstract

تعریف

در برنامه نویسی شی گرا به نمایش ویژگی های ضروری یک شی به کاربر و پنهان کردن جزئیات داخلی برای کاهش پیچیدگی، انتزاع می گویند. می توان انتزاع را اینگونه بیان کرد که کاربر فقط باید بداند “یک شی چه کاری انجام می دهد؟” به جای اینکه بداند “چگونه انجام می دهد؟”.

مثالی از دنیای واقعی

تصویر بالا از کاربران و مدیر یک برنامه ، نمونه ای خوب از انتزاع در دنیای واقعی است. کاربر فقط می تواند از ویژگی هایی محدود از یک برنامه استفاده کند و با آنها تعامل داشته باشد و از جزئیات پیاده سازی یا نحوه توسعه برنامه بی اطلاع است. معمولاً کاربران فقط به عملکرد یک برنامه فکر می کنند. یک مدیر می تواند به بسیاری از ویژگی های برنامه دسترسی داشته باشد و هیچ چیز از او پنهان نیست. مدیر می تواند فعالیت کاربران را کنترل کند ، می داند که چگونه برنامه ساخته شده است و می تواند ویژگی های جدید را با استقرار در برنامه پیاده سازی کند. در مثال فوق ، انتزاع برای کاربر اعمال می شود اما برای مدیر اعمال نمی شود.

بیایید نمونه دیگری از انتزاع را بررسی کنیم. دکمه تنظیم صدای کنترل تلویزیون را در نظر بگیرید. با کلیک یک دکمه ، ما از تلویزیون می خواهیم که صدا را بلندتر کند. فرض کنید این دکمه متد ()volumeUp را فراخوانی می کند. و تلویزیون با تولید صدایی بلندتر از قبل پاسخ می دهد. نحوه عملکرد مدارهای داخلی تلویزیون برای ما به عنوان کاربر مشخص نیست ، با این حال ما عملکرد ارائه شده برای افزایش صدای تلویزیون را می دانیم.

مثالی از جاوا

در جاوا ، به راحتی می توان انتزاع را در عمل مشاهده کرد. بیایید یک مثال از کلاس ریاضی جاوا (کلاس Math) را بررسی کنیم. متدهای داخلی زیادی در این کلاس وجود دارد که می تواند توسط برنامه نویس مورد استفاده قرار گیرد. چند مورد از این متدها را برای استفاده از عملکردشان بکار می بریم:

class TestAbstraction {

  public static void main( String args[] ) {
    int min = Math.min(15,18);     //find min of two numbers
    double square = Math.pow(2,2); //calculate the power of a number

    System.out.println("The min of 15 & 18 is: " + min);
    System.out.println("The square of 2 is: " + square);
  }

}

در کد بالا:

  • از متد ()Math.min برای یافتن کوچکترین عدد از بین دو عدد استفاده می شود
  • از متد ()Math.pow برای یافتن ۲ به توان ۲ استفاده می شود.

اما کاربر نیازی به اطلاع از نحوه پیاده سازی این دو متد در کلاس Math ندارد.

انواع داده های انتزاعی

یک نوع داده انتزاعی (یا کلاس) نوعی است که فقط تعریف می کند “چه عملیاتی باید انجام شود؟” به جای “چگونه انجام شود؟”.

در تعریف انواع داده های انتزاعی ، کاربران فقط موارد ضروری را باید بدانند ، یعنی عملکرد آن نوع داده و اینکه “چگونه باید برای دستیابی به عملکرد مشخص شده پیاده سازی انجام شود؟” پنهان است. نمونه ای دیگر از نوع داده های انتزاعی کلاس پشته (stack) در جاوا است که کاربر می داند برای آن متدهای ()push()، pop() ، size و غیره وجود دارد اما نمی داند که چگونه اینها پیاده سازی می شوند.

چگونه می توان به انتزاع دست یافت

در جاوا ، از اجزای زیر برای دستیابی به انتزاع استفاده می کنیم:

  • کلاسهای abstract
  • اینترفیس ها

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

کلمه کلیدی abstract

در جاوا ، دستیابی به انتزاع بدون استفاده از کلمه کلیدی abstract غیرممکن است. کلمه کلیدی abstract فقط برای متدها و کلاس ها قابل استفاده است. هرگاه کلمه کلیدی abstract برای کلاسها یا متدها استفاده شود ، این متدها یا کلاسها فقط اینکه “چه عملیاتی باید انجام شود” را مشخص می کنند و هر کسی که این متد یا کلاس را در کد خود استفاده کند باید با جزئیات اجرای این متد یا کلاس را مشخص کند . آیا همین تعریف انتزاع نیست؟ یعنی اینکه فقط به کسی بگوییم چه کاری باید انجام شود و اینکه چطور باید انجام شود ، داستان دیگری است. اکنون که با اصول انتزاع آشنا شدید ، در جلسه بعدی انتزاع را با جزئیات بیشتری بررسی می کنیم.

نوشته های مشابه

دیدگاهتان را بنویسید

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

دکمه بازگشت به بالا