مبحث setter و getter در 5 مفهوم خلاصه می شود که عبارتند از :

_ field

_value

_setter

_getter

_lateinit

field:همان مقدار اولیه متغییرمان = فیلد می باشد که به صورت variable مقدار دهی اولیه (init)می شود .

value:برابر است با آنچه پس از تغییر مقدار اولیه (field)بدست می آید . به طور مثال هنگامی که فیلد مان با عددی جمع ,منها,ضرب یا تقسیم میشود عدد حاصل این اعمال ریاضی را value می گوییم .

نکته :انچه که باعث تغییرات در مقدار اولیه می شود و value را حاصل می کند در فایل main.kt استقرار دارد . نه در class مان و جایگاه field و value در class.kt می باشد .

setter: شرط هایی را برقرار می کند که هنگامی که متغییر اولیه (field)((در فایل main.kt تغییر می کند)) انجام می شود .

getter:شرط هایی برقرار می کند که هنگامی که متغییر اولیه (field) نمایش داده می شود در کنسول هنگام نمایش اجرا می شود .

نکته:هر دو حالت setter , getter به هنگام اجرا شدن در زمانی که در فایل main.kt به وسیله نوشتن کد مربوطه دوباره اجرا می شوند, به هنگام اجرا مقدار جدید جایگزین مقدار قدیمی شده و در نهایت مقدار جدید تر جایگزین (value)خواهد شد . و این عمل ادامه دارد و همیشه این مداومت هست تا جایی که از نوشتن کد مربوطه که بخشی از آن تکرار می شود (به خاطر صدا زدن تک فیلد بالای setter ,getter ) (با printlnکردن همان تک فیلد با صدا زدن اسم class مربوطه یا تغییر دادن مقدار متغییر در فایل main.kt ) خودداری کنیم .

نکته:در setter چون بایستی مقدار قدیمی را به مقدار جدید تنظیم کنیم بایستی به دو مورد value و field دسترسی داشته باشیم .

نکته:در getter تنها به مقدار قدیمی دسترسی داریم ولی می توانیم با شرط نقض گذاشتن و بدون استفاده از کلمه کلیدی value برای آن هم مقدار بازگشتی داشته باشیم .

نکته :به مقدارشرط های settter بلافاصله بعد از صدا زدن فیلد و تغییر ایجاد کردن دسترسی پیدا خواهیم کرد (با دیباگ کردن متوجه این موضوع بهتر خواهید شد )ولی به مقدار getter در زمانی دسترسی داریم که از فیلدی که ساخته ایم در کلاس مان در فایل main.kt پرینت ال_ان یا پرینت بگیریم همجنین

می توانیم در خود setterمان ()println داشته باشیم که محتوای field مربوطه باشد تا getter به راحتی اجرا شود .

نکته:getter و setter می توانند به تنهایی یا باهم بیایند و اجباری هم در تقدم ندارند .

تمرین:یک setter بنویسید و یک فانکشن کمکی درون یک فایل از فانکشن کمکی تومان را به ریال تبدیل کنید در setter تان از آن استفاده کنید. تا کیف پولتان را مدیریت کنید و آخرین مبلغ باقی مانده برایتان به دلار چاپ شود .

شکل های زیر جواب این تمرین می باشد :

>
شکل1:class.kt

>
شکل2:فایل معمولی file.kt

>
شکل3:file.kt

>
شکل4: کنسول Intelij Idea

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''