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

Abstract یا انتزاع مفهومی در برنامه نویسی شی گرا است که برای جلوگیری از تکرار کد، تمیز تر شدن کد ها، کم شدن پیچیدگی برنامه و پنهان کردن برخی جزئیات از مفهوم انتزاع یا abstraction استفاده می کنیم. انتزاع را هم در متد ها (methods) و هم در کلاس ها (class) می توان استفاده کرد.

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

 

هم متد ها و هم کلاس ها می توانند به صورت Abstract استفاده شوند. انتزاع در متد ها شامل تعریف آن ها می شود و ربطی به پیاده سازی Method ندارد. از کلاس های انتزاعی در زبان های برنامه نویسی شی گرا مثل جاوا (java)، سی شارپ (C#) و سی پلاس پلاس (C++) می توان استفاده کرد.

 

در واقع وقتی یک کلاس به صورت abstract تعریف می شود، نمی‌توان به صورت مستقیم از آن شی یا object ساخت و این کار باعث تمیز تر شدن کد ها و همچنین امنیت داده ها می‌شود. کلاسی که به صورت انتزاعی تعریف شده است برای بیان و تعریف مفاهیم کلی و همچنین پنهان کردن جزئیات غیر ضروری استفاده می شود. نکته مهمی که باید رعایت شود این است که در یک کلاس abstract میتوان متد ها را به صورت انتزاعی تعریف کرد یا نکرد، اما در کلاسی که abstract نیست نمیتوان متد abstract تعریف کرد.

 

وقتی یک زیر کلاس یا Sub Class از کلاس انتزاعی توسعه می یابد علاوه بر اینکه تمام متد ها و ویژگی های خود را دارد ویژگی و متد های کلاس abstract را نیز شامل می شود. به کلاس هایی که توسط کلاس abstract ایجاد شده اند، کلاس مشتق شده یا derived class نیز گفته می شود. Abstract class به عنوان الگو برای کلاس های مشتق شده عمل می کند.

مفهوم انتزاع یا abstract بسیار شبیه به ارث بری یا inheritance است با این تفاوت که در ارث بری کلاس والد کاملا پیاده سازی می شود و خصوصیات کلی را شامل می شود اما در انتزاع ابر کلاس یا super class متد های پیاده سازی شده ندارد. در پست های بعدی حتما به مفهوم ارث بری در برنامه نویسی شی گرا خواهیم پرداخت.

برای درک بهتر مفهوم انتزاع آن را با مثالی واقعی بررسی می کنیم:

فرض کنید می خواهید میوه بخرید. وقتی به میوه فروشی می‌روید چه می گویید؟ آقا دو کیلو میوه می خواستم؟ خب اگر این را بگویید قاعدتا میوه فروش از شما می پرسد چه میوه ای؟ پس در اینجا میوه یک مفهوم انتزاعی است و سیب، پرتغال، موز و انگور نوعی زیر کلاس حساب می شوند. یعنی شما می توانید 100 عدد موز بخرید و نمی‌توانید 100 عدد میوه بخرید. در واقع میوه نام دسته بندی است. برای این است که شما وقتی بخواهید پرتغال بخرید بدانید که میوه می خواهید و به میوه فروشی بروید. در برنامه نویسی شی گرا هم همین موضوع صدق می کند. کارمند حقوق دارد. اما حقوق هر کارمند متفاوت است و هر کدام بر اساس آیتم های متفاوتی باید محاسبه شوند. پس متد محاسبه حقوق کارمند به صورت abstract تعریف می شود.

Abstract یکی از مفاهیم مهم شی گرایی است که در پست های قبل به آن اشاره کردیم. همچنین در مورد کپسوله سازی یا Encapsulation هم پستی داریم که بررسی آن خالی از لطف نیست. در خلاف جهت انتزاع مفهوم Concrete را داریم. کلاس Concrete، کلاسی است که از آن به سادگی می توانیم شی یا object بسازیم.

 

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

نظرات ارزشمند خود را با ما به اشتراک بگذارید

نظرات :
هنوز نظری ثبت نشده است.