PDA

نسخه کامل مشاهده نسخه کامل : کلاس ها در c++



maryam-123
29-12-2005, 23:46
سلام
راجع به کلاس ها وoverloading درc++ یه کم توضیح دهید(خواهش میکنم)
ممنونم

mska
30-12-2005, 22:39
سلام
اين pdf در مورد كلاس ها هست اميدوارم كه بتونه كمك كنه

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

bithiah
31-12-2005, 01:32
دوست من مریم جان سلام.
فکر می کنم منظور شما یکی از ویژگیهای مهم شیء گرایی، یعنی قابلیت دادن بار اضافی به عملگرها و توابع یا همان Overloading هست. این قابلیت، انعطاف پذیری بیشتری را در طراحی برنامه فراهم می کند.
قابلیت بارگذاری، یکی از امکاناتی است که ویژگی Polymorphism(چند ریختی) زبانهای شیء گرا به برنامه نویس ارائه می کند. چندریختی، یعنی امکان ایجاد چندین نگارش از یک تابع یا یک عملگر.
قابلیت بارگذاری توابع(Function Overloading)، یعنی اینکه تابع را طوری دوباره تعریف کنیم که بتواند با انواع مختلف داده ها کار کند. برای مثال کتابخانه Runtime زبان C++، خود شامل چند تابع است که برای کار با انواع داده ها Overload شده اند. بعنوان مثال به prototype تابع square نگاه می کنیم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
هر تابع برای گرفتن و برگرداندن نوع خاصی از داده(integer، float یا double) طراحی می شود، باوجود این، همه تابع ها square نام دارند. در C++، بارگذاری تابع تنها تا زمانی که لیست آرگومانها با هم تفاوت داشته باشد، امکانپذیر است. بنابراین اگر تابع square را با فرستادن یک مقدار صحیح صدا بزنید، تابع مناسب صدا زده می شود و یک مقدار صحیح برگردانده خواهد شد. بهمین ترتیب اگر square را با یک مقدار float یا double صدا بزنید، بترتیب یک float یا double برگردانده خواهد شد.

قابلیت بارگذاری عملگرها(Operator Overloading)، وابستگی شدیدی به خاصیت امکان تعریف نوع داده(Data Type) جدید در برنامه نویسی شیء گرا دارد. بدین ترتیب که کاربر می تواند بعد از تعریف یک نوع داده جدید، عملگرهای موجود در گرامر زبان شیء گرا رو(برای مثال در C++ عملگرهایی چون + - * / % ^ & | ~ ! = <> += [] () new delete و ...) ، بارگذاری کند. در C++، عملگرهای بارگذاری شده، عملگرهایی هستند که در طول یک کلاس با استفاده از کلمه کلیدی operator که بدنبال آن علامت یک عملگر می آید، مجددا تعریف شده اند. در C++ تمامی عملگرها را می توان بارگذاری کرد، مگر.، :، ?:، ::، .*(نقطه ستاره) و علائم پیش پردازنده # و ##.
برای درک بهتر موضوع، مطلب را با یک مثال ساده در مورد اعداد مختلط-موهومی(Complex) ادامه می دهیم.
در اکثر قریب به اتفاق زبانهای رایج برنامه نویسی، از جمله C++ هیچ نوع داده از پیش تعریف شده ای برای اعداد مختلط در نظرگرفته نشده، اما ما می توانیم خود یک نوع داده جدید برای کار با این اعداد تعریف کنیم. برای اینکار در C++ از کلاسها استفاده می کنیم. همانطور که می دانیم، اعدد مختلط بفرم کلی Z=x+iy هستند که x و y قسمت حقیقی(Real Part) وi را قسمت موهومی(Imaginary Part) می گویند و آنرا بصورت Z(x,y) هم نشان می دهند. برای جمع دو عدد مختلط، بایستی دو بخش دو عدد را بصورت جداگانه با هم جمع کنیم.
به ساختار کلاس زیر توجه کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
همانطور که می بینید، در کلاس بالا، سه تابع با نام مشترک Complex، اما با استفاده از امکان Polymorphism، در سه شکل مختلف داریم. این تابع فقط در هنگام تعریف متغیرها می تواند فعال شود و تابعی است که متغیرهای کلاس را مقداردهی اولیه می کند(تابع Constructor-سازنده).
و حالا برای استفاده از این کلاس، برای مثال برنامه زیر را داریم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در واقع در خط اول تابع main، عبارات X, Z1(1), Z2(4,3)، تابع سازنده کلاس Complex را بطور اتوماتیک صدا می زنند، البته هر کدام، یکی از شکلهای این تابع را فراخوانی می کنند.

امیدوارم این مطالب که هر کدوم رو از یک جا پیدا کردم_دست نوشته های قدیم خودم، برات مفید باشه._
موفق باشی

maryam-123
31-12-2005, 23:24
سلام
از راهنماییتان ممنونم ولی میخواستم کمی ساده تر و بیشتر توضیح دهید

bithiah
01-01-2006, 00:41
مریم جان
من نمی دونم کجاش رو باید بیشتر یا ساده تر توضیح بدم. پس لطف کن و بگو کجاش رو متوجه نشدی تا توضیح بدم. کلا شما راجع به شیءگرایی باید یه پیش زمینه نه چندان مختصری داشته باشین تا مبحث بالا رو خوب متوجه بشین.
موفق باشید

maryam-123
04-01-2006, 22:26
من چند مثال راجع به overloading میخواستم

WooKMaN
04-01-2006, 23:06
دوستان اگه كسي در مورد كلاس در سي ++ چند تا برنامه واسه نمونه داره ممنون ميشم لينكش رو بذاره

bithiah
05-01-2006, 01:51
دوستان من، قبلا یک نمونه Overloading گذاشتم، با توضیح. اما خوب این هم یکی دیگه. پیاده سازی کلاس Rational (اعداد کسری) همراه با overload اپراتورها برای سادگی کار با این اعداد:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

maryam-123
05-01-2006, 23:56
واقعا" متشکرم من هفته بعد امتحان دارم اگر چند مثال دیگه بذارید ممنون میشم

ubuntub
18-11-2009, 19:02
سلام
اين pdf در مورد كلاس ها هست اميدوارم كه بتونه كمك كنه

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]



mamno0n az matalebe mofidi ke mizarin
mishe dobare in addresso bezarin,PLZ!!!
not founde!!!!!!!!!


:11::11::11: