![]()
平成28年 春期 基本情報技術者 午後 問11
問11 Java次の Java プログラムの説明及びプログラムを読んで,設問1,2に答えよ。 〔プログラムの説明〕 “すべきこと”(以下,ToDo という)を管理するプログラムである。
(1) クラス ToDo は ToDo を表すクラスであり,コンストラクタで主題,期限,重要度を指定する。
期限は,年月日を表す8桁又は年月日時分を表す 12 桁の数字から
成る文字列(以下,日時という)であり,例えば,2016 年4月 16 日を表す文字列は“2Ø16Ø416”,
2016 年4月 16 日午後1時0分を表す文字列は“2Ø16Ø41613ØØ”である。ここで,
日時に誤りはないものとする。
(2) クラス ToDoList は ToDo のリストを保持するクラスである。
(3) インタフェース Condition は,ToDo を選択する際の条件を表すクラスが 実装するインタフェースである。メソッド test は条件に合致するときに true を返す。 (4) クラス ToDoListTester は,テスト用のクラスである。 〔プログラム1〕 import java.util.UUID; public class ToDo { public enum Priority { LOW, MIDDLE, HIGH } public enum State { NOT_YET_STARTED, STARTED, DONE } // 8桁又は12桁の数字から成る文字列と一致する正規表現 private static final String DEADLINE_PATTERN = "\\d{8}|\\d{12}"; private final String id: private String subject; private String deadline; private Priority priority; private State state; private ToDo(String subject, String deadline, Priority priority, String id, State state) { if (!deadline.matches(DEADLINE_PATTERN)) { throw new IllegalArgumentException(); } this.subject = subject; this.deadline = deadline; this.priority = priority, this.id = id; this.state = state; } public ToDo(String subject, String deadline, Priority priority) { this(subject, deadline, priority, UUID.randomUUID().toString(), State.NOT_YET_STARTED); } public ToDo(ToDo todo) { this(todo.subject, todo.deadline, todo.priority, todo.id, todo.state); } public String getSubject() { return subject; } public String getDeadline() { return deadline; } public Priority getPriority() { return priority; } public State getState() { return state; } public void setState(State state) { this.state = state; } public int hashCode() { return id.hashCode(); } public boolean equals(Object o) { return o instanceof ToDo && 〔プログラム2〕 import java.util.ArrayList; import java.util.List; public class ToDoList { private List<ToDo> todoList = new ArrayList<ToDo>(); public void add(ToDo todo) { if ( 〔プログラム3〕 public interface Condition { boolean test(ToDo todo); } 〔プログラム4〕 public class ToDoListTester { public static void main(String[] args) { ToDoList list = new ToDoList(); list.add(new ToDo("メール送信", "2Ø16Ø41815ØØ", ToDo.Priority.HIGH)); list.add(new ToDo("ホテル予約", "2Ø16Ø42Ø", ToDo.Priority.LOW)); list.add(new ToDo("チケット購入", "2Ø16Ø43Ø", ToDo.Priority.MIDDLE)); list.add(new ToDo("報告書作成", "2Ø16Ø428", ToDo.Priority.HIGH)); list.add(new ToDo("会議室予約", "2Ø16Ø53Ø12ØØ", ToDo.Priority.HIGH)); list.update(new ToDo("PC購入", "2Ø16Ø531", ToDo.Priority.HIGH)); for (ToDo todo : list.select()) { todo.setState(ToDo.State.STARTED); list.update(todo); } Condition condition1 = new Condition() { public boolean test(ToDo todo) { return todo.getDeadline().compareTo("2Ø16Ø5Ø1") < Ø; } }; Condition condition2 = new Condition() { public boolean test(ToDo todo) { return todo.getPriority().equals(ToDo.Priority.HIGH); } }; for (ToDo todo : list.select(condition1, condition2)) { System.out.println(todo); } } }
a に関する解答群 ウ id.equals(id) エ o.id.equals(id) b に関する解答群 ウ todoList.contains(todo) エ todoList.isEmpty() c に関する解答群 ウ == -1 エ >= todoList.size() d に関する解答群 ウ int selected = Ø エ int selected = todoList.size() e に関する解答群
![]() 図1 プログラム4の実行結果 解答群 イ 主題:会議室予約, 期限:2Ø16Ø53Ø12ØØ, 優先度:HIGH ウ 主題:チケット購入, 期限:2Ø16Ø43Ø, 優先度:MIDDLE エ 主題:報告書作成, 期限:2Ø16Ø428, 優先度:HIGH オ 主題:ホテル予約, 期限:2Ø16Ø42Ø, 優先度:LOW カ 主題:メール送信, 期限:2Ø16Ø41815ØØ, 優先度:HIGH
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||