[JS]オブジェクト向けプログラミングとは?


  • プログラム設計
  • 今期の文章ではプログラミングの方法論について述べる.
    プログラミングの方法論に言及する前に、翁Xカップ麺を煮て食べないと仮定します.
    ではまず、次のような方法を提案することができます.
  • 水550 mlを鍋に注ぐ.
  • ガスランプをつけます.
  • スープを加えます.
  • 水を沸かして粉末調味料を加える.
  • パウダーを加え、麺を加えます.
  • 面が少しゆるむと、卵を割って入れます.
  • 面が硬くなったら電気を消します.
  • 美味しくいただきました.
  • 上述したように,この方法論をプログラムガイドプログラミングと呼ぶ.
    プログラムガイドプログラミングとは,論理を主とし,アルゴリズムを指定された順序で処理し,結果を生成するプログラミングである.
    初期のプログラミング(C言語、ポートバーなど)ではプログラム向けのプログラム設計だったそうです.
    プロシージャ向けのプログラミングは、上記の例のシーケンスコマンドを組み合わせたものである.
    しかし,プログラムガイドプログラミングの欠点は,コードの可読性が悪いことである.
    例えば、上の過程で、欲しくない人がいるかもしれません.
    卵を全部焼いて食べる人もいます.
    この場合、コードを変更するには、上から1つずつ読んで検索する必要があります.
    あ、不便で、しかも実は上のコードが10行以下なので、見つけやすいです.
    コードが100行、1000行以上の複雑なコードであれば、メンテナンスが容易ではありません.
    実は「パスタコード」という言葉があります.
    コンピューターのプログラミングの流れが複雑になり、パスタが絡み合っているようで、パスタコードという人もいます.
  • オブジェクト向けプログラミング
  • 今回は別の方法でラーメンを煮る方法に近づきたいと思います.
    class Ramyeon {
      constructor(, ,스프, 계란, 면익힘, ...etc) {
      this.=;
       ...
      }
      물끓이기() {
       물을 this.물 만큼 넣는다. 
      }
      스프넣기() {
        스프의 양은 this.스프 만큼 넣는다.
      }
        계란추가() {
          라면에 계란을 넣고 this.계란만큼 익힌다.
        }
          면익히기() {
       	라면을 this.면익힘 만큼 익힌다.     
          }
        기타 재료 추가() {
          라면에 this.etc의 재료를 추가로 넣는다.
        완성() {
          return 라면;
        }
      }
    ふとラーメンの作り方を説明させていただき、変なJavaScriptコードを見ました.
    しかし上のコードをよく見ると、ラーメンの種類には材料と機能があります.
    インスタントラーメンを煮るのに必要な機能が明確に表現されていることも見られます.
    プログラムプログラミングとは異なり,オブジェクト向けプログラミングとは,上記の機能(オブジェクト)単位で,オブジェクトのインタラクション方式で記述される方法論を指す.
    対象をガイドとしてインスタントラーメンを編む作り方であれば、麺の茹で具合や卵の茹で具合をコントロールしやすくなります.
    キーワードを見つけてコードを修正すればいいからです.
    この利便性に基づいて,現代プログラミング言語(Java,C+,C#)はオブジェクト向けのプログラミング方式で記述されている.
    しかしなぜJavaScriptはオブジェクト向けプログラミングに入らないのでしょうか?JavaScriptは完全にオブジェクト向けのプログラミングで、Java、C+、C#とは違います.JavaScriptはプロトタイプ向けのオブジェクト向け言語です.

  • オブジェクト向けプログラミングの特徴
    オブジェクト向けプログラミングには4つの共通の特性があります.カプセル化、抽象化、継承、多形性.

  • パッケージと抽象化
    カプセル化と抽象化は似ていて異なる概念である.カプセル化は、データと機能を組み合わせたもので、中身はモジュールに隠され、動作だけが露出します.一方、抽象は複雑な過程が隠れていることを意味し、簡単なものだけを簡略化する.カプセル化と抽象化は似ているように見えるが、観点が異なるだけだ.カプセル化はデータ隠蔽の観点から見た特徴であり,抽象化は簡略化の観点から見た特徴である.

  • 継承
    すなわち,親クラスと子クラスがある場合,親クラスの特徴をクラスに受け入れて書き込むことができる.

  • たけいせい
    多形性は同じコードですが、中の方法によって、いろいろな形式を持つことができます.上のインスタントラーメンコードは、例えば、同じインスタントラーメンでも、中に何の因子が入っているのか、異なるインスタントラーメンが完成します.完熟ラーメン半熟ラーメン全熟ラーメンもちラーメン部隊スープラーメンなどああお腹すいた多形性だ