تارا فایل

پاورپوینت مقدمه ای بر کلاسها و اشیاء C


1
3
مقدمه ای بر کلاسها و اشیاء
C++

2
You will see something new. Two things. And I call them Thing One and Thing Two.
Dr. Theodor Seuss Geisel
Nothing can have value without being an object of utility.
Karl Marx
Your public servants serve you right.
Adlai E. Stevenson
Knowing how to answer one who speaks, To reply to one who sends a message.
Amenemope

3
اهداف
در این بخش شما خواهید آموخت :
کلاس ها ، اشیاء ، توابع عضو ، عضوهای داده ای چه هستند .
چگونه یک کلاس تعریف کنیم و از آن برای به وجود آوردن یک شیء استفاده کنیم .
چگونه توابع عضو را در یک کلاس تعریف کنیم تا بتوانیم رفتار آن کلاس را پیاده سازی کنیم .
چگونه عضوهای داده ای را در یک کلاس تعریف کنیم تا بتوانیم ویژگی های آن کلاس را پیاده سازی کنیم .
چگونه یک تابع عضو از یک شی ء را برای انجام وظیفه اش فراخوانی کنیم .
تفاوت های بین عضو های داده یک کلاس و متغیرهای عمومی یک تابع .
چگونه از یک سازنده (constructor) برای اطمینان از اینکه اطلاعات مربوط به یک شیء در هنگام به وجود آوردن آن شیء مقدار دهی اولیه شده است ، استفاده کنیم .
چگونه کلاسی طراحی کنیم که ظاهر آن مجزا از پیاده سازی اش باشد و امکان استفاده مجدد از آن تقویت شده باشد .

4
دورنما
3.1 مقدمه
3.2 کلاس ها ، اشیاء ، توابع عضو ، عضوهای داده ای .
3.3 مروری بر مثال های بخش .
3.4 تعریف یک کلاس با استفاده از تابع عضو .
3.5 تعریف یک تابع عضو با استفاده از پارامتر .
3.6 عضوهای داده، توابع set و get.
3.7 مقداردهی اولیه به اشیاءبا استفاده از سازنده ( constructor) .
3.8 قرار دادن یک کلاس در یک فایل جدا برای استفاده مجدد .
3.9 جداکردن ظاهر از پیاده سازی .
3.10 معتبر سازی اطلاعات با استفاده از توابع set
3.11 (اختیاری) مطالعهء موردی در مهندسی نرم افزار : شناساندن کلاس ها در ATM (سند نیازمندی ها)
3.12 پایان

5
1. 2 مقدمه
برنامه هایی از فصل 2 :
همه عبارت ها در تابع main قرار می گرفت .
برای نمونه :
همه برنامه ها تشکیل شده بودند از :
تابع main و
یک یا تعداد بیشتری کلاس
که هر کدام تشکیل شده اند از توابع عضو ، عضوهای داده ای

6
3.2 کلاس ها ، اشیاء ، توابع عضو ، عضوهای داده ای
نگاهی به کلاس ها : مثال ماشین
توابع مکانیزم کارهایی مانند شتاب گرفتن را توصیف می کنند
کارهای پیچیده را از دید استفــاده کننده پنهــان می کنند ، فـقـط به عنوان راننده شما می توانید از پدال برای شتاب گرفتن استفاده کنید بدون نیاز به اینکه بخواهید بدانید چگونه شتاب گرفتن انجام می شود .
کلاس ها قبل از اینکه مورد استفاده قرار گیرند باید تعریف شده باشند ، ماشین باید ساخته شده باشد قبل از اینکه مورد استفاده قرار گیرد .
اشیاء زیادی از نوع ماشین از همان کلاس ساخته می شوند ، ماشین های زیادی از همان طراحی مهندسی ساخته می شوند .

7
نگاهی به کلاس ها : مثال ماشین ( ادامه)
فراخوانی توابع عضو ، پیغامی را به شیء برای انجام وظیفه اش ارسال می کند ، درست مانند وقتی که فشار پدال گاز پیغامی را به ماشین برای شتاب گیری ارسال می کند
اشیاء و ماشین ها هر دو ویژگی هایی دارند ، مانند رنگ و کیلومتر شمار .
3.2 کلاس ها ، اشیاء ، توابع عضو ، عضوهای داده ای (ادامه)

