برنامهنويسي شيءگرا چه ميباشد؟
در حالتي که تا به امروز هر سيرتکامل
سرآغاز: گويشهاي راهاي
براي اين که بدانيم برنامهنويسي شيءگرا چه ميباشد، نخست بايستي نقيض آن را بشناسيم. لهجههاي برنامهنويسي اول به طور راه و روشاي بودند. برهان اين نامگذاري آن بود که دراين لهجهها، برنامهنويس بايستي گروه خاصي از راه و روشها را تمجيد مينمود که رايانه آنهارا به ترتيب اجرا مي کرد.
در طولهاي در آغاز برنامهنويسي، خط مشها بر روي کارتهاي پانچ نوشته ميشدند. رايانهها به اين ترتيب دادهها را گرفته، يک توالي از اقدامات را بر روي دادهها انجام داده و آنگاه دادههاي تازه را در خروجي ارائه ميکردند.
لهجههاي راهاي تا مقطعها به نيکي عمل ميکردند و برخي از آن ها نيز همچنان گزينه استعمال قرار ميگيرند. ولي وقتي که قرار بود برنامهنويس کاري را بيرون از ترتيب مقدماتي پروسه انجام دهد، رئيس لهجههاي برنامهنويسي مشقت بار مي شد. به اين ترتيب لهجههاي برنامهنويسي شيءگرا وارد عرصه شدند.
انگيزه از برنامهنويسي شيءگرا
سؤالي که دراين مکان مطرح مي گردد، اين ميباشد که برنامهنويسي شيءگرا چه مي باشد؟ اوليه گويش برنامهنويسي شيءگرا (که عموماً اعتقاد و باور بر اين ميباشد Simula بوده ميباشد) ايده شي ءها را معرفي کرد. شي ها گروهاي از داده ها ميباشند که تحت عنوان واحدي منفرد با آنان خلق مي شود.
اين معنا را با ارائه مثالي درپي اضافه توضيح ميدهيم؛ البته در آغاز در باب کلاسها سخن مي کنيم. کلاسها نوعي از اشياي مقدماتي ميباشند. آنها فهرستي از مختصات داراهستند که زماني تعريفوتمجيد مي شوند، تبديل به يک شيء ميگردند.
مثلا به يک بازي شطرنج اشاره مي کنيم. در بازي شطرنج ميتوانيم کلاسي به اسم «مهره» (Piece) داشته باشيم. داخل اين کلاس مهره، فهرستي از مختصات را به طور تحت داريم:
رنگ
طول
صورت
جنبشهاي مجاز
هر شيئي فقطً يک وهله يگانه از چيزي که به آن کلاس وابستگي داراست را تعريف و تمجيد ميکند. براين اساس ميتوانيم شيئي به اسم وزير سپيد داشته باشيم. اين شيء قادر است تعاريفي براي هر چهار ويژگي خويش داشته باشد (رنگ: سپيد، طول: بلند، صورت: استوانهاي دارنده تاج، جنبش: به تعداد نامحدود در هر جهت) اين شيء ميتواند متدها يا اين که تابعهايي نيز داشته باشد.
اصول برنامهنويسي شيء گرا
سؤالي که دراين مرحله ممکن ميباشد بپرسيد اين ميباشد که چه چيزي منجر مي گردد برنامهنويسي شيءگرا بهتر از برنامهنويسي خط مشاي باشد؟ به صورت خلاصه مي بايست ذکر کرد که لهجههاي برنامهنويسي شيءگرا مانند جاوا قابليت سازماندهي دادهها و کد را به ترتيبي آماده ميسازند که در پروژههاي وسيعخيس سازش بيشتري داشته باشند. براي اين کهاين مورد را طولاني تر توضيح دهيم درپي چهار اصل برنامهنويسي شيءگرا را توضيح خوا هيم بخشيد.
مضمون تجريد در برنامهنويسي شيءگرا
اين که قصد داريد از چيزي به کار گيري فرمائيد، ادله نميشود که شيوه فعاليت آن را ميدانيد. مثلا يک دستگاه اسپرسو تماماً پيچيده ميباشد، ولي شما لازم وجود ندارد شيوه فعاليت آن را بدانيد. شما کافي ميباشد بدانيد که زماني دکمه پرنور دستگاه را ميزنيد، اسپرسو اخذ خواهيد کرد.
همين قضيه در امر برنامهنويسي شيءگرا نيز صحت مينمايد. در نمونه بازي شطرنج مي توانيم يک متد ()move داشته باشيم. اين متد ممکن ميباشد مستم مقادير بالايي از دادهها و متدهاي ديگر باشد. همينطور ممکن ميباشد مستم متغيرهايي به طور شرايط اول و پاياني مهره باشد. علاوه بر اين موردها ممکن ميباشد به يک متد ديگر براي هنگامي که مهرهاي يک مهره ديگر را مي زند نياز داشته باشد.
البته نياز وجود ندارد کهاينها را بدانيد و کليه آنچه که مي بايست بدانيد اين ميباشد که هنگامي که از مهرهاي مي خواهيم تکان نمايد، مهره جنبش مي کند. اين معني تجريد ميباشد.
مضمون کپسولهسازي در برنامهنويسي شيءگرا
کپسولهسازي يکياز طريقهايي ميباشد که برنامهنويسي شيءگرا براي توليد تجريد به کارگيري مينمايد. هر شيء گروهاي از دادهها ميباشد که با آن تحت عنوان يک واحد منقطع واکنش ميشود. باطن اين شي ءها نيز دادهها به طور متغير و متد قرار دارا هستند.
متغيرهاي باطن شيء در مجموع جداازهم باقي مي مانند و اين بدان معنا ميباشد که اشياء و متدها نميتوانند به همديگر دسترسي داشته باشند. شي ها صرفا از روش استعمال از متدهايشان تأثير ميپذيرند.
يک شيء وزير مي تواند دربرگيرنده يک سري بخش از داده ها باشد. براي مثال قادر است متغيري به اسم «حالت» داشته باشد که مکان آن را روي ورقه گزينش مي کند. اين متغير براي استعمال از متد ()move لازم ميباشد. و همينطور يک متغير رنگ نيز دارااست.
با اعلان محرمانه متغير شرايط و اعلان همگاني متد ()move برنامهنويس مي تواند از تأثيرپذيري متغيرهاي جنبش از اشياي ديگر خودداري کند. رنگ مهره نيز در صورتيکه به طور سري اعلان شود، اشياي ديگر نميتوانند آن را تغييرو تحول دهند؛ مگر اين که متدي اذن اين فعاليت را به آنان بدهد. ولي در اين زمينه چنين کاري مجاز وجود ندارد زيرا رنگ مهرههاي شطرنج همواره اثبات ميباشد.
مضمون وراثت در برنامهنويسي شيءگرا
درخصوص نمونه بازي شطرنج، مهرههاي پياده به متدي نياز دارا هستند که در چهره پيروزي در وصال به انتهاي برگه، آنها را به وزير تبديل نمايد. به عنوان مثالً اين متد را ميقدرت ()transformPiece ناميد.
تمامي مهرهها به چنين متدي نياز ندارند. براين اساس لازم وجود ندارد کهاين متد را در کلاس مهرهها در اختيار بگذاريم. بلکه ميتوانيم يک زيرکلاس از کلاس مهرهها به اسم «پياده» توليد کنيم. ازآنجا که زيرکلاسها کليه مختصات کلاس «مهره» را ارث مي برند، اين وهله از زيرکلاس «پياده» نيز دربرگيرنده رنگ، طول، صورت و جنبشهاي مجاز خواهد بود.
ولي علاوه بر مختصات فوق يک متد ()transformPiece نيز در آن تعريفوتمجيد ميکنيم. در اين صورت لازم وجود ندارد که نگران به کار گيري غلط از اين متد بر روي مهره صورت (قلعه) باشيم.
توليد زيرکلاسها سبب ساز صرفهجويي متعددي در حين برنامهنويسي مي گردد. به جاي ساخت کلاسهاي نو براي هر چيز، مياقتدار صرفا يک کلاس مبنا نوشت و بعد از آن آن را هر دوران که نياز باشد، به زيرکلاسهاي نو بسط اعطا کرد. ولي توکل زياد بر روي وراثت نيز جنبههاي منفي يگانه خويش را داراست که دراين نوشته مجال پرداختن به آنان وجود ندارد.
معنا چندريختي در برنامهنويسي شيءگرا
چندريختي فيض وراثت ميباشد. ادراک بدون نقص چندريختي مستم کسب حداقلي از علم برنامهنويسي ميباشد و از اين رو دراين بخش صرفا به طور مقدماتي آن را معرفي مي کنيم. به صورت خلاصه چندريختي به برنامهنويس قابليت و امکان مي دهد که متدهايي با اسم يکسان را بر روي اشياي متفاوت به کارگيري نمايد.
براي مثال فرض فرمائيد در کلاس «مهره»-ها که در بخشهاي پيشين تمجيد کرديم يک متد move() داشتيم که هر مهره را در همگي جهات به اندازه يک واحد تکان مياعطا کرد. اين متد براي مهره سلطان اثرگذار ميباشد؛ ولي تنها براي اين مهره به درد ميخورد و راجع به مهرههاي ديگر به عمل نميآيد. براي حل اين ايراد ميتوانيم متد ()move جديدي در زيرکلاس «مهره چهره» تعريفوتمجيد کنيم که به طور جنبش به تعداد نامحدود در سمتهاي جلو، عقب، چپ و راست باشد.
دراينصورت هنگامي که برنامهنويس متد ()move را فراخواني مي کند، گونه مهره را نيز تحت عنوان محل ورود (آرگومان) متد ارسال مينمايد تا برنامه بداند که دقيقاً چه مهرهاي را مي بايست جنبش دهد. بنابراين مقدار زمانه متعددي صرفهجويي مي گردد. اين دوران سواي وجود چندريختي مي بايست صرف اين مي شد که تشخيص دهيد چه دسته حرکتي مي بايست انجام دهيد.
برنامهنويسي شيءگرا به طور خلاصه
درصورتيکه بعداز مطالعه مفاهيم برنامهنويسي شيءگرا در گير سردرد گرديدهايد، مي بايست بگوييم که جاي نگراني وجود ندارد. به دنبال مواقعي که بايستي به خيال بسپاريد را فهرست کردهايم:
برنامهنويسي شيءگرا اطلاعاتي را در واحدهاي منفرد به اسم شيء جمع آوري مي نمايد.
هر شيء وهله منفردي از يک کلاس ميباشد
تجريد، سبب پنهان شدن نحوه عمل دروني شيء در مواقعي که ومي به افشاي آن وجود ندارد ميگردد.
کپسولهسازي، متغيرها و متدهاي داخل شي ءها را به هم داراي ربط ميسازد و از آن ها حفاظت مي کند.
وراثت، قابليت استعمال زيرکلاسها از مختصات کلاسهاي والد را آماده ميسازد.
چندريختي به شي ها و متدها قابليت و امکان رئيس شرايطهاي متعدد با يک رابط منفرد را مي دهد.
درصورتي که موردها فوق را به خيال و خاطر بسپاريد، شعور قابل قبولي از معنا برنامهنويسي شيءگرا خواهيد داشت. شعور چهار اصل برنامهنويسي شيءگرا به عبارتيطور که اشاره کرديم ممکن ميباشد عمل دشواري باشد؛ البته هنگامي که آغاز به برنامهنويسي بکنيد برايتان بديهيخيس ميشوند.
به خيال و خاطر داشته باشيد که ما درين نوشته فقط کلياتي از برنامهنويسي شيءگرا را مطرح کردهايم. لهجههاي برنامهنويسي متعدد شيءگرا هر مورد شيوهها و ترتيبات مختص خويش را دارا هستند. هنگامي که لهجه برنامهنويسي مطلوب خويش را گزينش کرديد، ميتوانيد استارت به مطالعه راجعبه شيوه استعمال آن گويش از مفاهيم شيءگرايي بکنيد.
جشنواره هاي برنامه نويسي موبايل ايران ( بروزرساني )
ساخت يک ربات 10 دلاري براي آموزش برنامه نويسي به کودکان
با 15 زبان برنامه نويسي محبوب آشنا شويد
برنامه نويسي، ابزار دختران افغان براي غلبه بر مشکلات
مي ,برنامهنويسي ,ميباشد ,يک ,شيءگرا ,متد ,برنامهنويسي شيءگرا ,وجود ندارد ,به طور ,را به ,آن را ,ممکن ميباشد مستم ,لهجههاي برنامهنويسي شيءگرا
درباره این سایت