PDF 9

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 37

‫‪www.Booknama.

com‬‬

‫فصل ًْن‬

‫كالسّا‪ً :‬گاّي عويقتر‪ :‬ترش ‪I‬‬

‫اّساف‬

‫ًحَُ استفازُ از يك پَشاًٌسُ پيشپرزازًسُ تراي اجتٌاب از ذطاّاي آشكار كِ تا كپي‬ ‫‪‬‬
‫كرزى تيش از يكثار فايل سرآيٌس زر فايل كس هٌثع تَجَز هيآيٌس‪.‬‬
‫آشٌايي تا هفَْم قلورٍ كالس ٍ زسترسي تِ اعضاء كالس از طريق ًام يك شي‪ ،‬هراجعِ‬ ‫‪‬‬
‫تِ يك شي يا اشارُگر تِ يك شي‪.‬‬
‫تعريف سازًسُّا تا آرگَهاىّاي پيشفرض‪.‬‬ ‫‪‬‬
‫ًحَُ استفازُ از سازًسُّا تراي اًجام عوليات «ذاتوِ كار» تر رٍي يك شي قثل از‬ ‫‪‬‬
‫ًاتَز شسى ٍ از تيي رفتي آى‪.‬‬
‫زهاى فراذَاًي سازًسُّا ٍ ًاتَز كٌٌسُّا ٍ ترتية فراذَاًي آًْا‪.‬‬ ‫‪‬‬
‫ذطاّاي هٌطقي كِ تِ ٌّگام ترگشت زازى يك هراجعِ تِ زازُ ‪ private‬تَسط يك‬ ‫‪‬‬
‫تاتع عضَ ‪ public‬رخ هيزٌّس‪.‬‬
‫اًتصاب عضَّاي زازُ يك شي تِ عضَّاي يك شي زيگر تا ترصيص ‪.Memberwise‬‬ ‫‪‬‬

‫‪www.yourshop.4kia.ir‬‬
‫‪www.Booknama.com‬‬

‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬ ‫______________‬ ‫‪ 652‬‬


‫فصل نهم‬

‫رئَس هطالة‬
‫هقسهِ‬ ‫‪9-1‬‬
‫هثحج آهَزشي‪:‬كالس ‪Time‬‬ ‫‪9-2‬‬
‫قلورٍ كالس ٍ زسترسي تِ اعضاء كالس‬ ‫‪9-3‬‬
‫جساسازي ٍاسط از پيازُسازي‬ ‫‪9-4‬‬
‫تَاتع زسترسي ٍ تَاتع يَتيليتي‬ ‫‪9-5‬‬
‫هثحج آهَزشي كالس ‪ :Time‬سازًسُّا ّوراُ تا آرگَهاىّاي پيشفرض‬ ‫‪9-6‬‬
‫ًاتَزكٌٌسُّا‬ ‫‪9-7‬‬
‫زهاى فراذَاًي سازًسُّا ٍ ًاتَزكٌٌسُّا‬ ‫‪9-8‬‬
‫هثحج آهَزشي كالس ‪ :Time‬ترگشت زازى يك هراجعِ تِ زازُ عضَ ‪private‬‬ ‫‪9-9‬‬
‫ترصيص ‪Memberwise‬‬ ‫‪9-11‬‬
‫استفازُ هجسز از ًرمافسار‬ ‫‪9-11‬‬
‫هثحج آهَزشي هٌْسسي ًرمافسار‪ :‬شرٍع ترًاهًَِيسي كالسّاي سيستن ‪ATM‬‬ ‫‪9-12‬‬
‫‪ 9-1‬هقسهِ‬
‫زض فػُ‪ٞ‬بي لجّي‪ ،‬ث‪ٔ ٝ‬قطفي ثطذي اظ ٔفب‪ٞ‬يٓ دبي‪ ٝ‬زض ثط٘بٔ‪ٛ٘ٝ‬يسي ضيٌطا زض ‪ C++‬دطزاذشيٓ‪ٕٞ .‬چ‪ٙ‬يٗ زض‬
‫اضسجبط ثب ض‪ٚ‬ش ‪ ٚ‬اسّ‪ٛ‬ة س‪ٛ‬سق‪ ٚ ٝ‬ايؼبز ثط٘بٔ‪ٞٝ‬بيٕبٖ غحجز وطزيٓ‪ :‬غفبر ‪ ٚ‬ضفشبض ٔمشضي ثطاي ‪ٞ‬ط‬
‫والس ضا ا٘شربة ٔيو‪ٙ‬يٓ ‪ ٚ‬ث‪ ٝ‬يه ض‪ٚ‬ش ٔقيٗ ٔطرع ٔيسبظيٓ و‪ ٝ‬وساْ ضي‪ٞ‬ب اظ والس‪ٞ‬بيٕبٖ ثب‬
‫ضي‪ٞ‬بي ٔ‪ٛ‬ػ‪ٛ‬ز زض وشبثرب٘‪ ٝ‬والس‪ٞ‬بي اسشب٘ساضز ‪ C++‬ثطاي ثطآ‪ٚ‬ضز‪ ٜ‬وطزٖ ‪ٞ‬ط ‪ٞ‬سف ثط٘بٔ‪ٔ ٝ‬يس‪ٛ‬ا٘‪ٙ‬س‬
‫‪ٕٞ‬ىبضي و‪ٙٙ‬س‪.‬‬
‫زض ايٗ فػُ‪ٍ٘ ،‬ب‪ٞ‬ي فٕيكسط ث‪ ٝ‬والس‪ٞ‬ب ذ‪ٛ‬ا‪ٞ‬يٓ زاضز‪ .‬اظ والس يىذبضچ‪ Time ٝ‬ثق‪ٛٙ‬اٖ يه ٔجحض‬
‫آٔ‪ٛ‬ظضي زض ايٗ فػُ (س‪ٔ ٝ‬ظبَ) ‪ ٚ‬فػُ ز‪( ٓٞ‬ز‪ٔ ٚ‬ظبَ) اسشفبز‪ ٜ‬وطز‪ٜ‬ايٓ سب ث‪ ٝ‬ثيبٖ ض‪ٚ‬ش‪ٞ‬بي ايؼبز والس‬
‫ثذطزاظيٓ‪ .‬وبض ضا ثب يه والس ‪ Time‬ضط‪ٚ‬ؿ ٔيو‪ٙ‬يٓ و‪ٍ٘ ٝ‬ب‪ٞ‬ي ٔؼسز ثط چ‪ٙ‬سيٗ ‪ٚ‬يژٌي فطض‪ ٝ‬ضس‪ ٜ‬زض‬
‫‪C++‬‬ ‫فػُ ‪ٞ‬بي لجّي زاضش‪ ٝ‬ثبضيٓ‪ٕٞ .‬چ‪ٙ‬يٗ ايٗ ٔظبَ ث‪ ٝ‬س‪ٛ‬غيف يه ٔف‪ ْٟٛ‬اسبسي زض ٔ‪ٟٙ‬سسي ٘طْافعاض‬
‫يق‪ٙ‬ي «د‪ٛ‬ضب٘‪ٙ‬س‪ ٜ‬ديص دطزاظ٘س‪ »ٜ‬زض اضسجبط ثب فبيّ‪ٟ‬بي سطآي‪ٙ‬س ٔيدطزاظز سب اظ لطاض ٌطفشٗ ثيص اظ يىجبض وس‬
‫سطآي‪ٙ‬س زض ‪ٕٞ‬بٖ فبيُ وس ٔ‪ٙ‬جـ ػّ‪ٌٛ‬يطي ض‪ٛ‬ز‪ .‬ظٔب٘يى‪ ٝ‬يه والس ثش‪ٛ‬ا٘س فمظ يىجبض سقطيف ض‪ٛ‬ز‪ ،‬اسشفبز‪ٜ‬‬
‫اظ چ‪ٙ‬يٗ زسش‪ٛ‬ضز‪ٙٞ‬س‪ٜٞ‬بي ديصدطزاظ٘س‪ ٜ‬اظ ‪ٚ‬ل‪ٛ‬ؿ ذغب‪ٞ‬بي آضىبض ٔشقسز ػّ‪ٌٛ‬يطي ٔيو‪ٙ‬س‪.‬‬
‫سذس زض اضسجبط ثب لّٕط‪ ٚ‬والس ‪ ٚ‬ضاثغ‪ٛٔ ٝ‬ػ‪ٛ‬ز ٔبثيٗ افضبي والس غحجز ذ‪ٛ‬ا‪ٞ‬يٓ وطز‪ٕٞ .‬چ‪ٙ‬يٗ ث‪ٝ‬‬
‫س‪ٛ‬ضيح اي‪ٙ‬ى‪ ٝ‬چٍ‪ ٝ٘ٛ‬وس سط‪ٚ‬يسٌيط٘س‪ٔ ٜ‬يس‪ٛ‬ا٘س ث‪ ٝ‬افضبي ‪ public‬والس اظ عطيك س‪ٛ٘ ٝ‬ؿ «زسشٍيط‪»ٜ‬‬
‫(٘بْ ضي‪ٔ ،‬طاػق‪ ٝ‬ث‪ ٝ‬ضي يب اضبض‪ٌٜ‬ط ث‪ ٝ‬ضي) زسشطسي ديسا و‪ٙ‬س‪ ،‬ذ‪ٛ‬ا‪ٞ‬يٓ دطزاذز‪ٕٞ .‬ب٘غ‪ٛ‬ضي و‪ ٝ‬ذ‪ٛ‬ا‪ٞ‬يس‬

‫‪www.yourshop.4kia.ir‬‬
‫‪www.Booknama.com‬‬

‫________________ فصل نهم‪652‬‬ ‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬

‫زيس‪ ،‬اسبٔي ضي ‪ٔ ٚ‬طاػق‪ٞٝ‬ب ٔيس‪ٛ‬ا٘‪ٙ‬س ث‪ٕٞ ٝ‬طا‪ ٜ‬فٍّٕط ا٘شربة فض‪ ).( ٛ‬زض زسشطسي ث‪ ٝ‬افضبي ‪ٚ public‬‬
‫اضبض‪ٌٜ‬ط‪ٞ‬ب ٔيس‪ٛ‬ا٘‪ٙ‬س ثب فٍّٕط ا٘شربة فض‪ )->( ٛ‬ثىبض ٌطفش‪ ٝ‬ض‪٘ٛ‬س‪ .‬زض ٔ‪ٛ‬ضز س‪ٛ‬اثـ زسشطسي و‪ٔ ٝ‬يس‪ٛ‬ا٘‪ٙ‬س‬
‫ٔجبزضر ث‪ ٝ‬ذ‪ٛ‬ا٘سٖ يب ٕ٘بيص زاز‪ ٜ‬اظ يه ضي ٕ٘بي‪ٙ‬س غحجز ذ‪ٛ‬ا‪ٞ‬يٓ وطز‪ .‬يىي اظ ض‪ٚ‬ش‪ٞ‬بي ضايغ زض‬
‫اسشفبز‪ ٜ‬اظ س‪ٛ‬اثـ زسشطسي ثطضسي ضطط‪ٞ‬ب ث‪ِ ٝ‬حبػ ثطلطاض يب ثطلطاض ٘ج‪ٛ‬زٖ (زضسز ‪ ٚ‬غّظ) اسز‪ٕٞ ،‬ب٘‪ٙ‬س‬
‫س‪ٛ‬اثقي و‪ ٝ‬ثق‪ٛٙ‬اٖ س‪ٛ‬اثـ ذجط‪ ٜ‬ض‪ٙ‬بذش‪ٔ ٝ‬ي ض‪٘ٛ‬س‪ٕٞ .‬چ‪ٙ‬يٗ ث‪ ٝ‬ثطضسي ٔف‪٘ ٚ ْٟٛ‬ؾطي‪ ٝ‬يه سبثـ ي‪ٛ‬سيّيشي (و‪ ٝ‬سبثـ‬
‫وٕىي ‪٘ ٓٞ‬بٔيس‪ٔ ٜ‬يض‪ٛ‬ز) ٔيدطزاظيٓ و‪ ٝ‬يه سبثـ فض‪ private ٛ‬اسز و‪ ٝ‬اظ فّٕيبر س‪ٛ‬اثـ فض‪ ٛ‬والس‬
‫‪ public‬دطشيجب٘ي ٔيو‪ٙ‬س‪ ،‬أب ٘بٔعز اسشفبز‪ ٜ‬س‪ٛ‬سظ سط‪ٚ‬يسٌيط٘س‪ٜٞ‬بي والس ٘يسز‪.‬‬
‫زض ز‪ٔٚ‬يٗ ٔظبَ اظ والس ‪ ،Time‬ث‪ ٝ‬ثطضسي ٘ح‪ ٜٛ‬اضسبَ آضٌ‪ٔٛ‬بٖ‪ٞ‬ب ث‪ ٝ‬سبظ٘س‪ٜٞ‬ب ‪ٕ٘ ٚ‬بيص ٘ح‪ ٜٛ‬اسشفبز‪ ٜ‬اظ‬
‫آضٌ‪ٔٛ‬بٖ ديصفطؼ زض يه سبظ٘س‪ٔ ٜ‬يدطزاظيٓ و‪ ٝ‬ث‪ ٝ‬وس سط‪ٚ‬يسٌيط٘س‪ ٜ‬أىبٖ ٔمساضز‪ٞ‬ي ا‪ِٚ‬ي‪ ٝ‬ضي‪ٞ‬بي‬
‫يه والس ضا ثب اسشفبز‪ ٜ‬اظ آضٌ‪ٔٛ‬بٖ‪ٞ‬بي ٌ‪٘ٛ‬بٌ‪ ٖٛ‬ضا ٔيز‪ٙٞ‬س‪ .‬سذس زض ٔ‪ٛ‬ضز يه سبثـ فض‪ ٛ‬ذبظ ث‪ٙ‬بْ‬
‫سبظ٘س‪ ٜ‬غحجز ٔيو‪ٙ‬يٓ و‪ ٝ‬ثرطي اظ ‪ٞ‬ط والس ث‪ٛ‬ز‪ ٚ ٜ‬ثطاي ا٘ؼبْ «ذبسٕ‪ ٝ‬وبض» ثط ض‪ٚ‬ي يه ضي لجُ اظ‬
‫اي‪ٙ‬ى‪ ٝ‬آٖ ضي ٘بث‪ٛ‬ز ض‪ٛ‬ز ثىبض ٌطفش‪ٔ ٝ‬يض‪ٛ‬ز‪ .‬سذس ث‪ ٝ‬ثطضسي سطسيت فطاذ‪ٛ‬ا٘ي سبظ٘س‪ٜٞ‬ب ‪٘ ٚ‬بث‪ٛ‬زو‪ٙٙ‬س‪ٜٞ‬ب‬
‫ٔيدطزاظيٓ‪ ،‬چطا و‪ ٝ‬فّٕىطز غحيح ثط٘بٔ‪ ٝ‬ثسشٍي ث‪ٔ ٝ‬مساضز‪ٞ‬ي زضسز ضي‪ٞ‬بي زاضز و‪ٛٙٞ ٝ‬ظ ٘بث‪ٛ‬ز‬
‫٘طس‪ٜ‬ا٘س‪ .‬آذطيٗ ٔظبِي و‪ ٝ‬زض ثحض آٔ‪ٛ‬ظضي والس ‪ Time‬زض ايٗ فػُ ٔغطح ضس‪ ،ٜ‬ث‪ ٝ‬ثطضسي ذغطاسي‬
‫ٔيدطزاظز و‪ ٝ‬اظ ضقف ثط٘بٔ‪ٛ٘ٝ‬يسي حبغُ ٔيض‪٘ٛ‬س و‪ ٝ‬زض ايٗ ٔ‪ٛ‬ضز يه سبثـ فض‪ ٛ‬يه ٔطاػق‪ ٝ‬ث‪ ٝ‬زاز‪ٜ‬‬
‫‪ private‬ثطٌطز ٔيز‪ٞ‬س‪ٕٞ .‬چ‪ٙ‬يٗ س‪ٛ‬ضيح ذ‪ٛ‬ا‪ٞ‬يٓ زاز و‪ ٝ‬چٍ‪ ٝ٘ٛ‬اي‪ٙ‬ىبض ٔيس‪ٛ‬ا٘س سجت اظ ‪ٌٓٞ‬سيرشٍي‬
‫وذس‪ َٛ‬والس ضس‪ ٚ ٜ‬ث‪ ٝ‬وس سط‪ٚ‬يسٌيط٘س‪ ٜ‬اػبظ‪ ٜ‬ز‪ٞ‬س سب ثغ‪ٛ‬ض ٔسشميٓ ث‪ ٝ‬زاز‪ ٜ‬ضي زسشطسي ديسا و‪ٙ‬س‪ .‬ايٗ‬
‫ٔظبَ ٘طبٖ ٔيز‪ٞ‬س و‪ ٝ‬ضي‪ٞ‬بي اظ يه والس ٔيس‪ٛ‬ا٘‪ٙ‬س ثب اسشفبز‪ ٜ‬اظ سرػيع ‪ memberwise‬ث‪ ٝ‬زيٍطي‬
‫سرػ يع زاز‪ ٜ‬ض‪٘ٛ‬س‪ ،‬و‪ ٝ‬زض آٖ افضبي زاز‪ ٜ‬زض ضي لطاض ٌطفش‪ ٝ‬زض سٕز ضاسز فٍّٕط سرػيع ث‪ٝ‬‬
‫افضبي زاز‪ٔ ٜ‬ش‪ٙ‬بؽط لطاض ٌطفش‪ ٝ‬زض سٕز چخ فٍّٕط سرػيع‪ ،‬ا٘شسبة زاز‪ٔ ٜ‬يض‪٘ٛ‬س‪ٕٞ .‬چ‪ٙ‬يٗ ايٗ فػُ‬
‫حب‪ٚ‬ي ثحظي زض اضسجبط ثب اسشفبز‪ٔ ٜ‬ؼسز اظ ٘طْافعاض اسز‪.‬‬
‫‪ 9-2‬هثحج آهَزشي‪ :‬كالس ‪Time‬‬
‫زض ا‪ِٚ‬يٗ ٔظبَ (ضىُ‪ٞ‬بي ‪ 9-3‬اِي ‪ٔ )9-1‬جبزضر ث‪ ٝ‬ايؼبز والس ‪ ٚ Time‬يه ثط٘بٔ‪ ٝ‬ضا‪ٜ‬ا٘ساظ ثطاي سسز‬
‫والس ٔيو‪ٙ‬يٓ‪ .‬سب ثسيٗ ٔطحّ‪ ٝ‬اظ وشبة چ‪ٙ‬سيٗ والس ايؼبز وطز‪ٜ‬ايٓ‪ .‬زض ايٗ ثرص‪ٍ٘ ،‬ب‪ٞ‬ي ثط ٔفب‪ٞ‬يٓ‬
‫‪C++‬‬ ‫فطض‪ ٝ‬ضس‪ ٜ‬زض فػُ س‪ ٚ ْٛ‬ثيبٖ ا‪ٕٞ‬يز اسشفبز‪ ٜ‬اظ «د‪ٛ‬ضب٘‪ٙ‬س‪ ٜ‬ديصدطزاظ٘س‪ »ٜ‬زض ٔ‪ٟٙ‬سسي ٘طْافعاض‬
‫ذ‪ٛ‬ا‪ٞ‬يٓ زاضز‪ .‬ظٔب٘يى‪ ٝ‬والسي ثش‪ٛ‬ا٘س فمظ يىجبض سقطيف ض‪ٛ‬ز‪ ،‬اسشفبز‪ ٜ‬اظ چ‪ٙ‬يٗ زسش‪ٛ‬ضز‪ٙٞ‬س‪ٜٞ‬بي‬
‫ديصدطزاظ٘س‪ ٜ‬اظ ‪ٚ‬ل‪ٛ‬ؿ ذغب‪ٞ‬بي آضىبض ٔضبفف ػّ‪ٌٛ‬يطي ذ‪ٛ‬ا‪ٞ‬س وطز‪.‬‬
‫‪1‬‬ ‫‪// Fig. 9.1: Time.h‬‬
‫‪2‬‬ ‫‪// Declaration of class Time.‬‬

‫‪www.yourshop.4kia.ir‬‬
‫‪www.Booknama.com‬‬

‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬ ‫______________‬ ‫‪ 652‬‬


‫فصل نهم‬

‫‪3‬‬ ‫‪// Member functions are defined in Time.cpp‬‬


‫‪4‬‬
‫‪5‬‬ ‫‪// prevent multiple inclusions of header file‬‬
‫‪6‬‬ ‫‪#ifndef TIME_H‬‬
‫‪7‬‬ ‫‪#define TIME_H‬‬
‫‪8‬‬
‫‪9‬‬ ‫‪// Time class definition‬‬
‫‪10‬‬ ‫‪class Time‬‬
‫‪11‬‬ ‫{‬
‫‪12‬‬ ‫‪public:‬‬
‫‪13‬‬ ‫‪Time(); // constructor‬‬
‫‪14‬‬ ‫‪void setTime( int, int, int ); // set hour, minute and second‬‬
‫‪15‬‬ ‫‪void printUniversal(); // print time in universal-time format‬‬
‫‪16‬‬ ‫‪void printStandard(); // print time in standard-time format‬‬
‫‪17‬‬ ‫‪private:‬‬
‫‪18‬‬ ‫)‪int hour; // 0 - 23 (24-hour clock format‬‬
‫‪19‬‬ ‫‪int minute; // 0 - 59‬‬
‫‪20‬‬ ‫‪int second; // 0 - 59‬‬
‫‪21‬‬ ‫‪}; // end class Time‬‬
‫‪22‬‬
‫‪23‬‬ ‫‪#endif‬‬
‫شكل ‪ | 9-1‬تعريف كالس ‪.Time‬‬
‫تعريف كالس ‪Time‬‬
‫سقطيف والس (ضىُ ‪ )9-1‬حب‪ٚ‬ي ٕ٘‪ ٝ٘ٛ‬ا‪ِٚ‬ي‪( ٝ‬ذغ‪ٛ‬ط ‪ )13-16‬ثطاي س‪ٛ‬اثـ فض‪،setTime ،Time ٛ‬‬
‫)‪(private‬‬ ‫‪ printStandard ٚ printUniversal‬اسز‪ٕٞ .‬چ‪ٙ‬يٗ والس ضبُٔ افضبي غحيح ذػ‪ٛ‬غي‬
‫ث‪ٙ‬بْ‪ٞ‬بي ‪ second ٚ minute ،hour‬زض ذغ‪ٛ‬ط ‪ٔ 18-20‬يثبضس‪ .‬افضبي زاز‪ ٜ‬ذػ‪ٛ‬غي ‪ٔ Time‬يس‪ٛ‬ا٘‪ٙ‬س‬
‫فمظ اظ عطيك چ‪ٟ‬بض سبثـ فض‪ ٛ‬ذ‪ٛ‬ز زض زسشطس لطاض ٌيط٘س‪ .‬زض فػُ ‪ 11‬ث‪ٔ ٝ‬قطفي س‪ٔٛ‬يٗ سػطيح و‪ٙٙ‬س‪ٜ‬‬
‫زسشطسي ث‪ٙ‬بْ ‪ protected‬ذ‪ٛ‬ا‪ٞ‬يٓ دطزاذز‪ ،‬ظٔب٘يى‪ ٝ‬ث‪ ٝ‬ثطضسي س‪ٛ‬اضص ‪٘ ٚ‬مص آٖ زض ثط٘بٔ‪ٛ٘ٝ‬يسي ضيٌطا‬
‫دطزاذشيٓ‪.‬‬
‫ترًاهًَِيسي ايسُال‬
‫ثطاي افعايص ذ‪ٛ‬ا٘بيي ‪ٚ ٚ‬ض‪ٛ‬ح ثط٘بٔ‪ ،ٝ‬اظ ‪ٞ‬ط سػطيح و‪ٙٙ‬س‪ ٜ‬زسشطسي فمظ يىجبض زض ‪ ٕٝٞ‬سقطيف والس‬
‫اسشفبز‪ ٜ‬و‪ٙ‬يس‪ .‬اثشسا افضبي ‪ public‬ضا لطاض ز‪ٞ‬يس‪ ،‬و‪ ٝ‬ديسا وطزٖ آ٘‪ٟ‬ب آسبٖ ثبضس‪.‬‬
‫هٌْسسي ًرمافسار‬
‫‪ٞ‬ط ف‪ٙ‬ػط اظ والس ثبيس زض زيس ‪ private‬لطاض زاضش‪ ٝ‬ثبضس‪ٍٔ ،‬ط اي‪ٙ‬ى‪ٔ ٝ‬سّٓ ٌطزز آٖ ف‪ٙ‬ػط ٘يبظ ث‪ٔ ٝ‬يسا٘ي‬
‫ثب زيس ‪ public‬زاضز‪.‬‬
‫‪23‬‬ ‫زض ثط٘بٔ‪ ٝ‬ضىُ ‪ 9-1‬س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬يس و‪ ٝ‬سقطيف والس زض د‪ٛ‬ضب٘‪ٙ‬س‪ ٜ‬ديصدطزاظ٘س‪ ٜ‬احبع‪ ٝ‬ضس‪ ٜ‬اسز (ذغ‪ٛ‬ط‬
‫‪:), 57‬‬
‫‪// prevent multiple inclusions of header file‬‬
‫‪# ifndef TIME_H‬‬
‫‪# define TIME_H‬‬
‫…‬
‫‪# endif‬‬
‫ظٔب٘يى‪ ٝ‬ثط٘بٔ‪ٞٝ‬بي ثعضٌشط ايؼبز ٔيو‪ٙ‬يٓ‪ ،‬سقبضيف ‪ ٚ‬افالٖ‪ٞ‬بي زيٍط ‪ ٓٞ‬زض فبيّ‪ٟ‬بي سطآي‪ٙ‬س ػبي زاز‪ٜ‬‬
‫‪"if not‬‬ ‫ذ‪ٛ‬ا‪ٙٞ‬س ضس‪ .‬د‪ٛ‬ضب٘‪ٙ‬س‪ ٜ‬ديصدطزاظ٘س‪ ٜ‬ف‪ٛ‬ق سجت ٔيض‪ٛ‬ز سب اظ سىطاض وس ٔبثيٗ ‪( #ifndef‬ث‪ٔ ٝ‬ق‪ٙ‬ي‬

‫‪www.yourshop.4kia.ir‬‬
‫‪www.Booknama.com‬‬

‫________________ فصل نهم‪652‬‬ ‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬

‫"‪ #endif ٚ )defined‬اػش‪ٙ‬بة ض‪ٛ‬ز اٌط ضبُٔ ٘بْ ‪ TIME_H‬ث‪ٛ‬ز‪ ٚ ٜ‬سقطيف ضس‪ ٜ‬ثبضس‪ .‬اٌط سطآي‪ٙ‬س لجالً زض‬
‫فبيّي ثىبض ٌطفش‪٘ ٝ‬طس‪ ٜ‬ثبضس‪٘ ،‬بْ ‪ TIME_H‬س‪ٛ‬سظ زسش‪ٛ‬ض ز‪ٙٞ‬س‪ #define ٜ‬سقطيف ضس‪ ٚ ٜ‬فبيُ سطآي‪ٙ‬س ثىبض‬
‫ٌطفش‪ ٝ‬ذ‪ٛ‬ا‪ٞ‬س ضس‪ .‬اٌط سطآي‪ٙ‬س لجالً اسشفبز‪ ٜ‬ضس‪ ٜ‬ثبضس ‪ TIME_H‬سقطيف ضس‪ ٚ ٜ‬فبيُ سطآي‪ٙ‬س ٔؼسزاً زض‬
‫ثط٘بٔ‪ٚ ٝ‬اضز ٘ر‪ٛ‬ا‪ٞ‬س ضس‪.‬‬
‫اجتٌاب از ذطا‬
‫اظ زسش‪ٛ‬ضز‪ٙٞ‬س‪ٜٞ‬بي ديصدطزاظ٘س‪ #endif ٚ #define ،#ifndef ٜ‬ثق‪ٛٙ‬اٖ د‪ٛ‬ضب٘‪ٙ‬س‪ ٜ‬ديصدطزاظ٘س‪ ٜ‬اسشفبز‪ ٜ‬و‪ٙ‬يس‬
‫سب اظ ‪ٚ‬اضز وطزٖ ثيص اظ يىجبض فبيّ‪ٟ‬بي سطآي‪ٙ‬س ث‪ ٝ‬ثط٘بٔ‪ ٝ‬ػّ‪ٌٛ‬يطي ض‪ٛ‬ز‪.‬‬
‫ترًاهًَِيسي ايسُال‬
‫زض ٘بْ فبيُ سطآي‪ٙ‬س اظ حط‪ٚ‬ف ثعضي ث‪ٕٞ ٝ‬طا‪٘ ٜ‬مغ‪ ٝ‬ثؼبي ذظ ظيطيٗ زض زسش‪ٛ‬ضز‪ٙٞ‬س‪ٜٞ‬بي ديصدطزاظ٘س‪ٜ‬‬
‫‪ #define ٚ #ifndef‬اظ يه فبيُ سطآي‪ٙ‬س اسشفبز‪ ٜ‬و‪ٙ‬يس‪.‬‬
‫تَاتع عضَ كالس ‪Time‬‬
‫زض ثط٘بٔ‪ ٝ‬ضىُ ‪ ،9-1‬سبظ٘س‪ Time ٜ‬زض ذغ‪ٛ‬ط ‪ٔ 14-17‬جبزضر ث‪ٔ ٝ‬مساضز‪ٞ‬ي ا‪ِٚ‬ي‪ ٝ‬افضبي زاز‪ ٜ‬ثب غفط‬
‫وطز‪ ٜ‬اسز (يق‪ٙ‬ي ظٔبٖ ػ‪ٟ‬ب٘ي ٔقبزَ ثب ‪ .)12 AM‬ثب اي‪ٙ‬ىبض ٔغٕئٗ ذ‪ٛ‬ا‪ٞ‬يٓ ضس و‪ ٝ‬ضي وبض ذ‪ٛ‬ز ضا اظ يه‬
‫‪ٚ‬ضقيز يب حبِز دبيساض آغبظ ذ‪ٛ‬ا‪ٞ‬س وطز‪ٔ .‬مبزيط اضشجب‪ ٜ‬يب ٘بٔقشجط ٕ٘يس‪ٛ‬ا٘‪ٙ‬س زض افضبي زاز‪ ٜ‬يه ضي‬
‫‪ Time‬شذيط‪ ٜ‬ض‪٘ٛ‬س‪ ،‬چطا و‪ ٝ‬سبظ٘س‪ ٜ‬ث‪ٍٙٞ ٝ‬بْ ايؼبز ضي ‪ Time‬فطاذ‪ٛ‬ا٘ي ضس‪ ٚ ٜ‬سٕبْ فقبِيز‪ٞ‬بي و‪ ٝ‬س‪ٛ‬سظ‬
‫يه سط‪ٚ‬يسٌيط٘س‪ ٜ‬ث‪ٙٔ ٝ‬ؾ‪ٛ‬ض سغييط زازٖ افضبي زاز‪ ٜ‬غ‪ٛ‬ضر ٔيٌيطز‪ ،‬س‪ٛ‬سظ سبثـ ‪ setTime‬ثسلز‬
‫ثطضسي ٔيض‪ٛ‬ز‪ .‬س‪ٛ‬ػ‪ ٝ‬ث‪ ٝ‬ايٗ ٘ىش‪ ٟٓٔ ٝ‬اسز و‪ ٝ‬ثط٘بٔ‪ٛ٘ٝ‬يس لبزض ث‪ ٝ‬سقطيف چ‪ٙ‬سيٗ سبظ٘س‪ ٜ‬سطثبضٌصاضي‬
‫ضس‪ ٜ‬ثطاي يه والس ثبضس‪.‬‬
‫‪1‬‬ ‫‪// Fig. 9.2: Time.cpp‬‬
‫‪2‬‬ ‫‪// Member-function definitions for class Time.‬‬
‫‪3‬‬ ‫>‪#include <iostream‬‬
‫‪4‬‬ ‫;‪using std::cout‬‬
‫‪5‬‬
‫‪6‬‬ ‫>‪#include <iomanip‬‬
‫‪7‬‬ ‫;‪using std::setfill‬‬
‫‪8‬‬ ‫;‪using std::setw‬‬
‫‪9‬‬
‫‪10‬‬ ‫‪#include "Time.h" // include definition of class Time from Time.h‬‬
‫‪11‬‬
‫‪12‬‬ ‫‪// Time constructor initializes each data member to zero.‬‬
‫‪13‬‬ ‫‪// Ensures all Time objects start in a consistent state.‬‬
‫‪14‬‬ ‫)(‪Time::Time‬‬
‫‪15‬‬ ‫{‬
‫‪16‬‬ ‫;‪hour = minute = second = 0‬‬
‫‪17‬‬ ‫‪} // end Time constructor‬‬
‫‪18‬‬
‫‪19‬‬ ‫‪// set new Time value using universal time; ensure that‬‬
‫‪20‬‬ ‫‪// the data remains consistent by setting invalid values to zero‬‬
‫‪21‬‬ ‫) ‪void Time::setTime( int h, int m, int s‬‬
‫‪22‬‬ ‫{‬
‫‪23‬‬ ‫‪hour = ( h >= 0 && h < 24 ) ? h : 0; // validate hour‬‬
‫‪24‬‬ ‫‪minute = ( m >= 0 && m < 60 ) ? m : 0; // validate minute‬‬
‫‪25‬‬ ‫‪second = ( s >= 0 && s < 60 ) ? s : 0; // validate second‬‬
‫‪26‬‬ ‫‪} // end function setTime‬‬
‫‪27‬‬

‫‪www.yourshop.4kia.ir‬‬
‫‪www.Booknama.com‬‬

‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬ ‫______________‬ ‫‪ 622‬‬


‫فصل نهم‬

‫‪28‬‬ ‫)‪// print Time in universal-time format (HH:MM:SS‬‬


