[JS] Object-Oriented Progrmming
15217 ワード
OOPとは?
Object-Oriented Programmingの略称で、オブジェクト向けプログラミングという意味です.
ここで,オブジェクト向けプログラミングは言語の属性ではなく,言語の方法論にすぎない.
オブジェクト向けの利点は,生産性が高く,コードの再利用性を最大限に高め,メンテナンスが容易であることである.
OOP特性
オブジェクト向けプログラミング(OOP)の特性は,パッケージ(パッケージ),継承(継承),抽象(抽象),集約(多形性)の4つである.
1.パッケージ(パッケージ)
const Car = function() {
const someInstance = {};
someInstance.position = 0;
someInstance.move = function() {
this.position++;
}
return someInstance;
}
const car = Car();
car.move();
console.log(car.position); // 1
前述したように、move関数someInstanceによります.positionの値は変更できますが、someInstanceに直接アクセスすることはできません.このようにカプセル化とは,外部から内部の情報を隠すことであり,関数で変数の値を勝手に変えることはできない.
2.継承(継承)
const Car = function(position) {
this.position = position;
}
Car.prototype.move = function() {
this.position++;
}
const car = new Car(1);
car.move();
console.log(car.position); // 2
JavaScriptでは継承された概念はありません.しかし、原典方式で継承を実現することができる.そしてes 6にはclassというやつが新しく現れた.このクラスのキーワードインプリメンテーションを使用すると、継承を簡単に実現できます.
3.抽象(抽象)
const Car = function() {
const someInstance = {};
someInstance.position = 0;
someInstance.move = function() {
this.position++;
}
return someInstance;
}
const car = Car();
car.move();
car.move();
car.move();
console.log(car.position); // 3
カプセル化のような例であるが,抽象化は移動時に位置がどのように1増加するか分からない.このように,オブジェクトを作成する際には,複雑な原理や駆動方式をユーザから抽象化する操作が重要であり,この操作を抽象と呼ぶ.
4.重合状態(多形性)
多形性とは、1つの方法またはクラスが存在する場合に、複数の方法で動作することを意味する.
親を大まかに構成し、サブクラスに変換して書き込みスペースを残すことで、既存のソースコードを柔軟に再利用でき、より簡潔で、よりきれいにコードを追加できます.
JavaScriptのclass
classは、構造化モデルを作成し、そのモデルに基づいてインスタンスを作成するために使用されます.
classを宣言する4つの方法
1.Functional
const Car = function() {
const someInstance = {};
someInstance.position = 0;
someInstance.move = function() {
this.position++;
}
return someInstance;
}
functional方式はその名の通り関数を利用する方式である.
2. Functional shared
const extends = function(to, form) {
for(const key in from){
to[key] = from[key];
}
}
const someMethods = {};
someMethods.move = function() {
this.position++;
}
const Car = function(position) {
const someInstance = {
position: position
}
extends(someInstance, someMethods);
return someInstance;
}
functional sharedメソッドは、上記の例のsomeMethodsというオブジェクト内のメソッドのメモリアドレスのみを参照するため、メモリ効率が向上する.
3. Prototypal
const someMethods = {};
someMethods.move = function() {
this.position++;
}
const Car = function(position) {
const someInstance = object.create(someMethods);
someInstance.position = position;
return someInstance;
Prototyal方式は機能共有方式に似ている.ただしobjectcreate()を使用して、特定のオブジェクトをプロトタイプとして作成します.
4. Pseudoclassical
const Car = function(position) {
this.position = position;
}
Car.protptype.move = function() {
this.position++;
}
擬似論理方式はプロトタイプによって追加される方式である.
この方法を使用する場合、newキーワードを使用して関数を作成および使用することに注意してください.
Reference
この問題について([JS] Object-Oriented Progrmming), 我々は、より多くの情報をここで見つけました
https://velog.io/@ghd64845/JS-Object-Oriented-Progrmming
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
オブジェクト向けプログラミング(OOP)の特性は,パッケージ(パッケージ),継承(継承),抽象(抽象),集約(多形性)の4つである.
1.パッケージ(パッケージ)
const Car = function() {
const someInstance = {};
someInstance.position = 0;
someInstance.move = function() {
this.position++;
}
return someInstance;
}
const car = Car();
car.move();
console.log(car.position); // 1
前述したように、move関数someInstanceによります.positionの値は変更できますが、someInstanceに直接アクセスすることはできません.このようにカプセル化とは,外部から内部の情報を隠すことであり,関数で変数の値を勝手に変えることはできない.2.継承(継承)
const Car = function(position) {
this.position = position;
}
Car.prototype.move = function() {
this.position++;
}
const car = new Car(1);
car.move();
console.log(car.position); // 2
JavaScriptでは継承された概念はありません.しかし、原典方式で継承を実現することができる.そしてes 6にはclassというやつが新しく現れた.このクラスのキーワードインプリメンテーションを使用すると、継承を簡単に実現できます.3.抽象(抽象)
const Car = function() {
const someInstance = {};
someInstance.position = 0;
someInstance.move = function() {
this.position++;
}
return someInstance;
}
const car = Car();
car.move();
car.move();
car.move();
console.log(car.position); // 3
カプセル化のような例であるが,抽象化は移動時に位置がどのように1増加するか分からない.このように,オブジェクトを作成する際には,複雑な原理や駆動方式をユーザから抽象化する操作が重要であり,この操作を抽象と呼ぶ.4.重合状態(多形性)
多形性とは、1つの方法またはクラスが存在する場合に、複数の方法で動作することを意味する.
親を大まかに構成し、サブクラスに変換して書き込みスペースを残すことで、既存のソースコードを柔軟に再利用でき、より簡潔で、よりきれいにコードを追加できます.
JavaScriptのclass
classは、構造化モデルを作成し、そのモデルに基づいてインスタンスを作成するために使用されます.
classを宣言する4つの方法
1.Functional
const Car = function() {
const someInstance = {};
someInstance.position = 0;
someInstance.move = function() {
this.position++;
}
return someInstance;
}
functional方式はその名の通り関数を利用する方式である.
2. Functional shared
const extends = function(to, form) {
for(const key in from){
to[key] = from[key];
}
}
const someMethods = {};
someMethods.move = function() {
this.position++;
}
const Car = function(position) {
const someInstance = {
position: position
}
extends(someInstance, someMethods);
return someInstance;
}
functional sharedメソッドは、上記の例のsomeMethodsというオブジェクト内のメソッドのメモリアドレスのみを参照するため、メモリ効率が向上する.
3. Prototypal
const someMethods = {};
someMethods.move = function() {
this.position++;
}
const Car = function(position) {
const someInstance = object.create(someMethods);
someInstance.position = position;
return someInstance;
Prototyal方式は機能共有方式に似ている.ただしobjectcreate()を使用して、特定のオブジェクトをプロトタイプとして作成します.
4. Pseudoclassical
const Car = function(position) {
this.position = position;
}
Car.protptype.move = function() {
this.position++;
}
擬似論理方式はプロトタイプによって追加される方式である.
この方法を使用する場合、newキーワードを使用して関数を作成および使用することに注意してください.
Reference
この問題について([JS] Object-Oriented Progrmming), 我々は、より多くの情報をここで見つけました
https://velog.io/@ghd64845/JS-Object-Oriented-Progrmming
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
const Car = function() {
const someInstance = {};
someInstance.position = 0;
someInstance.move = function() {
this.position++;
}
return someInstance;
}
const extends = function(to, form) {
for(const key in from){
to[key] = from[key];
}
}
const someMethods = {};
someMethods.move = function() {
this.position++;
}
const Car = function(position) {
const someInstance = {
position: position
}
extends(someInstance, someMethods);
return someInstance;
}
const someMethods = {};
someMethods.move = function() {
this.position++;
}
const Car = function(position) {
const someInstance = object.create(someMethods);
someInstance.position = position;
return someInstance;
const Car = function(position) {
this.position = position;
}
Car.protptype.move = function() {
this.position++;
}
Reference
この問題について([JS] Object-Oriented Progrmming), 我々は、より多くの情報をここで見つけました https://velog.io/@ghd64845/JS-Object-Oriented-Progrmmingテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol