صفحه 1:
فصل ۴ کلاسها (۱) TH EDITION

صفحه 2:
مقدمه * کلاسها مهمترین امکان و ویژگی هستند که برنامه نویسی شیء گرا (000) را مقدور می سازند برنامه نویسی در جاوا شامل تعریف تعدادی کلاس است - هر برنامه یک کلاس است — تمامی نرم افزار کمکی حاوی کلاس‌پاست 7 تمامی انواع تعریفی برنامه نویس کلاس هستند * کلاسها در جاوا نقش محوری دارند http://ce.sharif.edu/~rouhi 42

صفحه 3:
تعریف کلاسها * شمااز قبل به استفاده از کلاسها و اشیاء ایجاد شده از آنها و چگونگی احضار متدهای آنها واقف هستید - برای مثال, شما پیشتر از کلاسیای 5۲109 و 5681006۲ استفاده کردید * اکنون. چگونگی تعریف کلاسهای خود و متدهای آنها. همین طور ایجاد اشیاء خودتان را از آنها می آموزید http://ce.sharif.edu/~rouhi 43

صفحه 4:
هر كلاس يك نوع است * كلاسء نوع به خصوصي از نوع تعريفي برنامه نويس است و مى توان متغيرهايى از نوع يك كلاس تعريف كرد * يك مقدار از نوع يك كلاسء يك شىء يا يك نمونه از كلاس ناميده مى شود - اگر ۸ یک کلاس باشد. در این صورت عبارتبایی مثل «013 از نوع ‎A‏ ‏است». «018 یک شیء از ۸ است» 9 ‎Dla»‏ یک نمونه از ‎Rous‏ ‏است» به یک معنی هستند * یک کلاس انواع داده هایی که یک شیء می تواند داشته باشد. در کنار اعمالی که می تواند انجام بدهد را تعیین می کند

صفحه 5:
مقادیر نوع بدوی در مقایسه با مقادیر نوع کلاسی * یک مقدار نوع بدوی, یک تکه ی منفرد از داده هاست * یک مقدار نوع کلاسی یا شیء می تواند تکه های داده ای متعدد در کنار اعمالی که متد نامیده می شوند. داشته باشد - تمامی اشیاء یک کلاس, متدهای یکسانی دارند < تمامی اشیاء یک کلاس. مقادیر داده ای یکسانی دارند (به عبارتی. نام. نوع و تعداد آنها یکی است) - برای یک شیء مفروض, هر تکه از داده ها می توانند یک مقدار متفاوت نکه بدارند

صفحه 6:
محتوای تعریف یک کلاس تعریف یک کلاس, اقلام داده ها و متدهایی را که تمامی اشیاء آن خواهند داشت مشخص می کند گاهاً به این اقلام داده ها و متدها اعضای شیء گفته می شود اقلام داده ای, فیلدها یا متغیرهای نمونه نامیده می شوند اعلان متغیرهای نمونه و تعاربف متد می توانند به هر ترتیبی در تعریف کلاس قرار بگیرند nttp://ce.sharif.edu/—rouh

صفحه 7:
new ‏عملگر‎ يك شىء از يك كلاس توسط متغيرى از نوع كلاس نامكذارى يا اعلان مى شود ClassName 298۲ در ادامه. بايستى از عملكر لالا©1! استفاده شود. تا شىء: ايجاد شده و با نام متغيرش مرتبط شود ‎classVar = new ClassName();‏ اين عملیات را می توان به صورت زیر ترکیب کرد: ClassName classVar = new ClassName(); http://ce.sharif.edu/~rouhi

صفحه 8:
متدها و متغیرهای نمونه * متغیرهای نمونه را مي توان به شکل دو مثال زیر تعریف کرد: ‎public (Modifier) ,Sssol a, —‏ توجه كنيد (فعلاً): public String instanceVar1; public int instanceVar2; * به منظور ارجاع به يك متغير نمونه ى خاصء قبل از آن. نام شیء مربوطه را به صورت زیر بیاورید: objectName. instanceVar1 objectName. instanceVar2 http://ce.sharif.edu/~rouhi 48

صفحه 9:
متدها و متغیرهای نمونه تعاریف متد به دو قسمت تقسیم می شوند: یکی سرخط (7680/19/) متد و دیگری بدنه ی متد ‎public void myMethod()‏ { ‎code to perform some action‏ ‎and/or compute a value‏ 1 متدها با استفاده از نام شیء فراخواننده و به دنبال آن نام متد. به صورت زیر احضار می شوند: ‎classVar.myMethod();‏ احضار یک متد با اجرای بدنه ی متد معادل است

صفحه 10:
مکان و نام فايلها * به ياد داشته باشيد كه: هر فايل جاوا بايستى با كلاسى كه در بر مى كيرد هم نام بوده و يسوند .31/3[ داشته باشد - برای مثال, یک کلاس به نام 13255) 10۷ بایستی در فایلی به نام ‎on v3 MyClass. java‏ ‎Sa *‏ برنامه ی شما و تمامی کلاسهایی که از آنها استفاده می کند بایستی در یک دایرکتوری يا پوشه قرار بگیرند ‎http://ce.sharif.edu/~rouhi 4-10

صفحه 11:
راجع به متدها بیشتر بدانیم * دو نوع متد وجود دارند: — متدهایی که محاسباتی داشته و یک مقدار بر می گردانند - متدهایی که یک عمل انجام می دهند * اين نوع متد مقداری بر نمی گرداند و متد ۷010 نامیده می شود هر یک از اين نوع متدها در چگونگی تعریف» همین طور نحوه ی احضارشان (معمولاً) با هم اندکی تفاوت دارند nttp://ce.sharif.edu/—rouh 411

صفحه 12:
راجع به متدها بیشتر بدانیم * متدی که مقداری بر می گرداند بایستی نوع آن مقدار را در سرخط خود مشخص کند ‎public typeReturned methodName(paramList)‏ ۴ هر متد 0 در سرخط خود از کلمه ی کلیدی 0 استفاده می کند تا نشان بدهد که مقداری بر نمی گرداند: public void methodName(paramList) http://ce.sharif.edu/~rouhi 4.12

صفحه 13:
main is a void Method ‏برنامه در جاوا صرفاً کلاسی است که یک متد ۲۲121۲ دارد‎ زمانی که شما فرمانی برای اجرای یک برنامه ی جاوا صادر مى كنيده سیستم زمان اجرا متد 10811] را احضار می کند توجه داشته باشید که ۲۲۵110 یک متد ۷0۵01 است. هم چنانکه سرخط آن گواه این مطلب است: public static void main(String[] args) http://ce.sharif.edu/~rouhi 4.13

