article

مفاهیم شی گرایی (OOP) در جاوا

فاطمه روانبخش 7 ماه پیش 264 دسته بندی : برنامه نویسی

در این مقاله با اصول اولیه OOP آشنا می شویم. برنامه نویسی شی گرا الگویی است که مفاهیم زیادی مانند وراثت، اتصال داده ها، چندشکلی و غیره را ارائه می دهد.

Simula  اولین زبان برنامه نویسی شی گرا محسوب می شود.

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

  • جاوا
  •  سی شارپ
  •  PHP
  •  پایتون
  •  C++

 و غیره ...

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

OOPs (سیستم برنامه نویسی شی گرا)

Object  به معنای موجودی واقعی مانند قلم، صندلی، میز، کامپیوتر، ساعت و غیره است. برنامه نویسی شی گرا یک متدولوژی یا پارادایم برای طراحی یک برنامه با استفاده از کلاس ها و اشیاء است. توسعه و نگهداری نرم افزار را با ارائه برخی مفاهیم ساده می کند:

  • شی(object)
  • کلاس(class) 
  • وراثت(Inheritance)
  • چندریختی(Polymorphism)
  • انتزاع(Abstraction)
  • کپسوله سازی(Encapsulation)

جدای از این مفاهیم، اصطلاحات دیگری نیز وجود دارد که در طراحی شی گرا به کار می روند:

  • جفت(Coupling)
  • انسجام(Cohesion)
  • اتحادیه(Association)
  • تجمع(Aggregation)
  • ترکیب بندی(Composition)

شی (object)

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

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

مثال: سگ یک شی است زیرا دارای حالت هایی مانند رنگ، نام، نژاد و غیره و همچنین رفتارهایی مانند تکان دادن دم، پارس کردن، خوردن و غیره است.

 

کلاس(class)

به مجموعه اشیاء کلاس می گویند. یک موجود منطقی است.

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

وراثت (Inheritance)

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

چندریختی (Polymorphism)

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

در جاوا برای رسیدن به چند ریختی از روش overloading و overriding متد استفاده می کنیم. مثال دیگر می­تواند گفتن چیزی باشد. به عنوان مثال، یک گربه با میو صحبت می کند ، سگ پارس می کند، و غیره .

انتزاع(Abstraction)

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

در جاوا از کلاس انتزاعی و واسط برای دستیابی به انتزاع استفاده می کنیم.

 

کپسوله سازی (Encapsulation)

اتصال (یا بسته بندی) کد و داده ها با هم در یک واحد واحد به عنوان کپسوله سازی شناخته می شود. به عنوان مثال، یک کپسول، آن را با داروهای مختلف پیچیده شده است.

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

جفت (Coupling)

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

انسجام(Cohesion)

انسجام به سطح مؤلفه ای اطلاق می شود که وظیفه ای را که به خوبی تعریف شده انجام می دهد. یک کار به خوبی تعریف شده با یک روش بسیار منسجم انجام می شود. روش منسجم ضعیف کار را به بخش های جداگانه تقسیم می کند. بسته java.io یک بسته بسیار منسجم است زیرا دارای کلاس ها و رابط مربوط به I/O است. با این حال، بسته java.util یک بسته منسجم ضعیف است زیرا دارای کلاس ها و رابط های نامرتبط است.

اتحادیه (Association)

اتحادیه نشان دهنده رابطه بین اشیاء است. در اینجا، یک شی می تواند با یک شی یا چندین شی مرتبط شود. چهار نوع ارتباط بین اشیا می تواند وجود داشته باشد:

یک به یک

یک به چند

چند به یک  و

چند به چند

بیایید رابطه را با مثال های بلادرنگ درک کنیم. به عنوان مثال، یک کشور می تواند یک نخست وزیر (یک به یک) داشته باشد و یک نخست وزیر می تواند چندین وزیر (یک به چند) داشته باشد. همچنین، بسیاری از نمایندگان مجلس می‌توانند یک نخست‌وزیر داشته باشند (چند به یک)، و بسیاری از وزرا می‌توانند دپارتمان های زیادی داشته باشند (چند به چند).

ارتباط می تواند بدون جهت یا دو طرفه باشد.

تجمع (Aggregation)

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

ترکیب بندی (Composition)

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

 

مزیت OOP ها نسبت به برنامه نویسی رویه ای ( Procedure-oriented )

  • OOPs  توسعه و نگهداری را آسان‌تر می‌کند، در حالی که در یک زبان برنامه‌نویسی رویه‌ ای، اگر کد با افزایش اندازه پروژه بزرگ شود، مدیریت آن آسان نیست.

  •  OOPs مخفی کردن داده ها را فراهم می کند، در حالی که، در یک زبان برنامه نویسی رویه ای، داده های سراسری را می توان از هر جایی در دسترس قرار داد.

  • OOPs توانایی شبیه سازی رویدادهای دنیای واقعی را بسیار موثرتر فراهم می کند. اگر از زبان برنامه نویسی شی گرا استفاده کنیم، می توانیم حل مشکل واقعی کلمه را ارائه دهیم.

 

نمایش داده ها در رویه-محور:

 

 

نمایش داده ها در شی گرا:

 

 

تفاوت بین زبان برنامه نویسی شی گرا و زبان برنامه نویسی مبتنی بر شی چیست؟

زبان برنامه نویسی مبتنی بر شی از تمام ویژگی های OOP ها به جز وراثت پیروی می کند. جاوا اسکریپت و VBScript نمونه هایی از زبان های برنامه نویسی مبتنی بر شی هستند.

 

منبع: https://www.javatpoint.com/

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

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

توی این مقاله می خوایم چند سایت مفید برای توسعه دهندگان معرفی کنیم.

فاطمه روانبخش 338 بیشتر بخوانید
article

برنامه نویسی برای تازه کاران: بهترین راه برای یادگیری نحوه کدنویسی در سال 2022

توی این مقاله می خوایم از نحوه ی یادگیری برنامه نویسی برای تازه کارا بگیم.

فاطمه روانبخش 509 بیشتر بخوانید
article

کاربردهای جاوا اسکریپت

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

فاطمه روانبخش 293 بیشتر بخوانید