شی گرایی چیست؟
در این مطلب به این سوال خواهیم پرداخت که OOP (برنامه نویسی شی گرا) چیست؟ و معنا، مفاهیم و فواید آنرا بازگو خواهیم کرد. یکی از محبوبترین رویکردهای برنامهنویسی، برنامهنویسی شیگرا (OOP)، بر روی اشیاء، یعنی مجموعهای از دادهها و کدها ساخته شده است.
برنامه نویسی شی گرا (OOP) به عنوان یک پارادایم(رویکرد) برنامه نویسی (و نه یک زبان خاص) تعریف میشود که بر اساس مفهوم اشیا، یعنی مجموعه ای از دادههای موجود در فیلدها، و کدهایی که رویهها را نشان میدهد، به جای سیستم منطق مبتنی بر رویه معمول ساخته شده است. این مقاله مفاهیم اساسی OOP و مهمترین مزایای آن را برای شما توضیح میدهد.
تصویری دورنما از یک پیاده سازی OOP
رویکرد برنامه نویسی شی گرا (OOP) گروه هایی از اشیاء را شناسایی میکند که ارتباط نزدیکی با روشهایی دارند که با آنها مرتبط هستند. همچنین مفاهیم صفت و وراثت مِتد را پوشش میدهد. مؤسسه فناوری ماساچوست اولین مؤسسهای بود که از اصطلاحات مربوط به «اشیاء» استفاده کرد، به این معنا که امروزه از دستاوردهای اواخر دهه 1950 و اوایل دهه 1960 از برنامه نویسی شی گرا در حال استفاده هستیم.
برنامه نویسی شی گرا روشی برای ذخیره دادهها و عملیات مورد نیاز برای پردازش آن داده ها بر اساس زمینه ریاضی معروف به انواع دادههای انتزاعی است. برنامه نویسی میتواند به لطف OOP به سطح انتزاعیتر پیشرفت کند. تقریباً همه توسعه دهندگان از الگوی اصلی برنامه نویسی به نام برنامه نویسی شی گرا در مقطعی از حرفه خود استفاده میکنند.
بیشتر بخوانید: تفاوت برنامه نویسی شی گرا و ساخت یافته چیست؟
برنامه نویسی شی گرا چگونه کار میکند
مرحله اول در OOP جمع آوری تمام اشیایی است که یک برنامه نویس میخواهد با آنها کار کند. پس ابتدا روابط بین آنها را تعیین میکند، فرآیندی که بهعنوان «مدلسازی داده» شناخته میشود. دادهها و توابع برای ایجاد یک شی از ساختار داده ترکیب میشوند. برنامه نویسان همچنین میتوانند بین چندین شیء ارتباط برقرار کنند. برای مثال، اشیا میتوانند صفاتی را از اشیاء دیگر الگو برداری کنند. انسان یک تصویر مستقیم از یک شی است.
مثلاً شما به طور منطقی پیشبینی میکنید که یک فرد دارای یک نام باشد. این به عنوان در اختیار داشتن شخص تلقی میشود. چیز دیگری که میتوانید از او انتظار داشته باشید، مثلاً توانایی او در انجام آن کاری است، مانند راه رفتن یا رانندگی. ممکن است کسی این را به عنوان یکی از تواناییهای فرد در نظر بگیرد. اشیا به عنوان چارچوبی برای کد برنامه نویسی شی گرا عمل میکنند.
هنگامی که اشیاءِ شما در جای خود قرار گرفتند، میتوانید از روابط بین آنها برای رسیدن به نتیجه مطلوب استفاده کنید. نمایشی را در نظر بگیرید که در آن شخصی سوار ماشین میشود و آن را از نقطه A به نقطه B میبَرد. شروع کار با اشیایی مانند یک شخص یا یک وسیله نقلیه، توصیف خواهد شد.
مفاهیم کلیدی شی گرایی
برای درک و استفاده از برنامه نویسی شی گرا، دانستن مفاهیم کلیدی زیر ضروری است:
1.طبقه بندی(کلاس) :
کلاس واحد اساسی C++ است که راه را برای برنامه نویسی شی گرا هموار میکند. این یک نوع داده توسط کاربر تعریف شده است که با ایجاد نمونهای از آن کلاس قابل دسترسی و استفاده است. اعضای داده و توابع هرکدام عضو خود را دارد. یک کلاس با طرح اولیه یک شی قابل مقایسه است. هم توابع عضو و هم اعضای داده در کلاس ها یافت میشوند. اعضای داده داخل کلاس با استفاده از این توابع عضو دستکاری میشوند.
- شیء :
در نقطه ایجاد یک کلاس، اولین توضیحات، شی ای است که تعریف میشود. یک نمونه از یک کلاس در یک شی وجود دارد. نکته قابل توجه این است که وقتی یک کلاس مشخص میشود، سیستم هیچ فضای حافظهای را به آن اختصاص نمیدهد، اما زمانی که نمونهسازی میشود، یعنی زمانی که یک شی تشکیل میشود، این فضا تخصیص مییابد. اشیاء دنیای واقعی حالت و رفتار مشترک دارند، یک جفت ویژگی. یک شی رفتار خود را از طریق روشهای مختلف پنهان میکند و اطلاعات خود را در ویژگیهای خاص خود ها نگه میدارد.
- نحو :
اصولی که نحوه ساختار یک زبان را مشخص میکند به عنوان syntax شناخته میشود. در زبانهای برنامهنویسی (برعکس زبانهای طبیعی مانند انگلیسی)، نحو مجموعه قوانینی است که شیوهی سازماندهی کلمات، علائم نقطه گذاری و نمادها را در یک زبان برنامه نویسی تعریف و راهنمایی میکند. بدون نحو، درک معناشناسی یا معنای یک زبان تقریباً دشوار است. اگر نحو یک زبان رعایت نشود یک کامپایلر یا مفسر نمیتواند کد را درک کند.
- کپسوله سازی:
کپسوله سازی در برنامه نویسی شی گرا ، فرآیند گروه بندی توابع و دادهها در یک موجودیت واحد است. برای دسترسی به این اعضای داده، محدوده تابع عضو باید روی «public» (عمومی) تنظیم شود، در حالی که محدوده اعضای داده باید روی «private» (خصوصی) تنظیم شود. بر اساس این نظریه، یک آیتم حاوی تمام اطلاعات مهم است. تنها یک زیرمجموعه کوچک در دسترس جهانِ پیرامونی است. هر شی دارای یک کلاس مخصوص است که شامل پیاده سازی و شکل و وضعیت آن است.
- چند شکلی
چندین کلاس میتوانند از یک نام مِتد با استفاده از چندشکلی استفاده کنند، که شامل تعریف مجدد روشها برای کلاسهای مشتق شده نیز میشود. چند شکلی بودن زمان کامپایل و چندشکلی بودن زمان اجرا دو نوع مختلف چندشکلی هستند. اشیا علاوه بر داشتن چندین شکل، رفتارهای مشترکی نیز دارند. نرم افزار تعیین میکند که برای جلوگیری از نوشتن کد تکراری، برای هر بار استفاده از یک شی از یک کلاس منبع، چه کاربرد یا مفاهیمی لازم است.
- ارث
در شی گرایی، وراثت در معنای وسیع آن به فرآیند به دست آوردن چیزهای خاص اشاره دارد. یک شی در OOP ویژگی های شی دیگری را به ارث میبرد. توسعهدهندگان میتوانند با تخصیص روابط و کلاسهای فرعی بین آیتمها، ضمن حفظ سلسله مراتب متمایز، از عملکرد مشترک استفاده کنند. این ویژگی شی گرایی ، توسعه را سرعت می بخشد و با نیاز به بررسی عمیقتر داده ها، دقت بیشتری را فراهم میکند. رابطه والد و فرزند از طریق وراثت نمادین میشود.
- انتزاع
یکی از مفاهیم شی گرا در جاوا، انتزاع است، که عمل نمایش ویژگیهای کلیدی بدون گنجاندن اطلاعات پشتیبانی است. این روشی برای توسعه یک نوع داده کاملاً جدید مناسب برای یک برنامه خاص است. از ارائه حقایق اضافی یا بیهوده جلوگیری میکند و فقط قسمت دقیق درخواستی کاربر را نمایش میدهد. بسیار مهم است زیرا شما را از انجام دوباره کاری باز میدارد.
- جفتسازی
Coupling یا جفت سازی، درجه اتصال یک عنصر نرم افزاری به دیگری را توصیف میکند. عناصر نرم افزار میتوانند یک کلاس، بسته، جزء، زیرسیستم یا سیستم باشند. نشان دهنده سطح آشنایی یک شی یا کلاس با دیگری است. این بدان معنی است که اگر یک کلاس ویژگیهای خود را تغییر دهد، تغییرات وابسته در کلاس دیگر نیز تغییر میکند. میزان وابستگی متقابل بین این دو کلاس چگونگی رخ دادن این تغییرات را تعیین میکند.
- انسجام
انسجام یک کلاس شی گرا با توجه به اینکه روشها و ویژگیهای آن چقدر نزدیک و معنیدار با یکدیگر مرتبط هستند، و همچنین با توجه به میزان تمرکز آنها بر اجرای یک هدف واحد و کاملاً مشخص برای سیستم تعیین میشود. این معیاری است که نشان میدهد مسئولیتهای یک کلاس چقدر متمرکز هستند. از آنجایی که روشها و ویژگیهای آنها از نظر منطقی به یکدیگر مربوط نمیشوند، نگهداری کلاسهای منسجم، کمتر چالش برانگیز است.
- انجمن
در حالت شی گرایی ، ارتباط یک اتصال بین دو کلاس متمایز است که با کمک اشیاء آنها ایجاد میشود. ارتباط «یک به یک»، «یک به چند»، «چند به یک» و «چند به چند» همگی امکان پذیر است. تداعی ارتباط بین دو چیز است. تنوع بین اشیا توسط یکی از مفاهیم شی گرایی جاوا تعریف شده است. هیچ مالکی در این مفهوم OOP وجود ندارد و هر شی یک چرخه حیات متمایز دارد.
- تجمع
در این روش، هر شی یک چرخه حیات مجزا دارد. با این حال، مالکیت مانع از این میشود که شی متولد بخشی از شی والد دیگر باشد. تجمع جاوا پیوند بین یک شی را نشان میدهد که دارای اشیاء دیگری است و یک ارتباط ضعیف است. این ارتباط بین یک جزء و یک کل را نشان میدهد، جایی که یک جزء میتواند بدون یک کل وجود داشته باشد. یک نوع منحصربفرد از پیوندهای ضعیف معنایی به نام تجمیع زمانی اتفاق میافتد که چیزهای نامرتبط با هم ترکیب شوند.
- ترکیب
ترکیب در شی گرایی ، یک ارتباط است که رابطه بین یک جزء و یک کل را نشان میدهد که در آن یک جزء بدون یک کل نمیتواند وجود داشته باشد. تجمیع میتواند اشکال مختلفی از جمله ترکیب داشته باشد. از آنجایی که اشیاء متولد فاقد چرخه حیات هستند، زمانی که شی والد این کار را انجام میدهد، همه آنها به طور خودکار ناپدید میشوند. یک شی نمیتواند بدون دیگری در هیچ ترکیبی بین دو موجودیت وجود داشته باشد. در نتیجه، هر دو موجودیت در ترکیب خود به یکدیگر وابسته هستند.
- ماژولار بودن
طراحی ماژولار شی گرایی به تقسیم یک سیستم به بخشهای کاربردی بسیاری (که به عنوان ماژولها گفته میشود) اشاره دارد که میتوانند برای ایجاد کاربرد گستردهتر ترکیب شوند. ماژولاریت و کپسوله سازی ارتباط جدایی ناپذیری دارند. هنگام نگاشت انتزاعات محصور شده به ماژول های فیزیکی واقعی، انسجام بالا در ماژول ها و تعامل یا جفت شدن محدود بین ماژول ها را می توان به عنوان تعریف ماژولاریت مشاهده کرد.
- سازنده ها و روش ها
در شی گرایی سازنده نوع خاصی از برنامه فرعی است که برای ایجاد یک شی نامیده میشود. شیء جدید را برای استفاده تنظیم میکند و اغلب آرگومانهای سازنده را برای تنظیم متغیرهای عضو ضروری میپذیرد. در شی گرایی ، یک متد رویهای است که به یک پیام و یک شی متصل میشود. دادههای حالت و رفتار یک شیء رابط آن را تشکیل میدهند، که توضیح میدهد چگونه هر یک از مصرفکنندگان متعدد آن ممکن است از آن استفاده کنند. متد یک فعالیت شی با پارامتر مصرف کننده است.
پیشنهاد می کنیم این دوره آموزشی را از دست ندهید: دوره آموزشی C#
مزایای برنامه نویسی شی گرایی:
- ماژولار بودن
- کپسولهسازی؛ که اشیا را قادر میسازد تا خودکفا باشند و عیبیابی و توسعه مشارکتی داشته باشند.
- قابلیت استفاده مجدد
- بهره وری بیشتر
- راحتی در قابلیت ارتقا و مقیاس پذیری بیشتر
- توضیحات رابط
- امنیت
- انعطاف پذیری
برنامه نویسی شی گرا یک مدل برنامه نویسی کامپیوتری است که طراحی نرم افزار را حول داده ها یا اشیاء سازماندهی میکند تا توابع و منطق. برنامه نویسی شی گرا یا OOP یک مفهوم اساسی برای درک توسعه دهندگان است و چندین زبان برنامه نویسی سطح بالا بر روی OOP ساخته شده اند. مفاهیم کلیدی شی گرایی میتواند به شما در درک نحوه عملکرد برنامههای اساسی، شناسایی علت اصلی تنگناها و حل آنها از طریق کدهای نوآورانه کمک کند. همانطور که زبان های جدید را یاد میگیرید و از مجموعههای کدنویسی استفاده میکنید، دانش شی گرایی نیز میتواند برای توسعه مهارتهای شما مفید باشد.
دیدگاهتان را بنویسید