صفحه 1:
ارث بری ‎Inheritance‏

صفحه 2:
تا ۳۲۲۲۲ ۲ تعریف: فرايند ايجاد كلاس های جدید به نام کلاسهای مشتق شده از کلاس موجود يا پایه است. GAS jog ‏-کلاس مشتق شده تمام توانایی های کلاس پایه را به ارث می برد‎ ۱ ‏اما میتواند تظریف هایی از آن باشد.‎ ۳-کلاس پایه بدون تغییر باقی می ماند. ‎GULP‏ بری باعث صرفه جویی در وقت و افزایش اطمینان برنامه ميشود. ‏۴-قابلیت استفاده مجدد در توضيع آسان كتابخانه هاى كلاس .

صفحه 3:
eee ‏کلاس مشتق شده و کلاس پایه:‎ CommunityMember مثال: این یک نمونه از ارث بری در جامعه دانشگاه است که کلاس های we Employee Student ‏دانشجو و کارمندان از‎ 2 1۹ ‏کلاس اعضای جامعه مشتق‎ 7 ۱ ‏شده اند و کلاس های‎ ۳ S ‏استاد و کارمندان اداری از‎ Teacher Staff ‏کلاس کارمندان مشتق‎ شده اند.

صفحه 4:
a ‏كلاس مشتق شده و کلاس پایه‎ مثال: این یکی نمونه ای از ارث بری در کلاس اشکال است که در آن کلاس های دایره و مثلث ومستطیل از این کلاس مشتق شده اند. Shape Circle Square Triangle

صفحه 5:
نحوه تعريف كلاس مشتق از كلاس يايه نام کلاس پایه نوع ارث برى ‎٠‏ | نام كلاس مشتق 1 ‎Ihcuss wewbers‏ } [1 Chae { جموحاوجم ۱ 7

صفحه 6:
0 car ry Aerts ‎Ca read‏ ل م

صفحه 7:
مثال كلاس ‎counter‏ Seon ete { ‏:ع أاطنام‎ ‏يي تا‎ ‏ی ی‎ Mc eT ععصنامء ذذقاء 0 0 Ter ae Ras Peed Pe ‏ل‎ ‎53 ‎counter(int c):count(c) 1 Pea ‏ال‎ ‎۱ ‎cron}‏ زر تا ‎00 ‎

صفحه 8:
I Counter ‏توضیح مثال کلاس‎ "" خط زیر نشان میدهد که این کلاس جدید با دسترسی عمومی از کلاس اول مشتق شده است. ‎class countDn:public counter‏ * توابع عضو کلاس پایه را می توان به وسیله اشیاء کلاس مشتق مورد دسترسی قرار داد که البته اين به قابلیت دسترسی کلاس مشتق باز میگردد.

صفحه 9:
ویژگیهای کلاس مشتق * همانطور که اشاره شد هنگامی که یک کلاس از يك كلاس پایه مشتق میشود باعث میشود دوباره کاری صورت نگیرد و تمامی رفتارها و ویژگیهای موجود در کلاس پایه به کلاس مشتق شده انتقال یابد "" توجه داشته باشید که وقتی شما کلاس جدیدی را از یک کلاس پایه مشتق میکنید همانند گذشته هیچ گونه شی خاصی ساخته نمیشود و تنها کلاس تعریف میگردد

صفحه 10:
۲ SS ete ‏ویژگیهای کلاس مشتق-ادامه‎ * كلاس مشتق شده میتواند رفتارها و ویژ گیهای دیگری نیز علاوه بر انچه که از والد خود به ارث برده است داشته باشد. * مثلاً در مثال شمارنده کلاس مشتق شده یک متد با نام ۲۳ > اضافه تر از آنچه که از کلاس والد به ارث برده دارد.

صفحه 11:
انواع ارث بری * در مثالهای قبل نوع ارث بری مشخص شده از نوع 0 میباشد. * انواع ارث بری که میتوان برای ساخت كلاس مشتق استفاده کرد عبارتند از: public ® private # protected "

صفحه 12:
eee انواع ارث بری * 6 0: در لینوع ارس ری‌تمامی‌متفیرها و تولبع ‎public ,a<‏ 5 0۲۵6۵۵0 كلاسريايه به همان شکلدر کلاسمشتق‌شده انتقالمی‌بابند * 0۲0]660: در لیرنوع ارشری‌تسمامی‌متفیرها و تولبع عضو 0۷۵116 و ‎aly is protected‏ به شکل60] 0۲۵۲6۵ بسه کلاسمشتق‌شده لنتقلل می‌بابند " 16 0۲۷: در لیرسوع ارس ری‌تسمامی‌متفیرها و تولبع عضو ]0۷01 و ‎uly ps protected‏ به شكل 6 مب ه کلاسم‌شتق‌شده لنتقا لمی‌بابند

