簡単な入れ子構造を扱う #13
Studentは同じであり、Groupもほとんど変わり映えしない。残念。
school/Student.java (reproduction)
package school; public class Student { private String name; private int height; Student(String name, int height) { if (name == null) throw new IllegalArgumentException("null name"); if (height <= 0) throw new IllegalArgumentException("height(" + height + ") <= 0"); this.name = name; this.height = height; } public String getName() { return name; } public int getHeight() { return height; } }
school/Group.java
package school; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; public class Group implements Iterable<Student>, Named { private Named named; private ArrayList<Student> students = new ArrayList<Student>(); Group(String name) { if (name == null) throw new IllegalArgumentException("null name"); named = new NamedSupport(name); } public String getName() { return named.getName(); } public Student add(String name, int height) { Student s = new Student(name, height); students.add(s); return s; } public Group add_(String name, int height) { add(name, height); return this; } public Iterator<Student> iterator() { return Collections.unmodifiableList(students).iterator(); } }