今週の金曜日に「ソフトウェア エンジニアリング」の試験を受けなければならないのですが、ちょっと理解できないことがあり、先生は説明できません。
Boundary-Controller-Entity (BCE) パターンに基づいて、持続性 (データベースまたはシーケンシャル ファイルですが、SQLite を使用します) に基づいてプロジェクトを作成する必要があります。エンティティ クラスを保存/読み込みメソッドで実装する必要があります。これにより、データを永続化レイヤーに出し入れします。彼らはDAOを使用しています。
例えば:
public class someEntity
{
private int someData;
public void set_someData (int _someData) {this.someData = _someData;}
public int get_someData () {return this.someData;}
public void save ()
{
DAO dao = new DAO ();
dao.openConnection ();
dao.insert (this.someData);
dao.closeConnection ();
}
これまでのところ、それはすべて明らかです。
「ロード」メソッドを実装するとき、検索パラメーター (DB の主キー) を使用して、エンティティ インスタンスにデータベースのデータを「入力」したいと考えています。しかし、たとえば、1980 年以前に生まれたすべての人を取得したい場合、どうすればよいでしょうか?
私の心の唯一の解決策は、コントローラークラスに以下を実装することです
ArrayList <people> pList= new ArrayList ();
people p;
for (int i = 1900 ; i < 1980 ; i++)
{
p = new people ();
if (p.load (i) == true); //returns true if has found corresponding entry in db
{
pList.add(i);
}
}
これは完全に正気ではありませんね。
したがって、コレクションを返す「ローダー」メソッドが必要です。そのため、簡単な SQL クエリを使用して、1980 年より前に生まれたすべての人を返すメソッドを DAO に実装できます。これは、コントロール クラスが BCE パターン ルールを無視して DAO と直接対話する場合にのみ実行できます。
それが本当の問題である場合、どうすれば問題を解決できますか?