صفحه 13:
a ‏قابلیت دسترسی به متغیرهای ارث برده شده از کلاس پایه در‎ ‏کلاس مشتق با توجه به نوع ارث بری‎ Access specify Accessible from Accessible from _— Accessible from Own Class Derived Class Object Outside Class Public yes yes yes Protected yes yes no Private yes no no

صفحه 14:
۳۲۲۲۲۲۲۲۲ ۲ متفیرهای عضو ‎private‏ در ارث بری چه میشوند * همانگونه که از متفیرهای 0۲1۷316 عضو یک کلاس انتظار داریم. این متغیرها باید از دسترس تمامی کلاسهای دیگر مخفی بماند * در ارث بری متغیر عضو 0۲1۷5]6] به کلاس مشتق شده انتقال می یابد ولی کلاس مشتق شده نمیتواند بطور مستقیم با متغیر کار کند و باید از طریق دیگر توابع عمومی که از کلاس پایه گرفته مقدار عضو را تغییر دهد.

صفحه 15:
* کلاس پایه ای تعریف نموده و یک متفیر عضو ۱/6۵ با نام 0۷۵۲ برای آن در نظر بگیرید. * توابع 06 و 56 را برای متغیر بصورت 0۱۸0116 تعریف نمایید * از روی کلاس پایه یک کلاس مشتق نمایید * تابعی در کلاس مشتق بنویسید و سعى كنيد بصورت مستقیم مقدار متفیر ۷۲ را تغییر دهید.

صفحه 16:
* اگر برای کلاس مشتق سازنده ای تعریف نشود مثل مثال بالا هنگام ساختن شیء از این کلاس سازنده کلاس پایه به تنهایی صدا زده میشود * اما اگر سازنده ای برای آن تعریف شود و سازنده آن هیچ آرگومانی را دریافت نکند به صورت زیر سازنده ها و سپس مخرب های کلاس پایه و مشتق فراخوانده می شوند: ۱-ابتدا سازنده کلاس پایه فراخوانده می شود. ۲-سازنده کلاس مشتق صدا زده می شود. ۳-هنگام فراخوانی مخرب ها اول مخرب کلاس مشتق اجرا می شود. ۴-در انتها مخرب کلاس پایه به اجرا در می آید.

صفحه 17:
* اگر سازنده کلاس پایه آرگومانی را به عنوان ورودی دریافت کند (کلاس پایه سازنده پیش فرض نداشته باشد) * حتماً باید این ورودی در سازنده کلاس مشتق در یافت شده و سازنده کلاس پایه فراخوانی شود * نحوه فراخوانی سازنده کلاس پایه به صورت زیر از (: ) استفاده شود Derived::Derived(int g):Base(g) } 0

