View Full Version : سوال: درباره برنامه های شئ گرا
rezabb
یک شنبه 06 مرداد 1387, 22:25 عصر
برنامه های شئ گرا به چه نوع برنامه ها می گویند؟
__H2__
دوشنبه 07 مرداد 1387, 02:20 صبح
سلام
شی گرایی یک مفهوم بسیار جامع و وسیع است و من که فکر نکنم بتوانم در یک پست همچین چیزی را توضیح دهم.
شی گرایی و وراثت و پلی مورفیزم و رویدادگرایی ... همه موجب تحول عظیمی در برنامه نویسی شده اند و امکان توسعه و طراحی برنامه های بسیار پیچیده را ممکن ساخته اند.
شما در همین VB6 شاهد رویدادگرایی و تا حدود بسیار ضعیفی پلیمورفیزم هستید و می بینید چه سبکی و راحتی به برنامه نویسان، نسبت به نسخه ای مثل QB اعتإ کرده.
یکی از مصادیق شی گرایی وراثت است.
که به شما امکان میدهد، کلاسهای تولید شده دیگران را توسعه بدهید.
مثلاً فرض کنید در جاهای زیادی از برنامه تان نیاز به یک TextBox یا NumbericUpDown دارید که رنگش پویا باشد و هر وقت کاربر عددی بیشتر از 2000 در آن وارد کرد، رنگش قرمز شود.
انجام این کار ساده است، ولی در یک زبان غیر شی گرا مثل VB6 شما باید برای هر فرم و هر مکانی که میخواهید دستورات فوق را مدام کپی کنید، که اینکار اصلاً منطقی نیست و اگر بعداً بخواهید کد را ویرایشی کنید و جایش را تغییر دهید باید کل کدهای مشابه را پیدا کرده و ویرایش کنید.
البته شاید برخی بیاییند و یک UserControl بسازند و یک TextBox رویش قرار دهند و هر کجا نیاز بود از این UC جدید استفاده کنند، ولی این کار هم چند ایراد دارد.
1- به جای یک کنترلر، دو کنترلر مجزا در هر لحظه لود میشود که مبابع سیستم عامل را هدر میدهد.
2- UC بالاخره یک TextBox نیست! و باید تمام متدهای مورد نیاز TextBox مجدداً در آن پیاده سازی شود.
3- باید به فکر تغییر سایز و کد مربوطه هم بود
....
تازه این یک نمونه خیلی خیلی خیلی ... ساده است، در مبناهای برنامه های بزرگ ، فقدان این مسئله میتواند، نگه داری و توسعه کد را کاری سخت و غیر ممکن کند.
ولی در زبان شی گرایی مثل VB9 شما در چند خط یک وراثت از کلاسس TextBox میگیرد و خصیصه جدید مورد نظر را به ان اضافه میکنید و نامی جدید برایش میگذارید. و آنگاه یک TextBox جدید با قابلیت دلخواه دارید.
این TextBox جدید، تمام خواص و متدها و قابلیت های TextBox اولیه را به ارث برده و شما برای هیچ یک از خواص پیشین کدی ننوشته اید و فقط خاصیت جدید را به آن اضافه کرده اید، و تازه میتوان همین TextBox جدید را هم وراثت گفت و شی ای جدید با خواصی جدید تولید کرد.
در کل بحث بسیار گسترده است، پیشنهاد میکنم در گوگل مقالات و pdf های فارسی (و در صورت تسلط انگلیسی) را سرچ کنید، مطالبی بسیاری خواهید یافت.
یک نگاهی هم به تاپیک زیر بیاندازید. برعکس مطالب فوق، در این تاپیک کمی در مورد فقط همین وراثت توضیح غیر برنامه نویسی داده ام.!!!
http://barnamenevis.org/forum/showthread.php?t=83311
موفق باشید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.