2022年03月22日TIL


OOPストーリー


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

  • プログラムの膨大化に伴い、この問題を解決するために出現した.
  • 大型プログラムの動作を対象に配布する実行
  • オブジェクト


  • 概念用語:オブジェクト

  • 技術用語:class、instance

  • オブジェクトは小機能を実行し、互いに協力します.

  • オブジェクトはtypeで区切られます.typeはclassとして作成できます.

  • implements Runnable
  • ネジの生成
  • class MyObject extends Object implements Runnable {
    }

    2.オブジェクト向けのプロパティ


    カプセル化


    オブジェクトは自分で操作できる必要があります.外部に頼ったり、外部侵略を制限したりしなければならない.

  • 完成度
    機能を実行する単位として、完全性があります.

  • 情報を隠す
    外部での客体内への接近を禁止する.

  • アクセス指定子

  • private
    オブジェクトの所有

  • protected
    継承されたオブジェクトからアクセス可能

  • (friendly)
    同じパッケージにアクセスできます(パッケージの可能性、特定のオブジェクトへのアクセスのみが許可されている場合)

  • public
    誰でもアクセス可能
  • 継承

  • 大尉、両親、super、[抽象]
  • 下級、子女、(本),[具体]
  • 機能で近づかないで!抽象的で具体的な関係で近づく!
  • 抽象オブジェクト

  • 抽象対象:抽象体
  • 具体的対象:具象体
  • 客体間の関係では、上位にあるものは常に下位の抽象にならなければならない.
  • 多形性用抽象体.
  • たけいせい

  • typeは様々な形で表現できる.
  • フィルタ機能提供可能
  • class NaverLogin implements Login, Portal {...}
    
    Login login = new NaverLogin();
    login.login();
    
    Portal portal = new NaverLogin();
    portal.portal();
    Login → login() O, portal() X
    Portal → login() X, protal() O

    3.オブジェクト向け設計


    UML: Class Diagram


    オブジェクト設計向けのツールの説明
  • 一般化(extends)
  • B->A、BはAを引き継いだ.
  • 実体化(implements)
  • B->A、BはAを表している.
  • 依存
  • A->B、A依存B.
  • A動作はB
  • 考えてみれば
  • DI!
  • 関連
  • 関係ありますが、正確な関係はわかりません
  • 直接関連
  • A->B、A(本体)はB(対象)を使用する.
  • 集合関連
  • A->B、AはBを持つ.
  • ただしBがなくてもAの問題はない.
  • 複合関連
  • A->B、AはBを持つ.
  • AにはBが必要です.
  • オブジェクトを分割して関連付けるにはどうすればいいですか?

  • 対象5原則
  • SRP:修正時に修正した理由は一つだけ.
  • OCP:水晶は閉じなければならず、拡張は開かなければならない.
  • LSP:抽象オブジェクトとしての部分は、構想オブジェクトが含まれていても問題ないはずです.
  • ISP:インターフェースを隔離し、不要な実施を避ける
  • DIP:変わりやすいものや経常的な変化よりもほとんど変わらないものに頼る.
  • 原則設計で共通点が見える→23種類のデザインパターン