شی گرایی چیست ؟

بوسیله علیرضا پایدار | 1395/2/30 | مجموعه نرم افزار

0 نظر

شی گرایی چیست ؟

به انگلیسی Object-Oriented Programming مخفف OOP یک شیوه برنامه نویسی است که ساختار یا بلوک اصلی اجزای آن، شی‌ها می‌باشند. در واقع در این شیوه برنامه نویسی، برنامه به شیء گرایش پیدا می‌کند. به این معنا که داده‌ها و توابعی که قرار است بر روی این داده‌ها عمل کنند، تا حد امکان در قالبی به نام شیء در کنار یکدیگر قرار گرفته، جمع ‌بندی شده و یک واحد (شیء) را تشکیل داده و نسبت به محیط بیرونِ خود، کپسوله می‌شوند و از این طریق، توابع بیگانه  خارج از آن شی، دیگر امکان ایجاد تغییر در داده‌های درون آن شی را ندارند. به طور مثال حساب بانکی شما که شامل مشخصات فردی شما و میزان سپرده شما در بانک است، تشکیل یک شیء را می‌دهند و به دلیل دارا بودن ویژگی کپسوله، امکان دستکاری در میزان سپرده یا مشخصات شما، توسط دیگران وجود ندارد. از دیگر ویژگی‌های برنامه نویسی شی گرا، پیچیدگی کم، هزینه کم، امکان گسترش سریع برنامه با خطای کمتر نسبت به سایر پارادایم‌ های برنامه نویسی است[1].

سه هدف اصلی برنامه نویسی مبتنی بر اشیا:

1- غلبه بر پیچیدگی

2- مدیریت تغییر

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


 

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

مدیریت تغییر: تغییرات در مهندسی نرم افزار ذاتی است ، تغییر خواسته های کاربران ، تغییر مشخصه ها ، تغییر کارکنان ، تغییر بودجه ، تغییر تکنولوژی و غیره. یکی از اهداف اساسی مهندسی نرم افزار تاکید بر اهمیت مدیریت تغییر می باشد. برنامه نویسی مبتنی بر مؤلفه یک روش موثر به نام برنامه ریزی برای تغییر و ساخت طراحی را برای برخورد با تغییرات در مهندسی نرم افزار فراهم آورده است . مؤلفه ها به آسانی با خواسته های جدید و در حال تغییر وفق داده می شوند .

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

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

اکنون سوال مطرح می شود که در برخورد با سیستم های پیچیده چگونه با دید شی گرایی کار کنیم و اجزای اصلی دیدگاه شی گرایی چیست ؟

در دیدگاه شی گرایی ما با سه مقوله مواجه هستیم .

 

1- برنامه سازی شی گرایی (Object-Oriented Programming)

2- طراحی شی گرایی (Object-oriented design)

3- تحلیل شی گرایی (Object-oriented analysis)

 

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

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

کلاس

کلاس نوع خاصی از آرایه است که امکان ذخیره و جمع‌بندی تعداد زیادی المان را (که شامل داده‌ها و توابع هستند) برای یک شی جدید فراهم آورده و تحت یک نام مشترک ذخیره می‌کند. اما بر خلاف آرایه که تنها قادر به ذخیرهء داده‌هایی هم جنس است، کلاس می‌تواند داده‌هایی از جنس‌های مختلف را ذخیره نماید.[۳] به طور مثال در نظر بگیرید که می‌خواهیم تاریخ ۱۳ نوامبر ۲۰۰۶ را که تشکیل شده از روز، ماه و سال است مورد استفاده قرار دهیم. برای این منظور سه نوع متغیر متفاوت مورد نیاز است:

int day;

String month;

int year;

حال در نظر بگیرید که نه فقط یک تاریخ، بلکه n تاریخ متفاوت مورد نیاز است. این بدان معنی ست که می‌بایستی به تعداد n بار، سه متغیر بالا، جداگانه تعریف شوند و تعریفِ تک تک و پیاپی متغیرها، نه فقط از لحاظ زمانی بسیار وقت گیر می‌نماید، بلکه از لحاظ میزان کد مورد نیاز نیز بسیار غیر عملی ست، چرا که هر بار می‌بایستی نام جدیدی برای متغیرها در نظر گرفته شود (دو متغیر متفاوت نمی‌توانند هم نام باشند). در اینجاست که کلاس‌ها به خوبی وارد عمل می‌شوند. با استفاده از کلاس‌ها می‌توان متغیرهای متعدد را زیر عنوان یک جنسیت مشترک جدید (به طور مثال هر سه را در یک کلاس با نام Date)، تعریف و جمع‌بندی نمود؛ و بعد از آن، بدون نیاز به تعریف مجدد روز، ماه و سال، از کلاس Date به میزان مورد نیاز استفاده کرد:[۴]

class Date{int day;String month;int year;}

 

 

منابع :

  1. http://de.wikipedia.org/wiki/Objektorientierte_Programmierung

  2. http://www.dotnetperls.com/oop

  3. http://www.tiak.blogfa.com/post-20.aspx

 


چنانچه این خبر مورد رضایت شما می باشد آن را با دوستانتان به اشتراک بگذارید