ترجمه جاوا

Chapter 5

ايجاد و طبقه‌بندي‌ها
در پايان اين فصل شما قادر خواهيد بود كه …
۱-درك مشخصات كامل برنامه نويس موضوعي – تطبيقي
۲-دانستن زمان به كارگيري متغيرها و روشهاي عمومي و خصوصي به طور اختصاصي
۳-ايجاد كلاسهاي شخصي
۴-معرفي موضوعات كلاسهاي شخصي
۵-نگارش روشهايي كه ارزشها را باز مي گرداند و ارزش‌هاي داده را تائيد مي كند .
به هر حال هر كدام از اپلت هايي كه ايجاد كرده ايد در طبقه واحدي قرار مي گيرند . همان طور كه به ساختار applet توابع بيشتري مي افزائيد حجم برنامه زياد شده و كنترل آن دشوار مي گردد . روش مناسب براي توسعه برنامه تقسيم عملكرد مابه موضوعات كوچك مي باشد ، كه هر كدام از آنها مسئول وظيفه‌اي خاص مي باشد .
در اين بخش خواهيم آموخت applet هاي قبلي را جدا كرده ، تفكيك كرده و به هنگام پردازش كاربر در هر طبقه applet پردازش شود .

مروري بر برنامه نويسي موضوعي – تطبيقي
همان طور كه شما در بخش ۱ آموختيد ، Java يك زبان تطبيقي – موضوعي است و اين بدان معني است كه برنامه اي كه شما مي نويسيد از نظر موضوع بايد مطابقت داشته باشد . برخي از ويژگي هاي برنامه نويسي تطبيقي – موضوعي ، اختصار ،
ميراث و چند شكلي مي باشد .

اختصار به تركيبي خواص و روشهايي در يك بخش واحد اتلاق مي شود . قبل از برنامه نويسي تطبيقي – موضوعي ، برنامه هاي كامپيوتر اطلاعات داده را جداي از پردازش كنترل مي كرد .
روش جديد با هر دو مشخصه و عملكرد هر موضوع سر و كار دارد كه اين حس را ايجاد مي كند كه ويژگيها و روشها در ارتباط متقابل با هم هستند . و اختصار اين امكان را مي دهد صورت كاملي از داده ها در باب يك موضوع بوسيله مخفي كردن از ساير موضوعات پنهان بماند . شما مي توانيد تصور كنيد كه يك موضوع همانند جعبه سياهي است كه وظيفه اي را انجام مي دهد . تنها راه دستيابي به ويژگيها و روشهاي يك موضوع به كارگيري ويژگيها و روشهاي خاص مهيا شده به عنوان يك روش عمومي مي باشد . هر موضوع اجزاء ، متغيرها و روشهايش را اداره مي كند .

ميراث :
با به كارگيري ميراث شما مي توانيد كلاس موجود را بهينه سازيد بدون اينكه اصل آن را تغيير دهد . بوسيله ايجاد كلاس جديد كه برگرفته شده از سطح موجود است ، شما مي توانيد متغيرها و روشهايي را به سطح جديد اضافه يا تغيير دهيد . در هر applet كه شما ايجاد مي كنيد ، سطح applet موجود را بسط مي دهيد . سطح يا كلاس موجود به عنوان كلاس اصلي يا سوپركلاس شناخته مي شود . و كلاس بسط يافته زيرگروه ناميده مي شود . البته هر كلاس جديد نيز مي تواند برگرفته شده از زيرگروه باشد ، چرا كه زيرگروه مي تواند همچنين سرگروه نيز باشد . سلسله مراتب رابطه بين سوپركلاس و زيرگروه مي باشد .

applet هايي را كه شما ايجاد كرده ايد بر اساس ميراث مي باشد . كلاس applet اغلب در گروه بندي جاوا موجود مي باشد . applet جديد شما به اين كلاس اضافه مي شود ، اما همچنين داراي ويژگيها و عملكرد كلاس پايدار مي‌باشد . زماني كه شما متغيرها را در ابتداي كلاس معرفي مي كنيد ، شما ويژگيهاذي جديدي را به كلاس اضافه مي كنيد . كلاس applet اغلب داراي يك روش داخلي است ، روش داخلي كه شما برنامه هاي اجرائي را به جاي روش داخلي در كلاس پايه مي نويسيد ، در پردازشي كه درجه اول ناميده مي شود . درجه اول بودن اين است كه چطور شما

روش موجود را تغيير مي دهيد : شما روش خود را با همان نام روش موجود مي نويسيد و روش ما روش موجود را تحت الشعاع قرار مي دهد . شما مي توانيد به تأثير پاك شدن يك روش با تحت الشعاع قرار دادن روشي كه هيچ كدي ندارد دست يابيد .

زماني كه يك متد بدون كد به زيرگروه تبديل مي شود هيچ اتفاقي نمي‌افتد. توجه : شما قبلاً روشهايي را براي حوادث در بخش ۲ نوشته ايد . شما مجبوريد همه روشها را در ماوي ليتنر پاك كنيد اما روشهاي ناخواسته محتوي هيچ گونه دستوري نيستند .

پردازش و كلاسهاي نهفته :
يك كلاس در جاوا تنها مي تواند از يك سوپركلاس برگرفته شده باشد . اگر شما برنامه‌اي در C++ داريد شما چند ارث را خواهيد ديد كه امكان آن در جاوا وجود ندارد . البته جاوا داراي دو ويژگي ديگري است كه مي تواند به شما كمك كند زماني كه به مشخصه هايي براي بيش از يك كلاس نياز داريد : پردازش و كلاس هاي نهفته.
پردازش همانند يك كلاس است ، كه در مواجهه با گروهي از روشها مي باشد. البته شما يابد همة روشها را در هر پردازش كه شما نياز داريد دور كنيد و شما همواره از پردازش در برنامه نويسي استفاده مي كنيد :
پردازش Action . histener و پردازش Mouse listener . شما از صفحه كليد براي پردازش استفاده مي كنيد . زماني كه شما پردازشي را انجام مي دهيد ، شما كلاستان را كه داراي روشهاي خاص است ضمانت مي كنيد . ساير كلاسها كه از كلاس شما استفاده مي كنند مي توانند اطمينان داشته باشند كه روشها موجود مي باشد در واقع همگردان جاوا اين محدوديت ها و

پيامهاي خطا را اجرا مي كند اگر شما پردازش را انجام دهيد و از كد براي هر روش استفاده نكنيد .
اگرچه يك كلاس مي تواند تنها داراي يك سوپركلاس باشد ، كه مي تواند پردازش هاي متعددي را اجرا كند . شما مي توانيد پردازش خود را در همان حالت كلاسي كه ايجاد كرده ايد انجام دهيد . شما صفحه يك كلاس نهفته كلاس است كه در كلاس ديگري تعريف مي شود . كلاس نهفته در جاوا معرفي مي شود . كلاسهاي نظري به طور نزديكي در رابطه با پردازش مي‌باشد . يك كلاس

نظري ، كلاسي است كه تنها براي هدف ارث نوشته مي‌شود . يك كلاس نظري شامل روشهايي است كه شامل هيچ گونه گزاره اي نيست كه روشهاي نظري ناميده مي شود . شما نمي توانيد بلافاصله يك موضوع را از كلاس نظري بگيريد ، در عوض مي توانيد از يك كلاس نظري نشتق شويد . شما ممكن است از اهداف اين امر تعجب كنيد . زماني كه موضوعات متفاوت ويژگيهايي مشابهي داشته باشند ، شما مي‌توانيد سوپركلاس و زيرگروه ايجاد كنيد كه از سوپركلاس مشتق شوند . اين امر اين امكان را مي دهد كه برخي از روشها و متغيرهاي مشابه كلاس در ميان زيرگروهها باشند . نمونه اي از اين شرايط اجزاء كلاس در جاوا مي‌باشد . كه يك كلاس نظري است . برچسب ، متن ، منطقه متن و نقطه زيرگروه اجزاء مي باشد .

 

چندشكلي بودن :
ويژگي ديگر زبان oop چندشكلي بودن آن است . واژه چندشكلي بودن به معني توانايي براي ايجاد شكل ها و فرم هاي متعدد مي باشد . همان طور كه در مورد oop به كار گرفته شده است ، چند شكلي بودن دلالت برنامهاي روشهايي دارد كه نامهاي مشخص اما اجراهاي متفاوتي دارند .
براي مثال : كلاسهاي متعدد ممكن است داراي يك روش باشد . در هر نمونه آيتم موردنظر به طور كامل هماهنگ با اين كلاس عمل مي كند . همچنين ممكن است يك كلاس داراي روشهاي متفاوت با يك نام باشد كه جاي بحث دارد . هر يك از روشهاي نام‌گذاري شده وظيفه خود را در روش متفاوتي از سايرين انجام مي دهد .
روشي كه چندشكلي بودن اجرا مي شود اين است كه نام روشي را به طور مشابه در سه گروه و زيرگروه داشته باشيم . براي مثال ، كلاس applet داراي يك روش داخلي است . زماني كه شما روش خود را مي نويسيد در زيرگروه روش شما روش سرگروه را تحت الشعاع قرار مي دهد . هر كدام از روشها نامهاي مشابهي دارند اما عملكردشان متفاوت است .