8
3.3 مروری بر مثال های بخش .
هفت مثال ساده
مثال هایی که برای ساخت کلاس دفتر نمره استفاده شده
مباحث پوشش داده شده :
توابع عضو
عضوهای داده
میزبان های یک کلاس
کلاس ها یا توابع دیگری که توابع عضو اشیاء این کلاس را فراخوانی می کنند
جداکردن ظاهر از پیاده سازی
معتبرسازی اطلاعات
تضمین می کند که اطلاعات یک شیء در قالب یا محدودهء خاصی هستند .

9
3.4 تعریف یک کلاس با استفاده از تابع عضو .
تعریف کلاس
به کامپایلر اطلاع می دهد که کدام توابع عضو و عضوهای داده ای به کلاس تعلق دارند
واژه کلیدی class که با نام کلاس همراهی می شود
محصور شدن بدنه کلاس در بین آکلاد ({})
تعیین کردن توابع عضو و عضوهای داده ای
تعیین کننده سطح دسترسیٍ ”عمومی“ (Access- specifier public) :
بیان می کند که یک تابع عضو یا عضو داده کلاس برای دیگر توابع و عضوهای داده دیگر کلاس ها قابل دسترسی هستند .

10
Outline
fig03_01.cpp
(1 of 1)
آغاز تعریف کلای برای کلاس دفتر نمره
آغاز بدنه کلاس
پایان بدنه کلاس
تعیین کننده سطح دسترسیٍ ”عمومی“ که عضوها را برای عموم قابل دسترس می سازد
تابع عضو displayMessge که هیچ مقداری را بر نمی گرداند
استفاده از عملگر نقطه برای فراخوانی تابع عضو GradeBook

11
3.1 خطای رایج برنامه نویسی
فراموش کردن سمیکالن در پایان تعریف کلاس خطای نحوی محسوب می شود .

12
تعریف تابع عضو
نوع داده برگشتی یک تابع
نوع داده برگشتی توسط یک تابع را ، پس از به انجام رسانیدن وظایفش ، بیان می کند
Voidبیان می کند که تابع هیچ مقداری را باز نمی گرداند
اسم های توابع باید از انواع معتبر باشد
پرانتزهای بعد از نام تابع بیان می کند که این یک تابع است
بدنه تابع شامل عباراتی است که وظایف به عهده تابع را ، انجام می دهند
محدود شده توسط ({})
3.4 تعریف یک کلاس با استفاده از تابع عضو (ادامه)

13
برگرداندن مقدار توسط تابعی که نوع داده برگشتی آن void اعلام شده باشد ، خطای کامپایلری محسوب می شود .
3.2 خطای رایج برنامه نویسی

14
3.3 خطای رایج برنامه نویسی
تعریف تابع در درون تابع دیگر خطای نحوی محسوب می شود .

15
3.4 تعریف یک کلاس با استفاده از تابع عضو (ادامه)
استفاده از یک کلاس
کلاس الگویی است تعریف شده توسط کاربر ( یا تعریف شده توسط برنامه نویس)
قابل استفاده برای به بوجود آوردن اشیاء
متغیر از نوع کلاس
C++ زبانی است قابل گسترش
عملگر نقطه (.)
برای دسترسی به عضوهای داده ای و توابع عضو یک شیء استفاده می شود
مثال
myGradeBook.displayMessage()
فراخوانی تابع عضو displayMessageازشیئی به نام myGradeBook
از کلاس GradeBook

16
شکل 3.2 | نمودار UML کلاس که نشان می دهد کلاس GradeBook عملیات عمومی(public) displayMessage را دارد .

17
نمودار UML کلاس
چهارگوشی با سه بخش
بخش بالایـی که شامل اسم کلاس می شود
بخش وسطی که شامل ویژگی های (رفتارهای) کلاس می شود
بخش پایینی که شامل عملیاتی که کلاس انجام می دهد ، می شود
(+) در جلوی عملیاتی که کلاس انجام می دهد، نشان دهنده عمومی (public)بودن آن عملیات است .
3.4 تعریف یک کلاس با استفاده از تابع عضو (ادامه)

