[WIL]9月1週間


Weekly I Learned (08. 27 ~ 09. 05)

オブジェクト向けプログラミング


オブジェクト向けプログラミングとは?
モデルの青写真(Blueprint)を作成し、その青写真に基づいてオブジェクトのプログラミングモードを作成します.
モデル青写真=>クラス(class)
青写真ベースのオブジェクト=>インスタンス(instance)
function Car (brand, name, color) {
  //ES5 클래스 생성 문법
}

class Car {
  constructor(brand, name, color) {
    //ES6 클래스 생성 문법
  }
}
クラスのコードを生成します(コンストラクション関数は返信を作成しません)
let avante = new Car('hyundai', 'avante', 'black');
let mini = new Car('bmw', 'mini', 'white');
インスタンスの作成時にnewキーを使用します.
各インスタンスには、クラスの一意のプロパティとメソッドがあります.
class Car {
  constructor(brand, name, color) {
    this.brand = brand;
    this.name = name;
    this.color = color;
  }
  
  drive() {
    // 메소드 실행
  }
}
これはインスタンスオブジェクトを表します.parameterで渡されるブランド、名前、色などは、上記の図に示すように、インスタンスの作成時に指定された値です.これは、作成されたインスタンスに対応するブランド、名前、色が付与されることを意味します.
次にdrive(){}というメソッドを定義します.
OOP
OOPはプログラミング哲学の一つです.
OOPはオブジェクトにグループ化される.
このオブジェクトを作成すると、オブジェクト内のすべてのコンテンツがメモリから返されるまで保持されます.
OOPには4つのスタイルがあります
1.パッケージ
  • データと機能を組み合わせた
  • 隠蔽
  • :隠蔽実施、暴露動作
  • 松結合に有利:
  • の実施を随時修正できる
  • コードは複雑ではなく、再利用性が向上しました.
  • 2.抽象抽象
  • 抽象は非常に複雑な内部実装概念であり、実際には露出した部分を簡単にする.
  • 抽象化インタフェース
  • カプセル化がコードまたはデータの非表示に焦点を当てると、抽象はクラスを使用する人が必要としない方法を暴露するのではなく、簡単な名前を定義することに重点を置く.
  • コードは複雑ではなく、使用が簡単で、変化の影響を最大限に減らします.
  • 3.遺産相続
  • 子継承親の特徴
  • 「派生クラス(派生クラス)は基本クラス(ベースクラス)の特徴を継承する」
  • の不要なコードを減らし、再利用性を高めます.
  • 4.多形性ポリマー
  • polyは「たくさん」を意味し、形態は「形態」を意味する.
  • と同様の方法では、if/else ifなどの条件文ではなく、オブジェクトの特性に基づいて作成できます.
  • JavaScriptと他のオブジェクト向け言語の違い


    1.隠匿化(privateキーワード)の限界
    // TypeScript 문법입니다.
    
    class Animal {
      private name: string;
    
      constructor(theName: string) {
        this.name = theName;
      }
    }
    
    new Animal("Cat").name; // 사용 불가
    // Property 'name' is private and only accessible within class 'Animal'. 
    JavaまたはType Scriptプログラミング言語は、クラスでのみ使用される属性とメソッドを区別するキーワードprivateを提供します.これらの非表示機能はJavaScriptではあまり使われていません.正確には、サポートされているブラウザは非常に少ないです.
    JavaScriptは通常、モジュールモードを使用して非表示を支援します.異なる方法でクラス/インスタンスシェイプを作成します.
    2.抽象化(インタフェースキー)機能の欠如
    // TypeScript 문법입니다.
    
    interface ClockInterface {
      currentTime: Date;
      setTime(d: Date): void;
    }
    
    class Clock implements ClockInterface {
      currentTime: Date = new Date();
      setTime(d: Date) {
        this.currentTime = d;
      }
      constructor(h: number, m: number) {}
    }
    JavaまたはType Script言語は言語の主な機能としてインタフェースを実現している.ただし、JavaScriptには存在しない機能です.
    インタフェースの利点は、インタフェースをクラスの実施者として記述するのに役立つ約束と見なすことである.(インタフェースは、様々な実施形態がある.)
    これは、クラスを使用する人にとって、露出したインタフェースが「メソッド名の予想通りに動作する」ことを示しています.
    これは、実際の実施方法の開示を回避するのに役立ち、使用方法の開示にも役立つ.

    復帰する


    復帰とは?関数が自分を呼び出すことを示します.
    次の場合、再回帰は適切です.
  • において与えられた問題を類似構造のより小さい問題に分けると、
  • .
  • 重複文が多すぎる、または重複文の重複回数(ループ数)が予測し難い場合、
  • .
    工場を例にとる.
    工場は、ある範囲内のすべての整数の積を意味します.
    5! 「5のファクトリ」の値と、1~5のすべての積の合計を表します.
    すなわち、値は1 x 2 x 3 x 4 x 5=120である.
    実際には、これらのコードを作成すると、繰り返し文を使用して解きますが、再帰関数を使用して
    プールの場合、コードをより簡単に記述できます.
    function Factorial(arr) {
      if (n === 1){
        return 1;
      }
      return n * Factorial(n - 1)
    }
    上記のコードで記述された「再帰」概念を用いて工場化されたコードを実装する.
    このように重複する部分を再帰的に記述すると、より簡潔で理解しやすいコードの記述に非常に役立ちます.