صفحه 14:
دستورات ۳۵۲۷۲0 * بدنه ی هر دو نوع متد شامل ليستى از اعلاها و دستورات است که در ميان يك زوج [1 قرار می گیرند: public <void or typeReturned> myMethod() { declarations statements http://ce.sharif.edu/~rouhi aaa

صفحه 15:
دستورات ۳۵۲۷۲0 بدنه ی متدی که یک مقدار بر می گرداند بایستی شامل یک یا چند دستور ۲611۲۳ هم باشد دستور ۲611۲۳ مقدار برگشتی را مشخص کرده و احضار متد را پایان می دهد ‎return Expression;‏ E53 JI baa 4 4 Like po rile jo Expression — ‏ب ركشترليسسدش ده در سرخطمتد منتبی‌شود. باشد‎ http://ce.sharif.edu/~rouhi 4.5

صفحه 16:
دستورات ۳۵۲۷۲0 متدی که ۷۵/01 باشد نیازی به دستور ۲6۲1۲۲۱ ندارد. مگر اينکه شرایطی پیش بیاید که بخواهیم پیش از تمام شدن تمام کد اجرایی متد. برگردیم در اينجاء چون متد مقداری بر نمی گرداند. یک دستور ۲6۱۲۳ استفاده می شود که عبارتی ندارد: return; http://ce.sharif.edu/~rouhi

صفحه 17:
تعاریف متد * احضار متدی که مقداری بر می گرداند می تواند به عنوان یک عبارت در هر جایی که مقدار برگشتی آن مورد نیاز است استفاده شود: typeReturned tRVariable; tRVariable = objectName.methodName() ; * احضار یک متد ۷0/0 یک دستور ساده به صورت زیر است: objectName.methodName() ; http://ce.sharif.edu/~rouhi 417

صفحه 18:
هر متدی می تواند به صورت یک متد ۷0[0 استفاده شود * متدی که یک مقدار بر می گرداند می تواند عملی هم انجام بدهد * اگر شما می خواهید که عمل انجام شود اما به مقدار برگشتی نیاز ندارید. می توانید طوری متد را احضار کنید که گویی مقدار نداشته و ۷0/0 است؛ به اين ترتیب. مقدار برگشتی دور ريحتة هی فود objectName. returnedValueMethod ( ) ; nttp://ce.sharif.edu/—rouh

صفحه 19:
متغیرهای محلی متغیری که در میان تعریف یک متد اعلان می شود متغیر محلی نامیده ۰ می شود - تمامی متغیرهایی که در تعریف متد ۲۲۵۱۲ اعلان می شوند متفیرهای ۳ 7 تمامی پارامترهای متد. متغیرهای محلی هستند = اگر دو متد داشته باشیم که هر یک. متغیر محلی یکسانی داشته باشند. اين متغيرها باز هم متغیرهای کاملا متفاوتی هستند (به عبارتی. محلی متدهایشان هستند) nttp://ce.sharif.edu/—rouh

صفحه 20:
متغیرهای سراسری * برخی زبانهای برنامه نویسی نوع دیگری از متغیر را که متغیر سراسری نامیده می شود. به ميان مى أورند * زبان جاوا متغيرهاى سراسرى ندارد! http://ce.sharif.edu/~rouhi 4.20

صفحه 21:
بلاکها * بلاک نامی دیگر برای یک دستور مرکب است. یعنی مجموعه ای از دستورات جاوا که در دل یک زوج [) قرار می گیرند * هر متغير كه در ميان یک بلاک اعلان می شود محلی آن بلاک است و نمی تواند در بیرون از آن بلاک استفاده شود همین که متفیری در میان یک بلاک اعلان شد. نام آن نمی تواند برای هر چیز دیگری در تعریف همان متد استفاده شود http://ce.sharif.edu/~rouhi 421

صفحه 22:
اعلان متغیرها در دستور ‎FOr‏ شما مى توانيد يك يا جند متفیر را در مان بخش مقداردهی آغازین يك دستور 101 اعلان كنيد متغيرى كه به اين نحو اعلان مى شود. محلى حلقه ى 501 خواهد بود و نمى تواند در بيرون از حلقه استفاده شود اكر مى خواهيد از اين متغير در بيرون از حلقه هم استفاده كنيد. در اين صورت آن را در بيرون از حلقه ى 101 اعلان كنيد nttp://ce.sharif.edu/—rouh 4-22

صفحه 23:
پارامترهای از نوع بدوی متدهایی که تابحال ديده ايم هيج گونهپارامتری نداشتند که با یک زوج پارانتز تهی در سرخط متد مشخص می شد برخی متدها نیاز به دریافت داده های اضافه تری از طریق لیستی از پارامترها دارند تا کارشان را انجام بدهند - به اين پارامترها, پارامترهای فرمال نیز گفته می شود nttp://ce.sharif.edu/—rouh

صفحه 24:
پارامترهای از نوع بدوی * ليست يارامترء توصیفی از داده های لازم یک متد را ارائه می دهد - آن تعداد و نوع داده های تک تک لازم آتبا را مشخص می کند. ترتیبی که بایستی داده شوند و اسامی محلی این مقادیر که در متد استفاده شده اند: public double myMethod(int pl, int p2, double p3) http://ce.sharif.edu/~rouhi 4.24

صفحه 25:
پارامترهای از نوع بدوی * ومانيكه متدئ أحضار مى شوم‌بایستی مقادیرسانبی جعدو مشقل آرخویشا ارسال شوند - به آر گومانا پارامترهای واقعی نیز گفته می شود * بایستی تعداد و ترتیب آرگومانها با آنهایی که در لیست پارامترها هستند تطبیق نمایند * بایستی نوع هر آرگومان با نوع پارامتر متناظرش سازگار باشد: int a=1,b=2,c=3; double result = myMethod(a,b,c);

صفحه 26:
پارامترهای از نوع بدوی * در مثال قبل, مقدار هر آرگومان (نه نام متغیر) در پارامتر متناظر از متد قرار مى كيرد - اين روش اتصال آركومانها به بارامترهاى فرمال به راهكار فراخوانى با مقدار معروف است

صفحه 27:
پارامترهای از نوع بدوی اگر نوع آرگومانها و پرامترها به طور دقیق تطبیق ننمایند. جاوا سعی خواهد كرد كه يك تبديل نوع خودكار انجام بدهد - در مثال قبل. مقدار ]110 آرگومان ) به یک 00۱1016 تبدیل خواهد شد <- یک آرگومان بدوی می تواند به صورت خودکار از هر کدام از انواع زیر به هر یک از آنبایی که در سمت راست آن نوع در لیست زیر باشد تبدیل نوع داشته باشد: byte>shortint—Long—float—double http://ce.sharif.edu/~rouhi

صفحه 28:
پارامترهای از نوع بدوی * یک پارامتر را اغلب می توان به صورت یک مکان خالی یا جانگهدار تصور کرد که با مقدار آرگومان متناظرش پر می شود * با این وجود. یک پارامتر بیش از اینهاست: در حقیقت. آن یک متغیر زمانیکه یک متد احضار می شود. مقدار آرگومانش محاسبه شده و پارامتر متناظر (به عبارتی. متغیر محلی) به مقدار آن مقداردهی می شود حتی اگر مقدار یک پارامتر فرمال در میان یک متد تغییر یابد (به عبارتی» به عنوان یک متغیر محلی استفاده شود) مقدار آرگومان نمی تواند تغییر يابد

صفحه 29:
پارامتر فرمالی كه به عنوان یک متغیر محلی استفاده می شود( از ۵) Display 4.6 A Formal Parameter Used as a Local Variable This io the file BilL. java. 1 import java.util.Scanne 2 public class Bill 3 4 4 public static double RATE = 150.00; //DoLlars per quarter hour 5 private int hours; 6 private int minutes; 7 private double fee; (continued) e.sharif.edu/~rouhi 429

صفحه 30:
پارامتر فرمالی که به عنوان یک متفیر محلی استفاده می شود (۲ از ۵) Display 4.6 A Formal Parameter Used as a Local Variable 8 public void inputTimeWorked() 9 { 16 system.out.printinC-Enter nunber of full hours worked” 1 systen.out.printIn(“folloved by number of minutes:"): 2 Scanner keyboard = new Scanner(System.in)i conputeFes uses the 5 hours = keyboard. nextint() ‏سس سم‎ 4 minutes = keyboard .nextint(: ‏ور‎ ‏رد ود‎ 16 public double conputeFeeCint hoursWorked, int minutesworked) vo 8 " minuteshorked = hoursWorked*60 + minutesvorke » int quorterHours = minutesworked/15; //Any remaining Fraction of @ 2 71 warter hour is not charged for ‏ماع ع اس ام مس رآ‎ ار وم سس عن اممو دماله كا لمعا ولاده امام ‎public void updateFee() gee 1 4‏ 23 موسر اما ۳۵ ‎Jolis‏ 0 ‎fee = computeFeeChours, minutes);‏ 25 }2% (continued) httpi/ice.sharif.edu/~roubh 4:30

صفحه 31:
پارامتر فرمالی که به عنوان یک متفیر محلی استفاده می شود (۳ از ۵) Display 4.6 A Formal Parameter Used as a Local Variable 27 public void outputBill() 28 1 29 System.out.printIn("Time worked: "); 30 system.out.printIn(hours +" hours and" + minutes + " minutes"); 31 system.out.printin("Rate: $" + RATE + " per quarter hour."); 32 System.out.printin("Amount due: $" + fee); 33 1 34 1 (continued) http://ce.sharif.edu/~rouhi 431

صفحه 32:
بارامتر فرمالى که به عنوان یک متغیر محلی استفاده می شود (۴ از ۵) A Formal Parameter Used as a Local Variable public class BillingDialog This io the file BiLLingDialog. java. public static void main(String{] args) System.out.printIn("Welcome to the law offices of"); System.out.printin("Dewey, Cheatham, and Howe."); Bill yourBill = new BillQ; yourBill. inputTimeWorked(); yourBill updateFee() ; yourBill.outputBillQ ; System.out.printin("We have placed a lien on your house."); System.out.printIn("It has been our pleasure to serve you." (continued) e.sharif.edu/~rouhi 4.32 + Display 4.6 1 2 3 4 5 6 7 8 9 10 11 12 13 14

صفحه 33:
پارامتر فرمالی که به عنوان یک متفیر محلی استفاده می شود (۵ از ۵) Sample Dialogue Welcome to the law offices of Dewey, Cheatham, and Howe. Enter number of full hours worked followed by number of minutes: 3 48 Time worked: 3 hours and 48 minutes Rate: $150.8 per quarter hour. Amount due: $2250.0 We have placed a Lien on your house. It has been our pleasure to serve you. http://ce.sharif.edu/~rouhi 4.33

صفحه 34:
سهل انگاری و اشتباه: استفاده از اصطلاحات «بارامتر» و «آرگومان» * تعجب نکنید که افرادی هستند که اغلب از اصطلاحات پارامتر و آرگومان به جای هم استفاده می کنند http://ce.sharif.edu/~rouhi 4.34

صفحه 35:
پارامتر ۲۱15 * اين مطلب که متغیرهای نمونه بایستی به شکل < 6211109 ۲۳6 6 00[66. > استفاده شوند جا افتاده است * اگر یک نام. آشکارا برای شیء فراخواننده لازم می شود. می توان از کلمه ی کلیدی 1015 استفاده کرد - همواره می توان برای دسترسی ۳066۷5۲1016 105 ۱۷ از شیء مورد نظر از 16 2066۷5۳10 ۰۱۱105 11115 استفاده کرد. nttp://ce.sharif.edu/—rouh 4.35

صفحه 36:
this ‏پارامتر‎ * اگر یک پارامتر یا متفیر محلی دیگر هم نام در متد استفاده می شود بایستی از 1915 استفاده شود ‎wad‏ در ‎pat‏ اینصورت. تمامی نمونه های نام متغیر به صورت محلی تفسیر می شوند: ‎int someVariable = this.someVariable local instance ‎http://ce.sharif.edu/~rouhi 4:36

صفحه 37:
پارامتر ‎this‏ ‏يارامتر 1115 نوعی پارامتر مخفی است * هرچند که در لیست پارامتر یک متد ظاهر نمی شود باز هم یک پارامتر است * زمانیکه یک متد احضار می شود. شیء فراخواننده به صورت خودکار به 5 متصل می شود http://ce.sharif.edu/~rouhi 437

صفحه 38:
متدهایی که یک مقدار منطقی بر می گردانند احضار متدی که یک مقدار 0001681 بر می گرداند ۲116 یا 6 بر می گرداند بنابراين» تجربه ی خوبی است که از این قبیل متدها برای کنترل دستورات و حلقه ها که انتظار یک عبارت منطقی داریم. استفاده کنیم - دستورات 56ا6. حلقه ی ‎While‏ از اين دست.

صفحه 39:
متدهای 60۱۵15 و 1051۲۱۳9 * جوا انتظار متدهای خاصی. نظیر 60115 و 051۲109 را در تمام: يا تقريباً همه ی کلاسها دارد * هدف از 60115 که یک متد با مقدار برگشتی منطقی است. مقایسه ی دو شیء که آیا آنها شرایط «مساوی بودن» را دارند - توجه: شما نمی توانید برای مقایسه ی اشیاء از -- استفاده کنید! كلاش است public boolean equals(ClassName objectName) ‏هدف از متد 051109 برگرداندن یک مقدار 511]00 است که مبین داده های‎ * درون شیء است: ‎public String toString()‏ http://ce.sharif.edu/~rouhi 4.39

صفحه 40:
آزمون متدها * هر متد بایستی در برنامه ای که تنها برنامه ی تست نشده است. آزمایش شود - برنامه ای که هدف آن تنیا تست یک متد است برنامه ی 0/1۷67 نامیده می شود * یک مند اغلب متدهای دیگر را احضار می کند. لذا یک شیوه ی انجام اين کار آن آست که نخست تمامی متدهایی را که توسط آن متد احضار می شوند تست کنیم و سچبین خود متده‌را تست نماييم. - به اين شيوه. تست بايين به بالا - ‎bottom-up testing‏ گفته می شود * _گاهی اوقات لازم می شود که یک متد. قبل از متدی که به آن وابسته است خاتمه یافته یا تبتت شوده قینت گرده: — در این حالت. از نسخه ی ساده شده ای از متد که. ته کد - 56/0 نامیده می شود استفاده کنید تا یک مقدار برای تست بر کرداند nttp://ce.sharif.edu/—rouh

صفحه 41:
قاعده ی اساسی آزمون متدها * هر متد بایستی در یک برنامه نست شود که د رآن هر متد د يكر برنامه ی تست کننده پیشتر به صورت کامل تست و عیب یابی شده باشند nttp://ce.sharif.edu/—rouh 4-41

صفحه 42:
مخفی کردن اطلاعات و ۴۱6۵05۱۱۵11010 * مخفی کردن اطلاعات (۱/0/۳79/ ‎SSH Joe Information‏ چگونگی استفاده از یک کلاس از جزئیات پیاده سازی آن است - ۸۵5۲۲۵6۲۱00 لصطلاح دیگرعاسکه ب رلعبیانمفیوم ک نا گذلشترچزتیابسه منظور لجتنابلز آوردنب یشاز حدلطلاعادلستفلده می‌شسود ‎Encapsulation +‏ به ليزمعنإستكه دادم هاو متدهاويكى ‎cig oa 4 OL‏ کواحد منفرد ت رکیبش وند (به عبلرعی ی کشیع ‎(OLS‏ که لینک ار جزئیاتپ یاده سازیرا پنهانمی‌سازد ‏- دانستن جزئیات غیرضروری است چون تعامل با شیء از طریق یک رابط خوش تعریف و ساده صورت مى كيرد ‏- در جاو؛ مخفی کردن جزئیات با 0۲۱۷۵۲6 علامت زدن آنبا انجام می شود ‎

صفحه 43:
یک زوج اختصار مهم: ۵۳۱ و ۸0۲ Application crf Semis dol, >but, API ٠ ‏لاس توصیف‎ Shel, (Programming Interface ‏چگونگی لستفاده از کاهرلست‎ - یک برنامه نویس به منظور استفاده از یک کلاس که طراحی خوبی داشته است تنبا نیاز به خواندن ۸۳۱ آن دارد ‎٠‏ یک ۸۷2۲ يا نوع داده ی |¢1;33. ‎Abstract Data Type)‏ یک نوع داده است که با استفاده از تکنیکهای خوب مخفی کردن اطلاعات ‏نوشته شده است ‎

صفحه 44:
اصلاحگرهای 0۱013 و ‎private‏ اصلاحگر 0100116 به این معنی است که هیچ محدودیتی روی جای استفاده از یک متغیر نمونه يا متد وجود ندارد اصلاحگر 0۲1۷۵6 به این معنی است که یک متغیر نمونه یا متد نمی تواند با نام خارج از کلاس دستیابی شود تجربه ی برنامه نویسی خوبی است که تمامی متفیرهای نمونه را 0۲1۷۵:6 تعریف کنیم اکثر متدها >امالام هستند و از این رو دسترسی کنترل شده ای به شیء فراهم می ‎aus‏ معمول تنها در صورتی متدها 0۳/۷316 تعریف می شوند که به عنوان متدهای کمکی سایر متدهای کلاس أستفاده شوند

صفحه 45:
متدهای دستیابی کننده (۸۰6550۲) و تغیبردهنده ‎(Mutator)‏ ‏متدهای دستیابی کننده به برنامه نویس امکان می دهند تا مقدار متغیرهای نمونه ی یک شیء را بدست آورد - داده ها می توانند دستیابی شوند اما امکان تغییر ندارند - نام یک متد دستیابی کننده نوعاً با کلمه ی 96 شروع می شود متدهای تغییردهنده به برنامه نویس امکان تغییر مقادیر متفیرهای نمونه ی یک شىء را به شيوه اى كنترل شده فراهم مى كنند - داده هاى آمده (ورودى به متد) نوعاً تست شده ويا فيلتر مى شوند - نام يك متد تغييردهنده نوعاً با كلمه ى :أ©5 شروع مى شود

صفحه 46:
(Encapsulation) ‏ان سازی‎ Display ‏من‎ Encapsulation An encapsulated class ‘A class definition should have no public Instance variables. http://ce.sharif.edu/—rouhi

صفحه 47:
یک کلاس به اعضای خصوصی تمامی اشیاء کلاس دسترسی دارد در ميان تعریف یک کلاس. نه تنها اعضای خصوصی شیء فراخواننده. بلکه اعضای خصوصی هر شیء کلاس قابل دسترسی هستند nttp://ce.sharif.edu/—rouh 4.47

صفحه 48:
متدهای تغییر دهنده می توانند یک مقدار منطقی بر گردانند * برخی متدهای تفییردهنده هر زمان که مقادیری بگیرند که برایشان ملموس نیست یک پیغام خطا صادر کرده و برنامه را خاتمه:می دهند * رهیافت دیگر آن است که تغییردهنده ای داشته باشیم که مقادیر را تست کند. اما هرگز برنامه را خاتمه ندهد * درعوض, اجازه دهیم که یک مقدار منطقی برگرداند و این برنامه ی فراخواننده باشد که اگر تفییرات را ملموس نیافت با شرایط کنار بیاید

صفحه 49:
پیش شرط ها و پس ‎g Preconditions) & b yi‏ ‎(Postconditions‏ ‏پیش شرط یک متد می گوید که در زمان فراخوانی متد. چه چیزی درست فرض می شود پس ار یک متد می گونده‌ماذامی. که پیش فرط برقران انسست؛ چه چیزی بعد از اجرای متد درست خواهد بود ° تجربه ی خوبی است که همواره در طراحی یک متد و در زمان نوشتن توضیح برای بخش های مختلف یک برنامه. پیش شرط ها و پس شرط ها را هم لحاظ کنیم

صفحه 50:
Overloading * 2۷6/030/9 زمانی(سنکه دو با چند متدد رک ای کسانینام متد یکسانی‌دایند * جهت درستی عملیات هر دو تعریف نام متد بایستی 5/93/76 های متفاوتی داشته باشند - یک 510۲3111۳6 شامل نام یک متد به همراه لیست پارامترهای آن است - جیت تمایز 5002۲6 ها لازم است که تعداد و یا نوع پارامترها متفاوت باشند nttp://ce.sharif.edu/—rouh

صفحه 51:
07/103019 و تبميلنوع خودكار اكر جاوا نتواند امضاى متدى بيابد كه با احضار يك متد دقيقاً مطابقت نمايد. سعى خواهد كرد كه از تبديل نوع خودكار استفاده كند تعامل 0۷6۲۱0301۲9 و تبدیل نوع خودکار می تواند نتایج ناخواسته ای به بار آورد در برخی شرایط ۷6۲۱0601۲9( به خاطر تبدیل نوع خودکار: یک حضار متد منفرد می تواند به شیوه های متعدد تعبیر شده و به نتیجه Sen < احضار گنگ متدها در جاوا منجر به خطا خواهد شد

صفحه 52:
سهل انگاری و اشتباه: شما نمی توانید بر اساس نوع برگشتی ۵ داشته باشیدا * امضای یک متد تنها شامل نام متد و نوع پارامترهای آن است - امضا نمی تواند نوع بر گشتی را شامل شود! * جاواء متدهایی با نام یکسان و نوع برگشتی متفاوت را در یک کلاس اجازه نمی دهد nttp://ce.sharif.edu/—rouh 4-52

صفحه 53:
شما نمی توانید عملگرها را در جاوا 0۷6۲۱0۵0 کنید! برغم بسیاری از زبانهای برنامه نویسی, نظير :)++ كه امكان 60 کردن عملگرها (برای مثال» + - و از این دست) را فراهم می کنند. جاوا اين کار را اجازه نمی دهد! - شماتنیا می توانید برای انجام عملیات مطلوب خود از نام متد و نحو معمول متد استفاده کنید

صفحه 54:
(Constructors) & ow jlw * سازنده نوع خاصی از متد است که برای مقداردهی آغازین متغیرهای نمونه ی یک شیء طراحی می شود: public ClassName(anyParameters) {code} ‏سازنده بایستی با کلاس هم نام باشد‎ - - سازنده هیچ نوع بر گشتی. حتی 1/010 هم ندارد - سازنده ها نوعاً 0۷6۲۱030 می شوند http://ce.sharif.edu/~rouhi 454

صفحه 55:
(Constructors) & ow jl سازنده در زمانى كه يك شىء از كلاس با استفاده از عملكر /الا©1! ايجاد مى شوده فراخوانى مى شود: ClassName objectName = new ClassName(anyArgs) ; - بایستی نام سازنده و لیست آرکومانیا (در صورت وجود) در داخل پارانتز بعد از عملكر ۷ قرار بكيرند - اين قنهها شيوه ى قانونى احضار يك سازنده است: سازنده نمى تواند مثل یک متد معمولى احضار شود اكر يك سازنده دوباره احضار شود (با استفاده از عملكر ‎sl eg KNEW‏ دور ريخته مى شود و يك شىء كه به كل جديد است ايجاد مى شود - در صورتی که می خواهید مقادیر متفیرهای نمونه ی شیع را تفییر بدهید. به جاى اين کار از متدهای تغییردهنده استفاده کنید! nttp://ce.sharif.edu/—rouh 455

صفحه 56:
شما می توانید متد دیگری را در داخل یک سازنده احضار کنبد * اولین عملی که سازنده در پیش می گیرد ایجاد یک شیء با متفیرهای نمونه است ۰ بنابراین» قانونی است که متد دیگری را در میان تعریف یک سازنده احضار کنید. چرا که آن نیز مانند شیء فراخواننده اش شیء به تازگی ایجاد شده را دارد - برای مثال. می توان برای مقداردهی مقادیر متفیرهای نمونه از متدهای تفییردهنده استفاده کرد - حتی برای یک سازنده امکان پذیر است که سازنده ای دیگر را احضار کند!

صفحه 57:
سازنده یک پارامتر 5 دارد مثل هر متد معمولی. هر سازنده یک پارامتر5أ 0 دارد يارامتر 1115 می تواند به صورت آشکارا استفاده شود. اما حضور آن بیشتر قابل درک است تا نوشته شود اولین عملی که سازنده در پیش می گیرد ایجاد خودکار یک شیء با متفیرهای نمونه يس از اين ‎GIF‏ در میان تعریف یک سازنده. پارامتر 015 به شیء ایجاد شده توسط سازنده ارجاع دارد http://ce.sharif.edu/~rouhi ‏که‎

صفحه 58:
یک سازنده ی بدون آرگومان کار بگذارید اگر هیچ سازنده ای در کلاس خود نگذارید. جاوا به صورت خودکار یک سازنده ی پیش فرض 01ا0673) یا بدون آرگومان ایجاد خواهد کرد؛ این سازنده. هیچ مقداردهی آغازینی انجام نمی دهد. اما امکان ایجاد شیء را فراهم می کند اماء اگر تنها یک سازنده در کلاس خود داشته باشید. جاوا سازنده ی پیش فرض را فراهم نخواهد کرد اگر سازنده ای در کلاس خود تعریف می کنید. حتماً سازنده ی بدون آرگومان خودتان را نیز لحاظ کنید! nttp://ce.sharif.edu/—rouh 458

صفحه 59:
مقداردهی آغازین پیش فرض متفیرها ۴ متغیرهای نمونه در جاوا به صورت خودکار مقدار اولیه می گیرند - انواع 0001630 به 2156] مقداردهی می شوند - سایر بدویات به صفر نوع خودشان مقداردهی می شوند - انواع کلاسی به |الا۱] مقداردهی می شوند * با این وجود. تجربه ی خوبی است که متغیرهای نمونه را به صورت آشکارا در یک سازنده مقدار اولیه بدهید توجه: متغیرهای محلی به صورت خودکار مقدار اولیه نمی گیرند!

صفحه 60:
StringTokenizer ‏کلاس‎ * برای بازیابی کلمات یا 0/6/1]های یک رشته ی چندکلمه ای از کلاس ‎StringTokenizer‏ استفاده می شود - برای جداکردن هر یک از 0161]ها می توانید از کاراکترهای 6 یبا هر کاراکتری را که برای جداکردن کلمات مطلوب می دانید مشخص کرده و استفاده کنید - برای اینکه بتوانید از کلاس ۲016۱/267 51۲9 استفاده کنید حتماً عبارت 1۲000۲۲ زیر را به ابتدای فایل حاوی کلاس خود اضافه کنید: import java.util.StringTokenizer;

صفحه 61:
(¥ 311) 51۳1۴9۲016۳۴3126 ۲ ‏برخی متدهای کلاس‎ Display 4.17 Some Methods in the Class StringTokenizer The class StringTokenizer is in the java.util package. public StringTokenizer(String theString) Constructor for a tokenizer that will use whitespace characters as separators when finding tokens in theString. public StringTokenizer(String theString, String delimiters) Constructor for a tokenizer that will use the characters in the string delimiters as separators when finding tokens in theString. public boolean hasMoreTokens() Tests whether there are more tokens available from this tokenizer’s string. When used in conjunction with nextToken, it returns true as long as nextToken has not yet returned all the tokens in the string; returns false otherwise. (continued) nttp://ce.sharif.edu/—rouh 4-61

صفحه 62:
)۲ ‏برخی متدهای کلاس 9۲۲1۳9۲01603126۲ (۲از‎ Display 4.17 | Some Methods in the Class StringTokenizer public String nextToken() Returns the next token from this tokenizer's string. (Throws NoSuchE Lement Exception if there are no ‘more tokens to retum.)® public String nextToken(String delimiters) First changes the delimiter characters to those in the string deLimi ters. Then returns the next token from this tokenizer's string. after the invocation is completed, the delimiter characters are those in the string delimiters. ihrows NoSuchE Lement Exception if there are no more tokens to return. Throws NulLPointerException if delimiters is nul1.)” public int countTokens() Returns the number of tokens remaining to be returned by next Token. nttp://ce.sharif.edu/—rouh 4-62

29,000 تومان