18
3.5 تعریف یک تابع عضو با استفاده از پارامتر
پارامتر(های) تابع
اطلاعات مورد نیاز تابع برای انجام وظایفش
آرگومان(های) تابع
مقادیری که با فراخوانی یک تابع به جای هر یک از پارامترهای تابع ذخیره می شود
مقادیر آرگومان های تابع به جای پارامترهای تابع کپی می شوند

19
یک رشته (string)
نماینده رشته ای از حروف
شیئی از کتابخانه استانداردٍ کلاس :C++ std::string
<string> باید در header file تعریف شده باشد
تابع کتابخانه ای getline
برای گرفتن ورودی تا هنگام فشار دادن Enter
مثال
getline( cin, nameOfCourse );
دریافت خطی از ورودی استاندارد و وارد کردن آن به رشته nameOfCourse
3.5 تعریف یک تابع عضو با استفاده از پارامتر (ادامه)

20
Outline
fig03_03.cpp
(1 of 2)
قراردادن ( Include کردن) stringدر تعریف کلاس
پارامتر تابع عضو
استفاده از پارامتر یک تابع به عنوان یک متغیر

21
Outline
fig03_03.cpp
(2 of 2)
ارسال یک آرگومان به تابع عضو

22
لیست پارامترها
اطلاعات اضافی ای که مورد نیاز یک تابع است
قرار گرفته در پرانتزهایی که همراه با نام تابع است
تابع می تواند به هر تعداد پارامتر داشته باشد
پارامترها با کاما از هم جدا شده اند
تعداد، ترتیب، و نوع آرگومان ها در یک فراخوانی تابع باید با تعداد، ترتیب، و نوع پارامترها در لیست پارامترهای تابع فراخواننده شده نظیر باشد
مدل سازی در UML
نام پارامتر همراه با دو نقطه ” :“ و نوع آن در پرانتزهای تابع عضو می آید

3.5 تعریف یک تابع عضو با استفاده از پارامتر (ادامه)

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

24
تعریف دوباره پارامتر یک تابع به عنوان یک متغیر محلی در تابع یک خطای کامپایل محسوب می شود .
3.5 خطای رایج برنامه نویسی

25
3.1 یک عادت خوب برنامه نویسی
برای جلوگیری از ابهام ، از نام های یکسان برای آرگومان های ارسالی به یک تابع و پارامترهای متناظر در تعریف آن تابع استفاده نکنید .

26
3.2 یک عادت خوب برنامه نویسی
انتخاب نام های بامعنی برای توابع و پارامترها ، خوانایی برنامه را افزایش داده و از استفاده بیش از اندازه از توضیحات (comments) جلوگیری می کند .

27
شکل 3.4 | نمودار UML کلاس که نشان می دهد کلاس GradeBook عملیات عمومی(public) displayMessage را با پارامتر courseName از نوع String دارد .

28
3.6 عضوهای داده، توابع set و get
متغیرهای محلی
متغیرهای اعلام شده در بدنه یک تابع
قابل استفاده در بیرون بدنه تابع نیست
هنگامی که یک تابع به پایان می رسد
مقادیر متغیرهای محلی اش از بین خواهند رفت
ویژگی ها
در طول حیات یک شیء وجود دارند
جایگزین عضوهای داده ای شده اند
متغیرهای موجود در تعریف یک کلاس
هر شیء به وجود آمده از یک کلاس همواره کپی ویژگی های مخصوص به خود را حفظ می کند

29
Outline
fig03_05.cpp
(1 of 3)
تابع set که به داده های private مقداردهی میکند
تابع get که به داده های private دسترسی دارد

30
Outline
fig03_05.cpp
(2 of 3)
از توابع set و get استفاده کنید، حتی در داخل کلاس
دسترسی به داده های private خارج از تعریف کلاس
عضوهای private فقط برای توابع عضو کلاس قابل دسترسی هستند

31
Outline
fig03_05.cpp
(3 of 3)
مقداردهی به داده های private خارج از تعریف کلاس

32
3.3 یک عادت خوب برنامه نویسی
به منظور افزایش خوانایی برنامه ، بین تعریف توابع عضو یک خط خالی قرار دهید .

