1

再構築に数時間を費やし、これが何かを行うには良い方法ではないことがわかる前に、少しガイダンスが必要です。私のプログラムは学区での 1 対 1 のイニシアチブです。私はすべての課題、学生、およびコンピューターのデータベースを持っています。私はオブジェクト指向設計を構築して、いくつかのことをより均一にコーディングできるようにしています (そして他のすべての利点のために)。このアプリケーションを使用して、ユーザーがテイクアップとノートパソコンのチェック プロセスをガイドします。これが私のジレンマです。

生徒 (オブジェクト) は、1 つまたは 2 つの現在の課題 (1 つは貸与者、もう 1 つは永久) を持つことができます。最初に、生徒オブジェクト、課題オブジェクト、およびデバイス オブジェクトを作成しました。次に、生徒が作成されたら、ルックアップ ファクトリを使用して、生徒が未解決の現在の課題を見つけます。次に、学生コンストラクト内からこれらをループし、それぞれがデバイス情報を参照する割り当てオブジェクトの配列を作成します。

これはうまく機能し、必要なすべての情報を取得しますが、割り当てオブジェクトの配列があり、論理的に従うべき特定のルールがあるため、操作が難しいと感じています。

代替機の割り当て (元のコンピューターが問題で退去したときに割り当てられたもの) は、FIRST にする必要があります。そして、一般に、この配列内のどの代入オブジェクトに、知る必要のあるプロパティがあるかを判断するのが難しくなります。

したがって、私のアイデア (これは良いアイデアではないかもしれません) は、これを 1 対 1 対 1 対 1 の関係に分割することです。生徒から課題へ、デバイスへの課題へ。

次に、学生が貸与課題を持っているかどうかを知る必要がある場合は、課題オブジェクト内に関数を作成して呼び出すことができますstudent->assignments->hasLoanerAssignment()

インターネットはどう思いますか?

4

1 に答える 1

1

私の理解が正しければ、あなたは、レンタルの割り当ては恒久的な割り当てとは異なり、これが複雑さを引き起こしていると言っています. その場合は、継承を使用することをお勧めします。貸し出しと永続的な代入は 2 種類の代入になり、それらに独自のプロパティとメソッドを与えることができます。

class Assignment 
{
    // instance of Device
    protected $device

    // instance of Student
    protected $student  
}

class LoanerAssignment extends Assignment 
{
    // various properties and methods relevant to loan
}
class PermanentAssignment extends Assignment 
{
    // various properties and methods relevant to permanent
}

このデータをデータベースに保持していると仮定すると、貸与者と永久に別のテーブルを作成すると、メソッドを Student に追加して貸与者の割り当てがあるかどうかを簡単に確認できます。たとえば、次のようになります。

// in Student class
function hasLoanerAssignment()
{
    return 1 === $yourChosenDBAdaptor->getCountOfLoanerAssignents($this->_studentId);
}
于 2013-03-07T15:26:12.637 に答える