バックエンド死亡経路TIL 02第1


学習目標


講座を聞いて、私の知っている内容をチェックして、
新しい学習内容を整理する.
あなたの疑問を理解し、理解します.

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


Javaはオブジェクト向けの言語です.
しかし,オブジェクト向けプログラミングを行わなければ,オブジェクト向けとは呼べない.
では、オブジェクト向けプログラミングとは何でしょうか.
プログラムをオブジェクトとして整理します.
すなわち,プログラムは命令の集合ではなく複数の独立した単位(オブジェクト)の集合として望ましい.

歴史


番組規模の拡大に伴い、より規模の大きい番組をどのように制作しますか?このような問題が発生した.
オブジェクト向けプログラミングは、この問題を解決する方法の1つです.
「小分業、小合併」の大きなフレームワークの下でのオブジェクト向けプログラミング
プログラム内の複数の動作は、各オブジェクトが実行する小機能によって分離され、これらのオブジェクトとオブジェクトは互いに協力している.
すなわち,オブジェクト向けプログラミングとは,各分野の作業をいくつかの小さな部分に分割し,互いに協力させることである.
ただし、これらのオブジェクトの役割と機能を区別するには、互いに区別する必要があります.
Javaはtypeと区別し、typeを作成するためにJavaはClassを使用します.
import java.lang.*;
//class
class MyObj extends Object implements Runnable {
		//속성
		private int a = 0;
		//행위
		public void run() {
			a += 1;
		}
}
//인스턴스화
MyObj obj = new Object();
オブジェクトガイドを理解するには、
理解対象は概念用語としてJava技術用語classとinstanceの違いである.

コンポーネント

  • オブジェクトは、現実の概念をソフトウェアによって実現するオブジェクトである.それは現実のオブジェクトに似ていて、状態と行為を持っていますが、ソフトウェアの観点から見ると、概念です.
  • クラスは、同じクラス(またはトラブルシューティング用)に属するグループの属性および動作を定義します.オブジェクト向けプログラミングのデフォルトのユーザー定義のデータ型.実施対象の設計図.
  • Instanceインスタンスは、クラスソフトウェアによって実装されるオブジェクトを表す.ソフトウェアのオブジェクトをクラスで実体化します.
  • オブジェクト向けプロパティ


    カプセル化


    これがカプセル化の特徴です.
  • 完成度
  • オブジェクト自体が任意の機能を実行できるため、完全と言える.
  • は、外部に依存せず、依存性が存在しても結合を緩和しなければならない.
  • 情報の非表示
  • アクセス指定子を使用して不要な情報を非表示にし、重要な情報のみを表示します.
  • 外部からの
  • オブジェクトへのアクセスを禁止します.
  • アクセスフラグのタイプ
    アクセス指定子アクセス範囲同一クラス同一パッケージ異なるパッケージのサブクラス他のパッケージ共通制限なしOO保護された同一パッケージ内と継承されたクラス内OO default同一パッケージ内O
  • のみ

    継承


    継承されたフィーチャー.
    継承機能を使用すると、新しいクラスが既存のクラスのプロパティと動作を使用できます.
  • 親:親にあり、抽象オブジェクトと呼ばれる継承クラスです.
  • サブクラス:サブクラスにあり、継承クラスであり、特定のオブジェクトとも呼ばれます.
  • 汎用機能を複数のオブジェクトに渡す場合は、通常使用されます.
    ただし、継承は「抽象」と「具体化」の関係にのみ使用できます.

    抽象化


    抽象化は、データ型の具体的な定義です.
    オブジェクト間の関係では、親クラスが子クラスより抽象的であることが要求されます.
    Javaでは、抽象クラスとインタフェースが継承クラスまたは実装インタフェースの抽象メソッドを強制的に実装します.
    abstract class
  • 抽象クラスは、1つ以上の抽象メソッドまたはabstractとして定義されたクラスである.
  • 抽象クラスの目的は、抽象クラスを継承し、その機能を利用し、拡張することである.
  • interface
  • すべての方法は抽象的な方法です.(Java 8からは、従来の方法を実施することも可能である.)
  • オブジェクト自体は抽象的で、実体はなく、抽象的な概念にすぎない.
  • 汎用変数は使用できません.ジェネレータは使用できません.インスタンスは作成できません.
  • 関数を強制的に実装することにより、実装対象の動作が同じであることが保証される.
  • たけいせい


    多形性とは、1つのオブジェクトに複数のタイプがあることを意味します.
    Javaは、親クラスタイプの参照変数が子クラスタイプのインスタンスを参照できるようにします.
    class Login { ... }
    
    class PortalLogin extends Login { ... }
    ...
    Login login = new Login(); // 허용
    PortalLogin pLogin = new PortalLogin();   // 허용
    Login login = new Login();  // 허용
    PortalLogin pLogin = new Login();  // 오류 발생.
    多形性により、オブジェクト間の関係を整理できます.
    instanceof演算子を使用して、参照変数が実際に参照されるインスタンスのタイプを決定します.

    オブジェクト向け設計


    では、どのようにしてオブジェクトに向いているのでしょうか.
    まず、オブジェクト向けプログラミングでは、次の2つの側面を考慮する必要があります.
  • オブジェクト
  • を区別する方法
  • オブジェクト間の関連付け
  • を設定する方法
    この2つの要因を考慮すると、オブジェクト向けを他の人によりよく説明するために設計する必要があります.

    UML


    UMLは、オブジェクト向けプログラミング設計を表す言語です.
  • Usecase Diagram
  • Sequence Diagram
  • Package Diagram
  • クラスDiagram UMLクラス図で、主にオブジェクト間の関係を表示します.クラスのボックスは、名前:変数(プロパティ):メソッド(動作)、オブジェクト間の関係を矢印とn:nの関係で表します.UML Class Diagram draw.io staruml.io上のサイトに直接クラス図を描くこともできます.
  • オブジェクト向けSOLIDの原則


    SOLIDはRobert Martinが紹介したオブジェクト向けプログラミングの5つの基本原則である.

  • 単一責任の原則
    1階級には1つの責任しかない.

  • Open/closed principle
    ソフトウェア要素は拡張で開き、変更で閉じます.

  • Liskov substitution principle
    オブジェクトは、プログラムの正確性を損なうことなく、サブタイプのインスタンスに変換できる必要があります.

  • Interface segregation principle
    複数の特定のクライアントインタフェースは、1つの汎用インタフェースよりも優れています.

  • Dependency inversion principle
    プログラマーは「具体化ではなく抽象化に頼らなければならない」と話した.依存注入はこの原則に従う方法の一つである.
  • これらの原則に従い、遵守し、設計することは、オブジェクト向けのプログラミングを行う基礎になります.