33
3.6 عضوهای داده، توابع set و get (ادامه)
سطح دسترسی private
یک عضو داده ای یا تابع عضو را ، فقط برای توابع عضو کلاس قابل دسترسی می سازد
private سطح دسترسی پیشفرض برای عضوهای کلاس است
پنهان سازی اطلاعات
برگرداندن یک مقدار از یک تابع
یک تابع که نوع برگشتی ای غیر از void را مشخص کند
مقداری را به تابع فرا خواننده خود باز می گرداند

34
3.1 نکته ای در مورد مهندسی نرم افزار
به عنوان یک اصل راهنما ، عضوهای داده ای باید private اعلام شوند و توابع عضو باید public اعلام شونــد. ( خواهیم دید که بهتر است تـوابــع عضــوی که قــرار است فقط در دستــرس دیگر توابع عضو کلاس قـرار گیـرنـد private اعلام شوند .)

35
3.6 خطای رایج برنامه نویسی
تلاش یک تابع، که عضو کلاس خاصی نیست (یا دوسـت آن کلاس خــاص هم نمی باشد – توابع دوست را در فصل 10 مطالعه خواهیم کرد-) برای دسترسی به عضوی از کلاس که private اعلام شده است ، خطای کامپایل است .

36
3.4 یک عادت خوب برنامه نویسی
با وجود اینکه سطوح دسترسی public و private می توانند چندین بار در کلاس تـکرار شوند و در میـان هم قــرار گیــرند ، ابتدا عــضـوهای public کلاس را در یک گروه لیست کنید و سپس تمــام عضوهـای private را در گروه دیگر . این کار باعث می شود توجه کاربر بیشتر بر روی رابط عمومی کلاس معطوف شود تا پیاده سازی کلاس .

37
3.5 یک عادت خوب برنامه نویسی
اگر شما در تعریف یک کلاس ابتدا لیست کردن عضوهای private را انتخاب کردید ، علیرغم اینــکه سطح دسـترسی به طور پیشفرض private درنظر گرفــته می شود، به طور صریح از تعیین کننده سطح دسترسی private استفاده کنید. این کار وضوح برنامه را افزایش می دهد .

38
3.2 نکته ای در مورد مهندسی نرم افزار
در فصل 10 ، کلاس ها : قسمت دوم ، خواهیم آموخت توابع و کلاس هایی را که یک کلاس به عنوان دوستانش (friends ) اعلام می کند ، می توانند به عضوهای private یک کلاس دسترسی داشته باشند .

39
3.1 نکته ای برای جلوگیری از خطا
private تعریف کردن عضوهای داده یک کلاس و public تعریف کردن توابع عضو کلاس ، اشکال زدایی برنامه را آسان می کند ، زیرا مشکلات مربوط به مدیریت داده تنها مربوط به توابع عضو یا توابع دوست کلاس می گردد .

40
3.7 خطای رایج برنامه نویسی
فراموشی در برگرداندن مقدار از تابعی که باید مقداری را بازگرداند ، یک خطای کامپایلری محسوب می شود .

41
3.6 عضوهای داده، توابع set و get (ادامه)
مهندسی نرم افزار توابع set و get
توابع عضو public که به کاربران یک کلاس اجازه set یا get مقادیر عضوهای داده ای private را می دهند
توابع set گاهی اوقات تغییر دهنده ( mutator ) نامیده می شوند ، نیز توابع get گاهی اوقات دست یابنده ( accessor ) نامیده می شوند
به کســی که کلاس را به وجــود آورده ، اجــازه کنـتـرل نحـوه دستـرسی کاربران یـک کـلاس را به داده های private می دهد
نیز باید توسط توابع عضو همان کلاس مورد استفاده قرار گیرد

42
3.6 یک عادت خوب برنامه نویسی
همیشه سعی کنید که با دسترسی و اداره عضوهای داده ای ای، به وسیله توابع set و get اثر تغییرات بر روی عضوهای داده ای یک کلاس را ، محلی کنید . تغییر نام یک عضو داده ای یا نوع داده استفاده شده برای ذخیره یک عـضو داده ای ، تنها توابع set و get متناظر را تحت تاثیر قرار می دهد و تاثیری بر فراخواننده های آن توابع ندارد .

