PDA

View Full Version : مقاله: برنامه نویسی شیء گرا (قسمت اول)



Keramatifar
دوشنبه 21 خرداد 1386, 10:25 صبح
مفاهیم برنامه نویسی شیء گرا-1 : مفهوم شئ

شئ چیست ؟
در برنامه نویسی شیء گرا شی به یک دسته از نرم افزارها اطلاق می شود که حالت ها و رفتار یکسانی دارند. اشیا نرم افزاری در واقع نمونه هایی هستند از اشیایی که ما هر روزه در زندگی روزمره با آنها مواجه هستیم . در این مقاله قصد داریم توضیح دهیم که چگونه اشیا نرم افزاری حالت ها و رفتارهایشان را بروز می دهند، با مفهوم کپسوله کردن داده ها آشنا شویم و مزایای طراحی یک نرم افزار بر اساس این روش را بدانیم .
فهم اشیا در واقع کلید درک مفهوم تکنولوژی شیء گرایی در طراحی نرم افزار است. به اطراف خود بنگرید، می توانید اشیا واقعی بسیاری را ببینید . سگ ، دستگاه تلویزیون ، میز ، دوچرخه و .. .
تمامی اشیا واقعی دارای دو خصوصیت مشترک هستند، همه آنها دارای حالات و رفتارهایی مختص به خود می باشند. مثلا سگ دارای حالت هایی مانند : اسم ، رنگ ، نژاد و یا گرسنه بودن و رفتاری مانند پارس کردن ، پنجه کشیدن و یا دم تکان دادن است. دوچرخه نیز دارای حالاتی مانند: دنده جاری، سرعت چرخش پدال جاری، و سرعت حرکت جاری و رفتارهایی مانند : عوض کردن دنده ، تغییر سرعت چرخش پدال و یا استفاده از ترمزهاست . اختصاص دادن حالات و رفتارها با اشیا واقعی راه خوبیست برای شروع کار با برنامه نویسی شیء گرا.
حال مدتی به اشیا پیرامونتان دقت کنید و در مورد هرکدام از آنها این دو سوال را از خودتان بپرسید که : 1- حالات این شیء چیست ؟ 2- این شیء چه رفتارهایی می تواند از خود بروز دهد؟ سپس پاسخهایی که به نظرتان می رسد را یادداشت کنید. با خواندن یادداشتهایتان شما درخواهید یافت که اشیا گوناگون دارای تفاوت های پیچیده ای نسبت به یکدیگر هستند. مثلا چراغ رومیزی شما می تواند دارای 2 حالت باشد: روشن بودن یا خاموش بودن؛ و دو رفتار می تواند از خود بروز دهد: روشن شدن یا خاموش شدن ، اما رادیوی رومیزی شما حالت های بیشتری را داراست مانند: روشن بودن یا خاموش بودن، درجه صدای فعلی،ایستگاه رادیویی فعلی و رفتارهایی مانند روشن یا خاموش شدن ، افزایش یا کاهش صدا و جستجو برای یافتن سایر ایستگاهای رادیویی و تنظیم شدن روی موج آنها . همچنین شما می توانید در یادداشتهایتان مشاهده کنید که برخی ازحالت ها و رفتارهای بعضی از اشیا با بعضی دیگر مشترک است .
حال می توانیم مشاهدات شما در دنیای واقعی را به نوعی دیگر در دنیای برنامه نویسی شیء گرا هم مشاهده کنیم.
اشیا نرم افزاری نیز از لحاظ مفهوم ، شبیه به اشیای واقعی هستند یعنی هر دو دارای حالت ها و رفتارهای مختص به خود هستند . یک شیء نرم افزاری رفتارهای خود را در فیلد ها (در برخی زبان های برنامه نویسی در متغیرها) ذخیره می کند و رفتارهایش را توسط متدها(در برخی از زبانها توابع) عرضه می کند. در واقع متدها بر روی حالت های یک شیء بکار گرفته می شوند و از این روش به عنوان یک مکانیزم اصلی برای ارتباط بین اشیا استفاده می شود.
گنجاندن حالات یک شیء در فیلدها و اعمال کردن متدها بر روی آنها را کپسوله کردن داده ها می گویند که یک اصل اساسی در برنامه نویسی شیء گراست .
با مشخص شدن حالت ها مانند (سرعت جاری، سرعت فعلی چرخش پدال و دنده جاری ) و ارائه دادن متدهایی برای تغییر این حالت ها مشخص می شود که چگونه آن شیء باید از بیرون تحت کنترل قرار بگیرد . مثلا اگر یک دوچرخه فقط 6 دنده داشته باشد متد تغییر دنده دوچرخه نمی تواند دنده هایی کمتر از 1 یا بیشتر از 6 را بپذیرد .
دسته بندی کدهای یک نرم افزار در قالب اشیا دارای مزایایی است که برخی از آنها را در زیر می خوانیم :
1- ماژولاریتی(چند قسمتی بودن برنامه ):سورس کد هر شیء می تواند مستقل از سورس کد سایر اشیا نوشته و ذخیره شود و با یکبار نوشتن می توان چندین بار از آن در قسمتهای مختلف سیستم استفاده کرد.
2- پنهان بودن اطلاعات: با اجرای برنامه توسط متد مستقل مربوط به هرشیء نحوه کارکرد داخلی سیستم از دید دنیای خارج محفوظ می ماند .
3- استفاده مجدد از کد: اگر شیء از قبل ساخته شده باشد (حتی توسط برنامه نویسان دیگر) شما می توانید از آن در برنامه خودتان استفاده نمایید . این خاصیت به شما اجازه می دهد که از اشیا بخصوصی که توسط متخصصین نوشته ، پیاده سازی ، تست و اشکال زدایی شده براحتی در برنامه خودتان استفاده نمایید.
4- اتصال و رفع اشکال آسان: اگر یک شیء معین در برنامه شما دچار اشکال شده باشد و بازده خوبی از خود ارائه ندهد شما براحتی می توانید آن را از برنامه خود خارج کرده و شیء دیگری را جایگزین آن نمایید. این کاررا می توان با تعمیر یک اتومبیل در دنیای واقعی مقایسه کرد که مثلا اگر در اتومبیل شما یک پیچ بشکند شما آن پیچ را تعویض می کنید نه کل اتومبیل را .

ادامه دارد ...

Alireza_Salehi
دوشنبه 21 خرداد 1386, 15:26 عصر
اگر معادل انگلیسی اصطلاحات مذکور را می گذاشتید مقالتون خیلی کامل تر میشد.