صفحه 18:
همپوشانی توابع عضو: ویژگی منحصر به فرد دیگری که ارث بری امکان آن را به ما می دهد همپوشانی توابع عضو کلاس های پایه و مشتق است به اين معنی که در هر دو کلاس یک تابع با یک اسم مشترک داریم برای مثال در مثال اشکال هم كلاس يايه هم همه ی کلاس های مشتق ‎OT‏ تابع ترسیم را دارند و از آنجایی که اشیاء کلاس که کدام تابع فراخوانی می شود؟ ‎class Derived : public Base‏ ات i { 0 00 Base(), ‏:()لعناامعم‎ virtual ~Base(); virtual ~Derived();

صفحه 19:
hi ‏همپوشانی توابع عضو‎ ‏خوب جواب اینست که اگر ما هیچ مثل قدیم توابع را تعریف کنیم‎ ‏تابع کلاس مشتق فراخوانده می شود (مثال بالا) اما اگر در کلاس‎ ‏مشتق در هنگام تعریف تابع از (::) استفاده کنیم تابع از کلاس پایه‎ ‏فراخوانده می شود!‎ ‏ره‎ 8356 0 0-3 ۱ 0 ‏نادیم‎ 3217 001 3 ‏وت‎ 007۷۵۵ ۱

صفحه 20:
‎SS ۲ ۲ ۲ 3 ۰‏ همپوشانی توابع عضو ‏در مثال بالا تابع مربوطه با عملگر (::) از کلاس پایه صدا زده شد که البته اگر ورودی داشته باشد به همان روال عادی ورودی ها را نیز در آن می نویسیم. ‏البته این بحث این جا به پایان نمی رسد ولی فعلاً از آن عبور مي کنیم و در چند فصل جلوتر به آن بازمی گردیم و خاصیت اصلی آن را در فصل توابع مجاری بحث می کنیم که بسیار کاربرد دارد و بحث جداگانه ای است.

صفحه 21:
کلاس های تجریدی: به مثال زیر توجه کنید در این مثال کلاس پایه ۳ کلاس مشتق دارد که هر کارمندی عضو یکی از آنها است يس هيج شيئى از کلاس پایهاجاد نمی شود و تنها از كلاس های مشتق شیء ایجاد می كنند به اين كونه كلاس ها كه از آنها هيج شيئى ایجاد نمى شود كلاس ت یدی گویند که مفهوم دقيق تجريد را نيز در بش ‎١١ ١١‏ براى شما خواهيم كفت همين قدر بدانيد كه هيج كاه نبايد از اين كلاس ها شيئى ايجاد كنيد و تنها مجاز به ايجاد اشيائى از كلاس هاى مشتق آن هستيد! Employe e Teacher Scientist Staff

صفحه 22:
EEL es ‏۵ارث بری‎ ۱۷91۱۱6 , ۰ تا به حال تنها از حالت ارث بری عمومی استفاده کردیم حال اگر از حالت ارث بری خصوصی استفاده کنیم اشیاء كلاس مشتق دیگر نمی توانند به توابع عضو عمومی کلاس پایه دسترسی پیدا کنند مثال: Class Derived : private Base

صفحه 23:
ارث بری چند گانه: * در صورتی که یک کلاس از ۲ یا چند کلاس مشتق شده باشد می گوییم ارث بری چند گانه بوده یعنی از چند كلاس ارث برى داشته و به صورت زير آن را تعریف می کنیم: class Derived : public Basel , public Base2 ,

صفحه 24:
ارث بری چند گانه مباحث ارث بری چند كانه شامل بررسی سازنده ها و یک ابهام در اين نوع ارث بری و در انتها کلاس های تودر تو می شود.ابتدا از سازنده ها شروع می کنیم: مثال: ‎virtual ~Base2();‏ 1 ووقاء { ‎felt] ol en k‏ ‎CLL‏ 825610 ‎ees class Derived : public Base1,public Base2‏ 0 { ‎fort] ites‏ 12 نوات ‎CLL‏ ‎class Base2 1۱‏ 7 0 ‎felt] elites‏ ‎Base2();‏

صفحه 25:
سازنده ها در ارث بری چند گانه: * دراين كونه ارث برى ها ابتدا سازنده هاى كلاس هاى يا يايه به ترتيب فراخوانده مى شود و در آخر نيز دقيقاً عكس فرا خوانى سازنده ها مخرب ها صدا زده مى شوند يعنى اول مخرب خود كلاس مشتق بعد مخرب کلاس پایه ۲ (در مثال بالا) و در انتها مخرب اولین کلاس پایه !

صفحه 26:
ابهام در ارث بری چند گانه : * گاهی اوقات پیش می آید که کلاس های پایه دارای یک تابع همنام هستند در حالی که کلاس مشتق دارای ‎OT‏ تابع نیست در این صورت برای کامپایلر اين ابهام به وجود می آید كه هنكام صدا زدن اين تابع بوسیله اشیاء کلاس مشتق كدام تابع فراخوانده مى شود كه در مثال يايين اورده شده در اين مواقع از عملگر (::) استفاده مى كنيم.