43
3.3 نکته ای در مورد مهندسی نرم افزار
مهم است برنامه هایی بنویسیم که قابل فهم بوده و پشتیبانی و نگهداری از آنها ساده باشد . تغییر یک قاعده است . برنامه نویس ها باید پیش بینی کنند که کدهایشان ممکن است مورد اصلاح و تجدیدنظر قرار گیرد .

44
3.4 نکته ای در مورد مهندسی نرم افزار
لزومی نیست که طراح کلاس برای هر آیتم داده private ،توابع set یا get را تدارک ببیند ؛ این قابلیت ها باید در زمان مقتضی درنظر گرفته شوند. اگر یک سرویس برای کد مـیـزبان (مشتری) مفـیـد است ، آن سرویــس باید در رابـط public کلاس قرار گیرد .

45
3.6 عضوهای داده، توابع set و get (ادامه)
نمودار UML
نشان دادن نوع برگشتی از یک عملیات
بعد از پرانتزی که نام عملیات در آن قرار دارد ، یک کالنٍ (:) و سپس نام نوع برگشتی را قرار دهید
علامت ”-“ برای اشاره به عضوهای private به کار می رود

46
شکل 3.6 | نمودار UML کلاس برای کلاس GradeBook با ویژگی (صفت) محرمانهء (private )courseName و عملیات های عمومیٍ (public ) .setCourseName, getCourseName , displayMessage

47
3.7 مقداردهی اولیه به اشیاء با استفاده از سازنده ها
سازنده ها
توابعی که برای مقداردهی اولیه به اطلاعات شیء پس از به وجود آوردنشان استفاده می شود
فراخوانی صریحاٌ پس از اینکه شی به وجود آمد انجام می گیرد
باید با نام همان کلاس مشخص شود
نمی تواند مقدار بازگرداند
حتی void
سازنده پیش فرض پارامتری ندارد
کامپایلر در هنگامی که کلاس به طور صریح شامل سازنده نمی شود ، یک سازنده برای آن در نظر می گیرد
فقط سازنده های عضوهای داده ای که اشیاء کلاس هستند توسط سازنده پیش فرضٍ کامپایلر فراخوانی می شوند

48
Outline
fig03_07.cpp
(1 of 3)
سازنده نام همان کلاس را دارد و نوع دادهء برگشتی ندارد
مقدار دهی اولیه به عضو داده ای

49
Outline
fig03_07.cpp
(2 of 3)

50
Outline
fig03_07.cpp
(3 of 3)
به وجود آوردن اشیاء صریحاَ سازنده را فراخوانی می کند

51
3.2 نکته ای برای جلوگیری از خطا
حتی اگر مقداردهی اولیه به عضوهای داده ای لازم نبود (که در اکثر مواقع لازم نیست) ، یک سازنده در نظر بگیرید تا در هنگام به وجود آوردن هر یک از اشیاء کلاستان عضوهای داده ای کلاس با مقادیر با معنی مقداردهی اولیه شوند .

52
3.5 نکته ای در مورد مهندسی نرم افزار
عضوهای داده ای می توانند در یک سازنده کلاس مقدار دهی اولیه شوند یا اینکه بعداَ پس از اینکه شیء به وجود آمد مقداردهی شوند . گرچه برای مهندسی نرم افزار تمرین خوبی است که مطمئن شویم یک شی، قبل ازاینکه کد میزبان عضو داده ای ، شیء را احضار کند به طور کامل مقداردهی اولیه شده باشد . در حالت کلی ، شما نباید برای اطمینان از اینکه یک شیء به طور صحیح مقداردهی اولیه شده ، روی کد میزبان حساب کنید .

53
3.7 مقداردهی اولیه به اشیاء با استفاده از سازنده ها (ادامه)
سازنده ها در نمودار کلاس UML
در قسمت سوم و همراه با عملیات ها نشان داده می شود
برای متمایز کردن سازنده از عملیاتی که کلاس انجام می دهد
UML کلمهء سازنده “constructor” را قبل از نام آن سازنده داخل کتیشن قرار می دهد
<<constructor>>
معمولاَ قبل از عملیاتی که کلاس انجام می دهد ، نشان داده می شود

