دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۲
  • آبان

جلسه ۲۵ : وراثت در Swift

  • دسته‌بندی‌ها :
جلسه ۲۵ : وراثت در Swift
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره کامل آموزش Swift را دنبال می کنند. در مبحث شیء گرایی در تمام زبان های برنامه نویسی چند ویژگی اصلی و مهم در هنگام ایجاد و تعریف کلاس ها در دسترس قرار می گیرد که یکی از این ویژگی های اصلی وراثت است. وراثت اجازه می دهد تا یک کلاس ویژگی ها و خصوصیات کلاس دیگر را به ارث برده و از آن ها استفاده کند. به این ترتیب شما می توانید بدون تکرار کدها و افزایش حجم برنامه ، از یک سری خصوصیات و ویژگی ها در چندین کلاس دیگر در برنامه ی خود بهره ببرید. ویژگی وراثت در Swift نیز ارائه شده و در تعریف کلاس ها قابل استفاده می باشد. در ادامه ی این مبحث ما شما را با کلیات و توضیحات کار با وراثت در Swift آشنا خواهیم کرد.

      کار با وراثت در Swift

      در این آموزش شما با سینتکس اصلی کلاس ها و کار با ویژگی وراثت در Swift آشنا خواهید شد.

      انواع کلاس

      به طور کلی کلاس ها به دو نوع ابر کلاس و زیر کلاس ها تقسیم می شوند:

      • Sub Class : هنگامی که یک کلاس ویژگی ها، متد ها و توابع را از کلاس دیگری به ارث می برد، آن را به عنوان زیر کلاس می شناسیم.
      • Super Class : کلاسی که شامل یکسری خصوصیات و متدهاست که کلاس های دیگر از آن به ارث می برند به عنوان ابر کلاس شناخته می شود.

      کلاس پایه

      یک کلاس که متدها، خواص یا توابع را از کلاس دیگری به ارث نمی برد، به عنوان «کلاس پایه» نامیده می شود.

      مثال : 

      نتیجه ی کامپایل و اجرای کد فوق به صورت زیر خواهد بود:

      مثال : 

      در مثال فوق یک کلاس با نام StudDetails تعریف شده است که برای نام دانش آموزان تعریف شده است.

      همچنین در کلاس فوق سه موضوع به عنوان mark1، mark2 و mark3 علامت گذاری می شوند.

      برای مقدار دهی اولیه در کلاس پایه از کلمه کلیدی  ‘let’ استفاد می شود.

      از تابع ‘print’ نیز برای نمایش نتایج در خروجی استفاده می شود.

      زیرکلاس

      عمل ایجاد یک کلاس جدید در یک کلاس موجود، به عنوان “Subclass” تعریف شده است.

      زیر کلاس خواص، متد ها و توابع کلاس پایه را به ارث می برد. برای تعریف زیر کلاس از ‘:’ قبل از نام کلاس پایه استفاده می شود:

      مثال : 

      نتیجه ی کامپایل و اجرای کد فوق به صورت زیر خواهد بود:

      مثال : 

      کلاس StudDetails در واقع به عنوان یک ابر کلاس شناخته می شود.

      و ‘display’ نیز به عنوان یک زیر کلاس از خواص و متدهای StudDetails برای محاسبه پارامترهای ورودی خود استفاده می کند.

      Overriding (اعمال کردن)

      دسترسی به ابر کلاس ها، متدهای نمونه ، خصوصیات و زیر کلاس ها با مفهوم “overriding” شناخته می شود.

      از کلید واژه ی ‘override’ برای اعمال متدهای تعریف شده در ابر کلاس ها استفاده می شود.

      دسترسی به متدهای ابر کلاس ، خصوصیات و زیر کلاس ها

      از کلید واژه ی ‘super’ به عنوان پیشوندی برای متدها ، خصوصیات و زیر کلاس های تعریف شده در ابر کلاس استفاده می شود:

      Overridingدسترسی به متد ، خصوصیات و زیر کلاس
      Methods()super.somemethod
      Properties()super.someProperty
      Subscripts[super[someIndex

      اعمال متدها

      متدهای نمونه و وراثتی می توانند توسط کلمه کلیدی ‘override’ به متدهای تعریف شده در زیر کلاس اعمال شوند.

      در مثال زیر متد ()print به زیر کلاس تعریف شده اعمال می شود تا به خصوصیات آن دسترسی داشته باشد.

      همچنین یک نمونه جدید از ابر کلاس ()cricket با عنوان ‘cricinstance’ تعریف شده است.

      مثال :

      مثال : 

      نتیجه ی کامپایل و اجرای کد فوق به صورت زیر خواهد بود:

      مثال : 

      ویژگی overriding

      شما می توانید یک خصوصیت وراثتی و یا یکی از خصوصیات اعلام شده در کلاس را در زیر کلاس ها اعمال کنید.

      خصوصیت overriding دریافت کنندگان و تنظیم کنندگان

      Swift 4 به کاربر اجازه می دهد تا خصوصیات سفارشی تنظیم کنندگان و دریافت کنندگان را به یک ویژگی وراثتی که یک خصوصیت ذخیره شده یا محاسبه شده است اعمال کند.

      نام و نوع خصوصیات وراثتی در زیر کلاس مشخص نیست، بنابراین باید این موارد را در ابر کلاس مشخص کنید.

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

      • هنگامی که setter برای خصوصیت overriding تعریف می شود. کاربر باید getter را نیز تعریف کند.
      • وقتی نمی خواهیم خصوصیت وراثتی getter را دستکاری کنیم می توانیم مقدار ارثی را با سینتکس ‘super.someProperty’ به ابر کلاس ارسال کنیم.

      مثال :

      مثال : 

      نتیجه ی کامپایل و اجرای کد فوق به صورت زیر خواهد بود:

      مثال : 

      ویژگی overriding مشاهده کننده گان

      زمینکه یک خصوصیت جدید نیاز به اضافه شدن برای یک خصوصیت وراثتی دارد، مفهوم ‘property overriding’ در  Swift 4 معرفی شد.

      این مفهوم زمانیکه مقدار خصوصیت وراثتی تغیر کند کاربر را مطلع می سازد.

      اما overriding برای خصوصیات ثابت وراثتی ذخیره شده و خصوصیات حاسبه شده فقط خواندنی قابل اجرا نیست.

      مثال :

      مثال : 

      نتیجه ی کامپایل و اجرای کد فوق به صورت زیر خواهد بود:

      مثال : 

      خصوصیت نهایی برای جلوگیری از overriding

      زمانیکه کاربر نمی خواهد دیگران به متدها ، خصوصیات و زیر کلاس های ابر کلاس دسترسی داشته باشند، Swift 4 ویژگی ‘final’ را معرفی می کند.

      زمانیکه ویژگی ‘final’ تعریف شود، زیر مجموعه ها اجازه نمی دهند متدها خصوصیات و زیر مجموعه های ابر کلاس اعمال (استفاده) شوند.

      زمانیکه خصوصیت ‘final’ اعلام می شود کاربر برای ایجاد زیز کلاس ها محدودیت خواهد داشت.

      مثال :

      مثال : 

      نتیجه ی کامپایل و اجرای کد فوق به صورت زیر خواهد بود:

      مثال : 

      زمانیکه ابر کلاس و انواع داده های آن به عنوان ‘final’ معرفی شوند برنامه اجازه نمی دهد که زیر کلاس های دیگری تعریف شوند.

      کلام آخر

      وراثت یکی از مهم ترین و پرکاربردترین ویژگی های کلاس ها و مبحث شیء گرایی در زبان های برنامه نویسی و است که از تکرار یک سری دستورات و خصوصیات از سایر کلاس ها در جایی که نیاز داریم جلوگیری می کند، از این رو مباحث این بخش را به آشنایی با چگونگی کار با وراثت در Swift اختصاص دادیم.

      QR:  جلسه ۲۵ : وراثت در Swift
      به اشتراک بگذارید