第6章対象とデータ構造


タスクから整理した内容をブログに移動したので、タスクから見ると便利です。🤗


移動→Junkk's Notion


変数を非公開(private)と定義する理由→変数に依存させたくない
では、なぜプログラマーはget、set関数を公開し、非公開変数を外部に露出するのでしょうか.

データ抽象


例)特定のポイントクラスと抽象的なポイントクラス(p 118)

  • 特定のポイントクラス

  • 直線座標系の使用

  • 座標値の個別読み取りと設定を強制

  • 現れる.変数をprivateとして宣言しても、各値がget関数とset関数を提供する場合、つまり実装が外部に露出します.

  • 抽象ポイントクラス

  • データ構造異常

  • クラスメソッド強制アクセスポリシー

  • 座標を読み込む場合は、各値を個別に読み込む必要があります.

  • 座標を設定するとき、2つの値を同時に設定します.

  • 実装を隠すために抽象化する必要がある.

  • 抽象的なインタフェースを提供し、ユーザーが実施を知らずに資料の核心を操作できるようにするのが本当のクラスです.
  • 資料/オブジェクト非対称

  • オブジェクト
  • 抽象化後、隠蔽データの関数
  • のみ公開
  • 既存の関数を変更せずに新しいクラスを追加するのは簡単です.
  • の新しい関数を追加するのは難しいです.→すべてのクラスを変更する必要があります.
  • 資料構造
  • が発行され、異なる機能X
  • が提供される.
  • 既存の資料構造を変更することなく、新しい関数を簡単に追加できます.
  • の新しい資料構造を追加するのは難しい.→すべての関数を変更する必要があります.
  • ディミットの法則


  • ディミットの法則:モジュールは自分が操作した対象の内幕を知らなければならない.
    →クラスCのメソッドfは、以下のオブジェクトのみを呼び出すメソッド

  • Cクラス

  • f作成されたオブジェクト

  • fインポートされたオブジェクト

  • Cインスタンス変数に格納されているオブジェクト
    上記のオブジェクトでメソッドが返すことを許可するオブジェクトを呼び出すことができないメソッド

  • 列車が衝突する
  •     final String outputDir = ctxt.getOptions().getScratchDir().getAbsolutePath();
    위와 같은 구조의 코드를 기차 충돌이라고 하고 피하는 것이 좋다

  • ヘテロ構造
    :半分はオブジェクト、半分はデータ構造
    Xの使用

  • 構造体を隠す
    オブジェクトの場合は、内部構造を非表示にする必要があります.
    例)p 125
  • データ転送オブジェクト


  • データ構造体の典型的な形式は、公開変数のみで関数のないクラスである.→支払転送対象(DTO)ともいう
    →ソケットから受信したメールをデータベースと通信したり分析したりするときに便利
    →データベースに格納されている未加工情報をアプリケーションコードで使用するオブジェクトに変換する一連のステップで最初に使用するコード.

  • 典型的な形式はbean空構造である
    →クエリー/設定関数を使用して専用変数を操作します.
    →似て非なるカプセル化であり、異なる利益をもたらすX

  • アクティビティレコード
    :DTOの特殊な形式

  • 共通変数または専用変数を持つクエリー/設定関数を持つデータ構造ですが、saveやfindなどのナビゲーション関数も通常提供されます.

  • アクティビティレコードは、デバイステーブルまたは他のソースから直接資料を変換した結果です.
    ◆資料構造!
    →ビジネス・ルールが含まれ、内部情報が非表示のオブジェクトを作成します.(内部資料は活動記録例の確率↑
  • n/a.結論


    →第7章エラー処理