‫‪29‬‬ ‫)(‪void Time::printUniversal‬‬
‫‪30‬‬ ‫{‬
‫‪31‬‬ ‫"‪cout << setfill( '0' ) << setw( 2 ) << hour << ":‬‬
‫‪32‬‬ ‫;‪<< setw( 2 ) << minute << ":" << setw( 2 ) << second‬‬
‫‪33‬‬ ‫‪} // end function printUniversal‬‬
‫‪34‬‬
‫‪35‬‬ ‫)‪// print Time in standard-time format (HH:MM:SS AM or PM‬‬
‫‪36‬‬ ‫)(‪void Time::printStandard‬‬
‫‪37‬‬ ‫{‬
‫‪38‬‬ ‫"‪cout << ( ( hour == 0 || hour == 12 ) ? 12 : hour % 12 ) << ":‬‬
‫‪39‬‬ ‫) ‪<< setfill( '0' ) << setw( 2 ) << minute << ":" << setw( 2‬‬
‫‪40‬‬ ‫;) "‪<< second << ( hour < 12 ? " AM" : " PM‬‬
‫‪41‬‬ ‫‪} // end function printStandard‬‬
‫شكل ‪ | 9-2‬تعريف تاتع عضَ كالس ‪. Time‬‬
‫ٕ٘ي س‪ٛ‬اٖ افضبي زاز‪ ٜ‬يه والس ضا زض ٔىب٘ي و‪ ٝ‬زض ثس٘‪ ٝ‬والس افالٖ ضس‪ٜ‬ا٘س‪ٔ ،‬مساضز‪ٞ‬ي ا‪ِٚ‬ي‪ ٝ‬وطز‪.‬‬
‫ثطسر س‪ٛ‬غي‪ٔ ٝ‬ي ض‪ٛ‬ز و‪ ٝ‬ايٗ افضبي زاز‪ ٜ‬س‪ٛ‬سظ سبظ٘س‪ ٜ‬والس ٔمساضز‪ٞ‬ي ا‪ِٚ‬ي‪ ٝ‬ض‪٘ٛ‬س‪ٕٞ .‬چ‪ٙ‬يٗ ٔيس‪ٛ‬اٖ‬
‫س‪ٛ‬سظ سبثـ ‪ set‬والس ‪ٔ Time‬جبزضر ث‪ ٝ‬سرػيع ٔمبزيط ث‪ ٝ‬زاز‪ٜٞ‬بي فض‪ ٛ‬وطز‪٘] .‬ىش‪ :ٝ‬زض فػُ ز‪٘ ٓٞ‬طبٖ‬
‫ذ‪ٛ‬ا‪ٞ‬يٓ زاز و‪ ٝ‬فمظ افضبي زاز‪ static const ٜ‬يه والس اظ ٘‪ٛ‬ؿ‪ٞ‬بي غحيح يب ‪ enum‬ضا ٔيس‪ٛ‬اٖ زض‬
‫ثس٘‪ ٝ‬والس ٔمساضز‪ٞ‬ي ا‪ِٚ‬ي‪ ٝ‬وطز‪[.‬‬
‫ذطاي ترًاهًَِيسي‬
‫الساْ ث‪ٔ ٝ‬مساضز‪ٞ‬ي غطيح ا‪ِٚ‬ي‪ ٝ‬يه فض‪ ٛ‬زاز‪ ٜ‬غيطاسشبسيه اظ يه والس زض سقطيف والس‪ ،‬ذغبي‬
‫٘ح‪ٛ‬ي اسز‪.‬‬
‫سبثـ ‪ setTime‬زض ذغ‪ٛ‬ط ‪ 21-26‬يه سبثـ ‪ public‬اسز و‪ ٝ‬س‪ ٝ‬دبضأشط ‪ int‬افالٖ وطز‪ ٚ ٜ‬اظ آ٘‪ٟ‬ب ثطاي‬
‫س‪ٙ‬ؾيٓ ظٔبٖ اسشفبز‪ٔ ٜ‬يو‪ٙ‬س‪ .‬يه فجبضر ضطعي ٔجبزضر ث‪ ٝ‬سسز ‪ٞ‬ط آضٌ‪ٔٛ‬بٖ ٔيو‪ٙ‬س سب سقييٗ و‪ٙ‬يس و‪ ٝ‬آيب‬
‫ٔمساض ٔ‪ٛ‬ػ‪ٛ‬ز زض ٔحس‪ٚ‬ز‪ ٠‬ذبظ لطاض زاضز يب ذيط‪ .‬ثطاي ٔظبَ‪ٔ ،‬مساض ‪ hour‬زض ذظ ‪ 23‬ثبيسشي ثعضٌشط يب‬
‫ثطاثط غفط ‪ ٚ‬و‪ٛ‬چىشط اظ ‪ 24‬ثبضس‪ ،‬چطا و‪ ٝ‬زض فطٔز ػ‪ٟ‬ب٘ي ظٔبٖ‪ ،‬سبفز يه ٔمساض غحيح اظ غفط سب ‪23‬‬
‫اسز (ثطاي ٔظبَ‪٘ 1PM ،‬طب٘س‪ٙٞ‬س‪ ٜ‬سبفز ‪٘ 11PM ٚ 13‬طب٘س‪ٙٞ‬س‪ 23 ٜ‬اسز‪٘ ،‬يٕ‪ ٝ‬ضت ثطاثط سبفز ‪ٚ 0‬‬
‫٘يٕط‪ٚ‬ظ ثطاثط سبفز ‪ 12‬اسز)‪ .‬ث‪ٕٞ ٝ‬يٗ سطسيت‪ٔ ،‬مبزيط ‪( second ٚ minute‬ذغ‪ٛ‬ط ‪ )25 ٚ 24‬ثبيسشي‬
‫ثعضٌشط يب ثطاثط غفط ‪ ٚ‬وٕشط اظ ‪ 60‬ثبض‪ٙ‬س‪ٞ .‬ط ٔمساضي ذبضع اظ ايٗ ٔحس‪ٚ‬ز‪ٞ‬ب ثب غفط س‪ٙ‬ؾيٓ ٔيض‪ٛ‬ز سب ٔغٕئٗ‬
‫ض‪ٛ‬يٓ و‪ ٝ‬ضي ‪ٕٞ Time‬يط‪ ٝ‬حب‪ٚ‬ي زاز‪ ٜ‬سبظٌبض اسز‪ ،‬زض اي‪ٙ‬حبِز حشي اٌط آضٌ‪ٔٛ‬بٖ‪ٞ‬بي اضسبِي ث‪ ٝ‬سبثـ‬
‫‪ setTime‬غحيح ٘جبض‪ٙ‬س‪ ،‬زاز‪ٜٞ‬بي ضي ‪ٕٞ‬يط‪ ٝ‬زض ٔحس‪ٚ‬ز غحيح ٍ٘‪ٟ‬ساضي ذ‪ٛ‬ا‪ٙٞ‬س ضس‪ .‬زض ايٗ ٔظُ‪ ،‬غفط‬
‫يه ٔمساض سبظٌبض ثطاي ‪ secand ٚ minute ،hour‬اسز‪ٔ .‬مساض اضسبِي ث‪ setTimeٝ‬يه ٔمساض غحيح‬
‫ذ‪ٛ‬ا‪ٞ‬س ث‪ٛ‬ز اٌط زض ٔحس‪ٚ‬ز‪ ٠‬سقييٗ ضس‪ ٜ‬لطاض زاضش‪ ٝ‬ثبضس‪ .‬ث‪ٙ‬بثط ايٗ ‪ٞ‬ط فسزي زض ٔحس‪ٚ‬ز‪ 0-23 ٜ‬يه ٔمساض‬
‫غحيح ثطاي ‪ hour‬سّمي ذ‪ٛ‬ا‪ٞ‬س ضس‪ .‬ثب ايٗ ‪ ،ٕٝٞ‬يه ٔمساض سبظٌبض‪ ،‬ضط‪ٚ‬ضسبً ٕ٘يس‪ٛ‬ا٘س يه ٔمساض غحيح‬
‫ثبضس‪ .‬اٌط ‪ٔ setTime‬جبزضر ث‪ ٝ‬س‪ٙ‬ؾيٓ ‪ hour‬ثب غفط و‪ٙ‬س ث‪ ٝ‬ايٗ زِيُ و‪ ٝ‬آضٌ‪ٔٛ‬بٖ زضيبفشي ذبضع اظ‬

‫‪www.yourshop.4kia.ir‬‬
‫‪www.Booknama.com‬‬

‫________________ فصل نهم‪622‬‬ ‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬

‫ٔحس‪ٚ‬ز‪ ٠‬اسز‪ ،‬دس فمظ ‪( hour‬سبفز) زض غ‪ٛ‬ضسي غحيح ذ‪ٛ‬ا‪ٞ‬س ث‪ٛ‬ز و‪ ٝ‬ظٔبٖ ػبضي ‪ٕٞ‬عٔبٖ ثب ٘يٕ‪ٝ‬‬
‫ضت ثبضس‪.‬‬
‫سبثـ ‪( printUniversal‬ذغ‪ٛ‬ط ‪ 29-33‬اظ ضىُ ‪ٞ )9-1‬يچ آضٌ‪ٔٛ‬ب٘ي زضيبفز ٕ٘يو‪ٙ‬س ‪ ٚ‬سبضيد ضا ثطحست‬
‫فطٔز ػ‪ٟ‬ب٘ي ظٔبٖ‪ٔ ،‬شطىُ اظ س‪ ٝ‬ػفز و‪ٔ ِٗٛ‬شٕبيع و‪ٙٙ‬س‪ ٜ‬اضلبْ ثطاي سبفز‪ ،‬زليم‪ ٚ ٝ‬طب٘ي‪ ٝ‬چبح ٔيو‪ٙ‬س‪.‬‬
‫ثطاي ٔظبَ اٌط ظٔبٖ ‪ 1:30:07PM‬ثبضس‪ ،‬سبثـ ‪ٔ printUniversal‬مساض ‪ 13:30:07‬ثطٌطز ٔيز‪ٞ‬س‪ .‬زلز‬
‫و‪ٙ‬يس و‪ ٝ‬زض ذظ ‪ 31‬اظ سبثـ ‪ setfill‬ثطاي ٔطرع وطزٖ وبضاوشط دطو‪ٙٙ‬س‪ ٜ‬اسشفبز‪ ٜ‬ضس‪ ٜ‬اسز و‪ٔ ٝ‬جبزضر ث‪ٝ‬‬
‫ٕ٘بيص يه ٔمساض غحيح زض ذط‪ٚ‬ػي زض يه فيّس ثؼبي اضظش فسزي اظ اضلبْ ٔيو‪ٙ‬س‪ .‬ثغ‪ٛ‬ض ديصفطؼ‪،‬‬
‫‪minute‬‬ ‫وبضاوشط‪ٞ‬بي دطو‪ٙٙ‬س‪ ٜ‬زض سٕز چخ اضلبْ يه فسز ؽب‪ٞ‬ط ٔيض‪٘ٛ‬س‪ .‬زض ايٗ ٔظبَ‪ ،‬اٌط ٔمساض‬
‫(زليم‪ )ٝ‬ثطاثط ‪ 2‬ثبضس‪ ،‬ثػ‪ٛ‬ضر ‪ 02‬ث‪ٕ٘ ٝ‬بيص زض ذ‪ٛ‬ا‪ٞ‬س آٔس‪ ،‬چطا و‪ ٝ‬وبضاوشط دطو‪ٙٙ‬س‪ ٜ‬ثب غفط ('‪ )'0‬س‪ٙ‬ؾيٓ‬
‫ضس‪ ٜ‬اسز‪ .‬اٌط فسزي و‪ ٝ‬لطاض اسز زض ذط‪ٚ‬ػي لطاض ٌيطز وُ فيّس سقييٗ ضس‪ ٜ‬ضا زض ثطٌيطز‪ ،‬وبضاوشط‬
‫دطو‪ٙٙ‬س‪ ٜ‬ث‪ٕ٘ ٝ‬بيص زض ٘ر‪ٛ‬ا‪ٞ‬س آٔس‪ .‬س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬يس ظٔب٘يى‪ ٝ‬وبضاوشط دطو‪ٙٙ‬س‪ ٜ‬ثب ‪ٕٞ setfill‬طا‪ٔ ٜ‬يض‪ٛ‬ز‪ ،‬ايٗ‬
‫وبضاوشط ثط ض‪ٚ‬ي ٔبثمي ٔمبزيطي و‪ ٝ‬زض د‪ٟٙ‬بي آٖ فيّس ث‪ٕ٘ ٝ‬بيص زض ذ‪ٛ‬ا‪ٙٞ‬س آٔس‪ ٓٞ ،‬افٕبَ ذ‪ٛ‬ا‪ٞ‬س ٌطزيس‪.‬‬
‫٘مغ‪ٔ ٝ‬مبثُ آٖ ‪ setw‬اسز و‪ ٝ‬فمظ ثط ض‪ٚ‬ي ٔمساض ثقسي ث‪ٕ٘ ٝ‬بيص زض آٔس‪ ٜ‬افٕبَ ٔيض‪ٛ‬ز‪.‬‬
‫سبثـ‪( printStandard‬ذغ‪ٛ‬ط ‪ٞ )36-41‬يچ آضٌ‪ٔٛ‬ب٘ي زضيبفز ٕ٘يو‪ٙ‬س ‪ ٚ‬سبضيد ضا زض فطٔز اسشب٘ساضز‬
‫ظٔب٘ي ة‪ٕ٘ ٜ‬بيص زض ٔيآ‪ٚ‬ضز‪ .‬ايٗ فطٔز ٔشطىُ اظ ٔمبزيط سبفز‪ ،‬زليم‪ ٚ ٝ‬طب٘ي‪ ٝ‬اسز و‪ ٝ‬س‪ٛ‬سظ و‪ِٞٗٛ‬بي‬
‫و‪ ٝ‬ثس٘جبَ آٖ ‪ AM‬يب ‪ PM‬لطاض زاضز اظ ‪ ٓٞ‬ػسا ضس‪ٜ‬ا٘س (ٔب٘‪ٙ‬س ‪ٕٞ .)1:27:06 PM‬ب٘‪ٙ‬س سبثـ‬
‫‪ printUniversal‬سبثـ ‪ printStandard‬اظ )'‪ setfill('0‬ثطاي لبِتث‪ٙ‬سي زليم‪ ٚ ٝ‬طب٘ي‪ ٝ‬ثق‪ٛٙ‬اٖ ز‪ٔ ٚ‬مساض‬
‫ضلٕي ثب ز٘جبِ‪ ٝ‬غفط زض غ‪ٛ‬ضر ٘يبظ اسشفبز‪ ٜ‬وطز‪ ٜ‬اسز‪ .‬زض ذظ ‪ 38‬اظ فٍّٕط ضطعي )‪ (?:‬ثطاي سقييٗ‬
‫ٕ٘بيص ٔمساض سبفز اسشفبز‪ ٜ‬ضس‪ ٜ‬اسز‪ .‬اٌط سبفز ثطاثط ‪ 0‬يب ‪ AM( 12‬يب ‪ )PM‬ثبضس ثػ‪ٛ‬ضر ‪ ٚ 12‬زض غيط‬
‫اي‪ٙ‬ػ‪ٛ‬ضر سبفز ثػ‪ٛ‬ضر ٔمساضي اظ ‪ 1‬سب ‪ 11‬ث‪ٕ٘ ٝ‬بيص زض ذ‪ٛ‬ا‪ٞ‬س آٔس‪ .‬فٍّٕط ضطعي ثىبض ضفش‪ ٝ‬زض ذظ‬
‫‪ 40‬سقييٗ ٔيو‪ٙ‬س و‪ ٝ‬آيب ‪ AM‬يب ‪ PM‬ث‪ٕ٘ ٝ‬بيص زضآيس يب ذيط‪.‬‬
‫تعريف تَاتع عضَ ذارج از تعريف كالس‪ :‬قلورٍ كالس‬
‫حشي زض غ‪ٛ‬ضسيى‪ ٝ‬يه سبثـ فض‪ ٛ‬زض سقطيف والسي افالٖ ضس‪ ٜ‬ثبضس ٔيس‪ٛ‬ا٘س زض ذبضع اظ سقطيف والس‪،‬‬
‫سقطيف ٌطزز (‪ ٚ‬ث‪ ٝ‬والس اظ عطيك فٍّٕط ثبي‪ٙ‬طي سفىيه لّٕط‪ٔ ٚ‬طسجظ ض‪ٛ‬ز)‪ ،‬و‪ٛٙٞ ٝ‬ظ ‪ ٓٞ‬سبثـ فض‪ ٛ‬زض‬
‫زض‪ ٖٚ‬لّٕط‪ ٚ‬والس لطاض ذ‪ٛ‬ا‪ٞ‬س زاضز‪ ،‬ث‪ ٝ‬ايٗ ٔق‪ٙ‬ي و‪٘ ٝ‬بْ سبثـ فمظ س‪ٛ‬سظ افضبي زيٍط والس ض‪ٙ‬بذش‪ٝ‬‬
‫ضس‪ ٜ‬ذ‪ٛ‬ا‪ٞ‬س ث‪ٛ‬ز ٍٔط اي‪ٙ‬ى‪ ٝ‬اظ عطيك ضيي اظ والس ٔ‪ٛ‬ضز ٔطاػق‪ ٝ‬لطاض ٌيطز يب اضبض‪ٌٜ‬طي ث‪ ٝ‬يه ضي اظ‬
‫والس يب فٍّٕط ثبي‪ٙ‬طي سفىيه لّٕط‪ ٚ‬ثىبض ٌطفش‪ ٝ‬ض‪ٛ‬ز‪.‬‬

‫‪www.yourshop.4kia.ir‬‬
‫‪www.Booknama.com‬‬

‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬ ‫______________‬ ‫‪ 626‬‬


‫فصل نهم‬

‫اٌط سبثـ فض‪ٛ‬ي زض ثس٘‪ ٝ‬يه والس سقطيف ضس‪ ٜ‬ثبضس‪ ،‬وبٔذبيّط ‪ٔ C++‬جبزضر ث‪ ٝ‬فطاذ‪ٛ‬ا٘ي ‪ inline‬آٖ سبثـ‬
‫ذ‪ٛ‬ا‪ٞ‬س وطز‪ .‬س‪ٛ‬اثـ فض‪ ٛ‬سقطيف ضس‪ ٜ‬زض ذبضع اظ سقطيف والس ٔيس‪ٛ‬ا٘‪ٙ‬س ثػ‪ٛ‬ضر غطيح ‪ ٚ‬ذغي ‪ٚ‬‬
‫س‪ٛ‬سظ وّٕ‪ ٝ‬وّيسي ‪ inline‬فطاذ‪ٛ‬ا٘ي ض‪٘ٛ‬س‪.‬‬
‫تَاتع عضَ زر هقاتل تَاتع سراسري‬
‫٘ىش‪ ٝ‬ػبِت س‪ٛ‬ػ‪ ٝ‬زض ايٗ اسز و‪ ٝ‬س‪ٛ‬اثـ فض‪ٞ printStandard ٚ printUniversal ٛ‬يچ آضٌ‪ٔٛ‬ب٘ي‬
‫زضيبفز ٕ٘يو‪ٙٙ‬س‪ .‬ث‪ ٝ‬ايٗ زِيُ و‪ ٝ‬ايٗ س‪ٛ‬اثـ فض‪ ٛ‬ثػ‪ٛ‬ضر غيطغطيح ٔيزا٘‪ٙ‬س و‪ ٝ‬ثبيس افضبي زاز‪ ٜ‬ضي‬
‫‪ Time‬ضا ث‪ٍٙٞ ٝ‬بْ فقبَ ضسٖ چبح و‪ٙٙ‬س‪ .‬چ‪ٙ‬يٗ فّٕي فطاذ‪ٛ‬ا٘ي س‪ٛ‬اثـ فض‪ ٛ‬ضا ث‪٘ ٝ‬سجز س‪ٛ‬اثـ فبزي زض‬
‫ثط٘بٔ‪ٛ٘ ٝ‬يسي ض‪ٚ‬اِي ثسيبض ٔرشػط ٔيو‪ٙ‬س‪.‬‬
‫استفازُ از كالس ‪Time‬‬
‫دس اظ اي‪ٙ‬ى‪ ٝ‬والس ‪ Time‬سقطيف ضس‪ٔ ،‬يس‪ٛ‬اٖ اظ آٖ ثق‪ٛٙ‬اٖ يه ٘‪ٛ‬ؿ زض افالٖ ضي‪ ،‬آضاي‪ ٚ ٝ‬اضبض‪ٌٜ‬ط‬
‫ثػ‪ٛ‬ضر ظيط اسشفبز‪ ٜ‬وطز‪:‬‬
‫‪Time‬‬ ‫‪sunset; // object of type Time‬‬
‫‪Time‬‬ ‫‪arrayOfTimes [5], // array of 5 Time objects‬‬
‫‪Time‬‬ ‫‪&dinnerTime = swnset; // reference to a Time object‬‬
‫‪Time‬‬ ‫‪*timePtr = &dinnerTime, // pointer to a Time object‬‬
‫زض ثط٘بٔ‪ ٝ‬ضىُ ‪ 9-3‬اظ والس ‪ Time‬اسشفبز‪ ٜ‬ضس‪ ٜ‬اسز‪ .‬ذظ ‪ٔ 12‬جبزضر ث‪ٕٝ٘ٛ٘ ٝ‬سبظي يه ضي ٔ‪ٙ‬فطز اظ‬
‫والس ‪ Time‬ث‪ٙ‬بْ ‪ٔ t‬يو‪ٙ‬س‪ .‬ظٔب٘يى‪ ٝ‬يه ضي ٔقطفي ٔيض‪ٛ‬ز‪ ،‬سبظ٘س‪ Time ٜ‬ثطاي ٔمساضز‪ٞ‬ي ا‪ِٚ‬ي‪ٞ ٝ‬ط زاز‪ٜ‬‬
‫فض‪ private ٛ‬ثب غفط فطاذ‪ٛ‬ا٘ي ٔيض‪ٛ‬ز سذس‪ ،‬ذغ‪ٛ‬ط ‪ 18 ٚ 16‬ظٔبٖ ضا ثب فطٔز‪ٞ‬بي اسشب٘ساضز ‪ ٚ‬ػ‪ٟ‬ب٘ي‬
‫ثطاي سبييس اي‪ٙ‬ى‪ ٝ‬افضب ثسضسشي ٔمساضز‪ٞ‬ي ا‪ِٚ‬ي‪ ٝ‬ضس‪ٜ‬ا٘س چبح ٔيو‪ٙٙ‬س‪ .‬ذظ ‪ٔ 20‬جبزضر ث‪ ٝ‬س‪ٙ‬ؾيٓ ظٔبٖ‬
‫ػسيس ثب فطاذ‪ٛ‬ا٘ي سبثـ فض‪ setTime ٛ‬وطز‪ ٚ ٜ‬ذغ‪ٛ‬ط ‪ٔ 26 ٚ 24‬ؼسزاً ظٔبٖ ضا زض ‪ٞ‬ط ز‪ ٚ‬فطٔز چبح‬
‫ٔيو‪ٙٙ‬س‪ .‬ذظ ‪ٔ 28‬جبزضر ث‪ ٝ‬اسشفبز‪ ٜ‬اظ سبثـ ‪ setTime‬ثطاي س‪ٙ‬ؾيٓ افضبي زاز‪ ٜ‬ثب ٔمبزيط اضشجب‪ٔ ٜ‬يو‪ٙ‬س‪ .‬زض‬
‫اي‪ٙ‬حبِز سبثـ ‪ setTime‬ايٗ اضشجب‪ ٜ‬ضا سطريع زاز‪ٔ ٚ ٜ‬مبزيط اضشجب‪ ٜ‬ضا ثب غفط س‪ٙ‬ؾيٓ ٔيٕ٘بيس سب ضي زض يه‬
‫‪ٚ‬ضقيز سبظٌبض (دبيساض) ثبلي ثٕب٘س‪ .‬سطا٘ؼبْ‪ ،‬ذغ‪ٛ‬ط ‪ 35 ٚ 33‬ظٔبٖ ضا زض ‪ٞ‬ط ز‪ ٚ‬فطٔز چبح ٔيو‪ٙٙ‬س‪.‬‬
‫ًگاّي جلَتر تركية ٍ تَارث‬
‫غبِجبً‪ ،‬والس‪ٞ‬ب ٔؼج‪ٛ‬ض ٘يسش‪ٙ‬س اظ «اثشسا» ايؼبز ض‪٘ٛ‬س‪ .‬ثؼبي آٖ ٔيس‪ٛ‬ا٘‪ٙ‬س حب‪ٚ‬ي ضي‪ٞ‬بي اظ والس‪ٞ‬بي زيٍط‬
‫ثق‪ٛٙ‬اٖ افضب ثبض‪ٙ‬س يب ٔيس‪ٛ‬ا٘س اظ والس‪ٞ‬بي زيٍط ٔطشك ض‪٘ٛ‬س سب غفبر ‪ ٚ‬ضفشبض‪ٞ‬بي ثطاي اسشفبز‪ٜ‬‬
‫والس‪ٞ‬بي ػسيس فطا‪ ٓٞ‬آ‪ٚ‬ض٘س‪ .‬چ‪ٙ‬يٗ لبثّيشي و‪ ٝ‬ثق‪ٛٙ‬اٖ اسشفبز‪ٔ ٜ‬ؼسز اظ ٘طْافعاض ض‪ٙ‬بذش‪ٔ ٝ‬يض‪ٛ‬ز ٔيس‪ٛ‬ا٘س‬
‫زض ٍ٘‪ٟ‬ساضي وس ‪ ٚ‬وبضايي ثط٘بٔ‪ٛ٘ٝ‬يسي ٘مص ٔ‪ٕٟ‬ي ثبظي و‪ٙ‬س‪ٚ .‬اضز وطزٖ ضي‪ٞ‬بي والس ثق‪ٛٙ‬اٖ افضبي‬
‫والس‪ٞ‬بي زيٍط‪ ،‬سطويت (يب سؼٕـ) ٘بٔيس‪ٔ ٜ‬يض‪ٛ‬ز ‪ ٚ‬زض فػُ ز‪ ٓٞ‬س‪ٛ‬ضيح زاز‪ ٜ‬ضس‪ ٜ‬اسز‪ٔ .‬طشك وطزٖ‬
‫والس‪ٞ‬بي ػسيس اظ والس‪ٞ‬بي ٔ‪ٛ‬ػ‪ٛ‬ز‪ ،‬س‪ٛ‬اضص ٘بٔيس‪ٔ ٜ‬يض‪ٛ‬ز ‪ ٚ‬زض فػُ ز‪ٚ‬اظز‪ ٓٞ‬ث‪ ٝ‬س‪ٛ‬ضيح آٖ دطزاذش‪ٝ‬‬
‫ضس‪ ٜ‬اسز‪.‬‬

‫‪www.yourshop.4kia.ir‬‬
www.Booknama.com

622‫________________ فصل نهم‬ I ‫بخش‬:‫نگاهي عميقتر‬:‫كالسها‬

1 // Fig. 9.3: fig09_03.cpp


2 // Program to test class Time.
3 // NOTE: This file must be compiled with Time.cpp.
4 #include <iostream>
5 using std::cout;
6 using std::endl;
7
8 #include "Time.h" // include definition of class Time from Time.h
9
10 int main()
11 {
12 Time t; // instantiate object t of class Time
13
14 // output Time object t's initial values
15 cout << "The initial universal time is ";
16 t.printUniversal(); // 00:00:00
17 cout << "\nThe initial standard time is ";
18 t.printStandard(); // 12:00:00 AM
19
20 t.setTime( 13, 27, 6 ); // change time
21
22 // output Time object t's new values
23 cout << "\n\nUniversal time after setTime is ";
24 t.printUniversal(); // 13:27:06
25 cout << "\nStandard time after setTime is ";
26 t.printStandard(); // 1:27:06 PM
27
28 t.setTime( 99, 99, 99 ); // attempt invalid settings
29
30 // output t's values after specifying invalid values
31 cout << "\n\nAfter attempting invalid settings:"
32 << "\nUniversal time: ";
33 t.printUniversal(); // 00:00:00
34 cout << "\nStandard time: ";
35 t.printStandard(); // 12:00:00 AM
36 cout << endl;
37 return 0;
38 } // end main
The initial universal time is 00:00:00
The initial standard time is 12:00:00 AM

Universal time after setTime is 13:27:06


Standard time after setTime is 1:27:06 PM

After attempting invalid settings:


Universal time: 00:00:00
Standard time: 12:00:00 AM
.Time ‫ | ترًاهِ تست كالس‬9-3 ‫شكل‬
‫سايس شي‬
‫ب‬ٟ٘‫ آ‬ٝ‫س چطا و‬ٙ‫ب ثىّي ثعضي ثبض‬ٞ‫ ثبيسشي ضي‬ٝ‫س و‬ٙٙ‫ض ٔيو‬ٛ‫يسي ضيٌطا سػ‬ٛ٘ٝٔ‫ زض ثط٘ب‬ٝ‫افطاز وٓ سؼطث‬
‫ا٘س‬ٛ‫يس ٔيس‬ٛ٘ٝٔ‫ ثط٘ب‬ٚ ،‫ض غحيح اسز‬ٛ‫غمي ايٗ سػ‬ٙٔ ‫ ِحبػ‬ٝ‫ ث‬.‫س‬ٙ‫ ٔيثبض‬ٛ‫اثـ فض‬ٛ‫ س‬ٚ ٜ‫ي افضبي زاز‬ٚ‫حب‬
.‫ ِحبػ فيعيىي ايٗ أط غبزق ٘يسز‬ٝ‫ ث‬،ٕٝٞ ٗ‫ ثب اي‬.‫ ثبضس‬ٝ‫يشي زاضش‬ٙٞ‫يٗ ش‬ٙ‫چ‬
‫ قلورٍ كالس ٍ زسترسي تِ اعضاء كالس‬9-3
‫ زض سقطيف‬ٜ‫اثـ افالٖ ضس‬ٛ‫ (س‬ٛ‫اثـ فض‬ٛ‫ س‬ٚ )‫ زض سقطيف والس‬ٜ‫بي افالٖ ضس‬ٞ‫ والس (ٔشغيط‬ٜ‫افضبي زاز‬
.‫ فبيُ ػبي زاض٘س‬ٚ‫ زض لّٕط‬ٛ‫اثـ غيطفض‬ٛ‫ س‬.‫ والس سقّك زاض٘س‬ٚ‫ لّٕط‬ٝ‫والس) ث‬

www.yourshop.4kia.ir
‫‪www.Booknama.com‬‬

‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬ ‫______________‬ ‫‪ 622‬‬


‫فصل نهم‬

‫زض زض‪ ٖٚ‬لّٕط‪ ٚ‬يه والس‪ ،‬افضبي والس ثالزضً٘ س‪ٛ‬سظ سٕبْ س‪ٛ‬اثـ فض‪ ٛ‬والس زض زسشطس ث‪ٛ‬ز‪ٚ ٜ‬‬
‫ٔي س‪ٛ‬ا٘س س‪ٛ‬سظ ٘بْ ٔ‪ٛ‬ضز ٔطاػق‪ ٝ‬لطاض ٌيط٘س‪ .‬ذبضع اظ لّٕط‪ ٚ‬والس‪ ،‬افضبي والس ‪ public‬اظ عطيك يه‬
‫زسشٍيط‪ ٜ‬يب ‪ٙٞ‬سَ ث‪ ٝ‬ضي‪ٛٔ ،‬ضز ٔطاػق‪ ٝ‬لطاض ٔيٌيط٘س‪ٛ٘ .‬ؿ ضي‪ٔ ،‬طاػق‪ ٝ‬يب اضبض‪ٌٜ‬ط سػطيح و‪ٙٙ‬س‪ٚ ٜ‬اسظ‬
‫زسشطس دصيط ثطاي سط‪ٚ‬يسٌيط٘س‪ٞ ٜ‬سش‪ٙ‬س‪.‬‬
‫س‪ٛ‬اثـ فض‪ ٛ‬يه والس ٔي س‪ٛ‬ا٘‪ٙ‬س سطثبضٌصاضي ض‪٘ٛ‬س‪ ،‬أب فمظ س‪ٛ‬سظ س‪ٛ‬اثـ فض‪ ٛ‬زيٍط آٖ والس چ‪ٙ‬يٗ‬
‫وبضي أىبٖ دصيط اسز‪ .‬ثطاي سطثبضٌصاضي يه سبثـ فض‪ ،ٛ‬وبفيسز زض سقطيف والس يه ٕ٘‪ ٝ٘ٛ‬ا‪ِٚ‬ي‪ٝ‬‬
‫ثطاي ‪ٞ‬ط ٘سر‪ ٝ‬اظ سبثـ سطثبضٌصاضي ضس‪ ٜ‬سساضن زيس ‪ ٚ‬يه سقطيف سبثـ ٔؼعا ثطاي ‪ٞ‬ط ٘سر‪ ٝ‬اظ سبثـ زض ٘ؾط‬
‫ٌطفز‪.‬‬
‫ٔشغيط‪ٞ‬بي افالٖ ضس‪ ٜ‬زض يه سبثـ فض‪ ٛ‬زاضاي لّٕط‪ ٚ‬ثّ‪ٛ‬وي ث‪ٛ‬ز‪ ٚ ٜ‬فمظ زض آٖ سبثـ ض‪ٙ‬بذش‪ٔ ٝ‬يض‪٘ٛ‬س‪ .‬اٌط‬
‫يه سبثـ فض‪ٔ ،ٛ‬شغيطي ثب ‪ٕٞ‬بٖ ٘بْ ثق‪ٛٙ‬اٖ ٔشغيط ثب لّٕط‪ ٚ‬والس سقطيف ٕ٘بيس‪ٔ ،‬شغيط لطاض ٌطفش‪ ٝ‬زض لّٕط‪ٚ‬‬
‫والس س‪ٛ‬سظ ٔشغيط لّٕط‪ ٚ‬ثّ‪ٛ‬وي زض لّٕط‪ ٚ‬ثّ‪ٛ‬ن د‪ٟٙ‬بٖ ذ‪ٛ‬ا‪ٞ‬س ضس‪ .‬ث‪ ٝ‬چ‪ٙ‬يٗ ٔشغيط د‪ٟٙ‬بٖ ضس‪ٜ‬اي ٔيس‪ٛ‬اٖ ثب‬
‫لطاض زازٖ ٘بْ ٔشغيط لجُ اظ ٘بْ والس ث‪ٕٞ ٝ‬طا‪ ٜ‬فٍّٕط سفىيه لّٕط‪ ):( ٚ‬زسشطسي ديسا وطز‪ٔ .‬شغيط‪ٞ‬بي د‪ٟٙ‬بٖ‬
‫ضس‪ ٜ‬سطاسطي ٔيس‪ٛ‬ا٘‪ٙ‬س ثب اسشفبز‪ ٜ‬اظ فٍّٕط غيطثبي‪ٙ‬طي سفىيه لّٕط‪ ٚ‬زض زسشطس لطاض ٌيط٘س (فػُ ضطٓ)‪.‬‬
‫ثب اسشفبز‪ ٜ‬اظ فٍّٕط ا٘شربة فض‪ ).( ٛ‬لجُ اظ ٘بْ يه ضي يب ثب ٔطاػق‪ ٝ‬ث‪ ٝ‬يه ضي ٔيس‪ٛ‬اٖ ث‪ ٝ‬افضبي ضي‬
‫زسشطسي ديسا وطز‪ .‬اسشفبز‪ ٜ‬اظ فٍّٕط ا٘شربة فض‪ )->( ٛ‬لجُ اظ يه اضبض‪ٌٜ‬ط ث‪ ٝ‬يه ضي ٔيس‪ٛ‬اٖ ث‪ٝ‬‬
‫افضبي ضي زسشطسي ديسا وطز‪.‬‬
‫زض ثط٘بٔ‪ ٝ‬ضىُ ‪ 9-4‬اظ يه والس سبز‪ ٜ‬ث‪ٙ‬بْ ‪ Count‬زض ذغ‪ٛ‬ط ‪ 8-25‬ث‪ٕٞ ٝ‬طا‪ ٜ‬فض‪ ٛ‬زاز‪ private ٜ‬ث‪ٙ‬بْ ‪x‬‬
‫‪print‬‬ ‫اظ ٘‪ٛ‬ؿ ‪( int‬ذظ ‪ ،)24‬سبثـ فض‪ public ٛ‬ث‪ٙ‬بْ ‪( setX‬ذغ‪ٛ‬ط ‪ ٚ )12-15‬سبثـ فض‪ public ٛ‬ث‪ٙ‬بْ‬
‫(ذغ‪ٛ‬ط ‪ ) 18-21‬اسشفبز‪ ٜ‬ضس‪ ٜ‬سب ث‪ ٝ‬س‪ٛ‬ضيح ٘ح‪ ٜٛ‬زسشطسي ث‪ ٝ‬افضبي يه والس ثب اسشفبز‪ ٜ‬اظ فٍّٕط‪ٞ‬بي‬
‫ا٘شربة فض‪ ٛ‬ثذطزاظيٓ‪ .‬ثطاي سبز‪ٜ‬سط ضسٖ ٔ‪ٛ‬ض‪ٛ‬ؿ‪ ،‬ايٗ والس و‪ٛ‬چه ضا زض ‪ٕٞ‬بٖ فبيُ سبثـ ‪ main‬لطاض‬
‫زاز‪ٜ‬ايٓ و‪ ٝ‬اظ آٖ اسشفبز‪ ٜ‬و‪ٙ‬س‪ .‬زض ذغ‪ٛ‬ط ‪ 29-31‬س‪ٔ ٝ‬شغيط ٔطسجظ ثب ٘‪ٛ‬ؿ ‪ Count‬ث‪ٙ‬بْ‪ٞ‬بي ‪( counter‬يه‬
‫ضي ‪( counterPtr ،)Count‬يه اضبض‪ٌٜ‬ط ث‪ ٝ‬ضي ‪( counterRef ٚ )Count‬يه ٔطاػق‪ ٝ‬ث‪ ٝ‬ضي ‪)Count‬‬
‫ايؼبز ضس‪ ٜ‬اسز‪ٔ .‬شغيط ‪ counterRef‬ث‪ٔ counter ٝ‬طاػق‪ ٝ‬زاضز ‪ٔ ٚ‬شغيط ‪ counterPtr‬ث‪ counter ٝ‬اضبض‪ٜ‬‬
‫ٔيو‪ٙ‬س‪ .‬زض ذغ‪ٛ‬ط ‪ 38-39 ٚ 34-35‬س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬يس و‪ ٝ‬ثط٘بٔ‪ٔ ٝ‬يس‪ٛ‬ا٘س س‪ٛ‬اثـ فض‪ print ٚ setX ٛ‬ضا ثب اسشفبز‪ٜ‬‬
‫اظ فٍّٕط ٘مغ‪ ٝ‬ا٘شربة فض‪ ).( ٛ‬ث‪ٕٞ ٝ‬طا‪٘ ٜ‬بْ ضي )‪ (counter‬يب ٔطاػق‪ٝ‬اي ث‪ ٝ‬ضي (‪ counterRef‬و‪٘ ٝ‬بْ‬
‫زيٍط ‪ counter‬اسز) فطاذ‪ٛ‬ا٘ي و‪ٙ‬س‪ .‬ث‪ٕٞ ٝ‬يٗ سطسيت‪ ،‬ذغ‪ٛ‬ط ‪٘ 42-43‬طبٖ ٔيز‪ٙٞ‬س و‪ ٝ‬ثط٘بٔ‪ٔ ٝ‬يس‪ٛ‬ا٘س‬
‫س‪ٛ‬اثـ فض‪ print ٚ setX ٛ‬ضا ثب اسشفبز‪ ٜ‬اظ يه اضبض‪ٌٜ‬ط )‪ ٚ (countPtr‬فٍّٕط ا٘شربة فض‪)->( ٛ‬‬
‫فطاذ‪ٛ‬ا٘ي ٕ٘بيس‪.‬‬

‫‪www.yourshop.4kia.ir‬‬
www.Booknama.com

625‫________________ فصل نهم‬ I ‫بخش‬:‫نگاهي عميقتر‬:‫كالسها‬

1 // Fig. 9.4: fig09_04.cpp


2 // Demonstrating the class member access operators . and ->
3 #include <iostream>
4 using std::cout;
5 using std::endl;
6
7 // class Count definition
8 class Count
9 {
10 public: // public data is dangerous
11 // sets the value of private data member x
12 void setX( int value )
13 {
14 x = value;
15 } // end function setX
16
17 // prints the value of private data member x
18 void print()
19 {
20 cout << x << endl;
21 } // end function print
22
23 private:
24 int x;
25 }; // end class Count
26
27 int main()
28 {
29 Count counter; // create counter object
30 Count *counterPtr = &counter; // create pointer to counter
31 Count &counterRef = counter; // create reference to counter
32
33 cout << "Set x to 1 and print using the object's name: ";
34 counter.setX( 1 ); // set data member x to 1
35 counter.print(); // call member function print
36
37 cout << "Set x to 2 and print using a reference to an object: ";
38 counterRef.setX( 2 ); // set data member x to 2
39 counterRef.print(); // call member function print
40
41 cout << "Set x to 3 and print using a pointer to an object: ";
42 counterPtr->setX( 3 ); // set data member x to 3
43 counterPtr->print(); // call member function print
44 return 0;
45 } // end main
Set x to 1 and print using the object's name: 1
Set x to 2 and print using a reference to an object: 2
Set x to 3 and print using a pointer to an object: 3
.‫ | زسترسي تِ تَاتع عضَ يك شي از طريق ًَع شي‬9-4 ‫شكل‬
‫ جساسازي ٍاسط از پيازُسازي‬9-4
ٝ‫ سذس ث‬.ٓ‫ زض يه فبيُ وطزي‬ٛ‫ سقطيف سبثـ فض‬ٚ ‫اضز وطزٖ سقطيف والس‬ٚ ٝ‫ؿ ث‬ٚ‫ ضط‬،ْٛ‫زض فػُ س‬
‫اسظ‬ٚ ‫ي‬ٙ‫س ثطاي سقطيف والس (يق‬ٙ‫ يه فبيُ سطآي‬،ٓ‫ فبيُ دطزاذشي‬ٚ‫ ز‬ٝ‫ ػساسبظي ايٗ وس ث‬ٜٛ‫ضيح ٘ح‬ٛ‫س‬
ْ‫ ثب ا٘ؼب‬ٝ‫ ثربعط زاضيس و‬.)‫سبظي والس‬ٜ‫ي ديبز‬ٙ‫ والس (يق‬ٛ‫جـ ثطاي سقطيف سبثـ فض‬ٙٔ ‫ فبيُ وس‬ٚ )‫والس‬
،‫ز‬ٛ‫ط ٔيض‬ٛ‫يسٌيط٘سٌبٖ والس ٔطث‬ٚ‫ سط‬ٝ‫ ث‬ٝ‫ سب آ٘ؼب و‬،‫ز‬ٛ‫ب آسب٘شط ٔيض‬ٞٝٔ‫ىبض ا٘ؼبْ سغييطار زض ثط٘ب‬ٙ‫اي‬
‫سظ‬ٛ‫ س‬ٜ‫ ضس‬ٜ‫اسظ سساضن زيس‬ٚ ٝ‫ ٘ساضز سب ٔبزأيى‬ٜ‫يسٌيط٘س‬ٚ‫سبظي والس سبطيطي زض سط‬ٜ‫سغييط زض ديبز‬
.‫ ثبضس‬ٜ‫ٖ سغييط ثبلي ٔب٘س‬ٚ‫ ثس‬ٜ‫يسٌيط٘س‬ٚ‫والس ثطاي سط‬

www.yourshop.4kia.ir
‫‪www.Booknama.com‬‬

‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬ ‫______________‬ ‫‪ 622‬‬


‫فصل نهم‬

‫اِجش‪ ٝ‬اي‪ٙ‬ىبض ث‪ٕٞ ٝ‬يٗ سبزٌي ‪٘ ٓٞ‬يسز‪ .‬سطآي‪ٙ‬س حب‪ٚ‬ي ثطذي اظ لسٕز‪ٞ‬بي ديبز‪ٜ‬سبظي ث‪ٛ‬ز‪ ٚ ٜ‬اضبض‪ ٜ‬ثسيبض‬
‫ػعئي ث‪ ٝ‬زيٍطاٖ زاض٘س‪ .‬ثطاي ٔظبَ‪ ،‬س‪ٛ‬اثـ فض‪( Inline ٛ‬ذغي)‪٘ ،‬يبظ زاض٘س زض يه فبيُ سطآي‪ٙ‬س لطاض زاضش‪ٝ‬‬
‫ثبض‪ٙ‬س‪ ،‬اظ اي‪ٙ‬ط‪ٚ‬سز و‪ ٝ‬ث‪ٍٙٞ ٝ‬بْ وبٔذبيُ ضسٖ يه سط‪ٚ‬يسٌيط٘س‪ ،ٜ‬سط‪ٚ‬يسٌيط٘س‪ٔ ٜ‬يس‪ٛ‬ا٘س حب‪ٚ‬ي سقطيف‬
‫سبثـ ‪ inline‬ثبضس‪ .‬افضبي ‪ private‬يه والس زض فبيُ سطآي‪ٙ‬س سقطيف والس ِيسز ٔيض‪٘ٛ‬س‪ ،‬اظ‬
‫اي‪ٙ‬ط‪ٚ‬سز و‪ ٝ‬ايٗ افضب زض زيس سط‪ٚ‬يسٌيط٘س‪ٜٞ‬ب لطاض زاض٘س حشي اٌط سط‪ٚ‬يسٌيط٘س‪ٜٞ‬ب لبزض ث‪ ٝ‬زسشطسي ث‪ٝ‬‬
‫افضبي ‪٘ private‬جبض‪ٙ‬س‪ .‬زض فػُ ز‪ ،ٓٞ‬ثب ٘ح‪ ٜٛ‬اسشفبز‪ ٜ‬اظ «والس دط‪ٚ‬وسي» ثطاي د‪ٟٙ‬بٖ وطزٖ زاز‪ٜ‬‬
‫‪ private‬يه والس اظ زيس سط‪ٚ‬يسٌيط٘س‪ٜٞ‬ب آض‪ٙ‬ب ذ‪ٛ‬ا‪ٞ‬يس ضس‪.‬‬
‫‪ 9-5‬تَاتع زسترسي ٍ تَاتع يَتيليتي‬
‫س‪ٛ‬اثـ زسشطسي لبزض ث‪ ٝ‬ذ‪ٛ‬ا٘سٖ ‪ٕ٘ ٚ‬بيص زاز‪ٜٞ‬ب ‪ٞ‬سش‪ٙ‬س‪ .‬يىي زيٍط اظ وبضثطز‪ٞ‬بي ضايغ س‪ٛ‬اثـ زسشطسي زض‬
‫سسز ثطلطاضي يب فسْ ثطلطاضي ضطط‪ٞ‬ب اسز‪ ،‬ث‪ ٝ‬چ‪ٙ‬يٗ س‪ٛ‬اثقي‪ ،‬س‪ٛ‬اثـ ديطٍ‪ ٛ‬يب ٔس‪ٙ‬س ٔيٌ‪ٛ‬ي‪ٙ‬س‪ٔ .‬ظبِي اظ يه‬
‫سبثـ ٔس‪ٙ‬س ٔيس‪ٛ‬ا٘س سبثـ ‪ isEmpty‬ثطاي ‪ٞ‬ط والس حبُٔ ثبضس‪ ،‬والسي و‪ ٝ‬لبزض ث‪ٍٟ٘ ٝ‬ساضي ضي‪ٞ‬بي ٔشقسز‬
‫اسز‪٘ ،‬ؾيط يه ِيسز دي‪٘ٛ‬سي‪ ،‬يه دطش‪ ٝ‬يب غف‪ .‬ثط٘بٔ‪ٔ ٝ‬يس‪ٛ‬ا٘س ثب سسز ‪ isEmpty‬لجُ اظ ٔجبزضر ث‪ٝ‬‬
‫ذ‪ٛ‬ا٘سٖ ايشٓ زيٍطي اظ ضي حبُٔ‪ ،‬اعٕي‪ٙ‬بٖ حبغُ و‪ٙ‬س‪ٔ .‬يس‪ٛ‬اٖ اظ سبثـ ٔس‪ٙ‬س ‪ isFull‬ثطاي سسز يه‬
‫والس حبٔ ُ اسشفبز‪ ٜ‬وطز‪ ٚ ٜ‬سقييٗ وطز و‪ ٝ‬آيب زاضاي فضبي اضبفي ‪ٞ‬سز يب ذيط‪ .‬س‪ٛ‬اثـ ٔس‪ٙ‬س ٔ‪ٙ‬بست ثطاي‬
‫والس ‪ٔ Time‬يس‪ٛ‬ا٘س ‪ isPM ٚ isAM‬ثبضس‪.‬‬
‫ثط٘بٔ‪ ٝ‬ثىبض ضفش‪ ٝ‬زض ضىُ‪ٞ‬بي ‪ 9-7‬اِي ‪ 9-5‬ث‪ ٝ‬س‪ٛ‬ضيح ٔف‪ ْٟٛ‬يه سبثـ ي‪ٛ‬سيّيشي (سبثـ وٕىي ‪٘ ٓٞ‬بٔيس‪ٜ‬‬
‫ٔيض‪ٛ‬ز) ٔيدطزاظز‪ .‬يه سبثـ ي‪ٛ‬سيّيشي ثرطي اظ ‪ٚ‬اسظ ‪ public‬يه والس ٘يسز‪ ،‬سطػيحبً يه سبثـ فض‪ٛ‬‬
‫‪ private‬اسز و‪ ٝ‬اظ فّٕيبر س‪ٛ‬اثـ فض‪ ٛ‬والس ‪ public‬دطشيجب٘ي ٔيو‪ٙ‬س‪ .‬س‪ٛ‬اثـ ي‪ٛ‬سيّيشي ٘بٔعز اسشفبز‪ ٜ‬اظ‬
‫سط‪ٚ‬يسٌيط٘س‪ٜٞ‬بي يه والس ٘يسش‪ٙ‬س (أب ٔيس‪ٛ‬ا٘‪ٙ‬س س‪ٛ‬سظ ‪ friend‬يه والس ثىبض ٌطفش‪ ٝ‬ض‪٘ٛ‬س‪،‬‬
‫‪ٕٞ‬ب٘غ‪ٛ‬ضيو‪ ٝ‬زض فػُ ز‪ ٓٞ‬ضب‪ٞ‬س ذ‪ٛ‬ا‪ٞ‬يس ث‪ٛ‬ز)‪ .‬والس ‪( SalesPerson‬ضىُ ‪ )9-5‬يه آضاي‪ 12 ٝ‬ف‪ٙ‬ػطي‬
‫اظ فط‪ٚ‬ش ز‪ٚ‬اظز‪ٔ ٜ‬ب‪( ٝٞ‬ذظ ‪ٛ٘ ٚ )16‬ؿ ا‪ِٚ‬ي‪ ٝ‬ثطاي سبظ٘س‪ ٜ‬والس ‪ ٚ‬س‪ٛ‬اثـ فض‪ ٛ‬و‪ ٝ‬آضاي‪ ٝ‬ضا زسشىبضي‬
‫ٔيو‪ٙٙ‬س‪ ،‬افالٖ وطز‪ ٜ‬اسز‪.‬‬
‫‪1‬‬ ‫‪// Fig. 9.5: SalesPerson.h‬‬
‫‪2‬‬ ‫‪// SalesPerson class definition.‬‬
‫‪3‬‬ ‫‪// Member functions defined in SalesPerson.cpp.‬‬
‫‪4‬‬ ‫‪#ifndef SALESP_H‬‬
‫‪5‬‬ ‫‪#define SALESP_H‬‬
‫‪6‬‬
‫‪7‬‬ ‫‪class SalesPerson‬‬
‫‪8‬‬ ‫{‬
‫‪9‬‬ ‫‪public:‬‬
‫‪10‬‬ ‫‪SalesPerson(); // constructor‬‬
‫‪11‬‬ ‫‪void getSalesFromUser(); // input sales from keyboard‬‬
‫‪12‬‬ ‫‪void setSales( int, double ); // set sales for a specific month‬‬
‫‪13‬‬ ‫‪void printAnnualSales(); // summarize and print sales‬‬
‫‪14‬‬ ‫‪private:‬‬
‫‪15‬‬ ‫‪double totalAnnualSales(); // prototype for utility function‬‬
‫‪16‬‬ ‫‪double sales[ 12 ]; // 12 monthly sales figures‬‬

‫‪www.yourshop.4kia.ir‬‬
www.Booknama.com

622‫________________ فصل نهم‬ I ‫بخش‬:‫نگاهي عميقتر‬:‫كالسها‬

17 }; // end class SalesPerson


18
19 #endif
.SalesPerson ‫ | تعريف كالس‬9-5 ‫شكل‬
‫ ثب‬sales ٝ‫ آضاي‬ٝ‫ِي‬ٚ‫ي ا‬ٞ‫ ٔمساضز‬ٝ‫) ٔجبزضر ث‬15-19 ‫ط‬ٛ‫ (ذغ‬SalesPerson ٜ‫ سبظ٘س‬9-6 ُ‫ ضى‬ٝٔ‫زض ثط٘ب‬
‫ زض‬ٜ‫ش ثطاي يه ٔب‬ٚ‫ؾيٓ فط‬ٙ‫ س‬ٝ‫) ٔجبزضر ث‬36-43 ‫ط‬ٛ‫ (ذغ‬setSales ‫ سطاسطي‬ٛ‫ سبثـ فض‬.‫ اسز‬ٜ‫غفط وطز‬
‫ؿ‬ٕٛ‫) ٔؼ‬46-51 ‫ط‬ٛ‫ (ذغ‬printAnnualSales ْ‫ب‬ٙ‫ ث‬public ‫ سطاسطي‬ٛ‫ سبثـ فض‬.‫س‬ٙ‫ ٔيو‬sales ٝ‫آضاي‬
‫ط‬ٛ‫ (ذغ‬totalAnnualSales ْ‫ب‬ٙ‫( ث‬private) ‫غي‬ٛ‫سيّيشي ذػ‬ٛ‫ سبثـ ي‬.‫س‬ٙ‫ ضا چبح ٔيو‬ٝٞ‫ ٔب‬ٜ‫اظز‬ٚ‫ش ز‬ٚ‫فط‬
ُ‫ ضى‬ٝٔ‫ زض ثط٘ب‬.‫ضز‬ٚ‫ ثسسز ٔيآ‬printAnnualSales ‫ اظ‬ٜ‫ ضا ثب اسشفبز‬ٝٞ‫ ٔب‬ٜ‫اظز‬ٚ‫ش ز‬ٚ‫ؿ فط‬ٕٛ‫) ٔؼ‬54-62
‫ زاضاي فجبضار‬ٚ ٜ‫ز‬ٛ‫ ث‬ٛ‫اثـ فض‬ٛ‫ٓ س‬ٞ‫ا٘ي دطز سط‬ٛ‫ فمظ زض فطاذ‬main ‫ وبضثطز سبثـ‬ٝ‫يس و‬ٙ‫ و‬ٝ‫ػ‬ٛ‫ س‬،9-7
‫ والس‬ٛ‫اثـ فض‬ٛ‫ض وبُٔ زض س‬ٛ‫ ثغ‬ٝ‫ ايٗ آضاي‬ٝ‫ زض ايٗ اسز و‬sales ٝ‫غك وبض ثب آضاي‬ٙٔ .‫شطِي ٕ٘يثبضس‬ٙ‫و‬
.‫ز‬ٛ‫ ض‬ِٝٛ‫ وذس‬SalesPerson
1 // Fig. 9.6: SalesPerson.cpp
2 // Member functions for class SalesPerson.
3 #include <iostream>
4 using std::cout;
5 using std::cin;
6 using std::endl;
7 using std::fixed;
8
9 #include <iomanip>
10 using std::setprecision;
11
12 #include "SalesPerson.h" // include SalesPerson class definition
13
14 // initialize elements of array sales to 0.0
15 SalesPerson::SalesPerson()
16 {
17 for ( int i = 0; i < 12; i++ )
18 sales[ i ] = 0.0;
19 } // end SalesPerson constructor
20
21 // get 12 sales figures from the user at the keyboard
22 void SalesPerson::getSalesFromUser()
23 {
24 double salesFigure;
25
26 for ( int i = 1; i <= 12; i++ )
27 {
28 cout << "Enter sales amount for month " << i << ": ";
29 cin >> salesFigure;
30 setSales( i, salesFigure );
31 } // end for
32 } // end function getSalesFromUser
33
34 // set one of the 12 monthly sales figures; function subtracts
35 // one from month value for proper subscript in sales array
36 void SalesPerson::setSales( int month, double amount )
37 {
38 // test for valid month and amount values
39 if ( month >= 1 && month <= 12 && amount > 0 )
40 sales[ month - 1 ] = amount; // adjust for subscripts 0-11
41 else // invalid month or amount value
42 cout << "Invalid month or sales figure" << endl;
43 } // end function setSales
44
45 // print total annual sales (with the help of utility function)

www.yourshop.4kia.ir
www.Booknama.com

I ‫بخش‬:‫نگاهي عميقتر‬:‫كالسها‬ ______________  622


‫فصل نهم‬

46 void SalesPerson::printAnnualSales()
47 {
48 cout << setprecision( 2 ) << fixed
49 << "\nThe total annual sales are: $"
50 << totalAnnualSales() << endl; // call utility function
51 } // end function printAnnualSales
52
53 // private utility function to total annual sales
54 double SalesPerson::totalAnnualSales()
55 {
56 double total = 0.0; // initialize total
57
58 for ( int i = 0; i < 12; i++ ) // summarize sales results
59 total += sales[ i ]; // add month i sales to total
60
61 return total;
62 } // end function totalAnnualSales
. SalesPerson ‫تعريف تاتع عضَ كالس‬ | 9-6 ‫شكل‬
1 // Fig. 9.7: fig09_07.cpp
2 // Demonstrating a utility function.
3 // Compile this program with SalesPerson.cpp
4
5 // include SalesPerson class definition from SalesPerson.h
6 #include "SalesPerson.h"
7
8 int main()
9 {
10 SalesPerson s; // create SalesPerson object s
11
12 s.getSalesFromUser(); // note simple sequential code;
13 s.printAnnualSales(); // no control statements in main
14 return 0;
15 } // end main
Enter sales amount for month 1: 5314.76
Enter sales amount for month 2: 4292.38
Enter sales amount for month 3: 4589.83
Enter sales amount for month 4: 5534.03
Enter sales amount for month 5: 4376.34
Enter sales amount for month 6: 5698.45
Enter sales amount for month 7: 4439.22
Enter sales amount for month 8: 5893.57
Enter sales amount for month 9: 4909.67
Enter sales amount for month 10: 5123.45
Enter sales amount for month 11: 4024.97
Enter sales amount for month 12: 5923.92

The total annual sales are: $60120.59


.‫ | تاتع يَتيليتي‬9-7 ‫شكل‬
‫ سازًسُّا ّوراُ تا آرگَهاىّاي پيشفرض‬: Time ‫ هثحج آهَزشي كالس‬9-6
ٖ‫ٔب‬ٌٛ‫ اضسبَ آض‬ٜٛ‫ضيح ٘ح‬ٛ‫ ضا ثب س‬Time ‫ وبضايي والس‬9-11‫ اِي‬9-8 ‫بي‬ُٞ‫ زض ضى‬ٝ‫ ثىبض ضفش‬ٝٔ‫ثط٘ب‬
ٝ‫ ٔجبزضر ث‬9-1 ُ‫ زض ضى‬ٜ‫ سقطيف ضس‬ٜ‫ سبظ٘س‬.‫ا٘س‬ٜ‫ افعايص زاز‬ٜ‫ يه سبظ٘س‬ٝ‫ضر غيطغطيح ث‬ٛ‫ثػ‬
،‫اثـ زيٍط‬ٛ‫س س‬ٙ٘‫ٕب‬ٞ .)‫ب٘ي‬ٟ‫ ضت زض فطٔز ػ‬ٕٝ‫ي ٘ي‬ٙ‫س (يق‬ٙ‫ ثب غفط ٔيو‬ٝ‫ طب٘ي‬ٚ ٝ‫ زليم‬،‫ سبفز‬ٝ‫ِي‬ٚ‫ي ا‬ٞ‫ٔمساضز‬
Time ٜ‫ سبظ٘س‬9-8 ُ‫ ضى‬ٝٔ‫ اظ ثط٘ب‬13 ‫ ذظ‬.‫س‬ٙ‫بي ديصفطؼ ثبض‬ٖٞ‫ٔب‬ٌٛ‫ آض‬ٜ‫س‬ٙٙ‫س سقييٗ و‬ٙ٘‫ا‬ٛ‫ب ٔيس‬ٜٞ‫سبظ٘س‬

‫ يه ٔمساض ديصفطؼ‬ٜ‫س‬ٙٙ‫ ٔطرع و‬ٝ‫ اسز و‬ٜ‫بي ديصفطؼ اسز افالٖ وطز‬ٖٞ‫ٔب‬ٌٛ‫ ضبُٔ آض‬ٝ‫ضا و‬
ٜ‫ ػسيس اظ سبظ٘س‬ٝ‫ يه ٘سر‬14-17 ‫ط‬ٛ‫ ذغ‬،9-9 ُ‫ زض ضى‬.‫ اسز‬ٜ‫ سبظ٘س‬ٝ‫ٔبٖ اضسبِي ث‬ٌٛ‫ط آض‬ٞ ‫غفط ثطاي‬

www.yourshop.4kia.ir
www.Booknama.com

622‫________________ فصل نهم‬ I ‫بخش‬:‫نگاهي عميقتر‬:‫كالسها‬

‫ي‬ٞ‫ زض ٔمساضز‬ٝ‫س و‬ٙ‫ زضيبفز ٔيو‬sec ٚ min ،hr ‫بي‬ٞ‫ ٔمبزيطي ثطاي دبضأشط‬ٝ‫ا٘س و‬ٜ‫ سقطيف وطز‬Time
.‫ وبضثطز زاض٘س‬ٝ‫ طب٘ي‬ٚ ٝ‫ زليم‬،‫ سبفز‬ٜ‫ افضبء زاز‬ٝ‫ِي‬ٚ‫ا‬
1 // Fig. 9.8: Time.h
2 // Declaration of class Time.
3 // Member functions defined in Time.cpp.
4
5 // prevent multiple inclusions of header file
6 #ifndef TIME_H
7 #define TIME_H
8
9 // Time abstract data type definition
10 class Time
11 {
12 public:
13 Time( int = 0, int = 0, int = 0 ); // default constructor
14
15 // set functions
16 void setTime( int, int, int ); // set hour, minute, second
17 void setHour( int ); // set hour (after validation)
18 void setMinute( int ); // set minute (after validation)
19 void setSecond( int ); // set second (after validation)
20
21 // get functions
22 int getHour(); // return hour
23 int getMinute(); // return minute
24 int getSecond(); // return second
25
26 void printUniversal(); // output time in universal-time format
27 void printStandard(); // output time in standard-time format
28 private:
29 int hour; // 0 - 23 (24-hour clock format)
30 int minute; // 0 - 59
31 int second; // 0 - 59
32 }; // end class Time
33
34 #endif
.‫ حاٍي يك سازًسُ تا آرگَهاىّاي پيشفرض‬Time ‫ | كالس‬9-8 ‫شكل‬
.‫ اسز‬ٜ‫ وطز‬ٜ‫ زاز‬ٛ‫ط فض‬ٞ ‫ ثطاي‬get ٚ set ‫اثـ‬ٛ‫ سساضن زيسٖ س‬ٝ‫ ٔجبزضر ث‬Time ‫ والس‬ٝ‫يس و‬ٙ‫ و‬ٝ‫ػ‬ٛ‫س‬
ٚ setMinute ،setHour ‫اثـ‬ٛ‫ٓ س‬ٞ ٖ‫ آ‬ٚ ‫س‬ٙ‫ ٔيو‬setTime ‫ا٘ي‬ٛ‫ فطاذ‬ٝ‫ الساْ ث‬Time ٜ‫ٖ سبظ٘س‬ٛٙ‫او‬
‫بي‬ٖٞ‫ٔب‬ٌٛ‫ آض‬.‫س‬ٙ‫ا٘ي ٔيو‬ٛ‫ فطاذ‬ٜ‫ افضبي زاز‬ٝ‫ سرػيع ٔمبزيط ث‬ٚ ‫ؼي‬ٙ‫ ضا ثطاي افشجبض س‬setSecond
،‫س‬ٙ‫ ثبض‬ٜ‫ ٘طس‬ٝ‫ زض ٘ؾط ٌطفش‬ٜ‫ا٘ي سبظ٘س‬ٛ‫ حشي اٌط ٔمبزيط زض فطاذ‬ٝ‫ ضا ٔغٕئٗ ٔيسبظ٘س و‬ٜ‫ سبظ٘س‬،‫ديصفطؼ‬
‫ساضي‬ٍٟ٘ ‫ضقيز دبيساض‬ٚ ‫ ضا زض يه‬Time ‫ا٘س ضي‬ٛ‫ ثبضس سب ثش‬ٜ‫ افضبي زاز‬ٝ‫ِي‬ٚ‫ي ا‬ٞ‫ ٔمساضز‬ٝ‫ لبزض ث‬ٜ‫سبظ٘س‬
،‫ز‬ٛ‫ة ٔيض‬ٛ‫ ديصفطؼ ٔحس‬ٜ‫ يه سبظ٘س‬،‫س‬ٙ‫سش‬ٞ ‫بي آٖ ديصفطؼ‬ٖٞ‫ٔب‬ٌٛ‫ سٕبْ آض‬ٝ‫اي و‬ٜ‫ سبظ٘س‬.‫س‬ٙ‫و‬
‫ط‬ٞ ‫ ديصفطؼ زض‬ٜ‫ حساوظط يه سبظ٘س‬.‫ا٘ي يب فقبَ ٌطزز‬ٛ‫ٔبٖ فطاذ‬ٌٛ‫ٖ آض‬ٚ‫ا٘س ثس‬ٛ‫ ٔي س‬ٝ‫اي و‬ٜ‫ي سبظ٘س‬ٙ‫يق‬
.‫ ثبضس‬ٝ‫ز زاضش‬ٛ‫ػ‬ٚ ‫ا٘س‬ٛ‫والس ٔيس‬
1 // Fig. 9.9: Time.cpp
2 // Member-function definitions for class Time.
3 #include <iostream>
4 using std::cout;
5
6 #include <iomanip>
7 using std::setfill;
8 using std::setw;
9

www.yourshop.4kia.ir
www.Booknama.com

I ‫بخش‬:‫نگاهي عميقتر‬:‫كالسها‬ ______________  622


‫فصل نهم‬

10 #include "Time.h" // include definition of class Time from Time.h


11
12 // Time constructor initializes each data member to zero;
13 // ensures that Time objects start in a consistent state
14 Time::Time( int hr, int min, int sec )
15 {
16 setTime( hr, min, sec ); // validate and set time
17 } // end Time constructor
18
19 // set new Time value using universal time; ensure that
20 // the data remains consistent by setting invalid values to zero
21 void Time::setTime( int h, int m, int s )
22 {
23 setHour( h ); // set private field hour
24 setMinute( m ); // set private field minute
25 setSecond( s ); // set private field second
26 } // end function setTime
27
28 // set hour value
29 void Time::setHour( int h )
30 {
31 hour = ( h >= 0 && h < 24 ) ? h : 0; // validate hour
32 } // end function setHour
33
34 // set minute value
35 void Time::setMinute( int m )
36 {
37 minute = ( m >= 0 && m < 60 ) ? m : 0; // validate minute
38 } // end function setMinute
39
40 // set second value
41 void Time::setSecond( int s )
42 {
43 second = ( s >= 0 && s < 60 ) ? s : 0; // validate second
44 } // end function setSecond
45
46 // return hour value
47 int Time::getHour()
48 {
49 return hour;
50 } // end function getHour
51
52 // return minute value
53 int Time::getMinute()
54 {
55 return minute;
56 } // end function getMinute
57
58 // return second value
59 int Time::getSecond()
60 {
61 return second;
62 } // end function getSecond
63
64 // print Time in universal-time format (HH:MM:SS)
65 void Time::printUniversal()
66 {
67 cout << setfill( '0' ) << setw( 2 ) << getHour() << ":"
68 << setw( 2 ) << getMinute() << ":" << setw( 2 ) << getSecond();
69 } // end function printUniversal
70
71 // print Time in standard-time format (HH:MM:SS AM or PM)
72 void Time::printStandard()
73 {
74 cout << (( getHour() == 0 || getHour() == 12) ? 12: getHour() % 12 )
75 << ":" << setfill( '0' ) << setw( 2 ) << getMinute()
76 << ":" << setw(2)<< getSecond() << ( hour < 12 ? " AM" : " PM" );
77 } // end function printStandard
.‫ شاهل يك سازًسُ كِ آرگَهاى زريافت هيكٌس‬Time ‫ | تعريف تاتع عضَ كالس‬9-9 ‫شكل‬

www.yourshop.4kia.ir
‫‪www.Booknama.com‬‬

‫________________ فصل نهم‪622‬‬ ‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬

‫زض ذظ ‪ 16‬اظ ضىُ ‪ ،9-9‬سبظ٘س‪ٔ ٜ‬جبزضر ث‪ ٝ‬فطاذ‪ٛ‬ا٘ي اظ سبثـ فض‪ setTime ٛ‬ثب ٔمبزيط اضسبِي ث‪ ٝ‬سبظ٘س‪ٜ‬‬
‫ٔيو‪ٙ‬س (يب ٔمبزيط ديصفطؼ)‪ .‬سبثـ ‪ setTime‬سبثـ ‪ setHour‬ضا فطاذ‪ٛ‬ا٘ي ٔيو‪ٙ‬س سب ٕٔغئٗ ٌطزز و‪ٔ ٝ‬مساض‬
‫سساضن زيس‪ ٜ‬ضس‪ ٜ‬ثطاي سبفز زض ثبظ‪ 0-23 ٜ‬لطاض زاضز‪ ،‬سذس سبثـ ‪ setSecond ٚ setMinute‬ثطاي‬
‫اعٕي‪ٙ‬بٖ اظ اي‪ٙ‬ى‪ٔ ٝ‬مبزيط سساضن زيس‪ ٜ‬ضس‪ ٜ‬ثطاي زليم‪ ٚ ٝ‬طب٘ي‪٘ ٝ‬يع زض ثبظ‪ 0-59 ٜ‬ػبي زاض٘س‪ ،‬فطاذ‪ٛ‬ا٘ي‬
‫ٔيض‪٘ٛ‬س‪ .‬اٌط ٔمساضي ذبضع اظ ٔحس‪ٚ‬ز‪ ٜ‬ثبضس‪ ،‬آٖ ٔمساض ثب غفط س‪ٙ‬ؾيٓ ٔيض‪ٛ‬ز‪.‬‬
‫زلز و‪ٙ‬يس و‪ ٝ‬سبظ٘س‪ٔ Time ٜ‬ي س‪ٛ‬ا٘سز ثطاي زض ثطٌطفشٗ ‪ٕٞ‬بٖ فجبضار ثق‪ٛٙ‬اٖ سبثـ فض‪ setTime ٛ‬يب‬
‫حشي فجبضار ػساٌب٘‪ ٝ‬زض س‪ٛ‬اثـ ‪ٛ٘ setSecond ٚ setMinute ،setHour‬ضش‪ ٝ‬ض‪ٛ‬ز‪ .‬فطاذ‪ٛ‬ا٘ي ‪،setHour‬‬
‫‪ setSecond ٚ setMinute‬اظ عطيك سبظ٘س‪ٔ ٜ‬يس‪ٛ‬ا٘س وٕي ٔ‪ٛ‬ططسط ‪ٚ‬الـ ض‪ٛ‬ز چطا و‪ٔ ٝ‬يس‪ٛ‬ا٘س فطاذ‪ٛ‬ا٘ي‬
‫ظيبز ‪ setTime‬ضا ثطعطف سبظز ‪ ٚ‬حصف ٕ٘بيس‪ .‬ث‪ٕٞ ٝ‬يٗ سطسيت‪ ،‬وذي وس اظ ذغ‪ٛ‬ط ‪ 43 ٚ 31 ،37‬ثس‪ٖٚ‬‬
‫سبظ٘س‪ٔ ٜ‬يس‪ٛ‬ا٘س ‪ٞ‬عي‪ ٝٙ‬فطاذ‪ٛ‬ا٘ي ‪ setSecond ٚ setMinute ،setHour ،setTime‬ضا وب‪ٞ‬ص ز‪ٞ‬س‪ .‬وس‬
‫٘‪ٛ‬يسي سبظ٘س‪ Time ٜ‬يب سبثـ فض‪ setTime ٛ‬ثق‪ٛٙ‬اٖ وذي اظ وس زض ذغ‪ٛ‬ط ‪ٔ 43 ٚ 31 ،37‬يس‪ٛ‬ا٘س ٍ٘‪ٟ‬ساضي‬
‫ايٗ والس ضا ثسيبض سرز ٕ٘بيس‪ .‬اٌط ديبز‪ٜ‬سبظي ‪ setSecond ٚ setMinute ،setHour‬زچبض سغييط ض‪ٛ‬ز‪،‬‬
‫ديبز‪ٜ‬سبظي ‪ٞ‬ط سبثـ فض‪ ٛ‬و‪ ٝ‬زض ذغ‪ٛ‬ط ‪ 43 ٚ 31 ،37‬سىطاض ضس‪ٜ‬ا٘س ‪ٔ ٓٞ‬شقبلت آٖ سغييط ذ‪ٛ‬ا‪ٙٞ‬س يبفز‪.‬‬
‫ثب ٔؼج‪ٛ‬ض وطزٖ سبظ٘س‪ Time ٜ‬ثطاي فطاذ‪ٛ‬ا٘ي ‪ٔ ٚ setTime‬ؼج‪ٛ‬ض وطزٖ ‪ setTime‬ثطاي فطاذ‪ٛ‬ا٘ي‬
‫‪ setSecond ٚ setMinute ،setHour‬أىبٖ ٔيز‪ٞ‬س سب ٘يبظ ث‪ ٝ‬سغييط وسي و‪ٔ ٝ‬جبزضر ث‪ ٝ‬افشجبض س‪ٙ‬ؼي‬
‫سبفز‪ ،‬زليم‪ ٚ ٝ‬طب٘ي‪ٔ ٝ‬يو‪ٙ‬س‪ ،‬ث‪ ٝ‬حسالُ ثطسس‪ٕٞ .‬چ‪ٙ‬يٗ وبضايي سبظ٘س‪ٔ setTime ٚ Time ٜ‬يس‪ٛ‬ا٘س ثب افالٖ‬
‫غطيح آ٘‪ٟ‬ب ثػ‪ٛ‬ضر ‪ inline‬يب سقطيف آ٘‪ٟ‬ب زض سقطيف والس افعايص يبثس‪.‬‬
‫ٔ‪ٟٙ‬سسي ٘طْافعاض‪ٞ :‬ط سغييطي زض ٔمبزيط آضٌ‪ٔٛ‬بٖ ديصفطؼ يه سبثـ ٔسشّعْ وبٔذبيُ ٔؼسز وس‬
‫سط‪ٚ‬يسٌيط٘س‪ ٜ‬اسز‪.‬‬
‫هٌْسسي ًرمافسار‬
‫‪ٞ‬ط سغييطي زض ٔمبزيط آضٌ‪ٔٛ‬بٖ ديصفطؼ يه سبثـ ٔسشّعْ وبٔذبيُ ٔؼسز وس سط‪ٚ‬يسٌيط٘س‪ ٜ‬اسز‪.‬‬

‫سبثـ ‪ main‬زض ضىُ‪ 9-11‬الساْ ث‪ٔ ٝ‬مساضز‪ٞ‬ي ا‪ِٚ‬ي‪ ٝ‬د‪ٙ‬غ ضي ‪ٔ Time‬يو‪ٙ‬س‪ .‬يىي ثب س‪ ٝ‬آضٌ‪ٔٛ‬بٖ ديصفطؼ‬
‫زض فطاذ‪ٛ‬ا٘ي غيطغطيح سبظ٘س‪( ٜ‬ذظ ‪ ،)11‬يىي ثب يه آضٌ‪ٔٛ‬بٖ ٔطرع ضس‪( ٜ‬ذظ ‪ ،)12‬يىي ثب ز‪ٚ‬‬
‫آضٌ‪ٔٛ‬بٖ ٔطرع ضس‪( ٜ‬ذظ ‪ ،)13‬يىي ثب س‪ ٝ‬آضٌ‪ٔٛ‬بٖ ٔطرع ضس‪( ٜ‬ذظ ‪ ٚ )14‬يىي ثب س‪ ٝ‬آضٌ‪ٔٛ‬بٖ‬
‫اضشجب‪ٔ ٜ‬طرع ضس‪ ٜ‬زض ذظ ‪ .15‬سذس ثط٘بٔ‪ٞ ٝ‬ط ضي ضا زض فطٔز ظٔب٘ي اسشب٘ساضز ‪ ٚ‬ػ‪ٟ‬ب٘ي ث‪ٕ٘ ٝ‬بيص زض‬
‫ٔيآ‪ٚ‬ضز‪.‬‬
‫‪1‬‬ ‫‪// Fig. 9.10: fig09_10.cpp‬‬
‫‪2‬‬ ‫‪// Demonstrating a default constructor for class Time.‬‬
‫‪3‬‬ ‫>‪#include <iostream‬‬

‫‪www.yourshop.4kia.ir‬‬
www.Booknama.com

I ‫بخش‬:‫نگاهي عميقتر‬:‫كالسها‬ ______________  626


‫فصل نهم‬

4 using std::cout;
5 using std::endl;
6
7 #include "Time.h" // include definition of class Time from Time.h
8
9 int main()
10 {
11 Time t1; // all arguments defaulted
12 Time t2( 2 ); // hour specified; minute and second defaulted
13 Time t3( 21, 34 ); // hour and minute specified; second defaulted
14 Time t4( 12, 25, 42 ); // hour, minute and second specified
15 Time t5( 27, 74, 99 ); // all bad values specified
16
17 cout << "Constructed with:\n\nt1: all arguments defaulted\n ";
18 t1.printUniversal(); // 00:00:00
19 cout << "\n ";
20 t1.printStandard(); // 12:00:00 AM
21
22 cout << "\n\nt2: hour specified; minute and second defaulted\n ";
23 t2.printUniversal(); // 02:00:00
24 cout << "\n ";
25 t2.printStandard(); // 2:00:00 AM
26
27 cout << "\n\nt3: hour and minute specified; second defaulted\n ";
28 t3.printUniversal(); // 21:34:00
29 cout << "\n ";
30 t3.printStandard(); // 9:34:00 PM
31
32 cout << "\n\nt4: hour, minute and second specified\n ";
33 t4.printUniversal(); // 12:25:42
34 cout << "\n ";
35 t4.printStandard(); // 12:25:42 PM
36
37 cout << "\n\nt5: all invalid values specified\n ";
38 t5.printUniversal(); // 00:00:00
39 cout << "\n ";
40 t5.printStandard(); // 12:00:00 AM
41 cout << endl;
42 return 0;
43 } // end main
Constructed with:
t1: all arguments defaulted
00:00:00
12:00:00 AM

t2: hour specified; minute and second defaulted


02:00:00
2:00:00 AM
t3: hour and minute specified; second defaulted
12:34:00
9:34:00 PM
t4: hour, minute and second defaulted
12:25:42
12:25:42 AM

t5: all invalid values specified


00:00:00
12:00:00 AM
.‫ | سازًسُ تا آرگَهاىّاي پيشفرض‬9-11 ‫شكل‬
‫ ًاتَز كٌٌسُّا‬9-7
‫ ثب وبضاوشط‬ٜ‫ٕطا‬ٞ ‫ يه والس‬ٜ‫س‬ٙٙ‫زو‬ٛ‫ ٘بْ ٘بث‬.‫ ٔيثبضس‬ٛ‫ؿ زيٍطي اظ سبثـ فض‬ٛ٘ )ٜ‫س‬ٙٙ‫ (سرطيتو‬ٜ‫س‬ٙٙ‫زو‬ٛ‫٘بث‬
ٝ‫ضي و‬ٛ‫ٕب٘غ‬ٞ ‫ ظيطا‬،‫زي اسز‬ٟٛ‫ ض‬ٝ‫ ٘بٍٔصاضي زاضاي ػبشث‬ٜ‫ ايٗ لبفس‬.‫ز‬ٛ‫ ٘بْ والس ٔطرع ٔيض‬ٚ )~( ‫ٔس‬

www.yourshop.4kia.ir
‫‪www.Booknama.com‬‬

‫________________ فصل نهم‪622‬‬ ‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬

‫زض يه فػُ دبيب٘ي ذ‪ٛ‬ا‪ٞ‬يس زيس‪ ،‬فٍّٕط ٔس يه فٍّٕط ٔىُٕ ثيشي اسز ‪ ٚ‬سب ا٘ساظ‪ٜ‬اي يه ٘بث‪ٛ‬زو‪ٙٙ‬س‪،ٜ‬‬
‫ٔشٕٓ يه سبظ٘س‪ ٜ‬اسز‪ .‬س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬يس و‪ ٝ‬غبِجب اظ ٘بث‪ٛ‬زو‪ٙٙ‬س‪ٜٞ‬ب زض ٔمبالر ثق‪ٛٙ‬اٖ “‪ ”dtor‬يبز ٔيض‪ٛ‬ز‪ٔ .‬ب‬
‫سطػيح ٔيز‪ٞ‬يٓ و‪ ٝ‬اظ ايٗ وّٕ‪ ٝ‬اسشفبز‪٘ ٜ‬ى‪ٙ‬يٓ‪٘ .‬بث‪ٛ‬زو‪ٙٙ‬س‪ ٜ‬يه والس ثػ‪ٛ‬ضر سّ‪ٛ‬يحي (غيطغطيح) ‪ ٚ‬زض‬
‫ظٔبٖ اظ ثيٗ ضفشٗ ضي فطاذ‪ٛ‬ا٘ي ٔيض‪ٛ‬ز‪ .‬ثطاي ٔظبَ‪ ،‬ايٗ اسفبق ثطاي ضيي ضخ ٔيز‪ٞ‬س و‪ ٝ‬ثط٘بٔ‪ ٝ‬اظ لّٕط‪ ٚ‬و‪ٝ‬‬
‫ضي زض آٖ ايؼبز ضس‪ ٜ‬ذبضع ٌطزز‪ .‬س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬يس و‪ ٝ‬ذ‪ٛ‬ز ٘بث‪ٛ‬زو‪ٙٙ‬س‪ٕ٘ ٜ‬يس‪ٛ‬ا٘س حبفؾ‪ ٝ‬اذص ضس‪ ٜ‬س‪ٛ‬سظ ضي ضا‬
‫آظاز سبظز‪ ،‬ايٗ سبثـ فّٕيبر ذبسٕ‪ ٝ‬وبض‪ ،‬لجُ اظ اي‪ٙ‬ى‪ ٝ‬سيسشٓ حبفؾ‪ ٝ‬ضي ضا ثبظدس ثٍيطز ‪ٚ‬اضز غح‪ٝٙ‬‬
‫ٔيض‪ٛ‬ز‪.‬‬
‫٘بث‪ٛ‬زو‪ٙٙ‬س‪ ٜ‬دبضأشط زضيبفز ٕ٘يو‪ٙ‬س ‪ٔ ٚ‬مساضي ثطٌطز ٕ٘يز‪ٞ‬س‪٘ .‬بث‪ٛ‬زو‪ٙٙ‬س‪ٛ٘ ٜ‬ؿ ذبغي ضا ‪ ٓٞ‬ثطٌطز‬
‫ٕ٘يز‪ٞ‬س (حشي ‪ .)void‬يه والس ٔيس‪ٛ‬ا٘س فمظ يه ٘بث‪ٛ‬زو‪ٙٙ‬س‪ ٜ‬زاضش‪ ٝ‬ثبضس‪٘ .‬بث‪ٛ‬زو‪ٙٙ‬س‪ ٜ‬ضا ٕ٘يس‪ٛ‬اٖ‬
‫سطثبضٌصاضي وطز‪.‬‬
‫ذطاي ترًاهًَِيسي‬
‫اضسبَ آضٌ‪ٔٛ‬بٖ ث‪ ٝ‬يه ٘بث‪ٛ‬زو‪ٙٙ‬س‪ ،ٜ‬سقييٗ ٘‪ٛ‬ؿ ثطٌطشي ث‪ ٝ‬يه ٘بث‪ٛ‬زو‪ٙٙ‬س‪ ،ٜ‬ثطٌطز زازٖ ٔمساض‬
‫اظ يه ٘بث‪ٛ‬زو‪ٙٙ‬س‪ ٜ‬يب سطثبضٌصاضي آٖ ذغبي ٘ح‪ٛ‬ي اسز‪.‬‬
‫ثب اي‪ٙ‬ى‪ ٝ‬سب ثسيٗ ػب ثطاي والس‪ٞ‬بي ٔقطفي ضس‪٘ ،ٜ‬بث‪ٛ‬زو‪ٙٙ‬س‪ ٜ‬سساضن ٘سيس‪ٜ‬ايٓ‪ ،‬أب ‪ٞ‬ط والسي زاضاي يه‬
‫٘بث‪ٛ‬زو‪ٙٙ‬س‪ ٜ‬اسز‪ .‬اٌط ثط٘بٔ‪ٛ٘ ٝ‬يس ثغ‪ٛ‬ض غطيح الساْ ث‪ ٝ‬سساضن زيسٖ يه ٘بث‪ٛ‬زو‪ٙٙ‬س‪٘ ٜ‬ى‪ٙ‬س‪ ،‬ذ‪ٛ‬ز وبٔذبيّط‬
‫يه ٘بث‪ٛ‬زو‪ٙٙ‬س‪ ٜ‬س‪ٟ‬ي ايؼبز ٔيو‪ٙ‬س‪ .‬زض فػُ يبظز‪ ،ٓٞ‬الساْ ث‪ ٝ‬ايؼبز ٘بث‪ٛ‬زو‪ٙٙ‬س‪ٜٞ‬بي ٔش‪ٙ‬بست ثب والس‪ٞ‬بيي‬
‫ذ‪ٛ‬ا‪ٞ‬يٓ و‪ ٝ‬ضي ‪ٞ‬بي آ٘‪ٟ‬ب حب‪ٚ‬ي حبفؾ‪ ٝ‬اذص ضس‪ ٜ‬زي‪ٙ‬بٔيىي ‪ٞ‬سش‪ٙ‬س (‪ٕٞ‬ب٘‪ٙ‬س آضاي‪ٞٝ‬ب ‪ ٚ‬ضضش‪ٞٝ‬ب) يب اظ ٔ‪ٙ‬بثـ‬
‫زيٍط سيسشٓ اسشفبز‪ٔ ٜ‬يو‪ٙٙ‬س (‪ٕٞ‬ب٘‪ٙ‬س فبيّ‪ٟ‬ب و‪ ٝ‬زض فػُ ‪ٞ‬فس‪ ٓٞ‬ث‪ ٝ‬ثطضسي آ٘‪ٟ‬ب ذ‪ٛ‬ا‪ٞ‬يٓ دطزاذز)‪.‬‬
‫‪ 9-8‬زهاى فراذَاًي سازًسُّا ٍ ًاتَزكٌٌسُّا‬
‫سبظ٘س‪ٜٞ‬ب ‪٘ ٚ‬بث‪ٛ‬زو‪ٙٙ‬س‪ٜٞ‬ب ثػ‪ٛ‬ضر غيطغطيح س‪ٛ‬سظ وبٔذبيّط فطاذ‪ٛ‬ا٘ي ٔيض‪٘ٛ‬س‪ .‬سطسيت فطاذ‪ٛ‬ا٘ي ايٗ س‪ٛ‬اثـ‬
‫ثسشٍي ث‪ٝ‬سطسيت ‪ٚ‬ض‪ٚ‬ز آ٘‪ٟ‬ب ث‪ٔ ٝ‬طحّ‪ ٝ‬اػطا ‪ ٚ‬سطن لّٕط‪ ٚ‬زاضز و‪ ٝ‬ضي‪ٞ‬ب زض آٖ ٕ٘‪ٝ٘ٛ‬سبظي ضس‪ٜ‬ا٘س‪ .‬ثغ‪ٛ‬ض‬
‫وّي‪ ،‬فطاذ‪ٛ‬ا٘ي ٘بث‪ٛ‬زو‪ٙٙ‬س‪ٜٞ‬ب ث‪ ٝ‬سطسيت ٔقى‪ٛ‬س اظ فطاذ‪ٛ‬ا٘ي سبظ٘س‪ٜٞ‬بي ٔمشضي غ‪ٛ‬ضر ٔيٌيطز‪ ،‬أب‬
‫‪ٕٞ‬ب٘غ‪ٛ‬ضي و‪ ٝ‬زض ثط٘بٔ‪ٞٝ‬بي ضىُ ‪ 9-11‬اِي‪ 9-13‬ضب‪ٞ‬س ذ‪ٛ‬ا‪ٞ‬يس ث‪ٛ‬ز‪ ،‬والس‪ٞ‬بي شذيط‪ٜ‬سبظي ضي‪ٞ‬ب‬
‫ٔيس‪ٛ‬ا٘‪ٙ‬س سطسيت فطاذ‪ٛ‬ا٘ي ٘بث‪ٛ‬زو‪ٙٙ‬س‪ٜٞ‬ب ضا زض زچبض سغييط سبظ٘س‪.‬‬
‫فطاذ‪ٛ‬ا٘ي سبظ٘س‪ٜٞ‬بي ٔشقّك ث‪ ٝ‬ضي‪ٞ‬بي سقطيف ضس‪ ٜ‬زض لّٕط‪ ٚ‬سطاسطي لجُ اظ ‪ٞ‬ط سبثقي (ضبُٔ ‪ٓٞ main‬‬
‫ٔيض‪ٛ‬ز) غ‪ٛ‬ضر ٔيٌيط٘س‪٘ .‬بث‪ٛ‬زو‪ٙٙ‬س‪ٜٞ‬بي ٔش‪ٙ‬بؽط دس اظ اسٕبْ ‪ main‬فطاذ‪ٛ‬ا٘ي ٔيض‪٘ٛ‬س‪ .‬سبثـ ‪ exit‬ثط٘بٔ‪ٝ‬‬
‫ضا ٔؼج‪ٛ‬ض ٔيو‪ٙ‬س سب ثالفبغّ‪ ٚ ٝ‬ثس‪ ٖٚ‬اػطاي ٘بث‪ٛ‬زو‪ٙٙ‬س‪ ٜ‬ثط ض‪ٚ‬ي ضي‪ٞ‬بي اس‪ٔٛ‬بسيه ذبسٕ‪ ٝ‬يبثس‪ .‬اظ ايٗ سبثـ‬
‫اغّت ثطاي ذبسٕ‪ ٝ‬زازٖ ث‪ ٝ‬ثط٘بٔ‪ ٝ‬زض ظٔبٖ‪ٞ‬بي و‪ ٝ‬ذغبيي زض ‪ٚ‬ض‪ٚ‬زي ٔطب‪ٞ‬س‪ ٜ‬ض‪ٛ‬ز يب اي‪ٙ‬ى‪ ٝ‬فبيُ ٔ‪ٛ‬ضز ٘ؾط‬

‫‪www.yourshop.4kia.ir‬‬
‫‪www.Booknama.com‬‬

‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬ ‫______________‬ ‫‪ 622‬‬


‫فصل نهم‬

‫ثطاي دطزاظش ثبظ ٘ط‪ٛ‬ز اسشفبز‪ٔ ٜ‬يض‪ٛ‬ز‪ .‬سبثـ ‪ abort‬وبض ٔطبث‪ٟ‬ي ثب سبثـ ‪ exit‬ا٘ؼبْ ٔيز‪ٞ‬س‪ ،‬أب ثط٘بٔ‪ ٝ‬ضا‬
‫ثالفبغّ‪ٔ ٝ‬ؼج‪ٛ‬ض ث‪ ٝ‬ذبسٕ‪ٔ ٝ‬يو‪ٙ‬س ثس‪ ٖٚ‬اي‪ٙ‬ى‪ ٝ‬ث‪٘ ٝ‬بث‪ٛ‬زو‪ٙٙ‬س‪ٜ‬اي ‪ٞ‬ط ضي اػبظ‪ ٜ‬ز‪ٞ‬س سب فطاذ‪ٛ‬ا٘ي ٌطز٘س‪.‬‬
‫ٔقٕ‪ٛ‬الً اظ سبثـ ‪ abort‬ثطاي سطريع ذبسٕ‪ ٝ‬غيطفبزي ثط٘بٔ‪ ٝ‬اسشفبز‪ٔ ٜ‬يض‪ٛ‬ز‪.‬‬
‫سبظ٘س‪ ٜ‬ثطاي يه ضي ٔحّي اس‪ٔٛ‬بسيه ظٔب٘ي فطاذ‪ٛ‬ا٘ي ٔيض‪ٛ‬ز و‪ ٝ‬اػطا ثط٘بٔ‪ ٝ‬ث‪ٔ ٝ‬ىب٘ي ثطسس و‪ ٝ‬ضي زض‬
‫آ٘ؼب سقطيف ضس‪ ٜ‬اسز‪٘ ،‬بث‪ٛ‬زو‪ٙٙ‬س‪ٔ ٜ‬ش‪ٙ‬بؽط ‪ ٓٞ‬ظٔب٘ي فطاذ‪ٛ‬ا٘ي ٔيٌطزز و‪ ٝ‬اػطا‪ ،‬لّٕط‪ ٚ‬ضي ضا سطن‬
‫ٔيو‪ٙ‬س‪ .‬سبظ٘س‪ٜٞ‬ب ‪٘ ٚ‬بث‪ٛ‬زو‪ٙٙ‬س‪ٜٞ‬بي ٔشقّك ث‪ ٝ‬ضي‪ٞ‬بي اس‪ٔٛ‬بسيه زض ‪ٞ‬ط ثبض ‪ٚ‬ض‪ٚ‬ز ‪ ٚ‬ذط‪ٚ‬ع اػطاي ثط٘بٔ‪ ٝ‬ث‪ٝ‬‬
‫لّٕط‪ ٚ‬ضي فطاذ‪ٛ‬ا٘ي ٔيض‪٘ٛ‬س‪٘ .‬بث‪ٛ‬زو‪ٙٙ‬س‪ٜٞ‬ب ثطاي ضي‪ٞ‬بي اس‪ٔٛ‬بسيه فطاذ‪ٛ‬ا٘ي ٕ٘يض‪٘ٛ‬س اٌط ثط٘بٔ‪ ٝ‬ثب‬
‫فطاذ‪ٛ‬ا٘ي سبثـ ‪ exit‬يب ‪ abort‬ذبسٕ‪ ٝ‬يبثس‪.‬‬
‫سبظ٘س‪ ٜ‬ثطاي يه ضي ٔحّي ‪( static‬اسشبسيه) فمظ يه ثبض فطاذ‪ٛ‬ا٘ي ٔيض‪ٛ‬ز ‪ ٚ‬آٖ ‪ ٓٞ‬ظٔب٘ي اسز و‪ٝ‬‬
‫اػطا ث‪ٔ ٝ‬ىب٘ي ثطسس و‪ ٝ‬ضي زض آ٘ؼب سقطيف ضس‪ ٜ‬اسز‪٘ .‬بث‪ٛ‬زو‪ٙٙ‬س‪ٔ ٜ‬ش‪ٙ‬بؽط ‪ ٓٞ‬ظٔب٘ي فطاذ‪ٛ‬ا٘ي ٔيض‪ٛ‬ز و‪ٝ‬‬
‫‪ main‬ذبسٕ‪ ٝ‬يبفش‪ ٝ‬ثبضس يب ثط٘بٔ‪ ،ٝ‬سبثـ ‪ exit‬ضا فطاذ‪ٛ‬ا٘ي وطز‪ ٜ‬ثبضس‪ .‬ضي‪ٞ‬بي سطاسطي ‪ ٚ‬اسشبسيه ث‪ ٝ‬سطسيت‬
‫ٔقى‪ٛ‬س اظ ايؼبز ذ‪ٛ‬ز ٘بث‪ٛ‬ز ٔيض‪٘ٛ‬س‪٘ .‬بث‪ٛ‬زو‪ٙٙ‬س‪ٜٞ‬ب زض غ‪ٛ‬ضسيى‪ ٝ‬ثط٘بٔ‪ ٝ‬ثب فطاذ‪ٛ‬ا٘ي سبثـ ‪ abort‬ذبسٕ‪ ٝ‬يبفش‪ٝ‬‬
‫ثبضس‪ ،‬ثطاي ضي‪ٞ‬بي اسشبسيه فطاذ‪ٛ‬ا٘ي ٘ر‪ٛ‬ا‪ٙٞ‬س ضس‪ .‬ثط٘بٔ‪ ٝ‬ثىبض ضفش‪ ٝ‬زض ضىُ‪ٞ‬بي‪ 9-13‬اِي‪9-11‬‬
‫‪CreateAndDestory‬‬ ‫٘طب٘س‪ٙٞ‬س‪ ٜ‬سطسيجي اسز و‪ ٝ‬سبظ٘س‪ٜٞ‬ب ‪٘ ٚ‬بث‪ٛ‬زو‪ٙٙ‬س‪ٜٞ‬بي ثطاي ضي‪ٞ‬بي والس‬
‫فطاذ‪ٛ‬ا٘ي ٔيض‪٘ٛ‬س (ضىُ ‪ ٚ 9-11‬ضىُ ‪ )9-11‬اظ والس‪ٞ‬بي شذيط‪ٜ‬سبظي ٔرشّف زض لّٕط‪ٞٚ‬بي‬
‫ٌ‪٘ٛ‬بٌ‪ٞ .ٖٛ‬ط ضي اظ والس ‪ CreateAndDestory‬حب‪ٚ‬ي (ذغ‪ٛ‬ط ‪ )16-17‬يه ٘‪ٛ‬ؿ غحيح (‪)objectID‬‬
‫‪ ٚ‬يه ضضش‪ (message) ٝ‬اسز و‪ ٝ‬زض ذط‪ٚ‬ػي ثط٘بٔ‪ ٝ‬ثىبض ٌطفش‪ ٝ‬ضس‪ٜ‬ا٘س سب ‪ٛٞ‬يز ضي ثبض‪ٙ‬س‪ .‬ايٗ ٔظبَ غطفبً‬
‫ػ‪ٙ‬ج‪ ٝ‬آٔ‪ٛ‬ظضي زاضز‪ .‬اظ اي‪ٙ‬ط‪ ،ٚ‬ذظ ‪ 23‬اظ ٘بث‪ٛ‬زو‪ٙٙ‬س‪ ٜ‬زض ضىُ ‪ 9-11‬سقييٗ ٔيو‪ٙ‬س و‪ ٝ‬آيب ضي ٘بث‪ٛ‬ز ضس‪ٜ‬‬
‫زاضاي ض‪ٙ‬بس‪ (objectID) ٝ‬ثب ٔمساض ‪ 1‬يب ‪ 6‬اسز يب ذيط‪ ٚ ،‬اٌط چ‪ٙ‬يٗ ثبضس يه وبضاوشط ذظ ػسيس زض‬
‫ذط‪ٚ‬ػي لطاض زاز‪ٔ ٜ‬يض‪ٛ‬ز‪ .‬ايٗ ذظ وٕه ٔيو‪ٙ‬س سب زضن ذط‪ٚ‬ػي ثط٘بٔ‪ ٝ‬آسب٘شط ض‪ٛ‬ز‪.‬‬
‫‪1‬‬ ‫‪// Fig. 9.11: CreateAndDestroy.h‬‬
‫‪2‬‬ ‫‪// Definition of class CreateAndDestroy.‬‬
‫‪3‬‬ ‫‪// Member functions defined in CreateAndDestroy.cpp.‬‬
‫‪4‬‬ ‫>‪#include <string‬‬
‫‪5‬‬ ‫;‪using std::string‬‬
‫‪6‬‬
‫‪7‬‬ ‫‪#ifndef CREATE_H‬‬
‫‪8‬‬ ‫‪#define CREATE_H‬‬
‫‪9‬‬
‫‪10‬‬ ‫‪class CreateAndDestroy‬‬
‫‪11‬‬ ‫{‬
‫‪12‬‬ ‫‪public:‬‬
‫‪13‬‬ ‫‪CreateAndDestroy( int, string ); // constructor‬‬
‫‪14‬‬ ‫‪~CreateAndDestroy(); // destructor‬‬
‫‪15‬‬ ‫‪private:‬‬
‫‪16‬‬ ‫‪int objectID; // ID number for object‬‬
‫‪17‬‬ ‫‪string message; // message describing object‬‬
‫‪18‬‬ ‫‪}; // end class CreateAndDestroy‬‬
‫‪19‬‬
‫‪20‬‬ ‫‪#endif‬‬

‫‪www.yourshop.4kia.ir‬‬
www.Booknama.com

625‫________________ فصل نهم‬ I ‫بخش‬:‫نگاهي عميقتر‬:‫كالسها‬

.CreateAndDestory ‫ | تعريف كالس‬9-11 ‫شكل‬


1 // Fig. 9.12: CreateAndDestroy.cpp
2 // Member-function definitions for class CreateAndDestroy.
3 #include <iostream>
4 using std::cout;
5 using std::endl;
6
7 #include "CreateAndDestroy.h" // include CreateAndDestroy class definition
8
9 // constructor
10 CreateAndDestroy::CreateAndDestroy( int ID, string messageString )
11 {
12 objectID = ID; // set object's ID number
13 message = messageString; // set object's descriptive message
14
15 cout << "Object " << objectID << " constructor runs "
16 << message << endl;
17 } // end CreateAndDestroy constructor
18
19 // destructor
20 CreateAndDestroy::~CreateAndDestroy()
21 {
22 // output newline for certain objects; helps readability
23 cout << ( objectID == 1 || objectID == 6 ? "\n" : "" );
24
25 cout << "Object " << objectID << " destructor runs "
26 << message << endl;
27 } // end ~CreateAndDestroy destructor
.CreateAndDestory ‫ | تعريف تاتع عضَ كالس‬9-12 ‫شكل‬
‫ آٖ لجُ اظ‬ٜ‫الـ سبظ٘س‬ٚ ‫ زض‬.)12 ‫ اسز (ذظ‬ٜ‫ سطاسطي سقطيف ضس‬ٚ‫ زض لّٕط‬first ‫ ضي‬9-13 ُ‫زض ضى‬
ٜ‫س‬ٙٙ‫زو‬ٛ‫ ٘بث‬ٝ‫ى‬ٙ‫ دس اظ اي‬ٚ ٝٔ‫ ثط٘ب‬ٕٝ‫ آٖ زض ذبس‬ٜ‫س‬ٙٙ‫زو‬ٛ‫ ٘بث‬ٚ ‫ز‬ٛ‫ا٘ي ٔي ض‬ٛ‫ فطاذ‬main ‫ط فجبضسي زض‬ٞ ‫اػطاي‬
.‫ا٘ي ٔيٌطزز‬ٛ‫ فطاذ‬،‫ب اػطا ضس٘س‬ٞ‫سبيط ضي‬
)23 ‫ (ذظ‬fourth ٚ )17 ‫ (ذظ‬second ‫بي‬ٞ‫ ضي‬.‫ اسز‬ٜ‫ ضي افالٖ وطز‬ٝ‫) س‬14-26 ‫ط‬ٛ‫ (ذغ‬main ‫سبثـ‬
‫ط يه اظ‬ٞ ٜ‫ سبظ٘س‬.‫) يه ضي ٔحّي اسشبسيه اسز‬18 ‫ (ذظ‬third ‫ ضي‬ٚ ٜ‫ز‬ٛ‫ٔبسيه ٔحّي ث‬ٛ‫بي اس‬ٞ‫ضي‬
‫بي‬ٞ‫ ضي‬ٜ‫س‬ٙٙ‫زو‬ٛ‫ ٘بث‬.‫ز‬ٛ‫ا٘ي ٔيض‬ٛ‫ فطاذ‬ٜ‫ ضي زض آٖ افالٖ ضس‬ٝ‫اي و‬ٝ‫ ٘مغ‬ٝ‫ٍبْ ضسيسٖ اػطا ث‬ٙٞ ٝ‫ب ث‬ٞ‫ايٗ ضي‬
‫ ضي‬ٝ‫ى‬ٙ‫ ثسِيُ اي‬.‫ ثبضس‬ٜ‫ ضسيس‬main ‫بي‬ٟ‫ ا٘ش‬ٝ‫ اػطا ث‬ٝ‫٘س و‬ٛ‫ا٘ي ٔيض‬ٛ‫ ظٔب٘ي فطاذ‬second ‫ سذس‬ٚ fourth
‫ ضي‬ٜ‫س‬ٙٙ‫زو‬ٛ‫ لجُ اظ ٘بث‬third ‫ ضي‬ٜ‫س‬ٙٙ‫زو‬ٛ‫ ٘بث‬.‫ ثبلي ٔئب٘س‬ٝٔ‫ ثط٘ب‬ٕٝ‫ سب ظٔبٖ ذبس‬،‫ اسشبسيه اسز‬third
.‫ا٘ي ٔيٌطزز‬ٛ‫ز ضس٘س فطاذ‬ٛ‫بي زيٍط ٘بث‬ٞ‫ سٕبْ ضي‬ٝ‫ى‬ٙ‫ أب دس اظ اي‬،first ‫سطاسطي‬
ٖ‫ا‬ٛٙ‫) ثق‬34 ‫ (ذظ‬seventh ٚ )32 ‫ (ذظ‬fifth ،‫ اسز‬ٜ‫ ضي افالٖ وطز‬ٝ‫) س‬29-36 ‫ط‬ٛ‫ (ذغ‬create ‫سبثـ‬
seventh ‫بي‬ٞ‫ ضي‬ٜ‫س‬ٙٙ‫زو‬ٛ‫ ٘بث‬.‫اٖ يه ضي اسشبسيه ٔحّي‬ٛٙ‫ ) ثق‬33 ‫ (ذظ‬sixth ٚ ‫ٔبسيه ٔحّي‬ٛ‫بي اس‬ٞ‫ضي‬

‫ اسشبسيه اسز سب‬sixth ٝ‫ى‬ٙ‫ ثسِيُ اي‬.‫ ٔيدصيطز‬ٕٝ‫ ذبس‬create ٝ‫٘س ظٔب٘يى‬ٛ‫ا٘ي ٔيض‬ٛ‫ فطاذ‬fifth ‫ سذس‬ٚ
‫ أب‬،‫ز‬ٛ‫ا٘ي ٔيض‬ٛ‫ فطاذ‬first ٚ third ٜ‫س‬ٙٙ‫زو‬ٛ‫ لجُ اظ ٘بث‬sixth ٜ‫س‬ٙٙ‫زو‬ٛ‫ ٘بث‬.‫ ثبلي ٔئب٘س‬ٝٔ‫ ثط٘ب‬ٕٝ‫ظٔبٖ ذبس‬
.‫ز‬ٛ‫ز ٔيض‬ٛ‫بي زيٍط ٘بث‬ٞ‫زي سٕبْ ضي‬ٛ‫دس اظ ٘بث‬
1 // Fig. 9.13: fig09_13.cpp
2 // Demonstrating the order in which constructors and
3 // destructors are called.
4 #include <iostream>

www.yourshop.4kia.ir
www.Booknama.com

I ‫بخش‬:‫نگاهي عميقتر‬:‫كالسها‬ ______________  622


‫فصل نهم‬

5 using std::cout;
6 using std::endl;
7
8 #include "CreateAndDestroy.h" // include CreateAndDestroy class definition
9
10 void create( void ); // prototype
11
12 CreateAndDestroy first( 1, "(global before main)" ); // global object
13
14 int main()
15 {
16 cout << "\nMAIN FUNCTION: EXECUTION BEGINS" << endl;
17 CreateAndDestroy second( 2, "(local automatic in main)" );
18 static CreateAndDestroy third( 3, "(local static in main)" );
19
20 create(); // call function to create objects
21
22 cout << "\nMAIN FUNCTION: EXECUTION RESUMES" << endl;
23 CreateAndDestroy fourth( 4, "(local automatic in main)" );
24 cout << "\nMAIN FUNCTION: EXECUTION ENDS" << endl;
25 return 0;
26 } // end main
27
28 // function to create objects
29 void create( void )
30 {
31 cout << "\nCREATE FUNCTION: EXECUTION BEGINS" << endl;
32 CreateAndDestroy fifth( 5, "(local automatic in create)" );
33 static CreateAndDestroy sixth( 6, "(local static in create)" );
34 CreateAndDestroy seventh( 7, "(local automatic in create)" );
35 cout << "\nCREATE FUNCTION: EXECUTION ENDS" << endl;
36 } // end function create
Object 1 constructor runs (global before main)
MAIN FUNCTION: EXECUTION BEGINS
Object 2 constructor runs (local automatic in main)
Object 3 constructor runs (local static in main)
CREATE FUNCTION: EXECUTION BEGINS
Object 5 constructor runs (local automatic in create)
Object 6 constructor runs (local static in create)
Object 7 constructor runs (local automatic in create)

CREATE FUNCTION: EXECUTION ENDS


Object 7 destructor runs (local automatic in create)
Object 5 destructor runs (local automatic in create)
MAIN FUNCTION: EXECUTION RESUMES
Object 4 constructor runs (local automatic in main)
MAIN FUNCTION: EXECUTION ENDS
Object 4 destructor runs (local automatic in main)
Object 2 destructor runs (local automatic in main)
Object 6 destructor runs (local static in create)
Object 3 destructor runs (local static in main)
Object 1 destructor runs (global before main)
.‫ | ترتية فراذَاًي سازًسُّا ٍ ًاتَزكٌٌسُّا‬9-13 ‫شكل‬
private َ‫ ترگشت زازى يك هراجعِ تِ زازُ عض‬: Time ‫ هثحج آهَزشي كالس‬9-9
‫ا٘س زض سٕز چخ يه فجبضر‬ٛ‫ ٔيس‬،ٚ‫ط‬ٙ‫ اظ اي‬ٚ ٜ‫ز‬ٛ‫ يه ضي ٘بْ ٔسشقبض ثطاي ٘بْ ضي ث‬ٝ‫ ث‬ٝ‫يه ٔطاػق‬
‫س ٔمساضي‬ٙ٘‫ا‬ٛ‫ ٔيس‬ٚ ‫س‬ٙ‫سش‬ٞ lvalue ‫ثي دصيطاي ٘مص‬ٛ‫ب ثر‬ٞٝ‫ ٔطاػق‬،ٝٙ‫ زض ايٗ ظٔي‬.‫ز‬ٛ‫ ض‬ٝ‫سرػيع ثىبض ٌطفش‬
‫ اظ والسي اسز‬public ٛ‫) زاضشٗ يه سبثـ فض‬ٝ٘‫ اظ ايٗ لبثّيز (ٔشبسفب‬ٜ‫ش اسشفبز‬ٚ‫ يه ض‬.‫س‬ٙٙ‫ضا زضيبفز و‬

www.yourshop.4kia.ir
www.Booknama.com

622‫________________ فصل نهم‬ I ‫بخش‬:‫نگاهي عميقتر‬:‫كالسها‬

‫ اٌط سبثقي يه‬ٝ‫يس و‬ٙ‫ زلز و‬.‫س‬ٞ‫ اظ آٖ والس ثطٌطز ٔيز‬private ٜ‫ زاز‬ٛ‫ يه فض‬ٝ‫ ث‬ٝ‫ يه ٔطاػق‬ٝ‫و‬
.‫ وطز‬ٜ‫ اغالحدصيط اسشفبز‬lvalue ‫اٖ يه‬ٛٙ‫ف‬ٝ‫اٖ ث‬ٛ‫ ٕ٘يس‬ٝ‫ اظ آٖ ٔطاػق‬،‫س‬ٞ‫( ثطٌطز ز‬const) ‫ طبثز‬ٝ‫ٔطاػق‬
ٜ‫ ضس‬ٜ‫) اسشفبز‬9-15 ٚ 9-14 ُ‫ (ضى‬Time ٜ‫ ضس‬ٜ‫ اظ يه والس سبز‬9-14 ‫ اِي‬9-16 ‫بي‬ُٞ‫ ضى‬ٝٔ‫زض ثط٘ب‬
ٜ‫ (افالٖ ضس‬badSetHour ٛ‫ ثب سبثـ فض‬private ٛ‫ فض‬ٜ‫ يه زاز‬ٝ‫ ث‬ٝ‫ ثطضسي ثطٌطز زازٖ يه ٔطاػق‬ٝ‫سب ث‬
‫الـ ثطٌطز‬ٚ ‫ زض‬.‫ز‬ٛ‫ ض‬ٝ‫) دطزاذش‬29-33 ‫ط‬ٛ‫ اظ ذغ‬9-15 ُ‫ زض ضى‬ٜ‫ سقطيف ضس‬ٚ 15 ‫ اظ ذظ‬9-14 ُ‫زض ضى‬
ٜ‫ زاز‬ٛ‫اٖ ٘بْ ػب٘طيٗ ثطاي فض‬ٛٙ‫ ثق‬badSetHour ٛ‫ا٘ي سبثـ فض‬ٛ‫اي سجت فطاذ‬ٝ‫يٗ ٔطاػق‬ٙ‫زازٖ چ‬
private ٜ‫ زاز‬ٛ‫ زض آٖ فض‬ٝ‫ وطز و‬ٜ‫ضي اسشفبز‬ٚ‫ط ض‬ٞ ٝ‫ا٘ي سبثـ ث‬ٛ‫اٖ اظ فطاذ‬ٛ‫ ٔي س‬.‫س‬ٙ‫ ٔيو‬hour ‫غي‬ٛ‫ذػ‬
ٚ‫ط‬ٙ‫ اظ اي‬،‫ز‬ٛ‫ ض‬ٝ‫ زض يه فجبضر سرػيع ثىبض ٌطفش‬lvalue ‫اٖ يه‬ٛٙ‫ا٘س حشي ثق‬ٛ‫غي) ٔيس‬ٛ‫(ذػ‬
‫س‬ٙٙ‫ دبن و‬ٜ‫ا‬ٛ‫ض زِر‬ٛ‫ والس ضا ثغ‬private ٜ‫ز سب زاز‬ٛ‫س ث‬ٙٞ‫ا‬ٛ‫بي والس لبزض ذ‬ٜٞ‫يسٌيط٘س‬ٚ‫سط‬
‫سظ سبثقي‬ٛ‫ س‬private ٜ‫ زاز‬ٝ‫ٌط ث‬ٜ‫ يه اضبض‬ٝ‫ضسيى‬ٛ‫ا٘س زض غ‬ٛ‫ٕيٗ ٔطىُ ٔيس‬ٞ ٝ‫يس و‬ٙ‫ و‬ٝ‫ػ‬ٛ‫ س‬.)‫(زسشىبضي‬
.‫س‬ٞ‫ ضخ ز‬،‫ز‬ٛ‫ ض‬ٜ‫ثطٌطز زاز‬
1 // Fig. 9.14: Time.h
2 // Declaration of class Time.
3 // Member functions defined in Time.cpp
4
5 // prevent multiple inclusions of header file
6 #ifndef TIME_H
7 #define TIME_H
8
9 class Time
10 {
11 public:
12 Time( int = 0, int = 0, int = 0 );
13 void setTime( int, int, int );
14 int getHour();
15 int &badSetHour( int ); // DANGEROUS reference return
16 private:
17 int hour;
18 int minute;
19 int second;
20 }; // end class Time
21
22 #endif
.private َ‫ترگشت زازى يك هراجعِ تِ زازُ عض‬ | 9-14 ‫شكل‬
1 // Fig. 9.15: Time.cpp
2 // Member-function definitions for Time class.
3 #include "Time.h" // include definition of class Time
4
5 // constructor function to initialize private data;
6 // calls member function setTime to set variables;
7 // default values are 0 (see class definition)
8 Time::Time( int hr, int min, int sec )
9 {
10 setTime( hr, min, sec );
11 } // end Time constructor
12
13 // set values of hour, minute and second
14 void Time::setTime( int h, int m, int s )
15 {
16 hour = ( h >= 0 && h < 24 ) ? h : 0; // validate hour
17 minute = ( m >= 0 && m < 60 ) ? m : 0; // validate minute
18 second = ( s >= 0 && s < 60 ) ? s : 0; // validate second

www.yourshop.4kia.ir
www.Booknama.com

I ‫بخش‬:‫نگاهي عميقتر‬:‫كالسها‬ ______________  622


‫فصل نهم‬

19 } // end function setTime


20
21 // return hour value
22 int Time::getHour()
23 {
24 return hour;
25 } // end function getHour
26
27 // POOR PROGRAMMING PRACTICE:
28 // Returning a reference to a private data member.
29 int &Time::badSetHour( int hh )
30 {
31 hour = ( hh >= 0 && hh < 24 ) ? hh : 0;
32 return hour; // DANGEROUS reference return
33 } // end function badSetHour
.private َ‫ | ترگشت زازى يك هراجعِ تِ يك زازُ عض‬9-15 ‫شكل‬
ٜ‫) افالٖ ضس‬15 ‫ (ذظ‬hourRef ْ‫ب‬ٙ‫ ث‬ٝ‫ يه ٔطاػق‬ٚ )12 ‫ (ذظ‬t ْ‫ب‬ٙ‫ ث‬Time ‫ يه ضي‬9-16 ُ‫ ضى‬ٝٔ‫زض ثط٘ب‬
‫ ٔمساض‬17 ‫ ذظ‬.‫ز‬ٛ‫ ٔيض‬ٝ‫ِي‬ٚ‫ي ا‬ٞ‫ ٔمساضز‬t.badSetHour(20) ‫ا٘ي‬ٛ‫سظ فطاذ‬ٛ‫ ثطٌطشي س‬ٝ‫ ثب ٔطاػق‬ٝ‫اسز و‬
‫يژٌي‬ٚ hourRef ٍٝ٘ٛ‫ چ‬ٝ‫ز و‬ٛ‫ ٔيض‬ٜ‫ ثب ايٗ فُٕ ٘طبٖ زاز‬.‫س‬ٞ‫ ضا ٘طبٖ ٔيز‬hourRef ‫ٔسشقبض‬
‫ والس زسشطسي‬private ٜ‫ زاز‬ٝ‫ ٘جبيسشي ث‬main ‫ز زض‬ٛ‫ػ‬ٛٔ ‫ فجبضار‬،‫ اسز‬ٝ‫سبظي والس ضا ضىسش‬ِٝٛ‫وذس‬
)‫ (يه ٔمساض ٘بٔقشجط‬ٜ‫ وطز‬ٜ‫ اسشفبز‬30 ‫ ثب‬hour ‫ؾيٓ ٔمساض‬ٙ‫ اظ ٘بْ ٔسشقبض ثطاي س‬18 ‫ ذظ‬،‫ سذس‬.‫س‬ٙ‫ ثبض‬ٝ‫زاضش‬
ً‫القب‬ٚ hourRef ٝ‫ ٔمساض سرػيعي ث‬ٝ‫ى‬ٙ‫ ضا ثطاي ٕ٘بيص اي‬getHour ‫سظ سبثـ‬ٛ‫ ٔمساض ثطٌطشي س‬19 ‫ ذظ‬ٚ
‫ز سبثـ‬ٛ‫ا٘ي ذ‬ٛ‫ اظ فطاذ‬23 ‫ ذظ‬،ْ‫ سطا٘ؼب‬.‫ضز‬ٚ‫ ٕ٘بيص زض ٔيآ‬ٝ‫ ث‬،‫ اسز‬ٜ‫ ضا سغييط زاز‬t ‫ زض ضي‬private ٜ‫زاز‬
‫سظ‬ٛ‫ ثطٌطشي س‬ٝ‫ ٔطاػق‬ٝ‫ (يه ٔمساض ٘بٔقشجط زيٍط) ث‬74 ٚ ٜ‫ وطز‬ٜ‫ اسشفبز‬lvalue ‫اٖ يه‬ٛٙ‫ ثق‬badSetHour
.‫س‬ٞ‫سبثـ سرػيع ٔيز‬
1 // Fig. 9.16: fig09_16.cpp
2 // Demonstrating a public member function that
3 // returns a reference to a private data member.
4 #include <iostream>
5 using std::cout;
6 using std::endl;
7
8 #include "Time.h" // include definition of class Time
9
10 int main()
11 {
12 Time t; // create Time object
13
14 // initialize hourRef with the reference returned by badSetHour
15 int &hourRef = t.badSetHour( 20 ); // 20 is a valid hour
16
17 cout << "Valid hour before modification: " << hourRef;
18 hourRef = 30; // use hourRef to set invalid value in Time object t
19 cout << "\nInvalid hour after modification: " << t.getHour();
20
21 // Dangerous: Function call that returns
22 // a reference can be used as an lvalue!
23 t.badSetHour( 12 ) = 74; // assign another invalid value to hour
24
25 cout << "\n\n*************************************************\n"
26 << "POOR PROGRAMMING PRACTICE!!!!!!!!\n"
27 << "t.badSetHour( 12 ) as an lvalue, invalid hour: "
28 << t.getHour()
29 << "\n*************************************************" << endl;
30 return 0;
31 } // end main

www.yourshop.4kia.ir
www.Booknama.com

622‫________________ فصل نهم‬ I ‫بخش‬:‫نگاهي عميقتر‬:‫كالسها‬

Valid hour before modification: 20


Invalid hour after modification: 30

*************************************** **********
POOR PROGRAMMING PRACTICE!!!!!!!!
t.badSetHour( 12 ) as an lvalue, invalid hour: 74
*************************************************
.private ُ‫ | ترگشت زازى يك هراجعِ تِ يك عضَ زاز‬9-16 ‫شكل‬
ٝ‫ ٘شيؼ‬ٝ‫ ث‬ٝ‫ ٔمساض سرػيع يبفش‬ٝ‫ى‬ٙ‫ ضا ثطاي ٕ٘بيص اي‬getHour ‫سظ سبثـ‬ٛ‫ ٔؼسزاً ٔمساض ثطٌطشي س‬28 ‫ذظ‬
.‫ضز‬ٚ‫ ٕ٘بيص زض ٔيآ‬ٝ‫ ث‬،‫ اسز‬ٜ‫ ضا سغييط زاز‬t ‫ زض ضي‬private ٜ‫ زاز‬23 ‫ا٘ي سبثـ زض ذظ‬ٛ‫فطاذ‬
Memberwise ‫ ترصيص‬9-11
‫ض‬ٛ‫ ثغ‬.‫ وطز‬ٜ‫ؿ اسشفبز‬ٛ٘ ٖ‫ٕب‬ٞ ‫ ضي زيٍط اظ‬ٝ‫اٖ اظ فٍّٕط سرػيع (=) ثطاي سرػيع يه ضي ث‬ٛ‫ٔيس‬
‫ اظ ضي زض‬ٜ‫ زاز‬ٛ‫ط فض‬ٞ ،‫ضر ٔيٌيطز‬ٛ‫ غ‬memberwise ‫سظ سرػيع‬ٛ‫يٗ سرػيػي س‬ٙ‫ چ‬،‫ديصفطؼ‬
‫ زض سٕز چخ فٍّٕط‬ٝ‫ زض ضي لطاض ٌطفش‬ٜ‫ زاز‬ٛ‫ٕبٖ فض‬ٞ ٝ‫ ث‬ٝ٘‫ض ػساٌب‬ٛ‫سٕز ضاسز فٍّٕط سرػيع ثغ‬
َ‫ زض ايٗ ٔظب‬ٜ‫ ثطاي اسشفبز‬Date ‫ والس‬9-18 ٚ 9-17 ‫بي‬ُٞ‫ زض ضى‬.‫ز‬ٛ‫ ٔيض‬ٜ‫ ا٘شسبة زاز‬،‫سرػيع‬
date1 ٜ‫ ثطاي ا٘شسبة افضبي زاز‬memberwie ‫ اظ سرػيع‬9-19 ُ‫ اظ ضى‬20 ‫ زض ذظ‬.‫ اسز‬ٜ‫سقطيف ضس‬
.‫ اسز‬ٜ‫ ضس‬ٜ‫ اسشفبز‬Date ‫ اظ والس‬date2 ‫بؽط‬ٙ‫ ٔش‬ٜ‫ افضبي زاز‬ٝ‫ ث‬Date ‫اظ والس‬
1 // Fig. 9.17: Date.h
2 // Declaration of class Date.
3 // Member functions are defined in Date.cpp
4
5 // prevent multiple inclusions of header file
6 #ifndef DATE_H
7 #define DATE_H
8
9 // class Date definition
10 class Date
11 {
12 public:
13 Date( int = 1, int = 1, int = 2000 ); // default constructor
14 void print();
15 private:
16 int month;
17 int day;
18 int year;
19 }; // end class Date
20
21 #endif
.Date ‫ | فايل سرآيٌس كالس‬9-17 ‫شكل‬
1 // Fig. 9.18: Date.cpp
2 // Member-function definitions for class Date.
3 #include <iostream>
4 using std::cout;
5 using std::endl;
6
7 #include "Date.h" // include definition of class Date from Date.h
8
9 // Date constructor (should do range checking)
10 Date::Date( int m, int d, int y )
11 {
12 month = m;
13 day = d;
14 year = y;

www.yourshop.4kia.ir
www.Booknama.com

I ‫بخش‬:‫نگاهي عميقتر‬:‫كالسها‬ ______________  622


‫فصل نهم‬

15 } // end constructor Date


16
17 // print Date in the format mm/dd/yyyy
18 void Date::print()
19 {
20 cout << month << '/' << day << '/' << year;
21 } // end function print
.Date ‫ | تعريف عضَ زازُ كالس‬9-18 ‫شكل‬
1 // Fig. 9.19: fig09_19.cpp
2 // Demonstrating that class objects can be assigned
3 // to each other using default memberwise assignment.
4 #include <iostream>
5 using std::cout;
6 using std::endl;
7
8 #include "Date.h" // include definition of class Date from Date.h
9
10 int main()
11 {
12 Date date1( 7, 4, 2004 );
13 Date date2; // date2 defaults to 1/1/2000
14
15 cout << "date1 = ";
16 date1.print();
17 cout << "\ndate2 = ";
18 date2.print();
19
20 date2 = date1; // default memberwise assignment
21
22 cout << "\n\nAfter default memberwise assignment, date2 = ";
23 date2.print();
24 cout << endl;
25 return 0;
26 } // end main
date1 = 7/4/2004
date2 = 1/1/2000
After default memberwise assignment, date2 = 7/4/2004
.memberwise ‫ | ترصيص‬9-19 ‫شكل‬
‫ اظ‬day ٛ‫ فض‬ٝ‫ ث‬date1 ‫ اظ‬day ٛ‫ فض‬،date2 ‫ اظ‬month ٛ‫ فض‬ٝ‫ ث‬date1 ‫ اظ‬month ٛ‫ فض‬،‫ضز‬ٛٔ ٗ‫زض اي‬
Date ٜ‫ سبظ٘س‬ٝ‫يس و‬ٙ‫ و‬ٝ‫ػ‬ٛ‫ س‬.‫ سرػيع ٔييبثس‬date2 ‫ اظ‬year ٛ‫ فض‬ٝ‫ ث‬date1 ‫ اظ‬year ٛ‫ فض‬ٚ date2
.‫يچ ثرطي ثطاي ثطضسي ذغب ٘يسز‬ٞ ‫ي‬ٚ‫حب‬
َ‫يٗ اضسب‬ٙ‫ چ‬.‫٘س‬ٛ‫ ض‬ٜ‫اثـ ثطٌطز زاز‬ٛ‫س اظ س‬ٙ٘‫ا‬ٛ‫ ٔيس‬ٚ ٜ‫بي سبثـ اضسبَ ضس‬ٖٞ‫ٔب‬ٌٛ‫اٖ آض‬ٛٙ‫س ثق‬ٙ٘‫ا‬ٛ‫ب ٔيس‬ٞ‫ضي‬
‫ زض آٖ يه وذي اظ ضي اضسبَ يب‬ٝ‫ضر ٔيٌيطز و‬ٛ‫ش اضسبَ ثب ٔمساض غ‬ٚ‫ ض‬ٝ‫ض ديصفطؼ ث‬ٛ‫ ثطٌطشي ثغ‬ٚ
‫ ثطاي وذي‬ٜ‫س‬ٙٙ‫ وذي و‬ٜ‫ اظ يه سبظ٘س‬ٚ ‫ يه ضي ػسيس ايؼبز‬C++ ،‫يٗ حبِشي‬ٙ‫ زض چ‬.‫ز‬ٛ‫ ٔيض‬ٜ‫ثطٌطز زاز‬
ٜ‫س‬ٙٙ‫ وذيو‬ٜ‫ وبٔذبيّط يه سبظ٘س‬،‫ط والسي‬ٞ ‫ ثطاي‬.‫س‬ٙ‫ ٔيو‬ٜ‫ ضي ػسيس اسشفبز‬ٝ‫ٔمساض ضي اغّي ث‬
‫س‬ٙ٘‫ٕب‬ٞ .‫س‬ٙ‫بؽط زض ضي ػسيس وذي ٔيو‬ٙ‫ ٔش‬ٛ‫ فض‬ٝ‫ اظ ضي اغّي ضا ث‬ٛ‫ط فض‬ٞ ٝ‫ و‬ٜ‫ديصفطؼ سساضن زيس‬
‫ي‬ٚ‫ حب‬ٝ‫ ثب والسي و‬ٜ‫ٍبْ اسشفبز‬ٙٞ ٝ‫س ث‬ٙ٘‫ا‬ٛ‫ ٔيس‬ٜ‫س‬ٙٙ‫بي وذي و‬ٜٞ‫ سبظ٘س‬،memberwise ‫سرػيع‬
‫ؿ‬ٛ‫ض‬ٛٔ ٗ‫ ثطضسي اي‬ٝ‫ٓ ث‬ٞ‫ زض فػُ يبظز‬.‫٘س‬ٛ‫ ٔطىُسبظ ض‬،‫س‬ٙ‫سش‬ٞ ‫بٔيىي‬ٙ‫ زي‬ٜ‫ اذص ضس‬ٝ‫بي ثب حبفؾ‬ٞ‫ٌط‬ٜ‫اضبض‬
.‫يٓ دطزاذز‬ٞ‫ا‬ٛ‫ذ‬

www.yourshop.4kia.ir
‫‪www.Booknama.com‬‬

‫________________ فصل نهم‪622‬‬ ‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬

‫‪ 9-11‬استفازُ هجسز از ًرمافسار‬


‫سقي افطازي و‪ ٝ‬سطٌطْ ٘‪ٛ‬ضشٗ ثط٘بٔ‪ٞٝ‬بي ضيٌطا ‪ٞ‬سش‪ٙ‬س‪ ،‬ديبز‪ٜ‬سبظي والس‪ٞ‬بي س‪ٛ‬زٔ‪ٙ‬س ‪ ٚ‬وبضثطزيسط‬
‫اسز‪ .‬اٍ٘يع‪ ٜ‬ثسيبض چطٍٕيطي ‪ٚ‬ػ‪ٛ‬ز زاضز و‪ ٝ‬اظ والس‪ٞ‬بي سساضن زيس‪ ٜ‬ضس‪ ٜ‬س‪ٛ‬سظ ػبٔق‪ٞٝ‬بي‬
‫ثط٘بٔ‪ٛ٘ٝ‬يسي اسشفبز‪ ٜ‬ض‪ٛ‬ز‪ .‬سقسازي ظيبزي اظ وشبثرب٘‪ٞٝ‬بي والس ‪ٚ‬ػ‪ٛ‬ز زاض٘س ‪ ٚ‬ثطذي زض سطسبسط ػ‪ٟ‬بٖ زض‬
‫حبَ ايؼبز ٔيثبض‪ٙ‬س‪ .‬ثبيسشي ٘طْافعاض اظ ‪ٕٞ‬بٖ آغبظ وبض‪ ،‬ذ‪ٛ‬ش سقطيف‪ ،‬ثسلز سسز ضس‪ ،ٜ‬ثر‪ٛ‬ثي ٔسش‪ٙ‬س‬
‫ضس‪ ،ٜ‬لبثُ حُٕ ثب وبضايي ثبال ‪ ٚ‬اظ وبٔذ‪٘ٛ‬ز‪ٞ‬بي لبثُ زسشطس ايؼبز ضس‪ ٜ‬ثبضس‪ .‬چ‪ٙ‬يٗ ٘طْافعاضي ثب لبثّيز‬
‫اسشفبز‪ٔ ٜ‬ؼسز سطفز ٘طْافعاض‪ٞ‬بي لسضسٕ‪ٙ‬س ‪ ٚ‬ثب ويفيز ثبال ضا افعايص ٔيز‪ٞ‬س‪ .‬س‪ٛ‬سق‪ ٝ‬سطيـ ثط٘بٔ‪ٞٝ‬بي‬
‫وبضثطزي )‪ (RAD‬ث‪ٛ‬اسغ‪ٔ ٝ‬ىب٘يعْ لبثُ اسشفبز‪ ٜ‬ث‪ٛ‬زٖ ٔؼسز اػعاء ا‪ٕٞ‬يز ذبغي ديسا وطز‪ ٜ‬اسز‪.‬‬
‫ٔسبئُ فّٕي ثبيس حُ ض‪٘ٛ‬س‪ ،‬أب لجُ اظ آٖ ثبيس ث‪ ٝ‬ثطضسي زليك ٔسبئُ اسشفبز‪ٔ ٜ‬ؼسز اظ ٘طْافعاض دطزاذز‪.‬‬
‫٘يبظ ث‪ ٝ‬ف‪ٟ‬طسز وطزٖ عطح‪ ،‬اذص ٔؼ‪ٛ‬ظ عطح‪ٞ‬ب‪ٔ ،‬ىب٘يعْ‪ٞ‬بي حفبؽشي ثطاي اعٕي‪ٙ‬بٖ اظ اي‪ٙ‬ى‪ ٝ‬وذي‪ٞ‬بي اغّي‬
‫اظ والس‪ٞ‬ب ٔقي‪ٛ‬ة ‪ ٚ‬ذطاة س‪ٟ‬ي‪٘ ٝ‬ر‪ٛ‬ا‪ٞ‬س ضس‪ .‬س‪ٛ‬غيف عطح‪ٞ‬ب ضا زاضيٓ سب عطاحبٖ سيسشٓ‪ٞ‬بي ػسيس ثش‪ٛ‬ا٘س‬
‫ث‪ ٝ‬آسب٘ي سقييٗ و‪ٙٙ‬س و‪ ٝ‬آيب ضي‪ٞ‬بي ٔ‪ٛ‬ػ‪ٛ‬ز ٔيس‪ٛ‬ا٘‪ٙ‬س ٘يبظ آ٘‪ٟ‬ب ضا ثطآ‪ٚ‬ضز‪ ٜ‬سبظ٘س‪ٕٞ .‬چ‪ٙ‬يٗ ٘يبظ ث‪ٔ ٝ‬ىب٘يعْ‬
‫ٔط‪ٚ‬ض زاضيٓ سب والس‪ٞ‬بي ٔ‪ٛ‬ػ‪ٛ‬ز ‪ ٚ‬زض زسشطس ضا ٔطرع وطز‪٘ ٚ ٜ‬طبٖ ز‪ٞ‬س و‪ ٝ‬وساْ والس ث‪ ٝ‬ذ‪ٛ‬اسز‬
‫عطاح ٘طْافعاض ٘عزيىشط اسز‪.‬‬
‫‪ 9-12‬هثحج آهَزشي هٌْسسي ًرمافسار‪ :‬شرٍع ترًاهًَِيسي كالسّاي سيستن ‪ATM‬‬
‫زض ثرص‪ٞ‬بي ٔجحض آٔ‪ٛ‬ظضي ٔ‪ٟٙ‬سسي ٘طْافعاض زض فػُ‪ٞ‬بي يه اِي ‪ٞ‬فشٓ‪ ،‬ث‪ٔ ٝ‬قطفي اغ‪ٔ ٚ َٛ‬فب‪ٞ‬يٓ‬
‫ث‪ٙ‬يبزيٗ ضيٌطا ‪ ٚ‬عطاحي ضيٌطا ثط ض‪ٚ‬ي سيسشٓ ‪ ATM‬دطزاذش‪ ٝ‬ضس‪ .‬زض اثشساي ايٗ فػُ ‪ ٓٞ‬ث‪ ٝ‬ثطضسي‬
‫ثطذي اظ ػعئيبر ثط٘بٔ‪ٛ٘ٝ‬يسي والس‪ٞ‬ب زض ‪ C++‬دطزاذشيٓ‪ .‬حبَ ضط‪ٚ‬ؿ ث‪ ٝ‬ديبز‪ٜ‬سبظي عطح ضيٌطاي ذ‪ٛ‬ز‬
‫زض ‪ٔ C++‬يو‪ٙ‬يٓ‪ .‬زض ا٘ش‪ٟ‬بي ايٗ ثرص‪ ،‬ضٕب ضا ثب ٘ح‪ ٜٛ‬سجسيُ زيبٌطاْ‪ٞ‬بي والس ث‪ ٝ‬فبيُ‪ٞ‬بي سطآي‪ٙ‬س ‪C++‬‬

‫آض‪ٙ‬ب ذ‪ٛ‬ا‪ٞ‬يٓ وطز‪ .‬زض ثرص دبيب٘ي «ٔجحض آٔ‪ٛ‬ظضي ٔ‪ٟٙ‬سسي ٘طْافعاض» (ثرص ‪ ،)13-11‬ايٗ فبيُ‪ٞ‬بي‬
‫سطآي‪ٙ‬س ضا ثطاي ‪ٕٞ‬ب‪ٍٙٞ‬ي ثب ٔف‪ ْٟٛ‬اضصثطي زض ثط٘بٔ‪ٛ٘ٝ‬يسي ضيٌطا اغالح ذ‪ٛ‬ا‪ٞ‬يٓ وطز‪.‬‬
‫رٍيت‬
‫ٔيذ‪ٛ‬ا‪ٞ‬يٓ سػطيحو‪ٙٙ‬س‪ٜٞ‬بي زسشطسي ث‪ ٝ‬افضبي والس‪ٞ‬ب ضا فطا‪ ٓٞ‬آ‪ٚ‬ضيٓ‪ .‬زض فػُ س‪ ،ْٛ‬ث‪ٔ ٝ‬قطفي‬
‫سػطيحو‪ٙٙ‬س‪ٜٞ‬بي زسشطسي ‪ private ٚ public‬دطزاذشيٓ‪ .‬ايٗ سػطيحو‪ٙٙ‬س‪ٜٞ‬ب لبثُ ض‪ٚ‬يز يب زسشطس دصيط‬
‫ث‪ٛ‬زٖ غفبر ‪ ٚ‬فّٕيبر يه ضي ضا و‪ ٝ‬زض اذشيبض ضي‪ٞ‬بي زيٍط ‪ٞ‬سش‪ٙ‬س‪ ،‬سقييٗ ٔيو‪ٙٙ‬س‪ .‬لجُ اظ اي‪ٙ‬ى‪ ٝ‬ثش‪ٛ‬ا٘يٓ‬
‫ضط‪ٚ‬ؿ ث‪ ٝ‬ديبز‪ٜ‬سبظي عطح ذ‪ٛ‬ز ٕ٘بئيٓ‪ ،‬ثبيسشي ثطضسي و‪ٙ‬يٓ و‪ ٝ‬وساْ غفبر ‪ ٚ‬فّٕيبسي اظ والس‪ٞ‬ب حبِز‬
‫‪ public‬زاض٘س ‪ ٚ‬وسأيه حبِز ‪ .private‬زض فػُ س‪ٔ ،ْٛ‬طب‪ٞ‬س‪ ٜ‬وطزيس و‪ٔ ٝ‬قٕ‪ٛ‬الً افضبي زاز‪ ٜ‬ثبيسشي‬
‫‪ private‬ثبض‪ٙ‬س ‪ ٚ‬آٖ زسش‪ ٝ‬اظ س‪ٛ‬اثـ فض‪ ٛ‬و‪ ٝ‬س‪ٛ‬سظ سط‪ٚ‬يسٌيط٘س‪ٜٞ‬ب فقبَ ٔيض‪٘ٛ‬س ثبيسشي اظ ٘‪ٛ‬ؿ ‪public‬‬

‫‪www.yourshop.4kia.ir‬‬
‫‪www.Booknama.com‬‬

‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬ ‫______________‬ ‫‪ 626‬‬


‫فصل نهم‬

‫سقييٗ ض‪٘ٛ‬س‪ .‬س‪ٛ‬اثـ فض‪ ٛ‬و‪ ٝ‬فمظ س‪ٛ‬سظ سبيط س‪ٛ‬اثـ فض‪ ٛ‬يه والس فطاذ‪ٛ‬ا٘ي ٔيٌطز٘س‪ ،‬ثق‪ٛٙ‬اٖ «س‪ٛ‬اثـ‬
‫ي‪ٛ‬سيّيشي» ض‪ٙ‬بذش‪ٔ ٝ‬يض‪٘ٛ‬س‪ ،‬ثب ايٗ ‪ٔ ،ٕٝٞ‬قٕ‪ٛ‬الً ثبيس ‪ private‬ثبض‪ٙ‬س‪ .‬ظثبٖ ‪ UML‬اظ ٘طبٍ٘ط ض‪ٚ‬يز ثطاي ٔسَ‬
‫وطزٖ ٔيعاٖ ض‪ٚ‬يز غفبر ‪ ٚ‬فّٕيبر اسشفبز‪ٔ ٜ‬يو‪ٙ‬س‪ .‬ض‪ٚ‬يز فٕ‪ٔٛ‬ي )‪ (public‬ثب لطاض زازٖ يه ٕ٘بز ػٕـ‬
‫(‪ )+‬لجُ اظ يه فّٕيبر يب غفز ض‪ٙ‬بذش‪ٔ ٝ‬يض‪ٛ‬ز‪ .‬ض‪ٚ‬يز ذػ‪ٛ‬غي (‪ ٓٞ )private‬ثب يه ٕ٘بز ٔ‪ٙ‬في (‪)-‬‬
‫سقييٗ ٔيٌطزز‪ .‬زض ضىُ‪ 9-11‬زيبٌطاْ والس ثب افٕبَ ٘طبٍ٘ط‪ٞ‬بي ض‪ٚ‬يز ث‪ ٝ‬ض‪ٚ‬ظ ضس‪ ٜ‬اسز‪٘] .‬ىش‪ :ٝ‬زض‬
‫ضىُ‪ 9-11‬سٕبْ دبضأشط‪ٞ‬بي فّٕيبسي ِحبػ ٘طس‪ ٜ‬اسز ‪ ٚ‬ايٗ وبٔالً فبزي اسز‪ .‬افع‪ٚ‬زٖ ٘طبٍ٘ط‪ٞ‬بي ض‪ٚ‬يز‬
‫سبطيطي زض دبضأشط‪ٞ‬بي ٔسَ ضس‪ ٜ‬زض زيبٌطاْ‪ٞ‬بي والس زض ضىُ‪ٞ‬بي ‪ 6-11‬اِي ‪٘ 6-15‬ساضز‪[.‬‬
‫ّسايت‬
‫‪UML‬‬ ‫لجُ اظ اي‪ٙ‬ى‪ ٝ‬ضط‪ٚ‬ؿ ث‪ ٝ‬ديبز‪ٜ‬سبظي عطح ذ‪ٛ‬ز ثب ‪ C++‬و‪ٙ‬يٓ‪ ،‬ث‪ٔ ٝ‬قطفي يىي زيٍط اظ ٕ٘بز‪ٞ‬بي‬
‫ٔيدطزاظيٓ‪ .‬زيبٌطاْ والس زض ضىُ‪ 9-11‬ثب زض اذشيبض ٌطفشٗ فّص‪ٞ‬بي ‪ٞ‬سايز ث‪ٕٞ ٝ‬طا‪ ٜ‬ذغ‪ٛ‬ط اضسجبعي‬
‫زض ٔيبٖ والس‪ٞ‬بي سيسشٓ ‪ ATM‬ث‪ ٝ‬ض‪ٚ‬ظ ضس‪ ٜ‬اسز‪ .‬فّص‪ٞ‬بي ‪ٞ‬سايز ٘طبٖ ٔيز‪ٙٞ‬س و‪ ٝ‬وساْ ػ‪ٟ‬ز‬
‫اضسجبعي ضا ٔيس‪ٛ‬اٖ عي وطز و‪ ٝ‬ثط دبي‪ٔ ٝ‬سَ ‪ٕٞ‬ىبضي ‪ ٚ‬زيبٌطاْ‪ٞ‬بي س‪ٛ‬اِي اسز (ثرص ‪ .)7-11‬ث‪ٍٙٞ ٝ‬بْ‬
‫ديبز‪ٜ‬سبظي يه سيسشٓ عطاحي ضس‪ ٜ‬ثب اسشفبز‪ ٜ‬اظ ‪ ،UML‬ثط٘بٔ‪ٛ٘ٝ‬يسبٖ اظ فّص‪ٞ‬بي ‪ٞ‬سايز ثطاي وٕه زض‬
‫سقييٗ اي‪ٙ‬ى‪ ٝ‬وساْ ضي‪ٞ‬ب ٘يبظ ث‪ٔ ٝ‬طاػق‪ ٝ‬يب اضبض‪ ٜ‬ث‪ ٝ‬سبيط ضي‪ٞ‬ب زاض٘س‪ ،‬اسشفبز‪ٔ ٜ‬يو‪ٙٙ‬س‪ .‬ثطاي ٔظبَ فّص‬
‫‪ٞ‬سايز و‪ ٝ‬اظ والس ‪ ATM‬ث‪ ٝ‬والس ‪ BankDatabase‬اضبض‪ٔ ٜ‬يو‪ٙ‬س ثط ايٗ ٘ىش‪ ٝ‬زالِز زاضز و‪ٝ‬‬
‫‪BankDatabase‬‬ ‫ٔي س‪ٛ‬ا٘يٓ اظ اثشسا ث‪ ٝ‬ا٘ش‪ٟ‬ب حطوز و‪ٙ‬يٓ‪ ٚ ،‬زض ٘شيؼ‪ ATM ٝ‬لبزض ث‪ ٝ‬فقبَ وطزٖ فّٕيبر‬
‫ٔيض‪ٛ‬ز‪ .‬ثب ايٗ ‪ٚ‬ػ‪ٛ‬ز‪ ،‬زض حبِيى‪ ٝ‬ضىُ‪ 9-11‬حب‪ٚ‬ي يه فّص ‪ٞ‬سايز اظ والس ‪ BankDatabase‬ث‪ٝ‬‬
‫والس ‪٘ ATM‬يسز‪ ،‬دس ‪ BankDatabase‬لبزض ث‪ ٝ‬زسشطسي ث‪ ٝ‬فّٕيبر ‪ٕ٘ ATM‬يثبضس‪ .‬زلز و‪ٙ‬يس و‪ٝ‬‬
‫‪ٚ‬اثسشٍي‪ٞ‬بي ٔ‪ٛ‬ػ‪ٛ‬ز زض يه زيبٌطاْ والس و‪ ٝ‬زاضاي فّص‪ٞ‬بي ‪ٞ‬سايز زض ‪ٞ‬ط ز‪ ٚ‬ا٘ش‪ٟ‬بي ذ‪ٛ‬ز ‪ٞ‬سش‪ٙ‬س يب‬
‫زاضاي ايٗ فّص‪ٞ‬بي ٘يسش‪ٙ‬س‪٘ ،‬طب٘س‪ٙٞ‬س‪ٞ ٜ‬سايز ز‪ ٚ‬عطف‪( ٝ‬ز‪ ٚ‬س‪ٛ‬ي‪ٔ )ٝ‬يثبض‪ٙ‬س‪.‬‬
‫شكل ‪ | 9-21‬زياگرام كالس تا ًشاًگرّاي رٍيت‪.‬‬
‫‪ٕٞ‬ب٘‪ٙ‬س زيبٌطاْ والس زض ضىُ ‪ ،3-13‬زيبٌطاْ والس زض ضىُ ‪ 9-11‬ثطاي حفؼ سبزٌي والس‪ٞ‬بي‬
‫‪ Deposit ٚ BalanceInquiry‬ضا زض ٘ؾط ٍ٘طفش‪ ٝ‬اسز‪ٞ .‬سايز افٕبَ ضس‪ ٜ‬زض ايٗ والس‪ٞ‬ب ثسيبض ث‪ٞ ٝ‬سايز‬
‫‪BalanceInquiry‬‬ ‫افٕبَ ضس‪ ٜ‬زض والس ‪٘ Withdrawal‬عزيه اسز‪ .‬اظ ثرص‪ 3-11‬ثربعط زاضيس و‪ٝ‬‬
‫زاضاي يه ضاثغ‪ ٝ‬ثب والس ‪ Screen‬اسز‪ٔ .‬يس‪ٛ‬ا٘يٓ اظ عطيك ايٗ ضاثغ‪ ٝ‬اظ والس ‪ BalanceInquiry‬ث‪ٝ‬‬
‫والس ‪ Screen‬ثطسيٓ‪ ،‬أب ٕ٘يس‪ٛ‬ا٘يٓ اظ والس ‪ Screen‬ث‪ ٝ‬والس ‪ٞ BalanceInquiry‬سايز ض‪ٛ‬يٓ‪ .‬اظ‬
‫اي‪ٙ‬ط‪ ،ٚ‬اٌط ث‪ ٝ‬سطاك ٔسَ وطزٖ والس ‪ BalanceInquiry‬زض ضىُ‪ 9-11‬ثط‪ٚ‬يٓ‪ٔ ،‬يس‪ٛ‬ا٘يٓ يه فّص‬
‫‪ٞ‬سايز زض ا٘ش‪ٟ‬بي والس ‪ Screen‬ايٗ ضاثغ‪ ٝ‬لطاض ز‪ٞ‬يٓ‪ٕٞ .‬چ‪ٙ‬يٗ ثربعط زاضيس يه والس ‪ Deposit‬ثب‬

‫‪www.yourshop.4kia.ir‬‬
‫‪www.Booknama.com‬‬

‫________________ فصل نهم‪622‬‬ ‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬

‫والس‪ٞ‬بي ‪ DepositSlot ٚ Keypad ،Screen‬ضاثغ‪ ٝ‬زاضز‪ٔ .‬يس‪ٛ‬ا٘يٓ اظ والس ‪ Deposit‬ث‪ٞ ٝ‬ط وسأيه‬
‫اظ ايٗ والس‪ٞ‬ب ‪ٞ‬سايز ض‪ٛ‬يٓ‪ ،‬أب فىس اي‪ٙ‬حبِز غبزق ٘يسز‪ .‬اظ اي‪ٙ‬ط‪ ٚ‬فّص‪ٞ‬بي ‪ٞ‬سايز ضا زض ا٘ش‪ٟ‬بي‬
‫ضاثغ‪ ٝ‬ثب ايٗ والس‪ٞ‬ب لطاض زاز‪ٜ‬ايٓ‪.‬‬
‫شكل ‪ | 9-21‬زياگرام كالس تا فلشّاي ّسايت‪.‬‬
‫پيازُسازي سيستن ‪ ATM‬از رٍي طرح ‪ UML‬آى‬
‫او‪ ٖٛٙ‬آٔبز‪ٞ ٜ‬سشيٓ سب ضط‪ٚ‬ؿ ث‪ ٝ‬ديبز‪ٜ‬سبظي سيسشٓ ‪ٕ٘ ATM‬بئيٓ‪ .‬اثشسا والس‪ٞ‬بي ٔ‪ٛ‬ػ‪ٛ‬ز زض زيبٌطاْ‪ٞ‬بي‬
‫ضىُ‪ٞ‬بي ‪ 9-11 ٚ 9-11‬ضا ث‪ ٝ‬فبيّ‪ٟ‬بي سطآي‪ٙ‬س ‪ C++‬سجسيُ ٔيو‪ٙ‬يٓ‪ .‬ايٗ وس فطض‪ ٝ‬و‪ٙٙ‬س‪« ٜ‬اسىّز» سيسشٓ‬
‫ذ‪ٛ‬ا‪ٞ‬س ث‪ٛ‬ز‪ .‬زض فػُ سيعز‪ ،ٓٞ‬فبيّ‪ٟ‬بي سطآي‪ٙ‬س ضا ثطاي ث‪ٟ‬ط‪ٌٜ‬يطي اظ ٔف‪ ْٟٛ‬اضصثطي اغالح ذ‪ٛ‬ا‪ٞ‬يٓ وطز‪.‬‬
‫ثق‪ٛٙ‬اٖ يه ٔظبَ‪ ،‬ضط‪ٚ‬ؿ ث‪ ٝ‬ايؼبز فبيُ سطآي‪ٙ‬س ٔشقّك ث‪ ٝ‬والس ‪ Withdrawal‬اظ ض‪ٚ‬ي عطح ٔ‪ٛ‬ػ‪ٛ‬ز ايٗ‬
‫والس زض ضىُ ‪ٔ 9-11‬يو‪ٙ‬يٓ‪ .‬اظ ايٗ سػ‪ٛ‬يط ثطاي سقييٗ غفبر ‪ ٚ‬فّٕيبر والس اسشفبز‪ ٜ‬و‪ٙ‬يٓ‪ .‬اظ ٔسَ‬
‫‪ UML‬زض ضىُ ‪ 9-11‬ثطاي سقييٗ ‪ٚ‬اثسشٍي‪ٞ‬بي ٔ‪ٛ‬ػ‪ٛ‬ز ٔبثيٗ والس‪ٞ‬ب اسشفبز‪ٔ ٜ‬يو‪ٙ‬يٓ‪ .‬ثطاي ‪ٞ‬ط والسي‬
‫د‪ٙ‬غ ٔطحّ‪ ٝ‬ظيط ضا ز٘جبَ ٔيو‪ٙ‬يٓ‪:‬‬
‫‪ 1‬ـ اظ ٘بْ لطاض ٌطفش‪ ٝ‬زض ثرص ا‪ َٚ‬يه والس زض زيبٌطاْ والس ثطاي سقطيف والس زض فبيُ سطآي‪ٙ‬س‬
‫اسشفبز‪ٔ ٜ‬يو‪ٙ‬يٓ (ضىُ ‪ .)9-11‬اظ زسش‪ٛ‬ضز‪ٙٞ‬س‪ٜٞ‬بي ديصدطزاظ٘س‪ #endif ٚ #define ،#ifndef ٠‬ثطاي‬
‫اػش‪ٙ‬بة اظ افٕبَ ثيص اظ يىجبض فبيُ سطآي‪ٙ‬س زض ثط٘بٔ‪ ٝ‬اسشفبز‪ ٜ‬و‪ٙ‬يس‪.‬‬
‫‪ 1‬ـ اظ غفبر ٔ‪ٛ‬ػ‪ٛ‬ز زض ثرص ز‪ ْٚ‬والس ثطاي افالٖ افضبي زاز‪ ٜ‬اسشفبز‪ ٜ‬و‪ٙ‬يس‪ .‬ثطاي ٔظبَ‪ ،‬غفبر‬
‫‪ private‬اظ والس ‪ Withdrawal‬فجبضس‪ٙ‬س اظ ‪ amount ٚ accountNumber‬و‪ ٝ‬حبغُ آٖ زض ضىُ‬
‫‪ 9-13‬آ‪ٚ‬ضز‪ ٜ‬ضس‪ ٜ‬اسز‪.‬‬
‫‪ -3‬اظ ‪ٚ‬اثسشٍي س‪ٛ‬غيف ضس‪ ٜ‬زض زيبٌطاْ والس ثطاي افالٖ ٔطاػق‪ٞٝ‬ب (يب اضبض‪ٌٜ‬ط‪ٞ‬ب زض غ‪ٛ‬ضر ٘يبظ) ث‪ٝ‬‬
‫ضي‪ٞ‬بي زيٍط اسشفبز‪ ٜ‬و‪ٙ‬يس‪ .‬ثطاي ٔظبَ‪ٔ ،‬غبثك ضىُ ‪ ،9-11‬والس ‪ٔ Withdrawal‬يس‪ٛ‬ا٘س ث‪ ٝ‬يه ضي اظ‬
‫والس ‪ ،Screen‬يه ضي اظ والس ‪ ،Keypad‬يه ضي اظ والس ‪ ٚ CashDispenser‬يه ضي اظ‬
‫والس ‪ BankDatabase‬زسشطسي زاضش‪ ٝ‬ثبضس‪ .‬والس ‪ Withdrawal‬ثبيس ٔجبزضر ث‪ ٝ‬حفؼ ‪ٙٞ‬سَ‪ٞ‬بيي‬
‫(زسشٍيط‪ )ٜ‬ث‪ ٝ‬ايٗ ضي‪ٞ‬ب و‪ٙ‬س‪ ،‬سب ديغبْ‪ٞ‬بي ث‪ ٝ‬آ٘‪ٟ‬ب اضسبَ ٕ٘بيس‪ .‬اظ اي‪ٙ‬ط‪ ٚ‬ذغ‪ٛ‬ط ‪ 19-22‬اظ ضىُ ‪9-14‬‬
‫ٔجبزضر ث‪ ٝ‬افالٖ چ‪ٟ‬بض ٔطاػق‪ ٝ‬ثق‪ٛٙ‬اٖ افضبي زاز‪ private ٜ‬وطز‪ٜ‬ا٘س‪ .‬زض ديبز‪ٜ‬سبظي ‪ Withdrawal‬زض‬
‫ضٕيٕ‪ ،G ٝ‬يه سبظ٘س‪ ٜ‬ايٗ افضبي زاز‪ ٜ‬ضا ثب ٔطاػق‪ٞٝ‬بي ث‪ ٝ‬ضي‪ٞ‬بي ‪ٚ‬القي ٔمساضز‪ٞ‬ي ا‪ِٚ‬ي‪ ٝ‬وطز‪ ٜ‬اسز‪.‬‬
‫س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬يس و‪ ٝ‬زض ذغ‪ٛ‬ط ‪ #include ،6-9‬فبيّ‪ٟ‬بي سطآي‪ٙ‬س حب‪ٚ‬ي سقبضيفي اظ والس‪ٞ‬بي ‪،Screen‬‬
‫‪ BankDatabase ٚ CashDispenser ،Keypad‬اسز‪ ،‬اظ اي‪ٙ‬ط‪ٚ‬سز و‪ٔ ٝ‬يس‪ٛ‬ا٘يٓ ٔطاػق‪ٞٝ‬بي ث‪ ٝ‬ضي‪ٞ‬بيي‬
‫اظ ايٗ والس‪ٞ‬ب زض ذغ‪ٛ‬ط ‪ 19-22‬افالٖ و‪ٙ‬يٓ‪.‬‬

‫‪www.yourshop.4kia.ir‬‬
‫‪www.Booknama.com‬‬

‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬ ‫______________‬ ‫‪ 622‬‬


‫فصل نهم‬

‫‪ -4‬اظزحبْ ايؼبز ضس‪ ٜ‬اظ ‪ٚ‬اضز وطزٖ فبيّ‪ٟ‬بي سطآي‪ٙ‬س والس‪ٞ‬بي ‪ٚ CashDispenser ،Keypad ،Screen‬‬
‫‪ BankDatabase‬زض ضىُ ‪ 9-14‬ثيص اظ ٘يبظ اسز‪ .‬والس ‪ Withdrawal‬حب‪ٚ‬ي ٔطاػق‪ٞٝ‬بي ث‪ ٝ‬ضي‪ٞ‬بي‬
‫اظ ايٗ والس‪ٞ‬ب اسز (حب‪ٚ‬ي ضي‪ٞ‬بي ‪ٚ‬القي ٘يسز) ‪ٔ ٚ‬مساض اعالفبر ٔ‪ٛ‬ضز ٘يبظ س‪ٛ‬سظ وبٔذبيّط ثطاي ايؼبز‬
‫يه ٔطاػق‪ ٝ‬ثب ايؼبز يه ضي سفب‪ٚ‬ر زاضز‪ .‬ثربعط زاضيس و‪ ٝ‬ايؼبز يه ضي ٔسشّعْ آٖ اسز و‪ ٝ‬ثطاي‬
‫وبٔذبيّط سقطيفي اظ والسي و‪٘ ٝ‬بْ والس ضا ثق‪ٛٙ‬اٖ يه ٘‪ٛ‬ؿ ػسيس سقطيف ضس‪ ٜ‬اظ س‪ٛ‬ي وبضثط ٔقطفي‬
‫ٔيو‪ٙ‬س ‪٘ ٚ‬طب٘س‪ٙٞ‬س‪ ٜ‬افضبي زاز‪ٜ‬اي اسز و‪ ٝ‬سقييٗ و‪ٙٙ‬س‪ٔ ٜ‬يعاٖ حبفؾ‪ٛٔ ٝ‬ضز ٘يبظ ثطاي آٖ ضي ‪ٞ‬سش‪ٙ‬س‪،‬‬
‫سساضن زيس‪ ٜ‬ثبضيس‪ .‬ثب ايٗ ‪ ،ٕٝٞ‬افالٖ يه ٔطاػق‪( ٝ‬يب اضبض‪ٌٜ‬ط) ث‪ ٝ‬يه ضي‪ ،‬فمظ ٔسشّعْ آٖ اسز و‪ٝ‬‬
‫وبٔذبيّط ثسا٘س و‪ ٝ‬ضي ي اظ والس ٔ‪ٛ‬ػ‪ٛ‬ز اسز ‪٘ ٚ‬يبظي ث‪ ٝ‬زا٘سشٗ سبيع ضي ٘ساضز‪ٞ .‬ط ٔطاػق‪( ٝ‬يب اضبض‪ٌٜ‬طي)‬
‫غطف‪ٙ‬ؾط اظ اي‪ٙ‬ى‪ ٝ‬ث‪ ٝ‬وساْ ضي اظ والسي ٔطاػق‪ ٝ‬زاضز‪ ،‬فمظ حب‪ٚ‬ي آزضس حبفؾ‪ ٝ‬ضي ‪ٚ‬القي اسز‪ٔ .‬يعاٖ‬
‫حبفؾ‪ٛٔ ٝ‬ضز ٘يبظ ثطاي شذيط‪ٜ‬سبظي يه آزضس يه ٔسئّ‪ ٝ‬سرز افعاضي ٔطسجظ ثب وبٔذي‪ٛ‬سط اسز‪ .‬وبٔذبيّط‬
‫اظ سبيط ‪ٞ‬ط ٔطاػق‪ ٝ‬يب اضبض‪ٌٜ‬طي ٔغّـ اسز‪ .‬زض ٘شيؼ‪ ،ٝ‬ث‪ٍٙٞ ٝ‬بْ افالٖ فمظ يه ٔطاػق‪ ٝ‬ث‪ ٝ‬يه ضي اظ آٖ‬
‫والس‪ٚ ،‬اضز وطزٖ وُ فبيُ سطآي‪ٙ‬س والس ضط‪ٚ‬ضسي ٘ساضز ‪٘ ٚ‬يبظ ث‪ٔ ٝ‬قطفي ٘بْ والس زاضيٓ أب ٘يبظي ث‪ٝ‬‬
‫‪C++‬‬ ‫سساضن زيسٖ آضايص زاز‪ ٜ‬ضي ٘ساضيٓ چطا و‪ ٝ‬وبٔذبيّط اظ سبيع سٕبْ ٔطاػق‪ٞٝ‬ب اعالؿ زاضز‪ .‬ظثبٖ‬
‫زاضاي زسش‪ٛ‬ضي ث‪ٙ‬بْ افالٖ ض‪ ٚ‬ث‪ ٝ‬ػّ‪ ٛ‬يب ‪ forward‬اسز و‪٘ ٝ‬طبٖ ٔيز‪ٞ‬س يه فبيُ سطآي‪ٙ‬س حب‪ٚ‬ي ٔطاػق‪ٞٝ‬ب‬
‫يب اضبض‪ٌٜ‬ط‪ٞ‬بي ث‪ ٝ‬يه والس اسز‪ ،‬أب سقطيف والس ذبضع اظ فبيُ سطآي‪ٙ‬س لطاض زاضز‪ٔ .‬يس‪ٛ‬ا٘يٓ‬
‫‪ٞ#include‬بي ٔ‪ٛ‬ػ‪ٛ‬ز زض سقطيف والس ‪ Withdrawal‬ضىُ ‪ 9-14‬ضا ثب افالٖ‪ٞ‬بي ض‪ ٚ‬ث‪ ٝ‬ػّ‪ ٛ‬والس‪ٞ‬بي‬
‫‪ BankDatabase ٚ CashDispenser ،Keypad ،Screen‬ػبيٍعيٗ و‪ٙ‬يٓ (ذغ‪ٛ‬ط ‪ 6-9‬زض ضىُ ‪-15‬‬
‫‪ .)9‬ثؼبي ‪ٚ‬اضز وطزٖ وُ فبيُ سطآي‪ٙ‬س ثطاي ‪ٞ‬ط وسأيه اظ ايٗ والس‪ٞ‬ب‪ ،‬فم‪ٟ‬ب يه افالٖ ض‪ ٚ‬ث‪ ٝ‬ػّ‪ ٛ‬اظ ‪ٞ‬ط‬
‫والس زض فبيُ سطآي‪ٙ‬س ضا ثطاي والس ‪ Withdrawal‬ػبيٍعيٗ ٔيو‪ٙ‬يٓ‪ .‬س‪ٛ‬ػ‪ ٝ‬و‪ٙ‬يس و‪ ٝ‬اٌط والس‬
‫‪ Withdrawal‬حب‪ٚ‬ي ضي‪ٞ‬بي ‪ٚ‬القي ثؼبي ٔطاػق‪ٞٝ‬ب ثبضس (يق‪ٙ‬ي فالٔز‪ٞ‬بي & زض ذغ‪ٛ‬ط ‪ 19-22‬حصف‬
‫ض‪٘ٛ‬س)‪٘ ،‬يبظ ذ‪ٛ‬ا‪ٞ‬س ث‪ٛ‬ز سب وُ فبيُ‪ٞ‬بي سطآي‪ٙ‬س ضا ‪ٚ‬اضز )‪ٕ٘ (#include‬بئيٓ‪.‬‬
‫‪1‬‬ ‫‪// Fig. 9.22: Withdrawal.h‬‬
‫‪2‬‬ ‫‪// Definition of class Withdrawal that represents a withdrawal transaction.‬‬
‫‪3‬‬ ‫‪#ifndef WITHDRAWAL_H‬‬
‫‪4‬‬ ‫‪#define WITHDRAWAL_H‬‬
‫‪5‬‬
‫‪6‬‬ ‫‪class Withdrawal‬‬
‫‪7‬‬ ‫{‬
‫‪8‬‬ ‫‪}; // end class Withdrawal‬‬
‫‪9‬‬
‫‪10‬‬ ‫‪#endif // WITHDRAWAL_H‬‬
‫شكل ‪ | 9-22‬تعريف كالس ‪ Withdrawal‬احاطِ شسُ زر پَشاًٌسُّاي پيشپرزازًسُ‪.‬‬
‫‪1‬‬ ‫‪// Fig. 9.23: Withdrawal.h‬‬
‫‪2‬‬ ‫‪// Definition of class Withdrawal that represents a withdrawal transaction.‬‬
‫‪3‬‬ ‫‪#ifndef WITHDRAWAL_H‬‬
‫‪4‬‬ ‫‪#define WITHDRAWAL_H‬‬
‫‪5‬‬
‫‪6‬‬ ‫‪class Withdrawal‬‬

‫‪www.yourshop.4kia.ir‬‬
www.Booknama.com

625‫________________ فصل نهم‬ I ‫بخش‬:‫نگاهي عميقتر‬:‫كالسها‬

7 {
8 private:
9 // attributes
10 int accountNumber; // account to withdraw funds from
11 double amount; // amount to withdraw
12
13 }; // end class Withdrawal
14
15 #endif // WITHDRAWAL_H

.Withdrawal ‫ | افسٍزى صفات تِ فايل سرآيٌس كالس‬9-23 ‫شكل‬


1 // Fig. 9.24: Withdrawal.h
2 // Definition of class Withdrawal that represents a withdrawal transaction.
3 #ifndef WITHDRAWAL_H
4 #define WITHDRAWAL_H
5
6 #include "Screen.h" // Screen class definition
7 #include "BankDatabase.h" // BankDatabase class definition
8 #include "Keypad.h" // Keypad class definition
9 #include "CashDispenser.h" // CashDispenser class definition
10
11 class Withdrawal
12 {
13 private:
14 // attributes
15 int accountNumber; // account to withdraw funds from
16 double amount; // amount to withdraw
17
18 // references to associated objects
19 Screen &screen; // reference to ATM's screen
20 Keypad &keypad; // reference to ATM's keypad
21 CashDispenser &cashDispenser; // reference to ATM's cash dispenser
22 BankDatabase &bankDatabase; // reference to the account info database
23 }; // end class Withdrawal
24
25 #endif // WITHDRAWAL_H

.Withdrawal ‫ | اعالى هراجعِّا تِ شيّاي هرتثط تا كالس‬9-24 ‫شكل‬


ُ‫س اظ يه ٔطى‬ٙ‫اضز وطزٖ وُ فبيُ سطآي‬ٚ ‫ (سب حس أىبٖ) ثؼبي‬ّٛ‫ ػ‬ٝ‫ ث‬ٚ‫ اظ افالٖ ض‬ٜ‫ اسشفبز‬ٝ‫يس و‬ٙ‫ و‬ٝ‫ػ‬ٛ‫س‬
ُ‫ ايٗ ٔطىُ ظٔب٘ي ثطاي فبي‬.‫س‬ٙ‫ٌيطي ٔيو‬ّٛ‫( ػ‬circular include) ‫اي‬ٜ‫اضز ٌطزٖ زايط‬ٚ ْ‫ب‬ٙ‫ ث‬ٜ‫ديصدطزاظ٘س‬
‫ ثطفىس ثطذي‬ٚ ‫ ثبضس‬ٜ‫ وطز‬#include ‫ ضا‬B ‫سي ثطاي والس‬ٙ‫ فبيُ سطآي‬ٝ‫س و‬ٞ‫ ضخ ٔيز‬A ‫س والس‬ٙ‫سطآي‬
‫ يه ذغبي‬ٝ‫ زض ٘شيؼ‬ٚ ‫س‬ٙ‫ ٘يسش‬#include ‫بي‬ٞ‫ز‬ٕٛٙٞ‫ب يب ض‬ٜٞ‫س‬ٙٞ‫ضز‬ٛ‫يٗ زسش‬ٙ‫ ضفـ چ‬ٝ‫ب لبزض ث‬ٜٞ‫اظ ديصدطزاظ٘س‬
،‫ ٕ٘بيس‬ٜ‫ اسشفبز‬B ‫ يه ضي اظ والس‬ٝ‫ ث‬ٝ‫ فمظ اظ يه ٔطاػق‬A ‫ اٌط والس‬،َ‫ ثطاي ٔظب‬.‫س‬ٞ‫وبٔذبيُ ضخ ٔيز‬
‫ز‬ٛ‫ ػبيٍعيٗ ض‬B ‫ اظ والس‬ّٛ‫ ػ‬ٝ‫ ث‬ٚ‫سظ يه افالٖ ض‬ٛ‫ا٘س س‬ٛ‫ ٔيس‬A ‫س والس‬ٙ‫ زض فبيُ سطآي‬#include ‫دس‬
.‫ز‬ٛ‫ٌيطي ض‬ّٛ‫ ػ‬circular include ُ‫سب اظ ٔطى‬
1 // Fig. 9.25: Withdrawal.h
2 // Definition of class Withdrawal that represents a withdrawal transaction.
3 #ifndef WITHDRAWAL_H
4 #define WITHDRAWAL_H
5
6 class Screen; // forward declaration of class Screen
7 class Keypad; // forward declaration of class Keypad
8 class CashDispenser; // forward declaration of class CashDispenser
9 class BankDatabase; // forward declaration of class BankDatabase
10
11 class Withdrawal
12 {

www.yourshop.4kia.ir
www.Booknama.com

I ‫بخش‬:‫نگاهي عميقتر‬:‫كالسها‬ ______________  622


‫فصل نهم‬

13 private:
14 // attributes
15 int accountNumber; // account to withdraw funds from
16 double amount; // amount to withdraw
17
18 // references to associated objects
19 Screen &screen; // reference to ATM's screen
20 Keypad &keypad; // reference to ATM's keypad
21 CashDispenser &cashDispenser; // reference to ATM's cash dispenser
22 BankDatabase &bankDatabase; // reference to the account info database
23 }; // end class Withdrawal
24
25 #endif // WITHDRAWAL_H

.#include ‫ | استفازُ از اعالىّاي رٍتِ جلَ تجاي زستَرزٌّسُّاي‬9-25 ‫شكل‬


ٛ‫اثـ فض‬ٛ‫ سبثـ ثطاي س‬ٝ‫ِي‬ٚ‫ ا‬ٕٝ٘ٛ٘ ٗ‫ضش‬ٛ٘ ‫ ثطاي‬9-11 ُ‫ْ ضى‬ٛ‫ زض ثرص س‬ٝ‫بي لطاض ٌطفش‬ٞ‫ اظ فّٕيبر‬-5
‫ؿ‬ٛ٘ ‫ ضا ثب‬ٛ‫ سبثـ فض‬،ٓ‫اي‬ٜ‫ؿ ثطٌطشي ذبغي ثطاي يه فّٕيبر ٔطرع ٘ىطز‬ٛ٘ ‫ اٌط‬.‫يس‬ٙ‫ و‬ٜ‫والس اسشفبز‬
ٖ‫ا‬ٛ‫ ٔيس‬6-15 ‫ اِي‬6-11 ‫بي‬ُٞ‫بي والس زض ضى‬ْٞ‫ زيبٌطا‬ٝ‫ ث‬ٝ‫ ثب ٔطاػق‬.ٓ‫ي‬ٙ‫ افالٖ ٔيو‬void ‫ثطٌطشي‬
‫ زض والس‬execute ‫زٖ فّٕيبر سطاسطي‬ٚ‫ ثب افع‬،َ‫ ثطاي ٔظب‬.‫ضز ٘يبظ ضا افالٖ وطز‬ٛٔ ‫بي‬ٞ‫دبضأشط‬
ُ‫ اظ ضى‬15 ‫( زض ذظ‬prototype) ٝ‫ِي‬ٚ‫ ا‬ٕٝ٘ٛ٘ ،‫ي اسز‬ٟ‫ زاضاي يه ِيسز دبضأشطي س‬ٝ‫ و‬Withdrawal
.‫ ثسسز ٔيآيس‬9-16
1 // Fig. 9.26: Withdrawal.h
2 // Withdrawal class definition. Represents a withdrawal transaction.
3 #ifndef WITHDRAWAL_H
4 #define WITHDRAWAL_H
5
6 class Screen; // forward declaration of class Screen
7 class Keypad; // forward declaration of class Keypad
8 class CashDispenser; // forward declaration of class CashDispenser
9 class BankDatabase; // forward declaration of class BankDatabase
10
11 class Withdrawal : public Transaction
12 {
13 public:
14 // operations
15 void execute(); // perform the transaction
16 private:
17 // attributes
18 int accountNumber; // account to withdraw funds from
19 double amount; // amount to withdraw
20
21 // references to associated objects
22 Screen &screen; // reference to ATM's screen
23 Keypad &keypad; // reference to ATM's keypad
24 CashDispenser &cashDispenser; // reference to ATM's cash dispenser
25 BankDatabase &bankDatabase; // reference to the account info database
26 }; // end class Withdrawal
27
28 #endif // WITHDRAWAL_H
.Withdrawal ‫ | افسٍزى عولياتّاي تِ فايل سرآيٌس كالس‬9-26 ‫شكل‬
ٝ‫ ث‬UML ‫بي‬ْٞ‫ي زيبٌطا‬ٚ‫س والس اظ ض‬ٙ‫بي سطآي‬ُٞ‫ِيس فبي‬ٛ‫ س‬ٝ‫ِي‬ٚ‫َ ا‬ٛ‫ اغ‬ٜ‫ىبض ثحض ٔب زضثبض‬ٙ‫ثب ا٘ؼبْ اي‬
.‫دبيبٖ ٔيضسس‬
‫توريٌات ذَزآزهايي هثحج آهَزشي هٌْسسي ًرمافسار‬

www.yourshop.4kia.ir
www.Booknama.com

622‫________________ فصل نهم‬ I ‫بخش‬:‫نگاهي عميقتر‬:‫كالسها‬

:‫يس چطا‬ٞ‫ضيح ز‬ٛ‫ س‬،ٖ‫ز‬ٛ‫ ث‬ٜ‫ضر اضشجب‬ٛ‫ زض غ‬،ٜ‫يس فجبضر ظيط غحيح اسز يب اضشجب‬ٙ‫ سقييٗ و‬9‫ـ‬1
‫ض ٔسشميٓ اظ ذبضع‬ٛ‫ آٖ غفز ثغ‬،‫ز‬ٛ‫ٌصاضي ض‬ٝ٘‫) زض زيبٌطاْ والس ٘طب‬-( ‫في‬ٙٔ ‫اٌط غفشي اظ يه والس ثب فالٔز‬
.‫ا٘س ثبضس‬ٛ‫اظ والس زض زسشطس ٕ٘يس‬
:ٝ‫ زالِز زاضز و‬ٝ‫ ثطايٗ ٘ىش‬Screen ٚ ATM ٗ‫ ٔبثي‬ٝ‫ ضاثغ‬،9-11 ُ‫ زض ضى‬9-2
.ٓ‫ي‬ٛ‫سايز ض‬ٞ ATM ٝ‫ ث‬Screen ‫ا٘يٓ اظ‬ٛ‫( ٔيس‬a
.ٓ‫ي‬ٛ‫سايز ض‬ٞ Screen ٝ‫ ث‬ATM ‫ا٘يٓ اظ‬ٛ‫( ٔيس‬b
.‫ اسز‬ٝ‫ي‬ٛ‫س‬ٚ‫سايز ز‬ٞ ،‫س‬ٙ‫سش‬ٞ ‫ غحيح‬ٚ‫ط ز‬ٞ b ٚ a (c
.‫ق‬ٛ‫اضز ف‬ٛٔ ‫يچ وسأيه اظ‬ٞ (d
.‫س‬ٙ‫سبظي و‬ٜ‫ ضا ديبز‬Account ‫ ثطاي والس‬ٝ‫ عطح ثىبض ضفش‬ٝ‫يسيس و‬ٛٙ‫ ث‬C++ ٖ‫ ظثب‬ٝ‫ وسي ث‬9-3
‫پاسد ذَزآزهايي‬
.‫ اسز‬private ‫يز‬ٚ‫ ض‬ٜ‫س‬ٙٞ‫) ٘طب٘س‬-( ‫في‬ٙٔ ‫ فالٔز‬.‫ غحيح‬9-1
.b 9-2
.‫ اسز‬ٜ‫ ضس‬ٜ‫ضز‬ٚ‫ آ‬9-17 ُ‫س ضى‬ٙ‫ زض فبيُ سطآي‬Account ‫ عطاحي والس‬ٝ‫ ٘شيؼ‬9-3
// Fig. 9.27: Account.h
// Account class definition. Represents a bank account.
#ifndef ACCOUNT_H
#define ACCOUNT_H
class Account
{
public:
Account( int, int, double, double ); // constructor sets attributes
bool validatePIN( int ) const; // is user-specified PIN correct?
double getAvailableBalance() const; // returns available balance
double getTotalBalance() const; // returns total balance
void credit( double ); // adds an amount to the Account balance
void debit( double ); // subtracts an amount from the Account balance
int getAccountNumber() const; // returns account number
private:
int accountNumber; // account number
int pin; // PIN for authentication
double availableBalance; // funds available for withdrawal
double totalBalance; // funds available + funds waiting to clear
}; // end class Account
#endif // ACCOUNT_H
.9-21 ٍ 9-21 ‫ تراساس شكلّاي‬Account ‫ | فايل سرآيٌس كالس‬9-27 ‫شكل‬
‫ذَزآزهايي‬
:‫يس‬ٙ‫بست دط و‬ٙٔ ‫بي ذبِي ضا ثب وّٕبر‬ٞ‫ ػب‬9-1
‫ زض سطويت‬..........‫ زض سطويت ثب ٘بْ يه ضي اظ والس يب اظ عطيك فٍّٕط‬............. ‫) افضبي والس اظ عطيك فٍّٕط‬a
.‫ يه ضي اظ والس زض زسشطس لطاض ٔيٌيط٘س‬ٝ‫ٌط ث‬ٜ‫ثب اضبض‬
‫سشبٖ والس زض زسشطس‬ٚ‫ ز‬ٚ ‫ والس‬ٛ‫اثـ فض‬ٛ‫ فمظ ثطاي س‬ٚ ‫٘س‬ٛ‫ ٔطرع ٔيض‬............. ٖ‫ا‬ٛٙ‫) افضبي والس ثق‬b
.‫لطاض ٔيٌيط٘س‬

www.yourshop.4kia.ir
‫‪www.Booknama.com‬‬

‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬ ‫______________‬ ‫‪ 622‬‬


‫فصل نهم‬

‫‪ )c‬افضبي والس ثق‪ٛٙ‬اٖ‪ٔ ..........‬طرع ٔيض‪٘ٛ‬س ‪ ٚ‬اظ ‪ٞ‬ط وؼبي لّٕط‪ ٚ‬والس زض زسشطس ٔيٌيط٘س‪.‬‬
‫‪ )d‬اظ ‪ٔ ................‬يس‪ٛ‬اٖ ثطاي سرػيع يه ضي اظ والس ث‪ ٝ‬ضي اظ ‪ٕٞ‬بٖ والس اسشفبز‪ ٜ‬وطز‪.‬‬
‫‪ 9-1‬ذغب يب ذغب‪ٞ‬بي ٔ‪ٛ‬ػ‪ٛ‬ز زض ‪ٞ‬ط يه اظ فجبضار ظيط ضا يبفش‪ ٚ ٝ‬آ٘‪ٟ‬ب ضا اغالح و‪ٙ‬يس‪.‬‬
‫‪ )a‬فطؼ و‪ٙ‬يس ٕ٘‪ ٝ٘ٛ‬ا‪ِٚ‬ي‪ ٝ‬ظيط زض والس ‪ Time‬افالٖ ضس‪ٞ‬بسز‪:‬‬
‫;)‪void ~Time(int‬‬
‫‪ )b‬فجبضر ظيط ثرطي اظ سقطيف والس ‪ Time‬اسز‪:‬‬
‫‪class Time‬‬
‫{‬
‫‪public:‬‬
‫‪//Function prototype:‬‬
‫‪private:‬‬
‫; = ‪int hour‬‬
‫; = ‪int minute‬‬
‫; = ‪int second‬‬
‫‪} ; // end class Time‬‬
‫‪ )c‬ثب فطؼ اي‪ٙ‬ى‪ ٕٝ٘ٛ٘ ٝ‬ا‪ِٚ‬ي‪ ٝ‬ظيط زض والس ‪ Employee‬افالٖ ضس‪ ٜ‬اسز‪.‬‬
‫;)* ‪int Employee(const char *, const char‬‬
‫پاسد ذَزآزهايي‬
‫‪ (d‬سرػيع ‪memberwise‬‬ ‫‪public (c‬‬ ‫‪private‬‬ ‫‪٘ )a 9-1‬مغ‪) b -> ،ٝ‬‬
‫‪9-1‬‬
‫‪ )a‬ذغب‪٘ :‬بث‪ٛ‬ز و‪ٙٙ‬س‪ٜٞ‬ب اػبظ‪ ٜ‬ثطٌطز زازٖ ٔمساض يب ٌطفشٗ آضٌ‪ٔٛ‬بٖ ضا ٘ساض٘س‪.‬‬
‫اغالح‪ :‬حصف ٘‪ٛ‬ؿ ثطٌطي ‪ ٚ void‬دبضأشط ‪ int‬اظ افالٖ‪.‬‬
‫‪ (b‬ذغب‪ :‬افضب ٕ٘يس‪ٛ‬ا٘‪ٙ‬س ثػ‪ٛ‬ضر غطيح زض سقطيف والس ٔمساضز‪ٞ‬ي ا‪ِٚ‬ي‪ ٝ‬ض‪٘ٛ‬س‪.‬‬
‫اغالح‪ :‬حصف ٔمساضز‪ٞ‬ي غطيح اظ سقطيف والس ‪ٔ ٚ‬مساضز‪ٞ‬ي ا‪ِٚ‬ي‪ ٝ‬افضبي زاز‪ ٜ‬زض يه سبظ٘س‪.ٜ‬‬
‫‪ )c‬ذغب‪ :‬سبظ٘س‪ٜٞ‬ب لبزض ث‪ ٝ‬ثطٌطز زازٖ ٔمساض ٘يسش‪ٙ‬س‪.‬‬
‫اغالح ‪ :‬حصف ٘‪ٛ‬ؿ ثطٌطشي ‪ int‬اظ افالٖ‪.‬‬
‫توريٌات‬
‫‪ٙٔ 9-3‬ؾ‪ٛ‬ض اظ فٍّٕط سفىيه لّٕط‪ ٚ‬چيسز؟‬
‫‪ 9-4‬سبظ٘س‪ٜ‬اي سساضن ثجي‪ٙ‬يس و‪ ٝ‬لبزض ث‪ ٝ‬اسشفبز‪ ٜ‬اظ ظٔبٖ ػبضي اظ سبثـ ) (‪ time‬ثبضس‪ ،‬افالٖ ضس‪ ٜ‬زض وشبثرب٘‪ٝ‬‬
‫اسشب٘ساضز ‪ C++‬ثب سطآي‪ٙ‬س >‪ ،<ctime‬سب يه ضي اظ والس ‪ time‬ضا ٔمساضز‪ٞ‬ي ا‪ِٚ‬ي‪ٕ٘ ٝ‬بيس‪.‬‬
‫‪ 9-5‬والسي ث‪ٙ‬بْ ‪ Complex‬ايؼبز و‪ٙ‬يس و‪ ٝ‬لبزض ث‪ ٝ‬وبض ثب ٔمبزيط ٔرشّظ ثبضس‪ .‬ثط٘بٔ‪ٝ‬اي ثطاي سسز والس ذ‪ٛ‬ز‬
‫ث‪ٛٙ‬يسيس‪ .‬افساز ٔرشّظ ثفطْ ظيط ‪ٞ‬سش‪ٙ‬س‬
‫‪realPart + imaginaryPart * i‬‬ ‫(‪ * i‬ثرص ٔ‪ٔٛٞٛ‬ي ‪ +‬ثرص حميمي)‬
‫و‪ ٝ‬زض آٖ ‪ i‬ثطاثط اسز ثب ‪  1‬‬

‫‪www.yourshop.4kia.ir‬‬
‫‪www.Booknama.com‬‬

‫________________ فصل نهم‪622‬‬ ‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬

‫اظ ٔشغيط‪ٞ‬بي ‪ double‬ثطاي فطض‪ ٝ‬زاز‪ private ٜ‬والس اسشفبز‪ ٜ‬و‪ٙ‬يس‪ .‬يه سبظ٘س‪ ٜ‬زض ٘ؾط ثٍيطيس و‪ ٝ‬ث‪ ٝ‬ضي اظ ايٗ‬
‫والس أىبٖ ٔمساضز‪ٞ‬ي ا‪ِٚ‬ي ‪ ٝ‬ضا زض ظٔبٖ افالٖ فطا‪ ٓٞ‬آ‪ٚ‬ضز‪ .‬ثبيس سبظ٘س‪ ٜ‬حب‪ٚ‬ي ٔمبزيط ديص فطؼ ثبضس‪ .‬س‪ٛ‬اثـ فض‪ٛ‬‬
‫‪ public‬ضا زض ٘ؾط ثٍيطيس و‪ٚ ٝ‬ؽبيف ظيط ضا ا٘ؼبْ ز‪ٙٞ‬س‪:‬‬
‫‪ )a‬ػٕـ ز‪ ٚ‬فسز ‪ : complex‬ثرص‪ٞ‬بي حميمي ثب يىسيٍط ‪ ٚ‬ثرص‪ٞ‬بي ٔ‪ٔٛٞٛ‬ي ثب يىسيٍط ػٕـ ٔيض‪٘ٛ‬س‪.‬‬
‫‪ )b‬سفطيك ز‪ ٚ‬فسز ‪ : complex‬ثرص حميمي لطاض ٌطفش‪ ٝ‬زض سٕز ضاسز سفطيك اظ ثرص حميمي لطاض ٌطفش‪ ٝ‬زض سٕز‬
‫چخ فّٕ‪٘ٛ‬س‪ ،‬وبسش‪ٔ ٝ‬يض‪ٛ‬ز‪ ٚ ،‬ثرص ٔ‪ٔٛٞٛ‬ي لطاض ٌطفش‪ ٝ‬زض سٕز ضاسز فّٕ‪٘ٛ‬س اظ ثرص ٔ‪ٔٛٞٛ‬ي لطاض ٌطفش‪ ٝ‬زض‬
‫سٕز چخ فّٕ‪٘ٛ‬س وبسش‪ٔ ٝ‬يض‪ٛ‬ز‪.‬‬
‫‪ )c‬چبح افساز ‪ complex‬ثفطْ )‪ (a,b‬و‪ ٝ‬زض آٖ ‪ a‬ثرص حميمي ‪ b ٚ‬ثرص ٔ‪ٔٛٞٛ‬ي اسز‪.‬‬
‫‪ 9-6‬والسي ث‪ٙ‬بْ ‪ Rational‬ايؼبز و‪ٙ‬يس سب فّٕيبر ضيبضي ضا ثب وسط‪ٞ‬ب ا٘ؼبْ ز‪ٞ‬س‪ .‬ثط٘بٔ‪ٝ‬اي ثطاي سسز والس‬
‫ث‪ٛٙ‬يسيس‪ .‬اظ ٔشغيط‪ٞ‬بي غحيح ثطاي فطض‪ ٝ‬زاز‪ private ٜ‬والس‪ denominator ٚ numerator ،‬اسشفبز‪ ٜ‬و‪ٙ‬يس‪ .‬يه‬
‫سبظ٘س‪ ٜ‬زض ٘ؾط ثٍيطيس و‪ ٝ‬ث‪ ٝ‬ضي اظ ايٗ والس أىبٖ ٔمساضز‪ٞ‬ي ا‪ِٚ‬ي‪ ٝ‬ضا زض ظٔبٖ افالٖ فطا‪ ٓٞ‬آ‪ٚ‬ضز‪ .‬سبظ٘س‪ ٜ‬ثبيس‬
‫حب‪ٚ‬ي ٔمبزيط ديص فطؼ ثبضس ‪ ٚ‬ثبيس وسط ضا ثفطْ وبسش‪ ٝ‬ضس‪ ٜ‬شذيط‪ ٜ‬و‪ٙ‬س‪ .‬ثطاي ٔظبَ‪ ،‬وسط ‪2/4‬‬

‫ٔيس‪ٛ‬ا٘س زض يه ضي ثػ‪ٛ‬ضر ‪ 1‬زض ‪ 2 ٚ numerator‬زض ‪ denominator‬شذيط‪ ٜ‬ض‪ٛ‬ز‪ .‬س‪ٛ‬اثـ فض‪ public ٛ‬ضا ثطاي‬
‫ا٘ؼبْ ‪ٚ‬ؽبيف ظيط زض ٘ؾط ثٍيطيس‪:‬‬
‫‪ )a‬ػٕـ ز‪ ٚ‬فسز ‪٘ .Rational‬شيؼ‪ ٝ‬ثبيس ثفطْ وبسش‪ ٝ‬ضس‪ ٜ‬شذيط‪ ٜ‬ض‪ٛ‬ز‪.‬‬
‫‪ )b‬سفطيك ز‪ ٚ‬فسز ‪٘ .Rational‬شيؼ‪ ٝ‬ثبيس ثفطْ وبسش‪ ٝ‬ضس‪ ٜ‬شذيط‪ ٜ‬ض‪ٛ‬ز‪.‬‬
‫‪ )c‬ضطة ز‪ ٚ‬فسز ‪٘ .Rational‬شيؼ‪ ٝ‬ثبيس ثفطْ وبسش‪ ٝ‬ضس‪ ٜ‬شذيط‪ ٜ‬ض‪ٛ‬ز‪.‬‬
‫‪ )d‬سمسيٓ ز‪ ٚ‬فسز ‪٘ .Rational‬شيؼ‪ ٝ‬ثبيس ثفطْ وبسش‪ ٝ‬ضس‪ ٜ‬شذيط‪ ٜ‬ض‪ٛ‬ز‪.‬‬
‫‪ )e‬چبح افساز ‪ .Rational‬ثفطْ ‪ ، a/b‬و‪ ٝ‬زض آٖ ‪ a‬غ‪ٛ‬ضر ‪ٔ b ٚ‬رطع وسط اسز‪.‬‬
‫‪ )f‬چبح افساز ‪ .Rational‬ثب فطٔز افطبضي‪.‬‬
‫‪ 9-7‬ثط٘بٔ‪ ٝ‬ضىُ‪ٞ‬بي ‪ 9-9 ٚ 9-8‬ضا ث‪٘ ٝ‬ح‪ٛ‬ي اغالح و‪ٙ‬يس و‪ ٝ‬حب‪ٚ‬ي سبثـ فض‪ tick ٛ‬ثبضس سب ظٔبٖ شذيط‪ ٜ‬ضس‪ ٜ‬زضضي‬
‫‪ Time‬ضا زض ‪ٞ‬ط طب٘ي‪ ٝ‬افعايص ز‪ٞ‬س‪ .‬ثبيسشي ضي ‪ٕٞ time‬يط‪ ٝ‬زض ‪ٚ‬ضقيز دبيساض ثبلي ثٕب٘س‪ .‬ثط٘بٔ‪ٝ‬اي ث‪ٛٙ‬يسيس و‪ ٝ‬سبثـ‬
‫فض‪ tick ٛ‬ضا زض حّم‪ٝ‬اي و‪ ٝ‬ظٔبٖ ضا زض فطٔز اسشب٘ساضز زض ‪ٞ‬ط ثبض سىطاض چبح ٔيو‪ٙ‬س‪ ،‬سسز ٕ٘بيس سب اظ فّٕىطز‬
‫غحيح آٖ ٔغٕئٗ ٌطزيٓ ‪ .‬حشٕبً حبالر ظيط سسز ض‪٘ٛ‬س‪:‬‬
‫‪ٚ )a‬ض‪ٚ‬ز ث‪ ٝ‬زليم‪ ٝ‬ثقس‪.‬‬
‫‪ٚ )b‬ض‪ٚ‬ز ث‪ ٝ‬سبفز ثقس‪.‬‬
‫‪ٚ )c‬ض‪ٚ‬ز ث‪ ٝ‬ض‪ٚ‬ظ ثقس (يق‪ٙ‬ي ‪ 11:59:59 PM‬ث‪.)12:00:00AM ٝ‬‬
‫‪ 9-8‬والس ‪ Date‬ثىبض ضفش‪ ٝ‬زض ضىُ‪ٞ‬بي ‪ 9-18 ٚ 9-17‬ضا ثطاي ا٘ؼبْ سسز ذغب زض ٔمساضز‪ٞ‬ي ٔمبزيط ثطاي افضبي‬
‫زاز‪ year ٚ day ، month ٜ‬سغييط ز‪ٞ‬يس‪ٕٞ .‬چ‪ٙ‬يٗ سبثـ فض‪ nextDay ٛ‬ضا ثطاي افعايص يه ض‪ٚ‬ظ زض ‪ٞ‬ط ثبض زض ٘ؾط‬
‫ثٍيطيس‪ .‬ضي ‪ Date‬ثبيس ‪ٕٞ‬يط‪ ٝ‬زض ‪ٚ‬ضقيز دبيساض ثبلي ثٕب٘س‪ .‬ثط٘بٔ‪ٝ‬اي ث‪ٛٙ‬يسيس و‪ ٝ‬سبثـ ‪ nextDay‬ضا زض حّم‪ٝ‬اي و‪ٝ‬‬