براي مثال ، براي چندشكلي بودن توجه كنيد به اجزاء كلاس كه براي برچسب و اجزاء متن يكي است . هر كدام از اين كلاسها داراي روشهاي خاص متن است و به طور خاص براي كلاس خاص عمل مي كند . بنابراين همه موضوعات كه نمونه اي از برچسب ، متن ، منطقه متن مي باشد داراي روشي مشابه با عملكرد متفاوت مي باشد .

موضوعات :
اگر برنامه هاي ما داراي موضوع منطبق مي باشد كه تنها انتخاب جاوا مي‌باشد ، كه براي گرفتن مزايا از ويژگيهايي oop نمي باشد . اصلي‌ترين تفكر در پي oop ايجاد آيتم هاي قابل مصرف مجدد مي باشد كه مي تواند از هر پروژه اي كه ممكن است مورد نياز باشد چنين موضوعي ايجاد شود . يك موضوع چندي است كه داراي ويژگيها و رفتارهاست . همه اجزايي كه شما به كار مي بريد

موضوعات هستند . زمينه متن داراي يك ارزش است و عملكردهايي نظير گرفتن متن ، تنظيم متن ، تنظيم پيش‌زمينه و تنظيم پس‌زمينه مي باشد . دكمه داراي برچسب خاص است كه نمايش دهنده بر روي آن است و داراي روشهايي نظير گرفتن برچسب و تنظيم برچسب مي‌باشد .
براي ايجاد اجزاء موضوع ، شما از صفحه كليد جديد با نوع موجود استفاده مي كنيد كه كلاس نام دارد .
اين جمله بيان كننده نمايش دهنده علامت كلاس مي باشد . زماني كه شما مثالي را از يك كلاس بيان مي كنيد روش ساختاري كلاس اجراء مي شود . در نمونه نمايش علامت ،‌زماني كه موضوع ايجاد مي شود متن نمايش داراي برچسب خاص مي شود . البته شما مي توانيد علامتهاي بيشتري را بيان كنيد ، هر كدام با نام خود و برچسب خاص خود مي باشد . همچنين شما مي توانيد اعلام كنيد كه يك علامت بدون برچسب مي باشد كه بيان كننده نكته مهمي است : يك كلاس ممكن است داراي بيش از يك روش ساختاري باشد ، همان طور كه قبلاً مشاهده كرديد . اگر شما زماني كه علامت را ايجاد مي كنيد برچسبي ارائه كنيد ، يك روش ساختاري عمل مي كند ولي اگر اين عمل را انجام ندهيد روش ساختاري متفاوتي عمل مي كند و اين مفهوم به معني اولدينگ مي باشد .

 

موضوعات خود شما :
همان طور كه شما از علامت كلاس و كلاس زمينه متن براي ايجاد موضوعات
چندگانه استفاده مي كنيد ، شما مي توانيد كلاس خود را خلقكنيد و نمونه هاي متعددي را از كلاس شما بزنيد . كلاس ويژگيهاي موضوع به همراه متغيرها و عملكردهاي موضوع را با روش ها توصيف مي كند . در اين بخش ما كلاس هاي خود را ايجاد خواهيد كرد و موضوعاتي را از آن مثال خواهيد زد .

بازتاب (بازخورد) :
۱-به عبارت ساده اي نمونه را بيان كنيد از :
الف-كپسول كردن (اختصار)
ب-ميراث
۲-واژه هاي زير را تعريف كنيد

الف-موضوع
ب-مثال
ج-ميان مثال

ايجاد يك كلاس جديد :
طرح شما داراي كلاسهاي متعددي است . شما فايل مجزايي را براي هر كلاس ايجاد مي كنيد و آن را با استفاده از نام كلاس و فاميل ضمير از جاوا ذخيره مي كنيد . به عنوان مثال ، كلاس جديد Interset بايد با نام java . Interest ذخيره شود . زماني كه اين امر همگرداني مي شود ، همگردان كد بايت را به عنوان Interest . java ذخيره مي‌كند .
اگر شما از IDE استفاده مي كنيد ، IDE همه فاسلهاي پرونده را كنترل مي كند به طوري كه يك كلاس مي تواند بر ديگري رجوع كند . اگر شما از يك اديتور و JDK استفاده مي كنيم ، لازم است مطمئن باشيد كه همه فايلها در همان پرونده ذخيره شده است .