54
شکل 3.8 | نمودار UML کلاس که نشان می دهد کلاس GradeBook دارای یک سازنده با یک پارامتر name از نوع String در UML است .

55
3.8 قرار دادن یک کلاس در یک فایل جدا برای استفاده مجدد
فایل .cpp به عنوان یک فایل سورس کد (source-code file) شناخته می شود
سرفایل ها
فایل های مجزایی که تعریف کلاس ها در آنجا قرار می گیرد
به کامپایلر اجازهء شناخت کلاس ها را در هرجا که مورد استفاده قرار گیرند را می دهد
معمولاَ پسوند .h دارند
فایل های راه انداز
برنامه ای که برای تست نرم افزار (مانند کلاس ها) استفاده می شود
چون تابع main دارد پس قابل اجرا شدن است

56
Outline
fig03_09.cpp
(1 of 2)
تعریف کلاس در سرفایل قرار دارد

57
Outline
fig03_09.cpp
(2 of 2)

58
Outline
fig03_10.cpp
(1 of 1)
شامل کردن سرفایل باعث می شود که تعریف کلاس داخل فایل کپی شود

59
3.8 قرار دادن یک کلاس در یک فایل جدا برای استفاده مجدد (ادامه)
#includeراهنمای پیش پردازنده
برای شامل کردن سرفایل ها استفاده می شود
پیش پردازنده ، C++ را راهنمایی می کند که یک کپی لز فایل مربوطه ( محتوبات فایل ) را به همراه داشته باشد .
نشان دهنده سرفایل های تعریف شده توسط کاربر هستند
پیش پردازنده ابتدا کتابخانه در حال استفاده را جستجو می کند
اگر فایل پیدا نشد ، دایرکتوری کتابخانه استاندارد C++ را جستجو می کند
پرانتزهای زاویه دار (< >) نشان دهندهء کتابخانه استاندارد C++ است
پیش پردازنده فقط داخل دایرکتوری کتابخانه استاندارد C++ را جستجو می کند

60
3.8 قرار دادن یک کلاس در یک فایل جدا برای استفاده مجدد (ادامه)
به وجود آوردن اشیاء
کامپایلر باید اندازه شیء را بداند
اشیاء C++ معمولاَ فقط شامل عضوهای داده ای می شوند
کامپایلر یک کپی از عضوهای داده ای کلاس به وجود می آورد
این کپی درمیان همهء اشیاء کلاس به اشتراک گذاشته می شود

61
3.3 نکته ای برای جلوگیری از خطا
برای اطمینان از اینکه پیش پردازنده به درستی جای سرفایل ها را پیدا می کند ، باید نام سرفایل های تعریف شده از سوی کاربر را در میان علامت های نقل قول (مانند "GradeBook.h") و نام سرفایل های کتابخانه ای استاندارد C++ را در میان یک جفت <> قرارداد (مانند<iostream> ) .

62
3.9 جداکردن ظاهر از پیاده سازی
ظاهر (رابط)
شرح می دهد که کاربران یک کلاس از کدام سرویس های کلاس می توانند استفاده کنند و چگونه می توانند این سرویس ها را درخواست کنند
اما نشان نمی دهد که کلاس چگونه سرویس ها را انجام می دهد
تعریف کلاس که فقط نام توابع عضو ، انواع برگشتی و انواع پارامتر را لیست می کند
پیش نمونه توابع
ظاهر کلاس (سرویس های) توابع عضو public را شامل می شود
جداکردن ظاهر از پیاده سازی
اجرای کد میزبان، تا زمانی که ظاهر تغییر نکرده باشد اگر چه پیاده سازی تغییر کند ، نباید با شکست مواجه شود

63
3.9 جداکردن ظاهر از پیاده سازی (ادامه)
جداکردن ظاهر از پیاده سازی (ادامه)
توابع عضو را در بیرون از تعریف کلاس و در یک فایل سورس کد جدا تعریف کنید
در فایل سورس کد برای کلاس
برای وصل کردن هریک از توابع عضو به تعریف کلاس از عملگر ( :: ) استفاده کنید
جزئیات پیاده سازی مخفی هستند
کد میزبان نیازی به دانستن نحوه پیاده ساری ندارد
در سر فایل مورد نیاز برای یک کلاس
پیش نمونه های توابع رابط public کلاس را شرح می دهند

