平成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-2025 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||
