私は現在、さまざまなモジュール間の入出力を処理し、これらの変更に応じて多数のエンティティークラスを維持する中央コントローラーの問題に取り組んでいます。ゲッターとセッターを操作するとき、生の値を提供することも、エンティティクラスの1つを提供することもできます。これがカップリングにどのように影響するのか知りたいです。私はC++で作業していますが、他の言語がこれをどう見ているのか知りたいです。
たとえば、私は言うことができます
object.set_position_and_orientation(double latitude, double longitude, double altitude, double pitch, double roll, double yaw)
または私は言うことができます
object.set_position_and_orientation(shared_ptr<object_state> os)
明らかに、このオブジェクトの状態を共有するには、この他のモジュールに別のヘッダーが必要なため、結合と複雑さが増しているように見えます。しかし、一方で、私はこの他のエンティティークラスを通じてこれらのクラス間のインターフェースを定義しています。
私たちが最終的に設定した答えは、これはC++が定義されたインターフェースを持つための制限であり、インターフェースとして機能するこのクラスを含めることで解決しました。私はこの答えに満足していませんが、それを行うための明確な「最良の」方法を見つけることができませんでした。
オブジェクトは一連のパラメータの代わりにはなりません。つまり、オブジェクトはレコードではありません(すべきではありません)。オブジェクトとは、アプリケーションの機能に直接結び付けられたbehaviorを含むものです。
したがって、反対側で直接読み取られるデータのみを含むオブジェクトを渡すのは、オブジェクト指向の設計としては良くありません。
そこにアプリケーションロジックの一部が見つかり、encapsulateである場合にのみ、これらのパラメーターをオブジェクトと交換できます。これは基本的に、他の誰もデータ自体を知ることができないことを意味します。
これがオブジェクト指向設計の仕組みです。ゲッターセッターを備えた「エンティティ」は、基本的にはCからすでに知っている構造体であり、オブジェクト指向ではありません。あなたが抱えている問題は、技術/言語の問題ではなく、設計の問題です。