شی گرایی چیست؟ زبانهای‌ برنامه نویسی شیء گرا کدامند؟

رتبه: 0 ار 0 رای sssss
شی گرایی در برنامه نویسی
نویسنده: میلاد حیدری زمان مطالعه 11 دقیقه
Banner Image

رایانه ها ماشین های قدرتمندی هستند. با رایانه می توان اعداد را خیلی سریع محاسبه کرد و می توان برنامه های شگفت انگیزی برای بسیاری از اپلیکیشن ها تولید کرد. با این حال، برای بهره بردن از این ابزار قدرتمند باید با رایانه ارتباط برقرار کنیم؛ ارتباطی که نسبت به تایپ دستیِ صفر و یک، کم زحمت تر باشد.

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

پارادایم های برنامه نویسی

زبان های برنامه نویسی اغلب با توجه به پارادایم برنامه نویسی هایشان از هم جدا می شوند. پارادایم برنامه نویسی یکی از روش های مشاهده و دستیابی به داده است. دو پارادایم اصلی عبارتند از شیءگرا و تابعی؛ اگرچه پارادایم های زیاد دیگری هم وجود دارد (که برخی از آنها اصول اساسی برای موارد فوق هستند).

برنامه نویسی شیءگرا حول محور اشیاء ساخته شده است؛ اشیاء ساختارهای داده‌ ای هستند که هم شامل داده ها (خصوصیات یا ویزگی ها) و هم شامل کدها (رویه ها یا روش ها) هستند. اشیاء قادر هستند خودشان را با «این» یا «خود» تغییر دهند و مطابقت دهند. در بسیاری از زبان های OOP (زبان های شیءگرا)، تقریبا هرچیزی شیئی است که می‌ تواند هم مقادیر و هم کدِ قابل اجرا داشته باشد. هر شیء، منحصر به فرد است و اگرچه ممکن است رونوشتی از شیء دیگری باشد اما متغیرهای آن می تواند متفاوت از متغیرهای هر شیء دیگری باشد.

بهترین زبان برنامه نویسی برای کار و درآمدزایی

در طراحی نرم افزار شیءگرا، اشیاء را می توان مانند اشیاء واقعی تصور کرد. به شیئی مانند ساعت مچی فکر کنید. ساعت مچی خصوصیاتی دارد؛ از فلز ساخته شده، سیاه است، وزن خاصی دارد. اما آن شیء کارهایی را هم انجام می دهد؛ زمان را نشان می دهد و همچنین می تواند با چرخاندن چرخ دنده ها به منظور تغییر موقعیت دست ها، بر روی خود تاثیر بگذارد.

یکی دیگر از ویژگی های اشیا این است که نیازی نیست همیشه نحوه عملکرد ساعت را بدانیم. فرض کنید آن ساعت خیلی خوب ساخته شده و بدون اینکه ما مجبور به دخالت در عملکرد داخلی آن شویم، زمان را به طور قابل اعتمادی نشان می دهد.

زبان های شیءگرا هم اشیایی شبیه به اشیای دنیای واقعی دارند. اشیایی که می توانند ویژگی و کارکرد داشته باشند. همچنین تمایل دارند از یک سری اصول خاص پیروی کنند.

اصول برنامه نویسی شیءگرا

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

چهار ستون برنامه نویسی شیءگرا عبارت است از:

۱- کپسوله سازی

۲- تجرید

۳- وراثت

۴- چندریختی

بهترین زبان برنامه نویسی برای طراحی وب و سایت

چهار اصل

