「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > JavaScript + OOP

JavaScript + OOP

2024 年 11 月 1 日に公開
ブラウズ:640

JavaScript   OOPs

OOP (オブジェクト指向プログラミング) は、より論理的で管理しやすい方法でコードを整理するのに役立ち、将来のコードの再利用や拡張が容易になります。

JavaScript におけるオブジェクト指向プログラミング (OOP) は、特定のタスクを実行するために連携するデータと関数の集合である「オブジェクト」の概念に基づいたプログラミング パラダイムです。

OOP では、オブジェクトは、作成するオブジェクトのプロパティとメソッドを定義するテンプレートである「クラス」から作成されます。

OOP の利点

JavaScript で OOP を使用する主な利点の 1 つは、コードをより論理的で管理しやすい方法で編成できることです。 OOP を使用すると、現実世界のオブジェクトを表すクラスを作成し、それらのオブジェクトが持つプロパティとメソッドを定義できます。これにより、特にコードが複雑になるにつれて、コードの理解と操作が容易になります。

JavaScript またはプログラミングにおける OOP のもう 1 つの利点は、コードの再利用と拡張性が可能になることです。

クラスを定義したら、そのクラスから必要なだけオブジェクトを作成できます。これにより、オブジェクトごとに同じコードを何度も何度も記述する必要がなくなるため、時間と労力を大幅に節約できます。

さらに、既存のクラスを継承する新しいクラスを作成できるため、既存のコードの機能を再利用したり拡張したりできます。

OOP を始める
JavaScript で OOP を始めるには、まずクラスの概念を理解する必要があります。 JavaScript では、クラスは、作成するオブジェクトのプロパティとメソッドを定義するテンプレートです。以下は人を表す単純なクラスの例です:

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  greet() {
    console.log(`Hi, my name is ${this.name} and I am ${this.age} years old.`);
  }
}

この例では、Person クラスには名前と年齢という 2 つのプロパティがあります。また、コンソールに挨拶を出力するメソッド、greet() も 1 つあります。

このクラスからオブジェクトを作成するには、次のように new キーワードの後に​​クラス名を使用します:

const person1 = new Person("John", 25);
const person2 = new Person("Jane", 30);

オブジェクトを作成したら、次のようにドット表記を使用してそのプロパティとメソッドにアクセスできます。

JavaScript における OOP の継承
JavaScript の OOP では、クラスの定義とオブジェクトの作成に加えて、継承も可能です。これは、既存のクラスのプロパティとメソッドを継承する新しいクラスを作成できることを意味します。たとえば、学校の生徒を表す Student クラスを作成するとします。 Student クラスは次のように Person クラスから継承できます:

class Student extends Person {
  constructor(name, age, school) {
    super(name, age);
    this.school = school;
  }
  info() {
    console.log(`${this.name} is ${this.age} years old and goes to ${this.school}.`);
  }
}

OOPS の 4 つの柱
JavaScript のオブジェクト指向プログラミング (OOP) の 4 つの柱は次のとおりです:

カプセル化:
カプセル化とは、データと機能をオブジェクト内に一緒にラップするという概念を指します。 OOP では、オブジェクトはコードの基本的な構成要素であり、各オブジェクトには独自のプロパティとメソッドがあります。これにより、理解しやすく、操作しやすい方法でコードを整理できます。

たとえば、名前や年齢などのプロパティと、greet() や Introduction() などのメソッドを持つ Person クラスを作成できます。

抽象化:

抽象化は、オブジェクトの実装の詳細を隠し、必要な情報のみをユーザーに公開するプロセスです。 OOP では、抽象化を使用して、コードをよりモジュール化して柔軟にすることができます。

たとえば、オブジェクトの実装方法を指定せずに、関連オブジェクトのグループに共通のインターフェイスを提供する抽象クラスを定義できます。

継承:
継承は、既存のクラスのプロパティとメソッドを継承する新しいクラスを作成するプロセスです。これにより、既存のコードを再利用および拡張できるため、時間と労力を節約できます。

たとえば、人物に共通のプロパティとメソッドを定義する person クラスがある場合、その person クラスを継承して追加の機能を追加する Student クラスを作成できます。

ポリモーフィズム:
ポリモーフィズムとは、異なるオブジェクトが同じメソッド呼び出しに異なる方法で応答する機能です。 OOP では、ポリモーフィズムを使用して、共通のインターフェイスを共有しながらも実装が異なるオブジェクトを作成できます。これにより、コードがより柔軟になり、保守と拡張がより容易なコードを作成できるようになります。

たとえば、共通のdraw()メソッドを定義するShapeクラスを作成してから、それぞれが独自のdraw()メソッドを実装するさまざまなタイプの図形(たとえば、Circle、Rectangleなど)のサブクラスを作成できます。方法。

ここでは、OOP のこれらの柱が JavaScript プログラムでどのように使用されるかを示す例を示します:

// Encapsulation: define a Person class with properties and methods
class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  greet() {
    console.log(`Hi, my name is ${this.name} and I am ${this.age} years old.`);
  }
}

// Inheritance: define a Student class that inherits from the Person class
class Student extends Person {
  constructor(name, age, school) {
    super(name, age);
    this.school = school;
  }
  info() {
    console.log(`${this.name} is ${this.age} years old and goes to ${this.school}.`);
  }
}

// Abstraction: define an abstract Shape class with a common draw() method
abstract class Shape {
  abstract draw(): void;
}

// Polymorphism: define subclasses of Shape that implement the draw() method in their own way
class Circle extends Shape {
  draw() {
    console.log("Drawing a circle...");
  }
}
class Rectangle extends Shape {
  draw() {
    console.log("Drawing a rectangle...");
  }
}

まとめ
オブジェクト指向プログラミングは JavaScript の基本概念であり、コードの構造と構成を大幅に改善できます。カプセル化、継承、ポリモーフィズムなどの概念を理解して実装することで、より効率的で保守しやすいプログラムを作成できます。

初心者でも経験豊富な開発者でも、時間をかけて JavaScript で OOP をマスターすることは、長期的には成果をもたらします。読んでいただきありがとうございます。コーディングを楽しんでください。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/adarshgupta101/javascript-oops-2elb?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3