Witam
Chciałbym przygotować program umożliwiający dla każdej osoby
przechowywanie informacji o tym czy dany dzień był dla niej dniem
roboczym oraz czy w danym dniu była dostępna. Bardzo bym prosił o
sprawdzenie czy przedstawiona poniżej koncepcja ma sens. Wiem, że
implementacja pozostawia wiele do życzenia, ale chodzi mi o ocenę samej
koncepcji, tzn. osoba posiada obiekty miesiąc, które z kolei posiadają
obiekty dzień.

	import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class PersonTest {
	public static void main(String[] args) {
		Person jan = new Person();
		
		jan.months.add(new Month(30, "maj"));
		
		Iterator<Month> iterator = jan.months.iterator();
		
		Month month = iterator.next();
		
		for(Day day : month.days) {
			day.setAvailable(true);
			day.setWorking(true);
		}
	}
}

class Person {
	private static int idClass;
	
	private int id;
	public Collection<Month> months = new ArrayList<>();
	
	static {
		idClass = 1;
	}
	
	Person() {
		id = idClass++;
	}
	
	public void addMonth(Month month) {
		months.add(month);
	}
}

class Month {
	private String monthName;
	private int numberOfDays;
	public Collection<Day> days = new ArrayList<>();
	
	Month(int numbeOfDays, String monthName) {
		this.numberOfDays = numbeOfDays;
		this.monthName = monthName;
		
		for(int i = 0; i < this.numberOfDays; i++) {
			days.add(new Day());
		}
	}
}

class Day {
	private boolean working, available;
	
	public void setWorking(boolean working) {
		this.working = working;
	}
	
	public void setAvailable(boolean available) {
		this.available = available;
	}
	
	public boolean isWorking() {
		return this.working;
	}
	
	public boolean isAvailable() {
		return this.available;
	}
}