عمومي در مقابل خصوصي :
همان طور كه شما با كلاسهاي چندگانه شروع مي كنيد ، مقايسه دستيابي خصوصي و عمومي بسيار مهم مي باشد . كلاسهاي applet شما و ر وشهاي داخل آن همگي عمومي هستند . چراكه شما تنها داراي يك كلاس هستيد ، تمايزها دقيق نبوده است .
مفهوم كپسولي كردن را به ياد آورديد ، كه همچنين به معني مخفي كردن اطلاعات مي باشد . يك كلاس با طرح خوب جزئياتش را از ساير كلاسها تا حد امكان مخفي نگه مي دارد . براي مثال ، زماني كه شما موضوع علامت كلاس را بيان مي كنيد ، شما نمي‌توانيد به طور مستقيم به برچسب آن دست يابيد ، بلكه شما مي توانيد از برچسب گرمتر شده و تنظيم شده استفاده كنيد . علامت كلاس برچسب خاص را مخفي مي‌كند اما اجازه دستيابي به آن را از طريق روشهاي در دسترس يا تنظيم شده را مي دهد . در علامت كلاس ، برچسب بيان كننده متغير خصوصي است ، روشهاي آماده برچسب و تنظيم آن بيان كننده روشهاي عمومي است .

در يك كلاس شما مي توانيد متغيرهاي را بيان كنيد كه عمومي با خصوصي است . شما همچنين مي توانيد روشهايي را بيان كنيد كه عمومي يا خصوصي است . متغيرها و روشهاي عمومي را مي توان با اشاره به موضوع مثال زده شده بيان كرد . تنها جمله هاي داخل كلاس مي تواند به متغيرها و روشهاي بيان شده خصوصي اشاره داشته باشد . برنامه نويسي عمل خوب همه متغيرهاي خصوصي كلاس را بيان مي كند و اجازه دستيابي به متغيرها را تنها از طريق روشهاي عمومي مي دهد . براي دستيابي به اين امر از يك روش استفاده كنيد .

بخش كه ذيل برگرفته شده از كلاس است كه Interest نام دارد ، كه ايجاد كننده متغيركلاس خصوصي است كه Flt Rate نام دارد . يك موضوع خارج از كلاس امكان دستيابي مستقيم به اين متغير را ندارد . كلاس ديگري كه نمونه اي را از يك موضوع از كلاس Interest بيان مي كند مي تواند ميزان دقت كد را تنظيم كند .
روش ميزان تنظيم در كلاس Interst مي تواند ارزش آن را تعيين كند ، همان
طور كه در بالا مشاهده كرديد ، مي تواند ارزش جديد را تائيد كند . گاهي اوقات روش Set xxx اين موضوع را چك مي كند تا اطمينان حاصل شود و يك اطلاعات كه معتبر هستند . قبل از اين كه دقت ارزش اختصاص داده شود .

بازخورد :
۱-كلاس محصول را با متغيرهاي خصوصي براي ، نوع ، مقدار و بها ايجاد كنيد .
۲-عبارت را براي ذكر نمونه كدگذاري كنيد كه توليد فعلي از توليد كلاس مي‌باشد .
۳-روش تنظيم بها عمومي را براي ذخيره ارزش شناور در متغير هزينه بنويسد .
۴-عبارت را براي گذر از ارزش txt cost به روش تنظيم هزينه توليد فعلي كدگذاري كنيد .

گزارش ارزشها از يك روش :
روشهايي كه شما مي نويسيد هيچ گونه ارزشي را به كد بر نمي گرداند و اين امر روش ناميده مي شود‌، براي مثال عبارت با روشي شروع مي شود كه در برگيرنده زنجيره اي از عبارت هاست . زماني كه عبارتي در موقعيت

ديگر اين روش را بخواند با اين عبارت
اين بدان معني است كه براي اجزا اين عبارت در اين روش فرا خوانده مي‌شود و باز مي گردد و زماني كه شما متوقف مي شويد ولي هر چيزي را براي ما نمي آورد . كلمه كليدي «تيمي» در يك روش به معني اين است كه روش ارزش را گزارش نمي كند .