بیائید این چهار اصل را بیشتر بررسی کنیم.

  • کپسوله سازی– کپسوله سازی یعنی اتصال داده به توابع، که به عنوان یک تابع امنیتی برای ایمن نگه داشته داده ها عمل می کند. به عنوان مثال، بسیاری از زبان های شیءگرا از هر چیزی به غیر از روش های خاص در کلاسِ دارای داده هایی برای دسترسی به آن داده، جلوگیری می کنند. این کار اغلب به طور صریح و برای ایمن نگه داشتن داده های معین انجام می شود.
  • تجرید– تجرید ایده ای است به این معنی که اگر شما کاری را مرتبا انجام می دهید، آن کار باید موجودیتِ خودش باشد. به عنوان مثال، اگر برنامه نویس، تابع مشابهی را مکررا برای اشیاء مختلف بازنویسی می کند، می توان آن تابع را انتزاع کرد تا به موجودیتِ خودش تبدیل شود.
  • وراثت– وراثت همان چیزی است که به نظر می رسد، و غالبا به صورت یک رابطه «هست» تعریف می شود. وراثت باعث می شود تا کلاس های خاصی زیر چتر کلاس های دیگر قرار بگیرند. این کلاس ها می توانند اطلاعات و قابلیت ها را از آن کلاس به ارث ببرند و در عین حال قادر هستند آن قابلیت ها را گسترش دهند. وراثت به ما این امکان را می دهد تا از کدی که قبلا در کلاس های دیگر تایپ کرده ایم، مجددا استفاده کنیم.
  • چندریختی– چندریختی به معنای «داشتنِ بیش از یک شکل» است. در زبان های شیءگرا، چندریختی به توانایی مدیریت کردن متفاوت اشیاء با توجه به اینکه چه چیزی هستند، اشاره دارد. چندریختی به ما این امکان را می دهد تا برای اداره اشیاء، بر اساس کلاس مشتق شده آنها، روش های مختلفی را تعریف کنیم. به عنوان مثال، اگر لازم باشد اندازه چیزی را پیدا کنیم، می توانیم بر اساس اینکه آن چیز چه چیزی است، نحوه اندازه گیری را تغییر دهیم. اگر آن چیز یک تخته چوب باشد، آن را به اینچ اندازه می گیریم. اما اگر آن چیز آب باشد، وزن آن را اندازه می گیریم. اگر از چندریختی استفاده کنیم، می توانیم تابعی ایجاد کنیم که بتواند همه اشیاء را بپذیرد و باز هم اندازه گیریِ عاقلانه ای به ما بدهد.

بهترین زبان برنامه نویسی برای هک و هکر شدن

زبان های محبوب برنامه نویسی شیءگرا

جاوا، پایتون، سی پلاس پلاس، لیسپ و پرل نمونه‌هایی از زبان های محبوب برای برنامه نویسی شیءگرا هستند. این زبان ها با استفاده از پارادایم اشیاء و کلاس ها، از برنامه نویسی پشتیبانی می کنند.

پنج مورد از محبوب ترین زبان های شیءگرا عبارتند از:

۱- جاوا (Java)

۲- پایتون (Python)

۳- سی پلاس پلاس (C ++)

۴- روبی (Ruby)

