ماڈیول اسباق (1/2)
کلاسز اور موڈیفائرز
TypeScript طاقتور آبجیکٹ اورینٹڈ پروگرامنگ (OOP) خصوصیات کے ساتھ معیاری ES6 کلاسوں میں توسیع کرتا ہے، جیسے کہ جامد ٹائپنگ، ایکسیس موڈیفائر، اور شارٹ ہینڈ پیرامیٹر خصوصیات۔
کلاسز اور رسائی میں ترمیم کرنے والے
TypeScript میں، آپ تین اہم کلیدی الفاظ کا استعمال کرتے ہوئے کلاس ممبران، پراپرٹیز، اور طریقوں کی مرئیت کو کنٹرول کر سکتے ہیں:
public(پہلے سے طے شدہ): ممبر کہیں سے بھی قابل رسائی ہے۔private: ممبر صرف اس کلاس کے اندر قابل رسائی ہے جو اس کی وضاحت کرتی ہے۔protected: ممبر کلاس اور اس کے ذیلی طبقات (وراثت) کے اندر قابل رسائی ہے۔
class Animal {
public name: string;
private age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
public getAge(): number {
return this.age;
}
}پیرامیٹر کی خصوصیات
TypeScript براہ راست کنسٹرکٹر میں کلاس ممبر کا اعلان کرنے اور اسے شروع کرنے کے لیے شارٹ ہینڈ نحو پیش کرتا ہے۔ ایکسیس موڈیفائر کے ساتھ کنسٹرکٹر پیرامیٹر کا سابقہ لگانے سے، پراپرٹی خود بخود بن جاتی ہے اور تفویض کی جاتی ہے:
// This syntax does exactly the same as the previous example!
class Animal {
constructor(
public name: string,
private age: number,
) {}
}انٹرفیس کو نافذ کرنا
کلاس implements کلیدی لفظ کا استعمال کرتے ہوئے ایک یا زیادہ انٹرفیس کو نافذ کر سکتی ہے۔ یہ یقینی بناتا ہے کہ کلاس تمام مطلوبہ طریقوں اور خصوصیات کی وضاحت کرکے ایک مخصوص معاہدے پر عمل پیرا ہے:
interface Flyable {
fly(altitude: number): void;
}
class Bird implements Flyable {
constructor(public name: string) {}
fly(altitude: number): void {
console.log(`${this.name} is flying at ${altitude} meters.`);
}
}وراثت اور super
TypeScript کلاس وراثت کی مکمل حمایت کرتا ہے۔ ایک کلاس extends کلیدی لفظ کا استعمال کرتے ہوئے دوسری کلاس کو بڑھا سکتی ہے۔ اگر ذیلی کلاس کنسٹرکٹر کی وضاحت کرتا ہے، تو اسے super() فنکشن کا استعمال کرتے ہوئے this تک رسائی حاصل کرنے سے پہلے بیس کلاس کنسٹرکٹر کو کال کرنا چاہیے:
class Person {
constructor(public name: string) {}
}
class Student extends Person {
constructor(
name: string,
public grade: number,
) {
super(name); // Calls the Person constructor
}
}خود ہی آزمائیں۔
ورزش 1: کار کلاس اور پرائیویٹ موڈیفائر
کار نامی کلاس کا اعلان کریں۔ اس میں کنسٹرکٹر میں بیان کردہ صرف پڑھنے والے ماڈل کی خاصیت (سٹرنگ) ہونی چاہیے، ایک نجی مائلیج پراپرٹی (نمبر) کو 0 سے شروع کیا جائے، ایک عوامی طریقہ ڈرائیو (میل: نمبر): باطل جو میل کے حساب سے مائلیج کو بڑھاتا ہے، اور حاصل کرنے والا یا طریقہ getMileage(): وہ نمبر جو مائلیج لوٹاتا ہے۔
اشارہ دکھائیں۔
نجی مائلیج استعمال کریں: نمبر = 0؛ متغیر کو نجی بنانے کے لیے، اور کنسٹرکٹر(عوامی پڑھنے کے لیے صرف ماڈل: سٹرنگ) {} کو بطور شارٹ ہینڈ۔
3 کوششوں کے بعد حل دستیاب ہے۔
ورزش 2: شکل انٹرفیس اور سرکل کلاس
سرکل کلاس کو لاگو کرکے کوڈ کو مکمل کریں جو شکل انٹرفیس کو نافذ کرتا ہے۔ کلاس میں کنسٹرکٹر کے ذریعے صرف ریڈیئس پراپرٹی (نمبر) سیٹ ہونی چاہیے، اور getArea(): نمبر (ریٹرننگ Math.PI * radius * radius) کو لاگو کریں۔
اشارہ دکھائیں۔
سرکل کلاس پر لاگو شکل کا استعمال کریں اور getArea(): نمبر طریقہ کی وضاحت کریں۔
3 کوششوں کے بعد حل دستیاب ہے۔
مشق 3: خلاصہ گاڑی کی کلاس اور موٹرسائیکل ذیلی کلاس
موٹرسائیکل نامی کلاس کا اعلان کریں جو تجریدی کلاس گاڑی کو بڑھاتی ہے۔ اس کو سٹرنگ 'موٹرسائیکل' واپس کرنے کے لیے start() طریقہ کو لاگو کرنا چاہیے جس کے بعد make (this.make) اور 'start' ہو۔
اشارہ دکھائیں۔
موٹرسائیکل کی کلاس کا استعمال کریں گاڑی کو توسیع دیں اور اسٹارٹ(): اسٹرنگ کا طریقہ لاگو کریں جو درست سٹرنگ لوٹاتا ہے۔
3 کوششوں کے بعد حل دستیاب ہے۔
مشق 4: پیرامیٹر پراپرٹیز اور وراثت
ایمپلائی کے نام سے ایک کلاس بنائیں جو کنسٹرکٹر شارٹ ہینڈ کا استعمال کرتے ہوئے صرف پڑھنے والی پراپرٹی آئی ڈی (نمبر) اور پبلک پراپرٹی کا نام (سٹرنگ) کی وضاحت کرے۔ پھر، ایک کلاس ڈیولپر بنائیں جو ملازم کو بڑھاتا ہے اور کنسٹرکٹر کے ذریعے پبلک پراپرٹی ڈپارٹمنٹ (سٹرنگ) کا اضافہ کرتا ہے۔
اشارہ دکھائیں۔
ڈویلپر کنسٹرکٹر میں سپر (آئی ڈی، نام) کا استعمال کریں اور کنسٹرکٹر کے ذریعے پراپرٹی کی وضاحت کے لیے پبلک ڈیپارٹمنٹ کا استعمال کریں۔
3 کوششوں کے بعد حل دستیاب ہے۔