روش هاي برنامه نويسي

milad gholami

عضو جدید
سلام.
نوشته شده توسط:صادق
چه تفاوت هايي ميان دو روش شي گرا و روش رويه اي وجو دارد؟:w34:
 
زبانهایی مانند پاسکال و C زبانهایی بودند که پیچیدگی های اسمبلی را پنهان می کردند و عملیات های تکراری مانند حلقه ها و شرطها را که بسیار زیاد در یک برنامه کاربرد پیدا می کنند را با چند خط کوتاه و شبیه به زبان انسان درست کردند. هنوز هم در برخی از دانشگاهها این زبان ها درس داده می شوند و خیلی های دیگر هم با زبانهای برنامه نویسی پیشرفته٬ بیشتر به صورت ساخت یافته برنامه می نویسند.

برنامه نویسی با زبان ساختاریافته برای یادگیری برنامه نویسی و نوشتن برنامه های کوچک٬ بسیار عالی بود. ولی وقتی برنامه بزرگ می شد و کارهای گروهی شکل می گرفت مشکلات استفاده از متغیرهای Global و اشاره گرها موجب اختلال در کارکرد برنامه ها می شد. (به قول کاربرهای عادی تر: "کامپیوتر اشتباه عمل می کرد")
تنها کاری که می شد در آن زمان انجام داد این بود که همیشه به برنامه نویسان توصیه می کردید که توصیه های ایمنی را جدی بگیرند و به هرجایی که می توانند دست دراز نکنند. حال آنکه به دلایل سهوی و عمدی این توصیه ها موثر واقع نمی شد.
طراحان و دانشمندان علوم کامپیوتر باز دست به کار شدند تا جلوی یکسری کارهای تکراری دیگر را بگیرند. نتیجه آن معرفی زبانهای شی گرا بود.:redface:

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

همچنین نکته دیگری را لحاظ کرده بودند که به آن چندریخیتی (polymorphism) می گویند. مثلا ما می دانیم که پرندگان از طریق تخم گذاری زاد و ولد می کنند. یک استثنا خفاش است که در عین حال که پرنده است بچه زا است.
معرفی شی گرایی٬ تحولی را در نگرش به مهندسی نرم افزار برانگیخت. بسیاری آن را تنها راه حل ادامه برنامه نویسی می دانستند و گروهی نمی توانستند خود را با آن وفق دهند. قدیمی ترها چندان نمی توانستند خود را تغییر دهند و مبتدیان آن را غول چراغ جادو می دانستند.
به هرحال با ظهور زبانهای شی گرا نتیجه برآن شد که همه خواسته و ناخواسته شی گرا می نوشتند در حالیکه طراحی برخی ها ساختاریافته بود.
شی گرایی دارای سه ویژگی اصلی است: ۱- کپسوله سازی٬ ۲- وراثت٬ ۳- چندریختی
طبق ادعاهای صورت گرفته این ویژگی ها مدیریت کدها را آسان تر می کرد. ولی برای مدیرانی که آن را درک نمی کردند صد البته مدیریت را سخت تر می کرد.
کپسوله سازی در اصل این امکان را فراهم می کرد تا متغیرهای Global برچیده شوند مگر آنکه برنامه نویس آن را مجاز بداند. همچنین توابع و زیربرنامه ها که دیگر با نام متد شناخته می شدند می توانستند خصوصی یا عمومی باشند. این گزینه باعث می شد تا دیگر کمتر نگران برنامه نویسهایی باشیم که توصیه های ایمنی را جدی نمی گرفتند.
وراثت برای توسعه بسیار مفید ارزیابی می شود. مثلا پسری که مانند پدرش است ولی سطح تحصیلاتش بالاتر است و قابلیتهای بیشتری مانند خلبانی را دارد. این کار می تواند با اضافه کردن کدی به انتهای یک متد از کلاس والده خودش صورت گیرد. بدون اینکه احتیاج به سورس آن کلاس داشته باشیم. این موضوع باعث می شود تا توسعه یک کلاس ضمن پنهان ماندن محتویاتش صورت پذیرد.
چندریختی هم از آن حرف ها است. شما یک متد را صدا می زنید ولی ممکن است یک کار دیگر انجام دهد. این جمله بسیار درک نشدنی است. در صورت تحقق این چنین امکانی که همه چیز به هم می ریزد. نکته در اینجاست که این به طریقه استفاده از چندریختی مربوط می شود. مثلا همه موجودات زنده فعل حرکت را اجرا می کنند. ولی یکی می خزد٬ یکی می پرد و یکی راه می رود و می دود. البته دست برنامه نویس برای توسعه باز است و در صورت استفاده نادرست ممکن است موجودی هنگام اجرای فعل حرکت مسواک بزند.:)
 

Similar threads

بالا