۵- سی شارپ (C#)

  • جاوا- جاوا در همه جا وجود دارد. جاوا یکی از پرکاربردترین و پرمخاطب ترین زبان ها در همه زمان ها است. شعار جاوا این است: «یک بار بنویس، همه جا اجرا شو». و این شعار در تعداد سیستم عامل هایی که روی آن اجرا می شد و مکان هایی که استفاده می شود، منعکس شده است.
  • پایتون– پایتون هدفی عمومی دارد و در بسیاری از مکان ها استفاده می شود. با این حال، پایتون جایگاه محکمی در یادگیری ماشین و علم داده دارد. پایتون یکی از زبان های ارجح برای این زمینه جدید و همیشه در حال رشد، است.
  • سی پلاس پلاس– سی پلاس پلاس دارای سرعت C با قابلی کلاس ها، است و پارادایم شیءگرا دارد. سی پلاس پلاس زبانی مدون، قدرتمند و قابل اعتماد است. درواقع حتی برای ساختن کامپایلرها و مترجم های زبان های دیگر هم از سی پلاس پلاس استفاده می شود.
  • روبی– روبی یکی دیگر از زبان های برنامه نویسی عمومی است. روبی برای سادگی ساخته شده است. با این اوصاف، روبی، زبان فوق العاده قدرتمندی است. خالق روبی، یوکیهیرو «ماتز» ماتسوموتو، گفته: «روبی ظاهر بسیار ساده ای دارد اما درون آن بسیار پیچیده است، درست مانند بدن انسان».
  • سی شارپ– سی شارپ یک زبان برنامه نویسی است که توسط مایکروسافت طراحی شده است. سی شارپ برای بهبود مفاهیم موجود در C طراحی شده است. سی شارپ، چارچوبِ Microsoft .NET را در کنار بسیاری از برنامه های وب، بازی ها، برنامه های دسکتاپ و برنامه های تلفن همراه، قدرتمند می‌سازد.

زبان های شیءگرای دیگری هم وجود دارد که در بالا به آنها پرداخته نشده است. پرل (Perl)، آبجکتیو سی (Objective-C)، دارت (Dart)، لیسپ (Lisp)، جاوا اسکریپت (JavaScript) و پی اچ پی (PHP) نیز یا شیءگرا هستند یا از اصول شیءگرا پشتیبانی می کنند.

بهترین زبان برنامه نویسی در دنیا برای یادگیری کدام است؟

مزایا و معایب زبان های برنامه نویسی شیءگرا

اگرچه زبان های شیءگرا می توانند قدرتمند باشند، اما برای هر شرایطی مفید نیستند و معایبی دارند که باید مورد توجه قرار گیرد.

مزایا

قابلیت استفاده مجدد

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

توسعه موازی

زمینه کافی برای قسمت هایی از برنامه که باید جدا از یکدیگر توسعه یابند و در عین حال تحت اصول شیءگرا کار کنند، وجود دارد. این امر، توسعه همزمان برای تیم های بزرگترِ توسعه را بسیار آسان می کند.

حفظ و نگهداری

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

امنیت

درحالی که اکثر زبان ها از مقداری امنیت برخوردارند، زبان های شیءگرا راحت هستند؛ زیرا امنیت با کپسوله سازی داخلی ساخته شده و تامین شده است. سایر روشها و کلاسها نمی توانند به صور پیشفرض به داده های خصوصی دسترسی داشته باشند و برنامه هایی که به زبان های شیءگرا نوشته شده اند از امنیت بیشتری برخوردارند.

ماژولار بودن

زبان های برنامه نویسی شیءگرا، برنامه را به اشیاء و کلاسها طبقه بندی میکنند. این کار مفید است زیرا باعث میشود برنامه شما ساختار ماژولارتری داشته باشد. خواندن کد ماژولار آسانتر است. بنابراین نگهداری آن هم آسانتر خواهد بود.

معایب

غالبا به هم ریخته

از آنجایی که زبان های شیءگرا بسیار قابل تنظیم و مقیاس پذیر هستند، به راحتی می توان درک نحوه کار کرد کد را از دست داد. کد زبان های شیءگرا می تواند به طرق زیادی عمل کند. روش های زیادی برای برنامه نویسی در زبان های شیءگرا وجود دارد که با روش های دیگر به خوبی کار نمی کند، که ناکارآمد هستند، یا استفاده از آنها دشوار است.

مستلزم برنامه ریزیِ بیشتری است

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

ابهام

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

عملکرد

زبان های شیءگرا اغلب عملکرد خوبی دارند. برنامه های ساخته شده به زبان های شیءگرا اغلب بزرگتر هستند و اجرای آنها، در مقایسه با زبان های تابعی، مستلزم تلاش محاسباتیِ بیشتری است. با این حال، این امر همیشه درست یا مهم نیست. سی پلاس پلاس یک زبان شیءگرا است، اما یکی از سریعترین زبان های موجود نیز میباشد. با این اوصاف، سرعت همیشه مهم نیست. تفاوت در سرعت فقط در هنگام پردازش محاسبات عظیم یا پیچیده یا در مواردی که به سرعتِ زیاد نیاز است، آشکار میشود.

اکنون درک کاملی از اینکه زبان شیءگرا چیست، زبان شیءگرا برای چه چیزی خوب است و محبوبترین زبان های شیءگرا کدامند، دارید. برنامه نویسی به این زبان ها می تواند به همان اندازه که مفید و سودآور است، لذت بخش هم باشد؛ و حرفه شما در توسعه، فقط چند قدم با شما فاصله دارد.

برنامه نویسی تابعی در مقابل زبان های شیءگرا

عامل مقایسه برنامه نویسی تابعی برنامه نویسی شیءگرا
تعریف مربوط به ارزیابی توابع بدون هیچ گونه ناهمخوانی مربوط به استفاده از اشیاء و اجرای برنامه ها بر اساس معماریِ «شیئی شده» است.
مدل برنامه نویسی از مدل برنامه نویسی اعلانی (چیستی) پیروی می کند، که بدون توصیف جریان کنترل، منطق را بیان می کند. از مدل برنامه نویسی دستوری (چگونگی) پیروی می کند، که از دستورات برای تغییر فعالانه وضعیت برنامه استفاده می کند.
برنامه نویسی موازی از تمام پارادایم های دخیل در برنامه نویسی موازی پشتیبانی می کند. به طور کلی، به دلیل نحوه عملکردش، از برنامه نویسی موازی پشتیبانی نمی کند.
مدیریت داده با داده های تغییرناپذیر به خوبی کار می کند. برای عملکرد خود از داده های تغییرپذیر استفاده می کند.
ترتیب اجرا بر اساس برنامه، شامل اجرای دستورات به هر ترتیب دلخواهی، است. برای عملکرد خود، فقط از اجرای منظم دستورات استفاده می کند.
کاربرد وقتی نیاز به عملیات بیشتر و فقط چند ورودی باشد، ترجیح داده میشود. وقتی ورودی های زیادی باید پردازش، اما عملیاتِ کمتری برای انجامِ آنها وجود داشته باشد، ترجیح داده میشود.
مؤلفه های اصلی بر اساس استفاده از توابع و متغیرها به اشیاء، ویژگی ها و روشها تقسیم میشود که هر یک از اینها جنبه ای از عملکرد را تعریف میکنند.
سهولت در پیاده سازی پیاده سازی آن دشوار است، زیرا از نقطه نظر عملکردی، رویکرد متفاوتی برای تفکر را در پیش میگیرد. بسیار ساده است، زیرا مبتنی بر نقشه برداری از توابع زندگی واقعی و استفاده از آنها در هنگام برنامه نویسی، است.
سهولت در یادگیری یادگیری آن آسان است، زیرا شامل مدیریت داده های پیچیده و دستکاریِ عمیق نیست. به علت نگهداری و روش غیرماژولار در هنگام برنامه نویسی، یادگیری آن دشوار است.

آموزشهای برنامه نویسی رایگان ما در اینجا

profile name
میلاد حیدری

بخندید کتاب بخونید و خوب باشید تا جامعه مون به آرامش برسه. لطفا ! هر سوالی دارید در بخش نظرات مطرح کنید. ما یا سایر هموطنان عزیز پاسخ خواهیم داد. برای کمک به سایت ما و گسترش آموزش در بین هموطنان، در سایتها، وبلاگ ها و شبکه های اجتماعی لینک سایت ما را درج کنید.

مطالب پیشنهادی برای شما

محصولات مرتبط

مشاهده همه

کلاس های آنلاین مرتبط

مشاهده همه
سایر مقالات آموزشی
سایر مقالات آموزشی

مدرس : حامد رضوانی

0

*برای مشاهده قیمت کلاس روی رزرو کلاس آنلاین کلیک کنید*

رزرو کلاس آنلاین

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

1 2 3 4 5

0 نظر درباره «شی گرایی چیست؟ زبانهای‌ برنامه نویسی شیء گرا کدامند؟»

    هنوز نظری برای این بخش ثبت نشده است
مشاهده همه نظرات
سبد خرید
سبد خرید شما خالی است
× جهت نصب روی دکمه زیر در گوشی کلیک نمائید
آی او اس
سپس در مرحله بعد برروی دکمه "Add To Home Screen" کلیک نمائید