2017-09-18 3 views
0

はのは、私がUserクラスがあるとしましょう、とUserEmployeeApplicant、両方(採用が、他の場所での仕事のために適用)、またはどちらも(失業者と仕事のために適用しない)することができます。JavaでCan-Be-A関係をモデル化するにはどうすればよいですか?

どのように私はJavaでこの関係を定義することができますUserEmployeeにキャストすることができますが、彼らは実際に使用されている、と彼らは失業している場合も同様に、他のシナリオについて(EmployeeまたはApplicantにキャストできない場合にのみ、このような仕事に応募しないでください)?

,Applicant,EmployeeAndApplicantの各組み合わせに対してUserを継承する別のクラスが必要ですか?ちょうど私がコメントでのものだったと思うものを綴るする

+0

実行時にキャストが検証されます。それが正しいタイプであることを確認したい場合は、まずチェックしてください。 – shmosel

+1

組み合わせをサポートするために、合成および/または複数のインターフェイスを使用できます。 – shmosel

+1

「採用中」と「適用中」のように聞こえるのは、「ユーザー」の固有の性質ではなく状態なので、私は一般にそれらをサブレコードに分割します。 – chrylis

答えて

1

(テストしていません)

public class User { 

    /** this user’s employment, or null if unemployed */ 
    private EmployeeRecord employment; 
    /** this user’s application, or null if not an applicant for any job */ 
    private ApplicantRecord application; 

    // getters, setters etc. 

} 

あなたも、ユーザーがAに複数のジョブに適用することができることをモデル化するために、たとえば、Collection<ApplicantRecord>を使用することができます関連する場合は、時間。

関連する問題