صفحه 27:
ابهام در ارث بری چند گانه 0 class C:public A, public B { 0 Taran vin Cele coma aaa ‏([إبوعة‎ i (oxo) oer ObjC.A :: show(); ObjC.B :: show(); return 0; Eire Mele hale #include "iostream.h" class A 0 ‏:ع أاطنام‎ void show(){cout<<"Class A\n";} 0 ‏كوواء‎ 8 { public: void show(){cout<<"Class B\n";}

صفحه 28:
8 0 hb اس نیت سکیا 0 D Objp; ۳۵۵۲ ۵: 1 Pel fe ‏ل‎ ‎1 ‎OER Belt liter i 1 ‏عوك‎

صفحه 29:
class Derived: public Basel,public Base2 clude <coni = class Basel 8 public: public: Derived() 825610( { a printf("\nBase1 Constructor"); Ronstructershy + co ~Derived() printf("\nBasel Distructor"); t intf("\nDerived 1 8 structor"); 3 + class Base2 1 public: int main(void) Base2() printf("\nBase2 Constructor"); clrser(); Derived d; ~Base2() { printf("\nBase2 Distructor"); getch(); return 0; 0 1

صفحه 30:
Baseil Constructor Base2 Constructor Derived Constructor Derived Distructor Base2 Distructor Basel Distructor_

صفحه 31:
8 ابهام در ارث بری چند گانه " در اين مثال هنگام فراخوانی از کلاس مشتق پایانی چون ۲ کپی مختلف از این تابع در کلاس های پایه هست برای همین کامپایلر دچار ابهام می شود و خطا می گیرد!

صفحه 32:
Se ‏مل بودن : کلاس های تو در تو‎ * گاهی اوقات می توان به جای ارث بری از کلاس ها تو در تو استفاده کرد یعنی مثلاً یک شیء از کلاس اول در کلاس دوم (به عنوان خصوصیت) و سپس از آن استفاده کنیم البته باید داخل توابع آن از آن بهره ببریم و در خارج کلاس آن توابع را ضدا زد. مثال: class A | 1 Lave) (on public: Function(int arg){ Obj void Func(int g); 1 0 8 355اء 0

صفحه 33:
تمارین: ۱-سلسله مراتب ورائت برای جامعه دانشگاه را که در بالا آمده بود در نظر بگیرید (شامل دانشجو استاد وکارمند اداری) چهار کلاس مربوطه را پیاده سازی کنید؟ ۲-برای رده های چهار ضلعی وذوزنقه ومتوازی الاضلاع ومستطیل سلسله مراتب ورائت را بنویسید و چهار ضلعی را به عنوان رده پایه در نظر بگیرید و آن را پیاده سازی نمایید با توابع زسم؟ ۳-کلاس اشکال را که در بالا توضيح داده شد يك نمونه ساده از يك مثال دقيق به اين فرم است: Shape Three Tow dimensional dimensional shape shape تمام اشکالی را که میتوانید تصور کنید ۲ بعدی و ۳ بعدی را ید وسلسله مراتب آن ها را تشکیل دهید و آنها را به عنوان مشتق های کلاس های مشتق پایه اصلی تعریف کنید.

صفحه 34:
"۲۲۲۲۲۲ ! تمارین ۴-در موارد مختلفی نیاز داریم یک جفت عدد را باهم نگه داری کنیم مثل مختصات یک نقطه کلاس مربوطه را بنویسید حال کلاس پشته ۲ را از کلاس پشته معمولی مشتق کنید اين پشته ‎pl sly‏ جفت عدد به کار می رود ضمنا توابع ورودی و خروجی پشته را نیز برای کلاس دوم بنویسید؟ ۵-یک موسسه در دو نوع مختلف کتاب و نوار ویدئویی محصولات آموزشی خود را ارائه می دهد کلاس های مشتق و کلاس پایه را تعریف کنید ضمناً همه آثار دارای ویژگیهای عنوان و قیمت هستند.

51,000 تومان