‫‪www.yourshop.4kia.ir‬‬
‫‪www.Booknama.com‬‬

‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬ ‫______________‬ ‫‪ 622‬‬


‫فصل نهم‬

‫سبضيد ػبضي ضا زض ‪ٞ‬ط ثبض سىطاض چبح ٔيو‪ٙ‬س‪ ،‬سسز ٕ٘بيس سب اظ فّٕىطز غحيح ‪ٔ nextDay‬غٕئٗ ٌطزيٓ‪ .‬حشٕبً‬
‫حبالر ظيط سسز ض‪٘ٛ‬س‪:‬‬
‫‪ٚ )a‬ض‪ٚ‬ز ث‪ٔ ٝ‬ب‪ ٜ‬ثقس‪.‬‬
‫‪ٚ )b‬ض‪ٚ‬ز ث‪ ٝ‬سبَ ثقس‪.‬‬
‫‪ 9-9‬والس اغالح ضس‪ Time ٜ‬زض سٕطيٗ ‪ ٚ 9-7‬والس اغالح ضس‪ Date ٜ‬زض سٕطيٗ ‪ 9-8‬ضا ثػ‪ٛ‬ضر يه والس‬
‫ث‪ٙ‬بْ ‪ DateAndTime‬ثب ‪ ٓٞ‬سطويت و‪ٙ‬يس‪ .‬اٌط ظٔبٖ ثطاي ‪ٚ‬ض‪ٚ‬ز ث‪ ٝ‬ض‪ٚ‬ظ ثقسي افعايص يبثس‪ ،‬سبثـ ‪ tick‬ضا ثطاي فطاذ‪ٛ‬ا٘ي‬
‫سبثـ ‪ nextDay‬اغالح و‪ٙ‬يس‪ .‬س‪ٛ‬اثـ ‪ PrintUniversal , printStandard‬ضا ثطاي چبح سبضيد ‪ ٚ‬ظٔبٖ اغالح و‪ٙ‬يس‪.‬‬
‫ثط٘بٔ‪ٝ‬اي ث‪ٛٙ‬يسيس و‪ ٝ‬والس ػسيس ‪ DateAndTime‬ضا سسز و‪ٙ‬س‪.‬‬
‫‪ 9-11‬س‪ٛ‬اثـ ‪ set‬ثىبض ضفش‪ ٝ‬زض والس ‪ Time‬ضىُ‪ٞ‬بي ‪ 9-9 ٚ 9-8‬ضا ث‪٘ ٝ‬ح‪ٛ‬ي اغالح و‪ٙ‬يس سب زض غ‪ٛ‬ضسيى‪ٔ ٝ‬جبزضر ث‪ٝ‬‬
‫ٔمساضز‪ٞ‬ي يه ضي اظ والس ‪ Time‬ثب ٔمساض ٘بٔقشجط ض‪ٛ‬ز‪ ،‬ذغبي ٔش‪ٙ‬بست ثب آٖ ثطٌطز زاز‪ ٜ‬ض‪ٛ‬ز‪ .‬ثط٘بٔ‪ٝ‬اي ثطاي‬
‫سسز ايٗ ٘سر‪ ٝ‬اظ والس ث‪ٛٙ‬يسيس‪ .‬ديغبْ‪ٞ‬بي ذغب ضا زض غ‪ٛ‬ضر ثطٌطز ٔمبزيط ذغب اظ س‪ٛ‬اثـ ‪ set‬ث‪ٕٙ‬بيص زضآ‪ٚ‬ضيس‪.‬‬
‫‪ 9-11‬والس ث‪ٙ‬بْ ‪ Rectangle‬ثب غفبر ‪ length ،width‬ايؼبز و‪ٙ‬يس و‪ٞ ٝ‬ط يه زاضاي ٔمساض ديص فطؼ ‪ٞ 1‬سش‪ٙ‬س‪.‬‬
‫س‪ٛ‬اثـ فض‪ٛ‬ي زض ٘ؾط ثٍيطيس و‪ ٝ‬الساْ ث‪ٔ ٝ‬حبسج‪ٔ ٝ‬سبحز ‪ٔ ٚ‬حيظ ٔسشغيُ و‪ٙٙ‬س‪ٕٞ .‬چ‪ٙ‬يٗ س‪ٛ‬اثـ ‪ set ٚ get‬ضا ثطاي‬
‫غفبر ‪ width ,length‬زض ٘ؾط ثٍيطيس‪ .‬ثبيسشي س‪ٛ‬اثـ ‪ٔ set‬طالت ثبض‪ٙ‬س و‪ width ,length ٝ‬زاضاي ٔمبزيط افطبضي‬
‫ثعضٌشط اظ ‪ ٚ 0.0‬وٕشط اظ ‪ 20.0‬ثبض‪ٙ‬س‪.‬‬
‫‪ 9-11‬والس ديططفش‪ Rectangle ٝ‬ضا ث‪٘ ٝ‬سجز والس يبز ضس‪ ٜ‬زض سٕطيٗ ‪ 9-11‬ايؼبز و‪ٙ‬يس‪ .‬ايٗ والس فمظ‬
‫ٔرشػػبر زوبضر ضا ثطاي چ‪ٟ‬بض ٌ‪ٛ‬ض‪ٔ ٝ‬سشغيُ شذيط‪ٔ ٜ‬يو‪ٙ‬س‪ .‬سبظ٘س‪ٔ ٜ‬جبزضر ث‪ ٝ‬فطاذ‪ٛ‬ا٘ي يه سبثـ ‪ٔ set‬يو‪ٙ‬س‬
‫و‪ٔ ٝ‬ؼٕ‪ٛ‬ف‪ ٝ‬چ‪ٟ‬بض ٔرشػػبسي ضا دصيطفش‪ ٚ ٝ‬ثطضسي ٔيو‪ٙ‬س و‪ٞ ٝ‬ط وساْ اظ آ٘‪ٟ‬ب زض ا‪ِٚ‬يٗ ضثـ لطاض زاض٘س ‪ٔ ٚ‬مساض آ٘‪ٟ‬ب‬
‫ثعضٌشط اظ ‪ٕ٘ 2.0‬يثبضس‪ٕٞ .‬چ‪ٙ‬يٗ سبثـ ‪ set‬ثطضسي ٔيو‪ٙ‬س و‪ٔ ٝ‬رشػبر سساضن زيس‪ ٜ‬ضس‪ ،ٜ‬ذبظ يه ٔسشغيُ ثبض‪ٙ‬س‪.‬‬
‫س‪ٛ‬اثـ فض‪ ٛ‬زض ٘ؾط ثٍيطيس و‪ٔ ٝ‬جبزضر ث‪ٔ ٝ‬حبسج‪ ٝ‬ع‪ ،َٛ‬فطؼ‪ٔ ،‬حيظ ‪ٔ ٚ‬سبحز ٕ٘بي‪ٙ‬س‪ٕٞ .‬چ‪ٙ‬يٗ يه سبثـ ٔس‪ٙ‬س ث‪ٙ‬بْ‬
‫‪ square‬زض ٘ؾط ثٍيطيس و‪ ٝ‬سقييٗ و‪ٙ‬يس آيب ثب ٔسشغيُ عطف ‪ٞ‬سشيٓ يب ٔطثـ‪.‬‬
‫‪ 9-13‬والس ‪ٔ Rectangle‬غطح ضس‪ ٜ‬زض سٕطيٗ ‪ 9-11‬ضا ثطاي زاضشٗ سبثـ ‪ draw‬اغالح و‪ٙ‬يس‪ .‬ايٗ سبثـ الساْ ث‪ٝ‬‬
‫ٕ٘بيص ٔسشغيُ زض زض‪ ٖٚ‬يه ػقج‪ 25 ٝ‬زض ‪ٔ 25‬يو‪ٙ‬س و‪ ٝ‬ثرطي اظ ضثـ ا‪ٔ َٚ‬سشغيُ زض آٖ ٔميٓ اسز‪ .‬اظ سبثـ‬
‫‪ setFillCharacter‬ثطاي دط وطزٖ زاذُ ٔسشغيُ ثب وبضاوشط ٔطرع ضس‪ ٜ‬اسشفبز‪ ٜ‬و‪ٙ‬يس‪ٕٞ .‬چ‪ٙ‬يٗ اظ سبثقي ث‪ٙ‬بْ‬
‫‪ setPerimeterCharacter‬ثطاي سقييٗ وبضاوشطي و‪ ٝ‬اظ آٖ ثطاي ضسٓ ثس٘‪ ٝ‬يب حبضي‪ٔ ٝ‬سشغيُ اسشفبز‪ ٜ‬ذ‪ٛ‬ا‪ٞ‬س ضس‪،‬‬
‫وٕه ثٍيطيس‪.‬‬
‫‪ 9-14‬والس ث‪ٙ‬بْ ‪ HugeInteger‬ايؼبز و‪ٙ‬يس و‪ ٝ‬اظ يه آضاي‪ 40 ٝ‬ف‪ٙ‬ػطي اظ اضلبْ ثطاي شذيط‪ٜ‬سبظي اضلبْ ث‪ ٝ‬ثعضٌي‬
‫افساز ‪ 40‬ضلٕي اسشفبز‪ ٜ‬و‪ٙ‬س‪ .‬س‪ٛ‬اثـ فض‪ substract , add, output, input ٛ‬ضا زض ٘ؾط ثٍيطيس‪ .‬ثطاي ٔمبيس‪ ٝ‬ضي‪ٞ‬بي‬
‫‪ ،HugeInteger‬س‪ٛ‬اثـ ‪ٚ isGreaterThanOrEqualTo, isLessThan ،isGreaterThan ،isNotEqualTo ،isEqualTo‬‬
‫‪ isLessThanOrEqualTo‬ضا زض ٘ؾط ثٍيطيس‪ٞ .‬ط يه اظ ايٗ س‪ٛ‬اثـ يه سبثـ ديطٍ‪ ٛ‬يب ٔس‪ٙ‬س ‪ٞ‬سش‪ٙ‬س و‪ ٝ‬زض غ‪ٛ‬ضر‬