64
Outline
fig03_11.cpp
(1 of 1)
ظاهر (رابط) شامل عضوهای داده ای و پیش نمونهء تابع عضو می شود

65
3.8 خطای رایج برنامه نویسی
فراموش کردن سمیکالن در آخر پیش نمونه تابع ، خطای نحوی محسوب می شود.

66
3.7 یک عادت خوب برنامه نویسی
اگرچه ذکر نام پارامتر در پیش نمونه تابع اختیاری است (نام پارامترها توسط کامپایلر نادیده گرفته می شود) ، بسیاری از برنامه نویسان از این نام ها به منظور مستند سازی استفاده می کنند .

67
3.4 نکته ای برای جلوگیری از خطا
اگر نام پارامترها در یک پیش نمونه تابع (نام پارامترها توسط کامپایلر نادیده گرفته می شود) اشتباه یا گیج کننده باشد، می تواند باعث گمراهی شود . به همین دلیل ، بسیاری از برنامه نویسان با قرار دادن کپی ای از اولین خط تعریف تابع متناظر (اگر سورس کد تابع در دسترس بود) در مکان پیش نمونه تابع و گذاشتن سمیکالن در انتهای آن پیش نمونه تابع را تعریف می کنند .

68
3.9 خطای رایج برنامه نویسی
هنگام تعریف توابع عضو یک کلاس در بیرون آن کلاس ، از قلم انداختن نام کلاس و عملگر (::) قبل از نام تابع ، خطای کامپایل محسوب می شود .

69
Outline
fig03_12.cpp
(1 of 2)
عملگر ( :: ) که تابع را به کلاسش وصل می کند
شامل کردن سرفایل برای دسترسی به نام کلاسٍ GradeBook
پیاده سازی GradeBook در یک فایل سورس کد جدا قرار داده شده

70
Outline
fig03_12.cpp
(2 of 2)

71
Outline
fig03_13.cpp
(1 of 1)

