آموزش TypeScript

مباحث پایه TypeScript

کلاس ها در زبان برنامه نویسی TypeScript – آموزش TypeScript

  • سه شنبه ۱۶ دی ۱۳۹۹
  • بازدید ۱۳۶ نفر

typescript classes 7222 تصویر

کلاس ها در زبان برنامه نویسی TypeScript

TypeScript همان جاوا اسکریپت شیء گرا است و از ویژگی های برنامه نویسی شیء گرا مانند کلاس ها، اینترفیس ها و غیره پشتیبانی می کند. از دیدگاه برنامه نویسی شیء گرا (OOP)، کلاس یک طرح برای ایجاد اشیاء است.

ایجاد یک کلاس

در زبان برنامه نویسی TypeScript به منظور ایجاد کلاس از کلمه کلیدی class استفاده می کنیم. در زیر می توانید سینتکس مربوطه را مشاهده کنید:

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

  • فیلدها (Fields): هر متغیری که در داخل کلاس تعریف شود، یک فیلد محسوب می شود.
  • سازنده ها (Constructors): مسئول تخصیص حافظه به نمونه های ایجاد شده از کلاس و مقدار دهی اولیه به فیلدها هستند.
  • توابع یا متدها (Functions): توابع عملیاتی که یک شیء می تواند انجام دهد را نشان می دهند.

موارد فوق در کنار یک دیگر اعضای کلاس را تشکیل می دهند. کلاس Person را در نظر بگیرید:

کد فوق بعد از کامپایل شدن:

مثال (اعلان یک کلاس):

در مثال فوق یک کلاس به نام Car اعلان شده است که شامل یک فیلد به نام engine است (در هنگام  تعریف فیلد از کلمه کلیدی var استفاده نمی شود). کلمه کلیدی this به شیء جاری از کلاس اشاره دارد. در کد فوق چون نام پارامتر سازنده با فیلد یکی است، برای جدا کردن این دو از کلمه کلیدی this استفاده شده است. disp() یک تابع ساده است که مقدار فیلد engine را در کنسول چاپ می کند (کلمه کلیدی function استفاده نشده است). کد فوق بعد از کامپایل شدن:

نمونه سازی از کلاس

برای ایجاد نمونه از یک کلاس از کلمه کلیدی new به همراه نام کلاس استفاده می کنیم. در زیر می توانید سینتکس مربوط به نحوه نمونه سازی از یک کلاس را مشاهده کنید.

  • کلمه کلیدی new مسئول نمونه سازی است.
  • بعد از آن سازنده کلاس فراخوانی می شود.

مثال:

دسترسی به اعضای کلاس

برای دسترسی به اعضای کلاس می توانیم از ‘.’ (نقطه) استفاده کنیم. مانند نمونه زیر:

مثال:

در مثال زیر موارد گفته شده در بالا استفاده شده اند:

کد فوق بعد از کامپایل شدن:

خروحی مثال:

وراثت (Inheritance)

زبان TypeScript از مفهوم وراثت پشتیبانی می کند. وراثت قابلیت یک برنامه در ایجاد یک کلاس جدید از روی یک کلاس موجود است. کلاسی که آن را برای ایجاد کلاس جدید توسعه می دهیم، کلاس پدر و کلاس جدید ساخته از روی کلاس پدر، کلاس فرزند یا مشتق شده نامیده می شود.

برای اینکه یک کلاس از کلاس دیگر ارث بری کند، باید از کلمه کلیدی extends استفاده کنیم. کلاس فرزند تمام اعضای کلاس پدر به جز اعضای private را به ارث می برد. سینتکس مربوط به ارث بری از یک کلاس:

 

توجه! زبان برنامه نویسی TypeScript از ارث برسی چندگانه پشتیبانی نمی کند.

مثال:

کد فوق بعد از کامپایل شدن:

خروجی مثال:

