Vedlegg 3 beskriver et tekstformat for informasjon om emner og eksamener. Oppgave a)Skriv metoden Collection<Exam> readExams(Reader input) i en tenkt ExamReader-klasse, som skal opprette Course- og Exam-objekter tilsvarende teksten lest fra input-argumentet, og returnere alle Exam-objektene. Det kreves ikke spesifikk håndtering av feil format ut over at metoden ikke skal utløse unntak. Expand |
---|
|
Code Block |
---|
public Collection<Exam> readExams(Reader input) {
Collection<Exam> exams = new ArrayList<>();
Scanner scanner = new Scanner(input);
String lastSemester = null;
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] tokens = line.split(" ");
if (tokens.length == 1) {
try {
Course.checkTime(tokens[0]);
lastSemester = tokens[0];
continue;
} catch (IllegalArgumentException e) {
}
}
try {
Course course = new Course(tokens[0]);
course.setTime(lastSemester);
course.setCredits(Double.valueOf(tokens[1]));
for (int i = 2; i < tokens.length; i++) {
exams.add(new Exam(course, tokens[i].charAt(0)));
}
} catch (RuntimeException e) {
}
}
scanner.close();
return exams;
} |
|
Oppgave b)Tegn et objektdiagram for objektene som opprettes ved innlesing av eksempelet i vedlegg 2. Expand |
---|
| En må ha med to Course-objekter, med samme emnekode (”TDT4100”), semesterbokstav (’S’) og studiepoeng (7,5), men forskjellig år (2016 og 2017). Så har en to Exam-objekter koblet til det første, med karakterene ’F’ og ’C’, og ett Exam-objekt med karakteren ’A’ koblet til den andre. Merk at det er viktigst at diagrammet er konsistent med koden, så det kan være annerledes enn beskrevet her.
PlantUML Macro |
---|
object "~#tdt4100s2016: Course" as tdt4100s2016 {
code = "TDT4100"
credits = 7.5
semester = 'S'
year = 2016
}
object "~#exam1: Exam" as tdt4100s2016ord {
grade = 'F'
}
object "~#exam2: Exam" as tdt4100s2016kont {
grade = 'C'
}
tdt4100s2016ord -> tdt4100s2016: course
tdt4100s2016kont -> tdt4100s2016: course
object "~#tdt4100s2017: Course" as tdt4100s2017 {
code = "TDT4100"
credits = 7.5
semester = 'S'
year = 2017
}
object "~#exam3: Exam" as tdt4100s2017ord {
grade = 'CA'
}
tdt4100s2017ord -> tdt4100s2017: course |
|
Oppgave c) Oppgave d)
|