72
3.9 جداکردن ظاهر از پیاده سازی (ادامه)
فرایند کامپایل و ارتباط دهی
فایل سورس کد برای به وجود آوردن کد شیء کلاس کامپایل می شود (فایل سورس کد باید در سرفایل #include شود)
برنامه نویسِ یک کلاس فقط باید سرفایل و کد شیء را در اختیار میزبان قرار دهد
میزبان باید سرفایل را در کدش #include کند
با این کار، کامپایلر می تواند از اینکه تابع main اشیاء کلاس را به درستی ایجاد و مدیریت می کند اطمینان یابد
برای ساختن برنامه های قابل اجرا
کد شیء برای میزبان باید با کد شیء برای کلاس و کد شیء برای هر شیء کتابخانه استاندارد C++ که در برنامه به کار رفته ، ارتباط دهی (لینک) شده باشد

73
شکل 3.14 | فرایند کامپایل کردن و ارتباط دهی (لینک) که به تولید برنامهء قابل اجرا ختم می شود

74
3.10 معتبر سازی اطلاعات با استفاده از توابع set
توابع set می توانند داده ها را معتبر سازی کنند
معروف به بررسی اعتبار
شیء را در وضعیتی مستحکم و پایدار نگه می دارد
عضو داده ایی که ارزش معتبر دارد
می تواند مقادیری بازگرداند که نشان دهنده صورت گرفتن تلاش هایی مبنی بر اختصاص دادن مقادیر نامعتبر بوده ( یعنی در بازه مورد نظر قرار نداشته است ) .
توابع عضو رشته (string )
length تعداد کاراکترهای یک رشته را بازمی گرداند
Substr یک زیر رشته مشخص را از درون رشته بازمی گرداند

75
Outline
fig03_15.cpp
(1 of 1)

76
Outline
fig03_16.cpp
(1 of 2)
توابع set عمل اعتبارسنجی را برای نگاه داری courseName در وضعیتی پایدار انجام می دهند
سازنده تابع set را برای انجام اعتبارسنجی فراخوانی می کند

77
Outline
fig03_16.cpp
(2 of 2)

78
Outline
fig03_17.cpp
(1 of 2)
سازنده تابع set را برای انجام اعتبارسنجی فراخوانی خواهد کرد

79
Outline
fig03_17.cpp
(2 of 2)
فراخوانی تابع set برای انجام اعتبارسنجی

80
3.6 نکته ای در مورد مهندسی نرم افزار
private کردن عضوهای داده ای و کنترل کردن دسترسی به آنها ، مخصوصاَ دسترسی توابع عضو public به آنها ، برا ی نوشتن اطلاعات درایـن عضوهای داده ای ، به اطمینان از جامعیت و صحت داده کمک می کند .

81
3.5 نکته ای برای جلوگیری از خطا
مزایای جامعیت داده خود به خود به دست نمی آید زیرا عضوهای داده ای private هستند . برنامه نویس باید امکان گزارش خطا و اعتبارسنجی مناسب را تدارک ببیند .

82
3.7 نکته ای در مورد مهندسی نرم افزار
توابع عضوی که کار set کردن مقادیر private را انجام می دهند ، باید مناسب بودن اعتبار مقادیر جدید را بررسی کنند ؛ اگر مناسب نبودند ، توابع set باید عضوهای داده ای private را در وضعیت مناسب قرار دهند .

83
3.11 (اختیاری) مطالعهء موردی در مهندسی نرم افزار : شناساندن کلاس ها در ATM (سند نیازمندی ها)
شناساندن کلاس در یک سیستم
اسامی کلیدی و عبارات اسمی در سند نیازمندی ها
بعضی از آنها ویژگی های دیگر کلاس ها هستند
بعضی با بخش هایی از سیستم تطابق ندارند
بعضی کلاس هستند
که باید با نمودار UML کلاس نشان داده شوند

84
شکل 3.18 | اسامی و عبارات اسمی در سند نیازمندی ها

85
3.11 (اختیاری) مطالعهء موردی در مهندسی نرم افزار : شناساندن کلاس ها در ATM (سند نیازمندی ها) (ادامه)
مدل سازی کلاس با نمودارهای UML
قسمت بالایی نام کلاس را در خود جای می دهد
قسمت وسطی شامل ویژگی ها (صفات) کلاس می شود
قسمت پایینی لیست عملیاتی است که کلاس انجام می دهد
یک نمودار بی اثر
بعضی از ویژگی ها و عملیات کلاس را برای خوانایی بیشتر حذف می کند
یک پیوند
توسط یک خط توپر و ساده که دو کلاس را به هم وصل می کند نمایش داده می شود
این پیوند می تواند نام گذاری شود
اعداد آخر هر خط مقادیر تعدد هستند
اسم رٌل( Role ) که وظیفهء هر شیء را در اتحاد نشان می دهد

86
شکل 3.19 | نمایش کلاس در UML با استفاده از نمودار کلاس

87
شکل 3.20 | نمودار کلاس که پیوند میان کلاس ها را نشان می دهد

88
شکل 3.21 | انواع تعدد

89
3.11 (اختیاری) مطالعهء موردی در مهندسی نرم افزار : شناساندن کلاس ها در ATM (سند نیازمندی ها) (ادامه)
رابطهء ترکیب
با لوزی های توپری که به خطوط پیوند متصلند، نمایش داده می شوند
خواص ترکیب
فقط یک کلاس می تواند کُل را نشان دهد
بخش ها زمانی وجود دارند که کُل وجود دارد ، کُل می تواند بخشهایی را به وجود آورده یا از بین ببرد
یک بخش در یک زمان فقط می تواند به یک کُل تعلق داشته باشد
لوزی های محو تجمع را نشان می دهند
ضعیف تر از ترکیب
انواع تجمع
یک به یک
یک به چند
چند به یک

90
شکل 3.22 | نمودار کلاس که روابط ترکیب را نشان می دهد

91
شکل 3.23 | نمودار کلاس برای مدل سیستم ATM

92
شکل 3.24 | نمودار کلاس که روابط ترکیب را برای کلاس ماشین نشان می دهد

93
شکل 3.25 | نمودار کلاس برای مدل سیستم ATM شامل ته ماندهء کلاس


تعداد صفحات : 93 | فرمت فایل : .ppt

بلافاصله بعد از پرداخت لینک دانلود فعال می شود