تشکر
کلاسها در C++: بخش اول مقدمهای بر شیءگرایی
نوشته شده توسط مدیر سایت چهارشنبه 13 آبان 1388 ساعت 22:59
مهمترین ویژگی C++ در مقایسه با زبان C خاصیت شیءگرایی است. زبان C یک زبان ساختار یافته است که در آن میتوان با استفاده از توابع در کنار متغیرهای محلی و سراسری، ساختار برنامه را شکل داد. هر چند با این روش میتوان تقریبا هر برنامهای را نوشت، لیکن در این روش به دلیل برقرار نبودن ارتباط منطقی بین کد (توابع) و دادهها (متغیرها)، مدیریت برنامههای کلان با دشواری روبهرو میشود. برای روشن شدن ارتباط کد و داده، مثالی بزنیم: یک رشته در زبان C به صورت آرایهای از حروف تعریف میشود، و اگر بخواهیم طول آن را به دست آوریم باید تابعی مثل strlen را فراخوانی کنیم که رشته را به صورت یک پارامتر ورودی می-گیرد. در اینجا ارتباط تابع strlen و دادهی رشته از طریق پارامتر برقرار میشود وگرنه strlen به خودی خود، هیچ خبری از تعریف شدن رشته ندارد...
حال اگر رشتهی مذکور خودش بتواند طول خود را محاسبه کند، چه اتفاقی میافتد! در این حالت رشته هم از دادهی خودش خبر دارد و هم تابعی به صورت داخلی دارد که میتواند طول خودش را حساب کند. می-گوییم کد (تابع محاسبه طول رشته) و داده (رشته) با هم مجتمع شدهاند. این کار هم فرایند برنامه نویسی را تسهیل میکند و هم خوانایی برنامه را افزایش میدهد. طول، یک خاصیت رشته است و خیلی مناسب است که هر رشتهای از طول خودش خبر داشته باشد (همان طور که ما از قد و وزن خودمان خبر داریم!).
برای مدلسازی اشیاء واقعی و مصنوعی، ما به چیزی بیش از توابع و متغیرها نیاز داریم و باید مفهوم جدیدی به زبان اضافه کنیم. شیء عبارت است از چیزی که دارای یک سری خواص و یک سری قابلیتهاست. لذا این مفهوم جدید باید بتواند خواص و قابلیتهای اشیاء را مدل کند. کلاس، همان مفهوم جدیدی است که برای این منظور ابداع شده است. کلاس برای مدل سازی خواص اشیاء، از متغیرها و برای مدلسازی قابلیتها، از توابع استفاده میکند. دقت کنید که کلاس یک مفهوم است که به گسترهی وسیعی از اشیاء اطلاق میشود؛ مثلا وقتی میگوییم کلاس کتاب، به هر کتابی اعم از ریاضی، فیزیک، شیمی و ... اطلاق میشود و در واقع تک تک این کتابها اشیائی از کلاس کتاب هستند. همین طور وقتی در مورد کلاس دوچرخه صحبت میکنیم شامل دوچرخهی حسن، دوچرخهی علی و هر دوچرخهی دیگری میشود. در یک کلام، شیء مصداقی است از یک کلاس.
کلاس یک مفهوم انتزاعی است و شیء مصداقی است از یک کلاس
برای تقریب بیشتر به ذهن یک مثال برنامه نویسی بزنیم: کلاس سادهای مثل مستطیل، چهار خاصیت دارد، مختصات بالا، پایین، چپ و راست. برای نگهداری این خواص میتوانیم چهار متغیر صحیح در این کلاس تعریف کنیم. حال اگر بخواهیم مستطیل مذکور قابلیت محاسبه طول، عرض و مساحت خود را داشته باشد، کافیست توابع مناسبی مثل Width()، Height() و Area() برایش تعریف کنیم که بر اساس خواص چهارگانه-اش، آنها را حساب کند.

