ميدانيم كه در دنياي رايانهها چيزي به نام درك و فهم وجود ندارد و اين موجودات، تنها قادرند دستوراتي را كه به آنها ميرسد به صورت ترتيبي و پشت سر هم اجرا كنند.
اين هنر برنامهنويس است كه بتواند دانستن انواع دستورات و برقراري يك منطق بين آنها و چيدن آنها پشت سر هم، به يك هدف خاص برسد و به تعبيري، رايانه را مجبور به انجام عملي خاص كند، اما براي نوشتن يك برنامه بزرگ با چنين روشي با مشكلات بسياري مواجه خواهيم بود.
مشكلاتي كه توليدكنندگان نرمافزار را به فكر انداخته و براي حل آنها تحقيقاتي صورت گرفته و در نهايت به برنامهنويسي ساخت يافته منجر شد.
برنامهنويسي ساخت يافته
برنامهنويسي ساخت يافته روش منظمي براي نوشتن برنامههاست و منجر به نوشتن برنامههايي ميشود كه خوانايي آنها بالا، آزمون و اشكالزدايي آنها راحتتر و اصلاح آنها آسانتر است.
در برنامهنويسي ساخت يافته، برنامه به صورت مجموعهاي از فعاليتها تصور ميشود كه بايد روي دادهها انجام شوند. در اين روش، هر مساله پيچيدهاي، به مجموعهاي از مسالههاي كوچكتر تقسيم ميشود تا اين كه هر مساله كوچك قابل درك باشد.
سپس براي هر مساله قطعه كد يا برنامهاي نوشته ميشود كه به آن «رويه» يا <تابع> گفته ميشود. با كنار هم قرار گرفتن توابع و رويهها كل برنامه شكل ميگيرد. به عبارتي، برنامهنويس سعي ميكند توابعي بنويسد كه با كنار هم قرار گرفتن آنها، نيازهاي برنامه تامين شود.
برنامهنويسي ساخت يافته كه مدت زيادي توسط برنامهنويسان به كار گرفته ميشده است و درحالحاضر نيز بسياري از افراد همچنان با اين روش برنامهنويسي ميكنند، روش موفقي براي حل مسائل پيچيده است. اما مشكلات خاص خودش را دارد.
در اين روش دادهها از توابعي كه آنها را پردازش ميكنند جداست. وقتي حجم دادهها زياد ميشود، نگهداري آنها مشكل ميشود و هر چه بيشتر با دادهها كار كنيم با مشكلات بيشتري مواجه ميشويم.
زبانهايي مثل بيسيك، پاسكال و C زبانهايي هستند كه براي برنامهنويسي ساخت يافته طراحي شدند.
.
برنامهنويسي شيءگرا
براي رفع مشكلات برنامهنويسي ساخت يافته روشي به نام برنامهنويسي شيءگرا (Object oriented) ابداع شد. اين سبك، روش نويني است كه در آن ميتوان قطعاتي را ايجاد كرد و در برنامههاي مختلف مورد استفاده قرار داد.
به عنوان يك مثال ساده، براي تهيه يك رايانه، بايد قطعات آن را جداگانه انتخاب و تهيه كرد و سپس با مونتاژ آنها به محصول نهايي رسيد.
هر قطعه از رايانه در عين حال كه در تعامل با ساير قطعات كار ميكند، ميتواند از آن جدا شده و با قطعه ديگري جايگزين شود.
مثلا ميتوان يك كارت گرافيك را به طور كامل از سيستم جدا و با نمونه ديگري جايگزين كرد.
يك كارت گرافيك هر چه باشد و درون آن هر اتفاقي بيفتد براي مونتاژكننده اهميتي ندارد. فقط او ميداند كه چگونه بايد آن را به كل
سيستم متصل كند و از وجود آن بهرهمند شود. با استفاده از اين روش، ساخت رايانه آسان ميشود.
هدف برنامهنويسي شيءگرا نيز آن است كه برنامهها را از قطعات موجود مونتاژ كند. به اين ترتيب، سرعت توليد نرمافزار افزايش مييابد.
ضمن اين كه قابليت خوانايي برنامههايي كه در اين روش نوشته ميشوند بالا بوده و آزمون، عيبيابي و اشكالزدايي آنها آسان ميشود.
تفاوت دو روش يادشده در برنامهنويسي آن است كه برنامهنويسي ساخت يافته بر توابع و شيگرا بر اشيا تاكيد دارد.
زباني مثل C++ و object pascal (يا دلفي) و ساير زبانهاي جديد مانندَC و… زبانهايي هستند كه بر پايه شيگرايي طراحي شدهاند.
البته در اين زبانها امكان برنامهنويسي ساخت يافته نيز وجود دارد. در آينده سعي خواهيم كرد بيشتر در رابطه با اين روشهاي توليد نرمافزار و مفاهيم بهكار رفته در آنها صحبت كنيم.
اولين روشي كه براي نوشتن راحتتر برنامهها با خوانايي بالا مطرح شد، روش ساخت يافته بود كه در مورد آن صحبت كرديم. اما گفتيم كه به دليل مشكلات موجود، اين روش در مقياسهاي حجمي بالا پاسخگو نبوده و نگهداري آن سخت ميشود.
از همين رو شيوه جديدي تحت عنوان برنامهنويسي شيءگرا مطرح شد كه اين مشكلات را از ميان برداشت. در اين روش قطعاتي تحت عنوان شيء ساخته ميشوند كه از آنها ميتوان در برنامههاي ديگر نيز استفاده كرد.
البته بايد توجه داشت كه ساخت اشيا در برنامهنويسي شيءگرا، خود از روش ساخت يافته تبعيت ميكند. بنابراين فردي كه از اين روش استفاده ميكند بايد به طور كامل به برنامهنويسي ساخت يافته مسلط باشد.
مفهوم شيء
اگر به اطراف خود نگاه كنيد اشيا بسياري را مشاهده خواهيد كرد. انسان توانايي فكر كردن براساس اشيا را دارد و همچنين ميتواند به صورت انتزاعي تفكر كند.
قادر است به جاي آنكه به ذرات شن فكر كند به ساحل بينديشد و به جاي آجر به يك ساختمان فكر كند.
در اين مفهوم، موجودات زنده نيز يك شيء محسوب ميشوند. اشيا چه جاندار باشند و چه بيجان، صفاتي داشته و رفتارهايي براي آنها قابل تعيين و تعريف است.
همه اشيا صفاتي همچون اندازه، وزن، شكل و غيره دارند و رفتارهايي مثل غلتيدن توپ، حركت اتومبيل، گرم كردن آتش و … در آنها به چشم ميخورد. اشيا بسياري هستند كه صفات مشتركي داشته و يا رفتارهاي مشابهي از خود نشان ميدهند. برخي از آنها نيز به علت تعدد اين تشابهها، در يك خانواده يا كلاس قرار ميگيرند.
برنامهنويسي شيءگرا اشيا دنياي واقعي را با نرمافزار مدلسازي ميكند. در برنامهنويسي شيگرا مفهومي به نام كلاس وجود دارد.
اشيا نمونههايي از يك كلاس هستند. براي درك اين دو مفهوم خودرو معادل يك كلاس است و بنز يك شيء از كلاس خودرو است.
كلاسها ممكن است رابطه سلسله مراتبي داشته باشند و خصوصيات از يك كلاس به كلاس پايينتر به ارث برسد. كلاسي كه در راس همه كلاسهاست، شامل خصوصياتي است كه همه كلاسهاي سطوح پايينتر، آن خصوصيات را دارند و به عبارتي آن خصوصيات را به ارث بردهاند.
ضمن اينكه هريك از كلاسهاي سطوح پايينتر ممكن است خصوصيات و رفتارهاي منحصر به فردي نيز داشته باشند.
به عنوان مثال كلاس جانداران خصوصيات و رفتارهايي دارد كه در همه جانداران مشترك است. جانوران و گياهان كه در سطح پايينتر جانداران هستند، كلاسهايي هستند كه تمام خصوصيات و رفتارهاي جانداران را به ارث بردهاند ضمن اينكه هر كدام خصوصيات منحصر به كلاس خود را نيز دارند.
همينطور اگر ادامه دهيم هر كدام از اين كلاسها خصوصيات و رفتارهاي خود را به كلاسهاي پايينتر خود منتقل ميكنند و در هر كدام از آنها ويژگيهاي جديدي اضافه ميشود.
در پايينترين سطح كلاسي خواهيم داشت كه ميتوان از آن يك شيء ساخت. مثلا يكي از آن كلاسهاي سطح پايين كلاس انسان است كه هر كدام از ما يك شيء از آن كلاس هستيم.
توجه داشته باشيد كه كلاسي مثل كلاس جانداران يك كلاس انتزاعي است. زيرا نميتوان از آن يك نمونه ساخت. اين كلاس تنها تعداد محدودي خصوصيت و رفتار دارد كه به سطوح پايينتر خود منتقل ميكند.
اما براي تبديل شدن به يك شيء بايد خصوصيات و رفتارهاي ديگري نيز به آن اضافه شود.
برنامهنويسي شيءگرا روش طبيعيتري را براي نگه داشتن بر فرآيندهاي برنامهنويسي ارائه ميكند و اين كار با مدلسازي اشياي دنياي واقعي، صفات و رفتار آنها انجام ميدهد.
برنامهنويسي شيءگرا، ارتباط اشيا را نيز مدلسازي ميكند. همان طور كه انسانها به يكديگر پيام ميفرستند اشيا نيز ميتوانند از طريق ارسال پيام با يكديگر ارتباط برقرار كنند.
بستهبندي و پنهانسازي
صفات و رفتارها در اشيا، بستهبندي (encapsulation) شده و به نوعي پنهانسازي ميشوند.
به عبارتي، گرچه اشيا ممكن است طريقه ارتباط با اشيا ديگر را از طريق واسط بدانند، ولي اجازه ندارند كه از چگونگي پيادهسازي اشيا ديگر آگاه باشند. يعني جزئيات پيادهسازي در داخل اشيا مخفي شده است.’
براي درك بهتر رانندهاي را در نظر بگيريد كه بدون آشنايي با جزئيات عملكرد موتور اتومبيل و ديگر سيستمهاي آن، ميتواند بخوبي رانندگي كند. خوب است بدانيم كه پنهانسازي اطلاعات مبحث مهمي در مهندسي نرمافزار است.
منبع : هفته نامه کلیک
دسته بندیها: طراحی وب,همه مطالب