متغیرها عنصری اساسی در برنامهنویسی به شمار میروند، برای ساخت متدها و ارسال داده به آن، همچنین برای ساخت شئ از یک کلاس و حتی برای نگه داری یک عدد یا یک رشتهی ساده به متغیر ها نیاز پیدا خواهید کرد، در تمام طول یک پروژه چندین و چند متغیر و ثابت تعریف میکنیم. اما متغیرهایی وجود دارند که جایگاه خاصی برای آنها درون کلاسها تعریف شده است که به آن property گفته میشود, در ادامه همراه باشید تا بیشتر با کاربرد این متغیر ها آشنا شوید.
در جلسهی قبل به پراپرتی ها اشاره داشتیم،اما مفهوم آنها را در این جلسه فرا خواهید گرفت.
پراپرتی ها متغیر های اختصاصی کلاسها هستند، به صورتی که میتوان در خارج از کلاسها، و پس از ساخت شئ از کلاس مورد نظر به آنها مقادیری را نسبت داد.
پس proprty ها در تمامی طول پروژه قابل دسترسی خواهند بود و به نوعی متغیر های عمومی کلاسها میباشند.
نکته : از یک کلاس میتوان چندین شئ ساخت و هر شئ میتواند خصوصیات (property) متفاوتی را ذخیره داشته باشد.
برای ایجاد یک پراپرتی باید مثل معمول همیشه، از کلیدواژهی var یا let (برای ساخت ثابت) استفاده کرد، ولی تفاوتی که پراپرتی ها با متغیرهای معمولی دارند در جایگاه تعریف آنهاست، به صورتی که پراپرتیها را فقط باید در زیر نام کلاس تعرف کرد، ولاغیر. به مثال زیر توجه کنید:
class PhoneBook {var Name:String = ""var Family:String = ""var PhoneNumber:Int = 0init(){print("New PhoneBook Initialized !")}}
در مثال بالا کلاسی داریم به نام PhoneBook قرار است این کلاس وظیفهی یک دفترچه تلفن را داشته باشد، توجه کنید مقادیر Name , Family و PhoneNumber پراپرتی های این کلاس میباشند،چرا که میخواهیم بعد ساخت شئ از کلاس PhoneBook ، به این پراپرتیها در زمان فراخوانی کلاس مقدار بدهیم، این مقادیر در شی ساخته شده از کلاس باقی خواهند ماند،حتی میتوانید باز شئ دیگری از این کلاس ساخته همچنین دوباره این پراپرتی هارا (با فراخوانی شئ جدید) مقداردهی کنید.
نکته: کلاس بالا را در جلسات بعد کامل خواهیم کرد، به طوری که بتواند مقادیر نام و نشانی شخصی را ذخیره و در زمان مورد نیاز برگردان کند،اما در این جلسه فقط از آن به عنوان مثال استفاده میکنیم.
به مثال زیر توجه کنید:
٭ تمامی کدها و مثال ها را می توانید در بخش playground تست کنید.
class PhoneBook {var Name:String = ""var Family:String = ""var PhoneNumber:Int = 0init(){print("New PhoneBook Initialized !")}func showInfo(){print("Name is:\(Name) \n Family is: \(Family) \n and PhoneNum is: \(PhoneNumber)")}}
در مثال بالا متدی به این کلاس اضافه کردیم که بتوانیم پس از مقدار دهی به پراپرتی های کلاس، مقادیر آنها را به اختصار و با کمک متد ()showInfo مشاهده کنیم.
اما ابتدا شما باید یاد بگیرید که چگونه میتوان به پراپرتی های یک کلاس دسترسی داشت و به آنها مقادیری را ارسال کرد، خوب، این کار به سادگی ساخت شئ از کلاس و صدا کردن متد های آن کلاس میباشد،(در جلسهی گذشته بسیار به آنها پرداختیم) ، اما تفاوتی که دارد این است که پس از فراخوانی نام شئ ساخته شده از کلاس، باید پس از زدن علامت نقطه، نام پراپرتی را نوشته ، سپس به آن مقادیری را ارسال کنید، به مثال زیر توجه کنید:
var Phone:PhoneBook = PhoneBook()
Phone.Name = "Ali"
در خط اول مطابق آموزههای قبلی از کلاس مورد نظر شئ ساختهایم که بتوانیم به (ویژگیها و متدهای) آن دسترسی پیدا کنیم، سپس با تایپ علامت نقطه در کنار نام شئ ، از لیست بازشونده مقادیر پراپرتی ها و متدها را مشاهده خواهید کرد، مطابق تصویر زیر:
(برای مشاهده تصویر در اندازه واقعی روی آن کلیک کنید)
علامت V در کنار نام پراپرتی ها به معنای Var (متغیر) میباشد،در زمان ساخت پروژههایی در محیط xcode علامت پراپرتی را با حرف P مشاهده خواهید کرد.
در ادامه نام پراپرتی را انتخاب کرده، سپس به آن مقداری جدید میدهیم، مطابق دستورات بالا،سپس سایر پراپرتی ها را نیز به همین شکل با مقادیر دلخواه پر میکنیم،به صورت زیر:
٭ تمامی کدها و مثال ها را می توانید در بخش playground تست کنید.
var Phone:PhoneBook = PhoneBook()
Phone.Name = "Ali"
Phone.Family = "Ahmadi"
Phone.PhoneNumber = 091211223344
سپس میتوانید برای به کار گیری متد ()showInfo در زیر دستورات بالا پس از نام شئ ، نام این متد را نیز فراخوانی کنید:
Phone.showInfo()
خروجی مثال بالا را در زیر مشاهده میکنید:
(برای مشاهده تصویر در اندازه واقعی روی آن کلیک کنید)
چالش: با استفاده از کلاس بالا، سعی کنید نام و مشخصات چندین شخص را ذخیره، سپس هرکدام را با استفاده از متد ()showInfo فراخوانی کنید.(چگونگی انجام این کار در متن این جلسه وجود دارد).
نکته :دوستان عزیز، اگر در طول آموزش به سوالی برخورد کردید، لطفا برای بهتر شدن آموزشها همچنین برای بهره بردن دیگر دوستان، حتما در بخش نظرات سوال خود را مطرح کنید، و من تلاش خواهم کرد، در اسرع وقت به سوالات شما پاسخ دهم.
با تشکر.