Problem

3/6

دسترسی به اصلاح کننده ها

Theory Click to read/hide

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

فیلدها و روش ها را می توان با تغییرکننده دسترسی public عمومی کرد. همچنین یک اصلاح کننده private وجود دارد که فیلد را خصوصی می کند. این اختیاری است زیرا تمام فیلدها و روش ها به طور پیش فرض خصوصی هستند. در اینجا نمونه ای از استفاده از اصلاح کننده های public  و private آورده شده است. کتاب کلاسی { نام رشته عمومی; نام نویسنده رشته; خصوصی int ageRequirement; متن رشته عمومی int pageCount; int getTextLength() { طول متن بازگشتی(); } عمومی int getAverageLetterCount() { بازگشت getTextLength() / pageCount; } private int getDifficuiltyLevel() { بازگشت 5 * ageRequirement * text.Length(); } }
در این نسخه از کلاس Book ، فیلدهای name و pageCount برای ​​خواندن و اصلاح در اشیاء دیگر عمومی می شوند. متد getAverageLetterCount() نیز برای فراخوانی از اشیاء کلاس‌های دیگر موجود است. تمام فیلدها و متدهای دیگر خصوصی باقی می مانند و فقط در متدهای این کلاس موجود هستند. در متد عمومی getAverageLetterCount() می توانیم متد خصوصی را getTextLength() فراخوانی کنیم زیرا getAverageLetterCount() به خود کلاس تعلق دارد. اما از روشی از کلاس دیگر کار نخواهد کرد.

اما چرا پس زمینه ها را خصوصی کنیم؟ در کد جاوا، بیشتر فقط فیلدهای خصوصی را خواهید دید. واقعیت این است که اگر دسترسی به فیلدهای خصوصی از طریق روش های عمومی شی انجام شود، با هر گونه دسترسی به فیلدهای خصوصی می توان اقدامات و بررسی های اضافی را انجام داد. بیشتر در مورد این در درس در مورد کپسوله سازی خواهد بود.

Problem

تمام فیلدهای کلاس Book را خصوصی کنید. هر روشی را که در حال حاضر دارد حذف کنید.

یک روش عمومی به نام setText (نوع برگشتی void) با یک آرگومان newText ایجاد کنید که مقدار text را تغییر می‌دهد. به newText. یک روش getWordsCount خصوصی اضافه کنید که تعداد کلمات موجود در متن را می شمارد و آن را به عنوان int برمی گرداند.
کلمه — دنباله ای از هر شخصیتی که در میان آنها فضایی وجود ندارد.

تضمین می شود که چندین فاصله پشت سر هم نمی توانند بروند.