私は医師用のジャーナル システムを作成しています。このシステムでは、医師が入って患者を観察し、患者の X 線とその X 線に属する画像も見ることができます。
- 複数の患者が存在する場合があります。
- 患者ごとに複数の X 線が存在する場合があります。
- Xray ごとに複数の XrayImage が存在する場合があります。
クラスのレイアウトは次のとおりです。
http://i44.tinypic.com/w9w37d.png
私が抱えている問題は、Patient.XrayやPatient.Xray.XrayImageではなく、常にPatientに情報を求めているように見えることです。これは正しいです?
例えば:
患者には、データベースからデータを取得し、患者のすべてのフィールドを設定する getPatient メソッドがあります。
次に、たとえば、データベースにこの患者に属する 3 つの X 線があり、Patient.Xray の 3 つのインスタンスを作成したいので、Patient に getXrayIDs というメソッドを作成します。これにより、その患者に属するすべての XrayID が取得され、ID が患者のリストに保存されます。これらの ID は UI のドロップダウン ボックスに表示されます。ドロップダウン ボックスで ID を変更すると、Patient.getXray(int XrayID) という別のメソッドが呼び出され、これにより Xray の新しいインスタンスが作成され、情報が UI に表示されます。
XrayImages は、Xray に getXrayImageIDs というメソッドがあることを除いて、ほとんど同じように機能します。
問題は、クラス オブジェクト (Patient、Xray、XrayImage) に対して作業したいのですが、同時にデータベースから必要以上のデータを取得したくないので、これは良いアプローチですか?
適切な OOP でプログラミングしていないように感じます。データベースから取得するデータの量を無視し、適切な OOP でプログラミングし、後でデータベースのパフォーマンスを修正する必要があります。
したがって、代わりに次のようにプログラムする必要があります。
Patient patient = new Patient()
patient.getXrays() // This one should create a new Xray instance
// and Patient should have references to these instances.
patient.xray[i].getXrayImages // This one should create a new XrayImage
//instance and Xray should have references to these instances.
別の考え: ドロップダウン ボックスの値が変更されている場合 (この場合のように)、データベースからではなく、Xray および XrayImage クラスからデータを取得する必要があります。データベースから Xray および XrayImage クラスにデータを 1 回ロードしようとするだけで、ユーザーは情報を取得し、XrayID が変更されるたびに情報を取得するのではなく、オブジェクトに対して作業する必要がありますか?