JavaScript үндэс / Класс ба OOP үндэс

Класс ба OOP үндэс

Object-Oriented Programming (OOP) буюу объект хандалтат программчлал нь том, нарийн төвөгтэй программуудыг зохион байгуулах арга барил юм. Бодит ертөнцийн зүйлийг — жишээ нь хэрэглэгч, бараа, автомашин — кодод объект болгон дүрслэх санаан дээр суурилдаг. class түлхүүр үгийг ашиглан тэдгээр объектыг үүсгэх загварыг тодорхойлно.

Class гэж юу вэ?

Class нь объект үүсгэх загвар (template) юм. Жишээ нь "Хэрэглэгч" гэсэн class байвал тэрнээс олон хэрэглэгч объект үүсгэж болно — бүгд ижил бүтэцтэй, өөр өөр утгатай.

javascript
class Хэрэглэгч {
  constructor(нэр, нас) {
    this.нэр = нэр;
    this.нас = нас;
  }

  мэндлэх() {
    console.log(`Сайн уу! Миний нэр ${this.нэр}.`);
  }
}

const болд = new Хэрэглэгч("Болд", 24);
const сарнай = new Хэрэглэгч("Сарнай", 21);

болд.мэндлэх(); // Сайн уу! Миний нэр Болд.
сарнай.мэндлэх(); // Сайн уу! Миний нэр Сарнай.
  • constructor — объект үүсгэх үед автоматаар дуудагдах функц
  • this — одоо байгаа объект өөрийгөө заана
  • new — class-аас шинэ объект үүсгэнэ

Properties ба Methods

Class дотор хоёр үндсэн зүйл байдаг: properties (шинж чанар) ба methods (үйлдэл).

javascript
class Дэвтэр {
  constructor(гарчиг, хуудас) {
    this.гарчиг = гарчиг; // property
    this.хуудас = хуудас; // property
    this.уншсан = false; // property (анхны утгатай)
  }

  мэдээлэл() {
    // method
    console.log(`"${this.гарчиг}" — ${this.хуудас} хуудас`);
  }

  уншиж_дуусах() {
    // method
    this.уншсан = true;
    console.log(`"${this.гарчиг}" дууслаа!`);
  }
}

const ном = new Дэвтэр("JavaScript Гарын авлага", 320);
ном.мэдээлэл(); // "JavaScript Гарын авлага" — 320 хуудас
ном.уншиж_дуусах(); // "JavaScript Гарын авлага" дууслаа!
console.log(ном.уншсан); // true

Статик методууд (static)

static методыг объект үүсгэлгүйгээр шууд class-аас дуудаж болно. Ерөнхий туслах функцүүдэд хэрэглэнэ.

javascript
class Тооцоолол {
  static нэмэх(а, б) {
    return а + б;
  }

  static хасах(а, б) {
    return а - б;
  }
}

console.log(Тооцоолол.нэмэх(10, 5)); // 15
console.log(Тооцоолол.хасах(10, 5)); // 5
// new Тооцоолол() хийх шаардлагагүй

Class ашиглах давуу тал

OOP хэрэглэснээр код нь:

  • Дахин ашиглагдах — нэг загвараас олон объект үүсгэнэ
  • Цэгцтэй — холбоотой өгөгдөл, функц нэг дор цуглана
  • Ойлгоход хялбар — бодит ертөнцийн ойлголттой нийцдэг
javascript
class Оюутан {
  constructor(нэр, курс) {
    this.нэр = нэр;
    this.курс = курс;
    this.оноо = 0;
  }

  оноо_нэмэх(оноо) {
    this.оноо += оноо;
    console.log(`${this.нэр}: нийт оноо ${this.оноо}`);
  }
}

const о1 = new Оюутан("Болд", "JavaScript");
const о2 = new Оюутан("Сарнай", "Python");

о1.оноо_нэмэх(10);
о1.оноо_нэмэх(20);
о2.оноо_нэмэх(15);

Дараагийн хичээлд:

Өвлөлт (Inheritance) гэж юу болох — нэг class нөгөөгөөсөө хэрхэн шинж чанар, методыг өвлөж авдаг талаар үзнэ.