Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Expand
titleDel 4 - IO (10%)

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
titleLF


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
titleLF

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)

 

Expand
titleLF

 

Oppgave d)

 

Expand
titleLF

 

 


...