در مثال فوق یک کلاس به نام Shape ایجاد شده است که کلاس Circle از آن ارث بری می کند. چون کلاس Circle از Shape ارث بری کرده است، می تواند به اعضای آن مانند area دسترسی داشته باشد.

انواع وراثت

  • وراثت تکی (Single): کلاس فرزند حداکثر می تواند یک کلاس والد داشته باشد.
  • وراثت چندگانه (Multiple): کلاس فرزند می تواند از چند کلاس ارث بری کند (در تایپ اسکریپت پشتیبانی نمی شود).
  • وراثت چند سطحی (Multi-level): در مثال زیر نحوه ارث بری چند سطحی نشان داده شده است:

در کد فوق، کلاس Leaf به شکل ارث بری چندگانه از کلاس Root و Child مشتق شده است. کد بالا بعد از کامپایل شدن:

خروجی مثال:

سربارگذاری تابع (Method Overriding)

سربارگذاری تابع مکانسیمی است که در آن کلاس فرزند می تواند تابع تعریف شده در کلاس پدر را، دوباره تعریف کند. برای درک بهتر به مثال زیر توجه کنید:

کلمه کلیدی super برای اشاره به کلاس والد استفاده می شود. از این کلمه کلیدی می توانیم برای اشاره به متغیر، پراپرتی و یا تابع موجود در کلاس والد اشاره کنیم.

در خط ۱۳ کد بالا، متد doPrint که در کلاس والد تعریف شده است، فراخوانی می شود.

کد فوق بعد از کامپایل شدن:

خروجی:

کلمه کلیدی static

کلمه کلیدی static برای دسترسی به اعضای یک کلاس، بدون نمونه سازی از آن استفاده می شود. عضوی که به صورت static تعریف شود، تا زمانی که اجرای برنامه تمام نشود، مقدار خود را حفظ می کند. برای دسترسی به اعضای static باید از نام کلاس به همراه نقطه استفاده کنیم. مثال:

کد فوق بعد از کامپایل شدن:

خروجی مثال:

عملگر instanceof

عملگر instanceof زمانی که نوع یک شیء برابر با نوع مشخص شده باشد، مقدار true باز میگرداند. مثال:

کد فوق بعد از کامپایل شدن:

خروجی مثال:

مخفی کردن اعضای کلاس

یک کلاس می تواند مشخص کند که کدام یک از اعضای آن، خارج از آن کلاس در دسترس باشند. این قابلیت Encapsulation نیز نامیده می شود. به منظور پیاده سازی مفهوم Encapsulation از access modifier ها استفاده می کنیم. access modifier ها سطح دسترسی اعضای کلاس را در خارج و کلاس های مشتق شده مشخص می کنند. در جدول زیر سطوح دسترسی موجود در زبان TypeScript را مشاهده می کنید:

ردیفتوضیحات
۱

public

اعضایی که به شکل public تعریف شوند در هر جایی قابل دسترسی هستند.  اعضای کلاس ها به طور پیشفرض public هستند.

۲

private

اعضایی که به شکل private تعریف شوند، فقط در داخل همان کلاس قابل دسترسی هستند.

۳

protected

اعضایی که به شکل protected تعریف شوند، در داخل همان کلاس و کلاس مشتق شده قابل دسترسی هستند.

مثال:

مثال زیر نحوه مخفی کردن اعضای یک کلاس را نشان می دهد:

کلاس فوق دو فیلد با نام های str و str2 دارد که اولی به صورت public و دومی به صورت private تعریف شده است. اگر در خارج از کلاس بخواهیم به فیلد str2 دسترسی داشته باشیم، با خطای کامپایلر رو به رو خواهیم شد.

کلاس ها و اینترفیس ها

کلاس ها همچنین می توانند اینترفیس ها را نیز پیدا سازی کنند. مانند نمونه زیر:

کد فوق بعد از کامپایل شدن:

خروجی مثال:

ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

هیچ نظری ثبت نشده است