‫‪www.yourshop.4kia.ir‬‬
‫‪www.Booknama.com‬‬

‫________________ فصل نهم‪622‬‬ ‫كالسها‪:‬نگاهي عميقتر‪:‬بخش ‪I‬‬

‫ثطلطاض ث‪ٛ‬زٖ ضاثغ‪ٔ ٝ‬بثيٗ ز‪ ٚ‬ضي ‪ٔ IntegerHuge‬مساض ‪ ٚ true‬زض غ‪ٛ‬ضر ثطلطاض ٘ج‪ٛ‬زٖ ضاثغ‪ٔ ٝ‬مساض ‪ false‬ثطٌطز‬
‫‪modulus , divide,‬‬ ‫ٔيز‪ٙٞ‬س‪ٕٞ .‬چ‪ٙ‬يٗ سبثـ ٔس‪ٙ‬س ‪ isZero‬ضا زض ٘ؾط ثٍيطيس‪ .‬زض غ‪ٛ‬ضر سٕبيُ ٔيس‪ٛ‬ا٘يس س‪ٛ‬اثـ فض‪ٛ‬‬
‫‪ multiply‬ضا ‪ ٓٞ‬ثىبض ٌيطيس‪.‬‬

‫‪www.yourshop.4kia.ir‬‬

You might also like